一、背景
1.设计Region Proposal Networks,利用CNN卷积操作后的特征图生成region proposals,代替了Selective Search、EdgeBoxes等方法,速度上提升明显。
2.训练Region Proposal Networks与Fast R-CNN检测网络共享卷积层,大幅提高网络的检测速度。
二、算法原理
Faster R-CNN算法流程可分为3个步骤:
- 将图像输入网络得到相应的特征图
- 使用RPN结构生成候选框,将RPN生成的候选框投影到特征图上获得相应的特征矩阵。
- 将每个特征矩阵通过ROI pooling层缩放到7*7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果。
1.首先向CNN网络(ZF或者VGG16)输入任意大小的图片产生特征图。
2.经过CNN网络前向传播至最后共享的卷积层,一方面得到供RPN网络输入的特征图,另一方面继续前向传播至特有卷积层,产生更高维特征图;
3.供RPN网络输入的特征图经过RPN网络得到区域建议和区域得分,并对区域得分采用非极大值抑制,输出其Top-N(文中为256)得分的区域建议给RoI池化层;
3.1用3*3的滑动窗口在特征图上滑动扫描,每个滑窗位置通过卷积层1映射到一个低维的特征向量(ZF网络:256维;VGG-16网络:512维,低维是相对于特征图大小W×H,通常为60×40=2400),后采用ReLU,并为每个滑窗位置考虑k种(k=9)可能的参考窗口(anchors),这就意味着每个滑窗位置会同时预测最多9个区域建议,对于一个W×H的特征图,就会产生W×H×k个区域建议;
3.2 对上步骤的低维特征向量输入两个并行连接的卷积层2,分别为reg回归层和cls分类层,分别用于回归区域建议产生bounding-box和对区域建议是否为前景或背景打分,这里由于每个滑窗位置产生k个区域建议,所以reg层有4k个输出来建议区域的坐标,cls层有2k个得分估计k个区域建议为前景或者背景的概率。
注:9个锚框产生的尺寸和比例。
所以对于一张1000*600*3的图像,大约有60*40*9=20k个anchor,忽略跨越边界的anchor以后,剩下约6k个anchor。对于RPN生成的候选框之间存在大量重叠,基于候选框的cls得分,采用非极大值抑制,IoU设置为0.7,这样每张图片只剩2k个候选框;
4.第2步得到的高维特征图和第3步输出的区域建议同时输入RoI池化层,提取对应区域建议的特征;
5.第4步得到的区域建议特征通过全连接层后,输出该区域的分类得分以及回归后的bounding-box。