Faster R-CNN


0.摘要

最先进的目标检测网络依靠候选区域筛选来假设目标的位置。SPPnet和Fast R-CNN等研究已经减少了这些检测网络的运行时间,使得候选区域筛选的计算成为瓶颈。Faster R-CNN中,我们引入了一个候选区域的筛选网络(RPN),该网络与检测网络共享全图像的卷积特征,从而使近乎零成本的候选区域筛选成为可能。RPN是一个全卷积网络,可以同时在每个位置预测目标边界和目标得分。RPN通过端到端的训练,可以生成高质量的候选区域,由Fast R-CNN用于检测。我们将RPN和Fast R-CNN通过共享卷积特征进一步合并为一个单一的网络——使用最近流行的具有“注意力”机制的神经网络术语,RPN组件告诉检测网络在哪里寻找目标。对于非常深的VGG-16模型,我们的检测系统在GPU上的帧率为5fps(包括所有步骤),同时在PASCAL VOC 2007,2012和MS COCO数据集上实现了最新的目标检测精度,每个图像只有300个候选区域。在ILSVRC和COCO 2015竞赛中,Faster R-CNN和RPN是多个比赛中获得第一名输入的基础。代码可公开获得。

1.引言

目标检测的最新进展是由候选区域筛选和基于区域的卷积神经网络(R-CNN)的成功驱动的。尽管最初开发的基于区域的CNN计算成本很高,但是由于在各种候选区域中共享卷积,所以其成本已经大大降低了。忽略花费在候选区域筛选上的时间,最新版本Fast R-CNN利用非常深的网络实现了接近实时的速率。现在,候选区域筛选是最新的检测系统中的计算瓶颈。

候选区域筛选方法通常依赖廉价的特征和简练的推断方案。选择性搜索是最流行的方法之一,它贪婪地合并基于设计的低级特征的超级像素。然而,与有效的检测网络(Fast R-CNN)相比,选择性搜索速度慢了一个数量级,在CPU实现中每张图像的时间为2秒。EdgeBoxes[6]目前提供了在候选区域质量和速度之间的最佳权衡,每张图像0.2秒。尽管如此,候选区域的筛选步骤仍然像检测网络那样消耗同样多的运行时间。

有人可能会注意到,基于候选区域的快速CNN利用GPU,而在研究中使用的候选区域的筛选方法在CPU上实现,使得运行时间比较不公平。加速候选区域筛选计算的一个显而易见的方法是将其在GPU上重新实现。这可能是一个有效的工程解决方案,但重新实现忽略了下游检测网络,因此错过了共享计算的重要机会。【用GPU,硬件设备解决这个问题,显然不合适】

在本文中,我们展示了算法的变化——用深度卷积神经网络计算候选区域——一个有效的解决方案,其中在给定检测网络计算的情况下候选区域计算接近零成本。为此,我们引入了新的候选区域筛选网络(RPN),它们共享最先进目标检测网络的卷积层(SPPnet, Fast R-CNN)。通过在测试时共享卷积,计算候选区域的成本很小(例如,每张图像10ms)。

基于区域的检测器所使用的卷积特征映射,如Fast R-CNN,也可以用于生成候选区域。在这些卷积特征之上,我们通过添加一些额外的卷积层来构建RPN,这些卷积层同时在网格上的每个位置上进行bounding boxes 回归和预测分类。因此RPN是一种全卷积网络(FCN),可以针对生成检测候选区域的任务进行端到端的训练。

RPN旨在有效预测具有广泛尺度和长宽比的候选区域。与使用图像金字塔(图1,a)或滤波器金字塔(图1,b)的流行方法[8],[9],[1]相比,我们引入新的“锚”盒(anchor boxes)作为多种尺度和长宽比的参考。我们的方案可以被认为是回归参考金字塔(图1,c),它避免了枚举多种比例或长宽比的图像或滤波器。这个模型在使用单尺度图像进行训练和测试时运行良好,从而有利于运行速度。

图1:解决多尺度和尺寸的不同方案。(a)构建图像和特征映射金字塔,分类器以各种尺度运行。(b)在特征映射上运行具有多个比例/大小的滤波器的金字塔。(c)我们在回归函数中使用参考边界框金字塔。

为了将RPN与Fast R-CNN 目标检测网络相结合,提出了一种训练方案,在微调候选区域删选任务和微调目标检测任务之间进行交替,同时保持候选区域的固定。该方案快速收敛,并产生两个任务之间共享的具有卷积特征的统一网络。

在PASCAL VOC检测基准数据集上综合评估了Faster R-CNN的方法,其中具有Fast R-CNN的RPN产生的检测精度优于使用选择性搜索的Fast R-CNN的强基准。同时,在测试时几乎免除了选择性搜索的所有计算负担——候选区域筛选的有效运行时间仅为10毫秒。使用非常深的模型,我们的检测方法在GPU上仍然具有5fps的帧率(包括所有步骤),因此在速度和准确性方面是实用的目标检测系统。论文还报告了在MS COCO数据集上的结果,并使用COCO数据研究了在PASCAL VOC上的改进。代码可公开获得https://github.com/shaoqingren/faster_rcnn(在MATLAB中)和https://github.com/rbgirshick/py-faster-rcnn(在Python中)。

RPN和Faster R-CNN的框架已经被采用并推广到其他方法,如3D目标检测[13],基于部件的检测[14],实例分割[15]和图像标题[16]。该快速和有效的目标检测系统也已经在Pinterest[17]的商业系统中建立了。

在ILSVRC和COCO 2015竞赛中,Faster R-CNN和RPN是ImageNet检测,ImageNet定位,COCO检测和COCO分割中几个第一名参赛者的基础。RPN完全从数据中学习候选区域,因此可以从更深入和更具表达性的特征(例如[18]中采用的101层残差网络)中轻松获益。Faster R-CNN和RPN也被这些比赛中的其他几个主要参赛者所使用。这些结果表明,Faster R-CNN的方法不仅是一个实用合算的解决方案,而且是一个提高目标检测精度的有效方法。

2.相关工作

候选目标区域 候选区域筛选方法方面有大量的文献。候选区域筛选方法的综述和比较可以在[19],[20],[21]中找到。广泛使用的目标提议方法包括基于超像素分组(例如,选择性搜索[4],CPMC[22],MCG[23])和那些基于滑动窗口的方法(例如窗口中的目标[24],EdgeBoxes[6])。目标提议方法被采用为独立于检测器(例如,选择性搜索[4]目标检测器,R-CNN[5]和Fast R-CNN[2])的外部模块。