Faster RCNN的主要创新点:RPN+Fast RCNN
算法流程
一、将图像输入网络得到相应的特征图。
二、使用RPN结构生成候选框,将RPN生成的候选框投影到特征图上获得相应的特征矩阵。
对于特征图上的每个3×3的滑动窗口,计算出滑动窗口中心点对应原始图像上的中心点,并计算出k个anchor boxes(注意region proposal是SS算法筛选的),k值的是k个anchor box。
2k指的每个anchor box生成的2个概率,一个是前景概率,一个是后景概率,因此k个anchor就会生成2k个概率。
4k指的是每个anchor box都有4个边界框回归参数。256是指backbone卷积网络的输出深度。
图1-1 k、2k、4k的意义
如何计算出滑动窗口中心点对应原始图像上的中心点?
stride(y轴)=原图长/特征图长
stride(y轴)=原图长/特征图长
原图中心点(x/y)=特征图上中心点的横/纵坐标×stride(x/y)
图1-2 计算出滑动窗口中心点对应原始图像上的中心点
每个位置/每个滑动窗口都会生成9个anchor boxes。
三种尺度(面积){,,}
每种面积下三种比例{1:1,1:2,2:1}
图1-3 每个位置/每个滑动窗口都会生成9个anchor boxes
那么每个滑动窗口处实际上会有9个anchor boxes,2×9个类别分数,4×9个回归参数。
图1-4 每个位置/每个滑动窗口都会生成9个anchor boxes,18个类别分数,36个回归参数
例子:1000×600×3的图像→60×40×9(20k)个anchor→忽略跨越边界的anchor,剩下约6k个anchor→基于候选框的cls得分,采用非极大值抑制,IoU设为0.7,剩下2k个候选框。 图片大小也不一样怎么输入的backbone。怎么出现的60×40,feature map都一样的吗
三、将每个特征矩阵通过ROI pooling层缩放到7×7大小的特征图。
四、将特征图展平通过一系列全连接层得到预测结果。
损失函数
图2-1 损失函数
Faster RCNN的训练方式
图3-1 Faster RCNN联合训练