faster r-cnn
1、问题
在fast r-cnn中,proposals已经成为速度提高的瓶颈。在本文中,使用深度网络来计算proposals,
使得与检测网络的计算量相比,proposals的计算量可忽略不计。为此,本文提出了RPN网络(Region Proposal Network),
与目标检测网络共享卷积层,大大减少了计算proposals的时间。
2、方案
在fast r-cnn中,region-based detectors可以使用卷积特征图,那么这些特征图也可以用来生成region proposals。
在这些卷积特征上,通过增加两个卷积层来构造RPN:一个将每个位置的卷积图编码成短的特征向量,在每个卷积图的位
置上,输出objectness score和k个region proposals的regression bounds。
因此,本文的RPN可以看作是fully-convolutional network (FCN),对于生成detecting proposals这种任务,是
end-to-end的。为了使RPN和fast r-cnn相统一,我们提出了一个简单的训练框架,在region proposal task和object detection
的微调中依次交替(保持proposals固定)。
3、具体介绍
Region Proposal Networks
RPN的输入为一张图像,输出为一系列的矩形框(proposals),每一个会带有objectness score。本文使用fcn模型来处理
这个过程。因为我们的目标是与fast r-cnn的检测网络共享计算,因此我们假设这些网络共享卷积层。
为了生成region proposals,在最后一个共享卷积层中,我们对其输出滑动使用小的网络。这个网络与n*n的空间窗口(输入为卷积特征图)
全连接。每个滑动窗口被映射为低维的向量,然后将其输入两个独立的全连接层中,一个是回归层,一个是分类层。
这个小网络是以滑窗的方式操作的,因此全连接层共享所有空间位置。
Translation-Invariant Anchors
在每个滑窗位置上,同时预测k个proposals和4k个reg相应的输出,以及2k个cls scores(每个proposal为目标/非目标的概率),这k
个proposals相对k个reference boxes,称为anchors。在每个滑动位置上,使用3个scales和3个aspect ratios,共生成9个anchors。对于
一个W*H的特征图,共有W*H*k个anchors,这种方法的好处就是translation invariant,
A Loss Function for Learning Region Proposals
为了训练RPN,为每个anchor赋一个类别标签(是否是object)。我们为两类anchors赋于正值:(1)anchor与ground_truth box有最大的
IoU重叠;(2)IoU重叠超过0.7。 IoU小于0.3则为negative。损失函数定义如下:
其中i为一个mini batch的一个anchor的索引,pi预测某anchor i是目标的概率,带星号表示相应的标签。
此外,本文采用的bounding-box regression与之前的基于特征图的方式不同。在fast r-cnn中,bounding-box regression是在任意大小的区域上
,经过pool后的特征上进行的,所有大小的区域上的回归权重是共享的。在本文中,用于regression的特征在特征图上有着共同的空间大小。
为了处理不同尺寸,需要学习k个bounding-box regressors,每个regressors对应一个scale和一个aspect ratio,并且k个回归器不共享权重。
Optimization
RPN由FCN实现,可通过end-to-end的BP算法和SGD进行训练。采用image-centric的采样方法训练网络,每个mini-batch从单张图像中获得,包含
正、负anchors。可以将所有的anchors loss放在一起训练,但这样会偏向于负anchors(负类鑫)。本文在一张图上随机采样256个anchors来计算一个
mini-batch的损失函数,正、负anchors的比例为1:1.
Sharing Convolutional Features for Region Proposal and Object Detection
至此我们已经描述了如何训练一个region proposal generation的网络,但没有考虑region-based 的目标检测CNN将利用这些proposals。采用fast r-cnn
的检测网络,接下来将描述一个学习卷积层的算法,这个卷积层被RPN和fast r-cnn共享。
RPN和fast r-cnn的训练时独立的,通过不同的方式来修改它们的卷积层。因此我们需要提出一个技术,考虑在两个网络间共享卷积层,而不是独立的两个网
络。注意这不是仅仅简单定义一个包括RPN和fast r-cnn的网络,然后用BP算法联合优化。原因是fast r-cnn依赖于固定大小的object proposals,这是一个不清楚
的先验,如果学习fast r-cnn同时改变proposals的机制是否收敛。本文通过交替优化,采用4步训练算法来学习共享特征。
第一步,按照上述方式训练RPN,这个网络由ImageNet预训练模式初始化,对region proposal task采用end-to-end微调。
第二步,使用fast r-cnn训练独立的检测网络,使用第一步中生成的proposals。它的初始化也是用ImageNet预训练模式,此时两个
网络不共享卷积特征。
第三步,使用检测网络初始化RPN训练,但固定共享卷积层,只对RPN进行微调(?)
至此,两个网络共享卷积层。最后,保持共享卷积层固定,微调fast r-cnn中的fc layers。如此,两个网络共享卷积层并且形成一个统一的网络。
Implementation Details
我们训练和测试region proposal和目标检测网络在单一尺度的图像上,re-scale图像让shorter side为600像素(?)
对于anchors,使用3种尺度(128,256,512),以及3种aspect ratios(1:1,1:2,2:1)。