输入:227x277x3 卷积层输出(池化层之前):13x13x256 最后一层池化层:6x6x256 全连接层:4096-4096-1000
输入:227x227x3 卷积层输出(池化层之前):13x13x512 最后一层池化层:6x6x512 全连接层:4096-4096-1000
从RCNN到fast RCNN,再到本文的faster RCNN,目标检测的四个基本步骤(候选区域生成,特征提取,分类,位置精修)终于被统一到一个深度网络框架之内。所有计算没有重复,完全在GPU中完成,大大提高了运行速度。
三个要解决的问题: 1. 如何设计区域生成网络 2. 如何训练区域生成网络 3. 如何让区域生成网络和fast RCNN网络共享特征提取网络
Translation-Invariant Anchor
因为每一个位置候选区域的大小和形状都是未知的,所以在每个滑窗位置预测k个region proposals(k=9)叫作anchor。那么对于每一个位置reg layer 有4k个输出对应BBox的坐标,cls layer有2k个scores输出对应是否有目标的概率。
Anchor: 一般设置短边s=600 anchor考虑三个尺度(128^2,256^2,512^2)和三个宽高比(1:1,1:2,2:1)
对于600x1000的图像,得到的特征大小为60x40,那么anchor大约有20k(~60*40*9)个;忽略掉超出边界的,大约有6k个
用于训练的anchor a. 对每个标定的真值候选区域,与其重叠比例最大的anchor记为前景样本 b. 对a剩余的anchor,如果其与某个标定重叠比例大于0.7,记为前景样本;如果其与任意一个标定的重叠比例都小于0.3,记为背景样本 c. 对a,b剩余的anchor,弃去不用。 d. 跨越图像边界的anchor弃去不用
RPN是不针对具体的类,而只是检测出物体
i表示anchor; 前一项是分类的Softmax损失,后一类是回归损失(前面那个N是归一化系数)
与其他框回归方法的不同 - Fast RCNN是对特征图上不等的区域池化,所有区域共享权重 - Faster RCNN是对特征图上相等的区域池化,不同的anchor权重不同(训练了k个anchor)
RPN用来产生候选区域(不针对具体类别,只是框出可能含有目标的区域) Fast-RCNN用来对候选区域进行分类和定位
在07测试集上,SS的最好结果是66.9%,而RPN的最好结果是69.9%
使用VGG的话,可以达到5fps,即每秒处理5张图片 而使用ZF的话,可以达到17fps
如果对IOU的要求更高的话,SS的优势会逐渐显现(毕竟SS提取的区域准确性相对RPN更高)
Faster-RCNN相比于Overfeat的单阶段训练结果高出5%左右