Faster RCNN
时间:2016年
Intro
Selective Search与高效的网络相比,还是大一个量级的时间复杂度,每张图片需要2s,相比于EdgeBoxes的0.2秒,使得Region proposal成为瓶颈。
本文使用深度卷积网络来计算proposal,让Region Proposal Networks(RPNs)与目标检测网络共享卷积层,作者发现,卷积特征不仅能被detector使用,而且可以用来生成region proposals。
Approach
Faster R-CNN由两个部分组成
- 深度全卷积网络,用来生成proposals,RPN
- detector,Fast R-CNN
Region Proposal Networks
RPN和detector共享一部分卷积层,为了得到proposals,用一个小的网络在卷积特征输出上滑动,以特征图的 n × n n\times n n×n区域作为输入,每个滑动的窗口被映射成一个低维的特征,然后特征喂给全卷积网络两兄弟,一个box-regression (reg)层和一个box-classification(cls)层
Anchors
在每个sliding window上,reg同时预测
k
k
k个region proposal,共计4
k
k
k个输出cls给出2k个score表示是否包含物体,k个proposal被参数化为k个reference boxes,称为anchors,anchors以sliding windows为中心,由scale和aspect ratio决定,如图所示
平移不变的anchors,相对MultiBox方法来说,本文提出的anchors具有平移不变性,且参数更少
Multi-Scale Anchors as Regression References,传统的Multi-scale方法包括两种,图像金字塔法将图片scale到不同的大小,或者使用不同大小的卷积核,我们这里使用a pyramid of anchors实现multi-scale,它仅仅需要图像在一个尺度上的特征图,且只需要一个尺度的卷积核
Loss Functions
对每个anchor打上标签,对以下两种anchor打上正例的标签
- 与ground-truth box有最高IoU的anchor
- 与ground-truth box的IoU大于0.7的anchor
将所有非正例的且IoU小于0.3的box打上负类的标签,其他的box与训练目标无关,定义Multi-task损失如下:
p
i
∗
=
1
p^*_i=1
pi∗=1如果anchor是positive的,否则为0,
t
i
t_i
ti是向量,表示一个bounding box,
t
i
∗
t^*_i
ti∗是标签,对于bounding box,使用以下的参数化方式
其中
x
,
y
x,y
x,y表示center的坐标,
x
,
x
a
,
x
∗
x,x_a,x^*
x,xa,x∗分别表示预测的box,anchor box和ground truth box,与之前的bounding-box回归对与所有bounding-box使用相同的权值不同,我们使用了
k
k
k个regressor来得到k个不同的box,它们之间也不共享权值,从而可以从一个feature map中得到多个不同的bounding box
Sharing Features for RPN and Fast R-CNN
Faster R-CNN的整体如图所示
以下是三种RPN和Fast R-CNN共享权值的方法
- 交替训练,先训练RPN然后用它的proposal来训练Fast R-CNN,然后用被Fast R-CNN调整了的网络再回头初始化RPN
- Approximate joint traning,这种方法中,RPN和Fast-RCNN融合在一个网络中训练,它们的误差结合起来指导feature map之前的网络,但是这个训练方法忽略了 损失对于proposal box坐标的导数,但能节省25~50%的训练时间
- Non-approximate joint training,为了解决损失对于proposal box的导数,需要设计可导的RoI pooling,这超出了本文的范围
结论
本文提出来RPN来高效地生成proposals,通过与detection模块共享feature,region proposal的生成几乎是没有时间消耗的,加快了模型的速度,与Fast R-CNN相比,主要的区别在于将proposal的生成也放在网络中一起训练