论文原文: Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
Faster RCNN的最大贡献是去掉了Selective Search来进行Region Proposal的生成,转而使用RPN(Region Proposal Network)来生成区域候选框。
Faster RCNN的整个流程
其中,Region Proposal Network用来生成一系列的候选建议框。该层有两部分,第一部分是一个共享的卷积层,第二部分是用来打分的。分成两个支路,其中一路用来做二分类,表示该框是前景还是背景。另外一个之路用来进行bounding box的回归操作。
训练的时候,每次从RPN网络中的一个像素点对应到原图像中的一个框,如果该框的IoU>0.7,则标记为1,表示是物体。如果IoU<0.3,则标记为0,表示该区域是一个背景。如果介于0.3~0.7之间,则舍弃掉。如果是背景,则回归损失为0。如果是前景,则回归损失为 smoothL1 s m o o t h L 1 损失。最后训练的时候,是直接将RPN的损失和Object detector的损失直接相加即可。
1. RPN
RPN的具体过程为:
1). 在最后一个Conv层得到的feature map后面,使用一个
3×3
3
×
3
的卷积层,得到一个
H×W×N
H
×
W
×
N
的特征向量。如果最后的feature map的维度是256维,则最后经过一层卷积之后得到的仍然是1个256维的feature map。每个feature map最后会得到
H×W
H
×
W
个
256
256
维的特征。每个
256
256
维的特征最后进行一个分叉,一个进入到分类器产生
2k
2
k
个分数输出,文中
K=9
K
=
9
,表示取
3
3
个不同的大小,个不同的长宽比。即每一个像素点最后会输出18个分类的分数和36个回归的分数。最后文中还限制了fg和bg的个数,保证总数不超过256个,前景不超过128个。当前景不足128个的时候,用背景补充。
2). 取标签的2种方式
- IoU大于0.7为物体,IoU小于0.3为背景,0.3~0.7不管
- 如果一个ground truth没有被任何的anchor box取到,这时就在所有的anchor box当中,取与该ground truth的IoU最大的anchor box为前景。此操作是为了防止某些极端情况下有的ground truth一个都没有被取到的情况。
3). 以上面的过程不断进行训练之后,在测试阶段,先通过feature map不断地在原图上取bounding box。这样的话,就会得到 H×W×9 H × W × 9 个bounding box。然后先利用RPN,对所有的bounding box得到他们是否是object的分数。从大到小排列后,运用非最大抑制(NMX),每张图片得到分数最大的300个框,然后将这些框送到分类器去进行分类。
2. Faster RCNN的训练和测试
Faster RCNN由两部分组成,一部分是Fast RCNN,另一部分是RPN。RPN的训练过程是没有用到非最大抑制的。但是在送到到Fast RCNN的那一部分进行训练的时候,并不是一个feature map取9个框的。而是将所有的框选出来之后,运用非最大抑制的方法,先挑选出300个框。然后将这300个框送入到Fast RCNN的那一部分进行训练。测试的时候,使用的也是一样的流程。即先通过RPN选出一些候选框,然后将这些候选框送到分类网络去进行具体分类。而且这中间,RPN和Fast RCNN是一起进行训练的。