NIPS 2015
论文链接:https://arxiv.org/pdf/1506.01497.pdf
.
Region proposal 和 region-based的卷积神经网络的方法成功推动了目标检测的发展。
虽然region-based CNNs的方法计算跟开始时一样昂贵,但是由于 proposals之间的共享卷积它们的成本已经大大降低。最新的Fast R-CNN,在忽略了花费在 region proposals上的时间后,使用非常深的网络实现了接近实时的速率,现在 proposals是在当前最新的检测系统中的测试时间瓶颈。
Region proposal方法通常依赖于便宜的特整和经济的推理方案。Selective Search 是最受欢迎的方法之一,但是与高效的检测网络相比,Selective Search要慢一个数量级。 EdgeBoxes目前已经在质量和速度之间实现了很好的均衡。然而 region proposal步骤仍然花费 和detection network一样多的时间。同时,我们也会注意到 region-based CNNs的方法利用了GPU的优点,而被使用在调查中的region proposal的方法使用的是CPU,这就使得这种运行时间显的不公平。 加快proposal计算的一个有效的方法是在GPU上重新进行实验,这可能是一个有效的结局方案,但是重新实验会忽略检测网络的down-stream,因此会失去共享计算的重要机会。
本文作者提出了一个算法的变形----用深度卷积神经网络来计算 proposals,这会产生一个简单并且有效的解决方案,在这个方案中与检测网络的计算时间相比, proposal的计算几乎不花时间。因此,作者提出 Region Proposal Networks (RPNs),它和最新的目标检测网络共享卷积层。在测试时共享卷积, 计算proposals花费的时间就很少。 RPN是一个全卷积网络,它以端到端的方式被训练去生成detection proposals。
RPNs可以有效的预测不同尺寸的 region proposals。如下图,与其它不同的方法(a,b)相比,作者引入了新的“anchor”框,在多个尺度和纵横比上作为参考。本文的方法可以被认为是一个回归参考的金字塔(c)。
Object Proposals:
(1) based on grouping super-pixels:eg:Selective Search, CPMC , MCG
(2)based on sliding windows:eg: objectness in windows, EdgeBoxes
(3) proposal作为独立于检测器的额外模块:eg :Selective Search 、object detectors, R-CNN , and Fast R-CNN
Deep Networks for Object Detection:R-CNN、 OverFeat、 MultiBox。
卷积的共享计算,由于其直观、准确的视觉识别功能而受到越来越多的关注。eg:OverFeat、Fast R-CNN
Faster R-CNN的整体框架:由两个模块组成
(1) The first module: a deep fully convolutional network that proposes regions
(2) The second module : Fast R-CNN detector
that uses the proposed regions
就是上述红色框起来的部分,RPN网络以一张图像作为输入,输出一组矩形框,每个都带有 objectness score。为了生成 region proposals,作者在共享卷积层输出的特征图上滑动一个小网络,该小网络以输入卷积特征图的n×n个空间窗口作为输入,本文中n=3,每个窗口被压缩称一个低维向量(下图的256-d),送进两个全连接层(box-regression layer 和box-classification layer)。
上图就是RPN的图示,意思就是在卷积层输出的特征图上选取一个n×n的小区域输入到网络中,这个小特征被映射成一个低维的向量,如上图中的256-d,就是由图中的红色框框特征图压映射成的。映射后的向量被送入两个全连接层中来进行回归和分类。其中,每个位置可能的proposals数量最大为k(k个proposals是根据k个anchors来进行参数化的,锚点为滑动窗口的中心点,比如特征图大小为WH,则相当于有WH个锚点,则有WHk个anchor boxs,anchor boxs大小与 scale and aspect ratio 有关,如下图,本文k=9,也就是每个位置9个anchors)。
简单来说,这个过程就是特征图上的每个位置都有9个anchors,它输入到RPN后会给每个位置的9anchors都进行回归(计算每个anchor的offset)和分类,得到的每个位置的9个新框就是本文中的 region proposals。
为了训练RPN,作者为每个anchor分配一个二值类label,来表示这个是目标不是。 对两类anchor分配positive label:(1)anchor和一个gt有最高的IOU值(2)anchor与任何一个gt的iou大于等于0.7。
对anchor分配 non-positive label: anchor与所有gt的IOU值都小于0.3。
既不是positive的anchor,也不是non-positive的anchor,对训练是没有帮助的。
根据以上定义,最小化损失函数:
总共为两个损失,分类损失 L c l s L_{cls} Lcls为log loss,判断是否属于object。回归损失为 L r e g ( t i , t i ∗ ) = R ( t i − t i ∗ ) L_{reg}\left ( t_{i} ,t_{i}^{*}\right )=R\left ( t_{i}-t_{i}^{*} \right ) Lreg(ti,ti∗)=R(ti−ti∗), R R R是smooth L 1 L_{1} L1 loss, P i ∗ L r e g P_{i}^{*}L_{reg} Pi∗Lreg意思就是只有anchor是positive时才被激活。
cls层和reg层的输出分别包括 P i P_{i} Pi和 t i t_{i} ti。
可以通过反向传播和随机梯度下降对RPN进行端到端的训练。作者通过从标准偏差为0.01的零均值高斯分布中绘制权重来随机初始化所有新层,其它层通过ImageNet分类的预训练模型初始化。精调所有层的ZF net、 conv3 1和 up for the VGG net to conserve memory。在PASCAL VOC 数据集上,60k mini-batches使用学习率为0.001,next 20k mini-batches为0.0001。momentum 为0.9,weight decay 为 0.0005 ,实验使用 Caffe框架。
对于目标检测,我们采用Fast R-CNN。RPN和Fast R-CNN都是独立训练的,它们会以不同的方式修改卷积层,因此我们需要找到一种方法可以让两个网络共享卷积层,而不是两个网络独立的卷积层。下面讨论三种特征共享的网络:
(1)Alternating training:首先训练RPN,然后使用proposals去训练Fast R-CNN。网络由Fast R-CNN精调,然后去初始化RPN,这是迭代的过程,这个方法在整个实验过程中都使用。
(2) Approximate joint training:RPN 和 Fast R-CNN送进一个网络中。在训练 Fast R-CNN时,每个 SGD迭代过程中,前向传播产生的 region proposals被视为固定的、预计算的 proposals。反向传播像之前一样进行,来自RPN损失的信息和来自Fast R-CNN的损失信息在共享层中被合并。
(3) Non-approximate joint training:RPN预测的bounding box也是输入的函数。Faster R-CNN中的ROI pooling层接受卷积特征和预测的bounding box作为输入。
4-Step Alternating Training:在本文中,作者采用四步训练算法,通过交替优化来学习共享特征(1)先训练RPN,使用 ImageNet-pre-trained预训练模型来进行初始化,并对 region proposal进行端到端微调。(2)通过 RPN产生的proposals来训练Fast R-CNN检测网络。这个检测网络也是使用 ImageNet-pre-trained预训练模型来进行初始化的。此时两个网络还不共享卷积层。(3)使用detector network去初始化RPN 训练,此时共享卷积层,仅仅微调RPN特有的层。(4)保持共享的卷积层固定,此时微调Fast R-CNN的特有的层。
因此,这两个网络共享相同的卷积层,形成一个统一的网络。