Faster R-CNN :Towards Real-Time Object Detection with Region Proposal Networks
0.论文摘要
最先进的目标检测网络依赖于候选框算法来假设目标位置。像SPPnet[7]和Fast R-CNN[5]这样的进步已经减少了这些检测网络的运行时间,暴露了候选框计算作为一个瓶颈。在这项工作中,我们介绍了一个候选框网络(RPN),它与检测网络共享全图像卷积特征,从而实现几乎免费的候选框。RPN是一个完全卷积的网络,它同时预测每个位置的目标边界和目标分数。RPN被端到端训练以生成高质量的候选框,这些建议被Fast R-CNN用于检测。通过简单的交替优化,可以训练RPN和Fast R-CNN共享卷积特征。对于非常深的VGG-16模型[19],我们的检测系统在GPU上的帧速率为5fps(包括所有步骤),同时在PASCAL VOC 2007(73.2%mAP)和2012(70.4%mAP)上使用每张图像300个候选框实现了最先进的目标检测精度。
1.研究背景
目标检测的最新进展是由候选框方法(例如[22])和基于区域的卷积神经网络(R-CNN)[6]的成功推动的。尽管最初在[6]中开发的基于区域的CNN在计算上非常昂贵,但由于在候选框之间共享卷积,它们的成本已经大大降低[7,5]。最新的化身,Fast R-CNN[5],使用非常深的网络[19]实现了接近实时的速率,同时忽略了花费在候选框上的时间。现在,候选框是最先进的检测系统中的计算瓶颈。候选框方法通常依赖于廉价的特征和经济的推理方案。选择性搜索(SS)[22]是最流行的方法之一,它基于设计的低级特征贪婪地合并超像素。然而,与高效检测网络[5]相比,选择性搜索要慢一个数量级,在CPU实现中每个图像2秒。EdgeBoxes[24]目前提供了候选框质量和速度之间的最佳权衡,每张图像0.2秒。然而,候选框步骤仍然消耗与检测网络一样多的运行时间。
人们可能会注意到,快速的基于区域的CNN利用了GPU,而研究中使用的候选框方法是在CPU上实现的,这使得这种运行时比较不公平。加速候选框计算的一个显而易见的方法是为GPU重新实现它。这可能是一个有效的工程解决方案,但重新实现忽略了下游检测网络,因此错过了共享计算的重要机会。
为此,我们引入了新的候选框网络(RPNs),它与最先进的目标检测网络共享卷积层[7,5]。通过在测试时共享卷积,计算方案的边际成本很小(例如,每个图像10毫秒)。
我们的观察是,基于区域的检测器使用的卷积(conv)特征图,如 Fast R-CNN,也可以用于生成候选框。在这些conv特征之上,我们通过添加两个额外的conv层来构建rpn:一个层将每个convmAP位置编码成一个短的(例如,256-d)特征向量,另一个层在每个convmAP位置输出相对于该位置的各种比例和纵横比的k个候选框的客观性分数和回归边界(k=9是典型值)。
因此,我们的rpn是一种全卷积网络(FCN)[14],它们可以被端到端地训练,专门用于生成检测建议的任务。为了将RPNs与Fast R-CNN[5]目标检测网络统一起来,我们提出了一种简单的训练方案,该方案在候选框任务的微调和目标检测的微调之间交替,同时保持候选框固定。这种方案收敛速度快,并产生一个统一的网络,具有两个任务之间共享的卷积特征。
我们在PASCAL VOC检测基准[4]上评估了我们的方法,其中具有Fast R-CNN的RPNs比具有Fast R-CNN的选择性搜索的强基线产生更好的检测准确性。同时,我们的方法在测试时几乎免除了SS的所有计算负担——候选框的有效运行时间仅为10毫秒。使用[19]昂贵的非常深的模型,我们的检测方法在GPU上仍然具有5fps的帧速率(包括所有步骤),因此在速度和准确性方面都是实用的目标检测系统(PASCAL VOC 2007上的mAP为73.2%,2012上的mAP为70.4%)。
2.相关工作
最近的几篇论文提出了使用深度网络定位特定类别或类别不可知的边界框的方法[21,18,3,20]。在OverFeat方法[18]中,全连接(fc)层被训练来预测假设单个目标的定位任务的方框坐标。然后,fc层变成conv层,用于检测多个特定于类的目标。多盒方法[3,20]从其最后fc层同时预测多个(例如800个)框的网络生成候选框,其用于R-CNN[6]目标检测。他们的建议网络应用于单个图像或多个大型图像裁剪(例如,224 × 224)[20]。我们将在后面用我们的方法更深入地讨论OverFeat和MultiBox。卷积的共享计算[18, 7, 2, 5]已经吸引了越来越多的关注,以实现高效而准确的视觉识别。OverFeat论文[18]从图像金字塔计算conv特征,用于分类、定位和检测。共享卷积特征图上的自适应大小池化(SPP)[7]被提出用于有效的基于区域的目标检测[7,16]和语义分割[2]。Fast R-CNN[5]支持对共享卷积特征进行端到端检测器训练,并显示出引人注目的准确性和速度。
3. Region Proposal Networks
候选框网络(RPN)将图像(任何大小)作为输入,并输出一组矩形目标建议,每个建议都有一个客观性得分。我们使用全卷积网络[14]对该过程进行建模,我们将在本节中进行描述。因为我们的最终目标是与Fast R-CNN目标检测网络共享计算[5],我们假设两个网络共享一组公共的卷积层。在我们的实验中,我们研究了Zeiler和Fergus模型[23](ZF),它有5个可共享的卷积层,以及Simonyan和Zisserman模型[19](VGG),它有13个可共享的卷积层。
为了生成候选框,我们在最后一个共享卷积层输出的卷积特征图上滑动一个小网络。
每个滑动窗口被映射到一个低维向量(ZF为256-d,VGG为512-d)。这个向量被输入到两个完全连接的兄弟层中——一个边界框回归层(reg)和一个边界框分类层(cls)。我们在本文中使用n=3,注意到输入图像上的有效感受野很大(ZF和VGG分别为171和228像素)。该微型网络在图1(左)中的单个位置示出。请注意,因为微型网络以滑动窗口方式运行,所以完全连接的层在所有空间位置共享。这种架构自然是用一个n × n 卷积层和两个同级1 × 1 卷积层(分别用于reg和cls)来实现的。ReLUs[15]应用于n × n 卷积层的输出。
图1:左图:区域建议网络(RPN)。右图:在PASCAL VOC 2007测试中使用RPN候选框的检测示例。我们的方法可以检测各种比例和长宽比的物体。
3.1 平移不变性的Anchors
在每个滑动窗口位置,我们同时预测k个候选框,因此reg回归层具有编码k个框的坐标的4k输出。cls分类层输出2k个分数,用于估计每个候选框的目标/非目标概率。这k个候选框相对于k个参考框(称为锚)进行参数化。每个锚点都位于所讨论的滑动窗口的中心,并与比例和纵横比相关联。我们使用3个比例和3个纵横比,在每个滑动位置产生k=9个锚。对于尺寸为W × H(通常为2,400)的卷积特征图,总共有 W × H W ×H W×H一般为2400个锚点。我们的方法的一个重要性质是,它是平移不变的,无论是就锚还是计算相对于锚的候选框的函数而言。
作为比较,多检测框方法[20]使用k-means来生成800个锚,它们不是平移不变的。如果一个人变换图像中的一个目标,候选框也应该变换,并且相同的函数应该能够预测任一位置的候选框。此外,因为多盒锚不是平移不变的,所以它需要(4+1)× 800维输出层,而我们的方法需要(4+2)× 9维输出层。我们的候选框层的参数少了一个数量级(使用GoogLeNet[20]的MultiBox为2700万,而使用VGG-16的RPN为240万),因此在小数据集(如PASCAL VOC)上过拟合的风险更小。
3.2 学习候选框的损失函数
为了训练RPNs,我们为每个锚点分配一个二进制类标签(是否是目标)。我们给两种锚点分配一个正样本标签:(i)与真实目标具有最高交并比(IoU)重叠的锚点,或(ii)与任何真实目标具有高于0.7的IoU重叠的锚点。请注意,单个真实目标可能会将正标签分配给多个锚。对于所有真实目标,如果非正锚点的IoU比率低于0.3,我们将负标签分配给非正锚点。既不是正样本也不是负样本的锚对训练目标没有贡献。
根据这些定义,我们最小化了Fast RCNN中多任务损失后的目标函数[5]。我们对图像的损失函数定义为:
这里, i i i是小批量锚的索引, p i p_i pi是锚 i i i成为目标的预测概率。如果锚定为正样本,则地面真实标签 p i ∗ p_i^* pi∗为1,如果锚定为负样本,则为0。 t i t_i ti是表示预测边界框的4个参数化坐标的向量, t i ∗ t^∗_i ti∗是与正锚相关联的地面真实框的坐标。分类损失 L c l s L_{cls} Lcls是两个类别(目标与非目标)的对数损失。对于回归损失,我们使用 L r e g ( t i , t i ∗ ) = R ( t i − t i ∗ ) L_{reg}(t_i, t^∗_i ) = R(t_i − t^∗_i) Lreg(ti,ti∗)=R(ti−ti∗),其中R是[5]中定义的稳健损失函数(光滑 L 1 L_1 L1)。术语 p i ∗ p^∗_i pi∗ L r e g L_{reg} Lreg表示回归损失仅在正锚点 ( p i ∗ = 1 ) (p^∗_i = 1) (pi∗=1)时被激活,否则被禁用 ( p i ∗ = 0 ) (p^∗_i = 0) (pi∗=0)。cls分类和reg回归层的输出分别由 p i {p_i} pi和 t i {t_i} ti组成。这两项用 N c l s N_{cls} Ncls和 N r e g N_{reg} Nreg以及平衡权重 λ λ λ进行归一化
对于回归,我们采用以下4个坐标的参数化[6]:
其中 x 、 y 、 w x、y、w x、y、w和 h h h表示边界框中心、宽度和高度的两个坐标。变量 x x x、 x a x_a xa和 x ∗ x^∗ x∗分别用于预测框、锚点框和真实目标(同样用于 y 、 w 、 h y、w、h y、w、h)。这可以被认为是从锚点到附近的真实目标的边界框回归。
然而,我们的方法通过不同于以前基于特征图的方法的方式实现了边界框回归[7,5]。在[7,5]中,对从任意大小的区域汇集的特征执行边界框回归,并且回归权重由所有大小的区域共享。在我们的公式中,用于回归的特征在特征图上具有相同的空间大小(n × n)。为了考虑不同的大小,学习一组k个边界框回归量。每个回归量负责一个比例和一个纵横比,k个回归量不共享权重。因此,即使特征具有固定的大小/比例,仍然可以预测各种大小的边界框。
3.3 优化
RPN自然实现为全卷积网络[14],可以通过反向传播和随机梯度下降(SGD)[12]进行端到端训练。我们遵循[5]中的“图像中心”采样策略来训练这个网络。每个小批量都来自包含许多正锚和负锚的单个图像。可以优化所有锚的损失函数,但这将偏向负样本,因为它们占主导地位。相反,我们在图像中随机采样256个锚,以计算小批量的损失函数,其中采样的正锚和负锚的比例高达1:1。如果图像中的正样本少于128个,我们就用负样本填充小批量样本。
我们通过从标准偏差为0.01的零均值高斯分布中提取权重来随机初始化所有新层。所有其他层(即共享的卷积层)通过预训练ImageNet分类的模型来初始化[17],这是标准实践[6]。我们调优了ZF net的所有层,并为VGG net进行了conv3_1及以上的调优,以节省内存[5]。在PASCAL数据集上,我们对60k个小批量使用0.001的学习率,对接下来的20k个小批量使用0.0001的学习率。我们还使用0.9的动量和0.0005的权重衰减[11]。我们的实现使用Caffe[10]
3.4 用于区域建议和目标检测的共享卷积特征
到目前为止,我们已经描述了如何训练用于区域建议生成的网络,而不考虑将利用这些建议的基于区域的目标检测CNN。对于检测网络,我们采用Fast R-CNN[5],现在描述一种算法,该算法学习在RPN和Fast R-CNN之间共享的卷积层。独立训练的RPN和Fast R-CNN都会以不同的方式修改它们的卷积层。因此,我们需要开发一种技术,允许在两个网络之间共享卷积层,而不是学习两个独立的网络。请注意,这并不像简单地定义一个包括RPN和FasFast R-CNN的单一网络,然后结合反向传播对其进行优化那么简单。原因是Fast R-CNN训练依赖于固定的候选框先验地不清楚在改变提议机制的同时学习Fast R-CNN是否会收敛。虽然这种联合优化是未来工作中一个有趣的问题,但我们开发了一种实用的4步训练算法,通过交替优化来学习共享特征。
在第一步中,我们如上所述训练RPN。该网络由ImageNet 预训练模型初始化,并针对区域建议任务进行端到端微调。在第二步中,我们使用由步骤1 RPN生成的候选框,通过Fast R-CNN训练单独的检测网络。该检测网络也由ImageNet预训练模型初始化。此时,两个网络不共享卷积层。在第三步中,我们使用检测器网络来初始化RPN训练,但是我们修复共享的卷积层,并且只微调RPN独有的层。现在这两个网络共享卷积层。最后,保持共享卷积层不变,我们微调Fast R-CNN的fc层。因此,两个网络共享相同的卷积层并形成统一的网络。
3.5 实现细节
我们在单尺度图像上训练和测试候选框和目标检测网络[7,5]。我们重新缩放图像,使其短边s=600像素[5]。多尺度特征提取可能会提高准确性,但不会表现出良好的速度——准确性权衡[5]。我们还注意到,对于ZF和VGG网络,最后一个conv层的总步幅在重新缩放的图像上是16像素,因此在典型的PASCAL图像上是10像素(500 × 375)。即使如此大的步幅也能提供良好的结果,尽管较小的步幅可以进一步提高精确度。对于锚点,我们使用3个比例,框面积为 12 8 2 128^2 1282、 25 6 2 256^2 2562和 51 2 2 512^2 5122像素,3个纵横比为1:1、1:2和2:1。我们注意到,我们的算法允许在预测大型提案时使用大于潜在感受野的锚盒。这样的预测不是不可能的,如果只有物体的中间是可见的,人们仍然可以粗略地推断出物体的范围。通过这种设计,我们的解决方案不需要多尺度特征或多尺度滑动窗口来预测大区域,节省了大量的运行时间。图1(右)显示了我们的方法对于宽范围的比例和纵横比的能力。下表显示了使用ZF网了解到的每个锚的平均候选框(s=600的数字)。
跨越图像边界的锚框需要小心处理。在训练过程中,我们忽略所有跨界锚,这样它们就不会造成损失。对于典型的1000 × 600图像,总共大约有20k(≈60 × 40 × 9)个锚点。在忽略跨界锚点的情况下,每个图像大约有6k个锚点用于训练。如果在训练中不忽略越界异常值,它们会在目标中引入大的、难以纠正的误差项,并且训练不会收敛。然而,在测试过程中,我们仍然将全卷积RPN应用于整个图像。这可能会生成跨边界建议框,我们将其剪辑到图像边界。一些RPN边界框彼此高度重叠。为了减少冗余,我们根据cls分类分数对候选框采用非最大抑制(NMS)。我们将NMS的IoU阈值固定在0.7,这为每个图像留下了大约2k个候选框。正如我们将要展示的,NMS不会损害最终的检测精度,但是大大减少了候选框的数量。在NMS之后,我们使用排名前N的候选框进行检测。在下文中,我们使用2k RPN候选框训练Fast R-CNN,但是在测试时评估不同数量的候选框。