(41)[NIPS15] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

计划完成深度学习入门的126篇论文第四十一篇,MSRA的Kaiming He及Ross Girshick, 和Jian Sun等完成的对前作Fast R-CNN的改进。[github]


Abstract

最先进的目标检测网络依赖于区域建议算法来假设目标位置。SPPnet[1]和Fast R-CNN[2]等技术的进步,降低了检测网络的运行时间,暴露了region proposal计算的瓶颈。在这项工作中,我们引入了一个与检测网络共享全图像卷积特性的region proposal网络(RPN),从而实现了几乎免费的region proposal。RPN是一个完全卷积的网络,它同时预测每个位置的对象边界和对象得分。对RPN进行端到端训练,生成高质量的region proposal,Fast R-CNN对其进行检测。我们进一步合并RPN和Fast R-CNN到一个单一的网络,通过共享他们的卷积特征,使用最近流行的术语神经网络与注意机制,RPN组件告诉统一的网络在哪里看。对于非常深的VGG-16型号[3],我们的检测系统在GPU上的帧率为5fps(包括所有步骤),同时在PASCAL VOC 2007、2012和MS COCO数据集上实现了最先进的目标检测精度,每张图像只有300个proposal。在ILSVRC和COCO 2015年的比赛中,Faster R-CNN和RPN是几个比赛的第一名方法的基础。代码已经公开。

 


1 INTRODUCTION

region proposal方法(如[4])和基于区域的卷积神经网络(RCNNs)[5]的成功应用推动了目标检测领域的最新进展。虽然基于区域的CNNs的计算成本与最初在[5]中开发时一样高,但是由于在proposal[1]和[2]之间共享卷积,它们的成本已经大大降低。最新的版本是Fast R-CNN [2],当忽略了在region proposal上花费的时间时,它使用非常深的网络[3]实现了接近实时的速率。目前,在最先进的检测系统中,proposal是测试时间计算的瓶颈。

region proposal方法通常依赖于廉价的特性和经济的推理方案。选择性搜索[4]是最流行的方法之一,它贪婪地合并基于工程底层特性的超像素。然而,与高效的检测网络[2]相比,选择性搜索慢了一个数量级,在CPU实现中,每幅图像的搜索速度为2秒。EdgeBoxes[6]目前提供了proposal质量和速度之间的最佳权衡,每幅图0.2秒。然而,区域建议步骤仍然消耗与检测网络相同的运行时间。

(41)[NIPS15] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks_第1张图片

有人可能会注意到,快速的基于区域的CNNs利用了gpu,而研究中使用的region proposal方法是在CPU上实现的,这使得这种运行时比较不公平。加速proposal计算的一个明显方法是为GPU重新实现它。这可能是一个有效的工程解决方案,但重新实现忽略了下游检测网络,因此错过了共享计算的重要机会。

在本文中,我们证明了一个基于深度卷积神经网络的算法变化计算方案,在给定检测网络计算量的情况下,可以得到一个优雅而有效的解决方案,该方案的计算几乎是免费的。为此,我们引入了新的区域建议网络(RPNs),它与最先进的目标检测网络[1]、[2]共享卷积层。通过在测试时共享卷积,计算proposal的边际成本很小(例如,每张图像10ms)。

我们观察到,基于区域的检测器使用的卷积特征图,如Fast RCNN,也可以用来生成region proposal。在这些卷积特性的基础上,我们通过添加一些额外的卷积层来构造RPN,这些卷积层同时在一个规则网格上的每个位置上后退region边界和客观度评分。因此,RPN是一种全卷积网络(FCN)[7],可以针对生成检测建议的任务进行端到端训练。

(41)[NIPS15] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks_第2张图片

RPN的设计是为了有效地预测具有广泛规模和纵横比的区域方案。与常用的[8],[9],[1],[2]方法不同图像的金字塔(图1,a)或过滤器的金字塔(图1,b),我们引入了新的锚框,可作为多种尺度和纵横比的参考。我们的proposal可以被认为是一个回归引用的金字塔(图1,c),它避免了枚举多个尺度或纵横比的图像或过滤器。当使用单尺度图像进行训练和测试时,该模型性能良好,从而提高了运行速度。

(41)[NIPS15] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks_第3张图片

为了将RPNs与Fast R-CNN[2]目标检测网络相结合,我们提出了一种训练方案,在保持方案不变的前提下,对region proposal任务进行微调,然后对目标检测进行微调。该方案收敛速度快,生成了一个具有卷积特征的统一网络,在两个任务之间共享。

我们在PASCAL VOC检测基准[11]上对我们的方法进行了综合评价,其中Fast R-CNNs的RPNs检测精度优于Fast R-CNNs选择性搜索的强基线。同时,我们的方法免除了在测试时选择搜索的几乎所有计算负担,proposal的有效运行时间只有10毫秒。使用非常昂贵的[3]非常深的模型,我们的检测方法在GPU上仍然具有5fps的帧速率(包括所有步骤),因此在速度和精度上都是一个实用的对象检测系统。我们还报告了在MS COCO数据集[12]上的结果,并研究了使用COCO数据对PASCAL VOC的改进。代码已经在https://github.com/邵青ren/faster_rcnn(在MATLAB中)和https://github.com/rbgirshick /py-fast -rcnn(在Python中)公开可用。

这份手稿的初步版本在[10]之前已经出版。从那时起,RPN和Faster R-CNN框架被采用并推广到其他方法,如3D对象检测[13]、基于部件的检测[14]、实例分割[15]和图像字幕[16]。并在商业系统中构建了快速有效的目标检测系统,如在Pinterest[17],与用户参与改善报告。

(41)[NIPS15] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks_第4张图片

在ILSVRC和COCO 2015的比赛中,Faster R-CNN和RPN是在ImageNet检测、ImageNet定位、COCO检测、COCO分割等几个方面排名第一的条目[18]的基础。RPNs完全学会从数据中提出区域,因此可以很容易地从更深层次和更有表现力的特性中获益(例如[18]中采用的101层残网)。Faster R-CNN和RPN也被其他几个在这些竞赛中的领先选手使用。这些结果表明,该方法不仅是一种经济有效的实用解决方案,而且是提高目标检测精度的有效途径。


2 RELATED WORK

Object Proposals. 有大量关于object proposal方法的文献。object proposal方法的综合调查和比较可以在[19]、[20]、[21]中找到。广泛使用的object proposal方法包括基于超像素分组的方法(如选择性搜索[4]、CPMC[22]、MCG[23])和基于滑动窗口的方法(如windows[24]中的对象性、EdgeBoxes[6])。object proposal方法作为独立于检测器的外部模块(如选择性搜索[4]对象检测器、RCNN[5]、Fast R-CNN[2])。

Deep Networks for Object Detection. R-CNN方法[5]训练CNNs端到端,将region proposal分类为对象类别或背景。R-CNN主要扮演分类器的角色,它不预测对象边界(除了通过边界盒回归进行细化)。它的准确性取决于region proposal模块的性能(参见[20]中的比较)。已有几篇论文提出了利用深度网络预测对象边界框[25]、[9]、[26]、[27]的方法。在OverFeat方法[9]中,训练了一个完全连接的层来预测假定为单个对象的定位任务的框坐标。然后旋转全连接层转换为卷积层,用于检测多个特定于类的对象。多盒方法[26]、[27]从一个网络生成区域建议,该网络的最后一个全连接层同时预测多个类无关的盒,从而概括了OverFeat的单盒方式。这些类无关的框被用作R-CNN[5]的建议。与我们的全卷积方案相比,多盒建议网络适用于单个图像作物或多个大型图像作物(例如,224 x 224)。多盒不共享的特点之间的建议和检测网络。稍后,我们将在上下文中使用我们的方法更深入地讨论OverFeat和MultiBox。结合我们的工作,开发了用于学习分割建议的深度掩码方法[28]。

卷积[9]、[1]、[29]、[7]、[2]的共享计算,因其高效、准确的视觉识别而受到越来越多的关注。OverFeat[9]从图像金字塔中计算卷积特征,用于分类、定位和检测。在共享卷积特征图上开发了自适应大小池(SPP)[1],用于基于区域的目标检测[1]、[30]和语义分割[29]。快速R-CNN[2]支持端到端检测器的共同卷积特性的训练,并显示了令人信服的准确性和速度。


3 FASTER R-CNN

我们的目标检测系统Faster R-CNN由两个模块组成。第一个模块是提出区域的深度全卷积网络,第二个模块是使用提出区域的快速R-CNN检测器[2]。整个系统是一个单一的、统一的目标检测网络(图2)。

(41)[NIPS15] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks_第5张图片

RPN模块使用最近流行的具有注意[31]机制的神经网络术语,告诉快速R-CNN模块去哪里查看。在3.1节中,我们介绍了区域方案网络的设计和特性。在第3.2节中,我们开发了用于训练具有共享特性的两个模块的算法。

3.1 Region Proposal Networks

Region Proposal网络(RPN)以图像(任何大小)作为输入和输出一组矩形对象建议,每个建议都有一个对象得分。我们用一个全卷积网络[7]来模拟这个过程,我们将在本节中对此进行描述。因为我们的最终目标是与一个快速的R-CNN对象检测网络[2]共享计算,所以我们假设这两个网络共享一组公共的卷积层。在实验中,我们研究了具有5个可共享卷积层的Zeiler和Fergus模型[32](ZF),以及具有13个可共享卷积层的Simonyan和Zisserman模型[3](VGG-16)。

为了生成Region Proposal,我们在最后一个共享卷积层的卷积feature map输出上滑动一个小网络。这个小网络将输入卷积特征图的一个n n空间窗口作为输入。每个滑动窗口都映射到一个低维特性(ZF为256-d, VGG为512-d, ReLU[33]如下)。该特性被输入到两个同级完全连接的层—box-regression层(reg)和box-classification层(cls)。我们在本文中使用n = 3,注意到输入图像上的有效接收域很大(ZF和VGG分别为171和228像素)。图3(左)显示了这个微型网络的单个位置。注意,由于微型网络以滑动窗口的方式运行,因此所有空间位置都共享完全连接的层。这种体系结构很自然地使用一个n x n卷积层实现,然后是两个同级的11个卷积层(分别用于reg和cls)。

3.1.1 Anchors

在每个滑动窗口的位置,我们同时预测多个地区的提议,在最大可能的提案的数量为每个位置表示为k。所以reg层4k输出编码k框的坐标,,cls层输出2k分数估计为每个proposal对象或对象的概率。k个建议是相对于k个引用框参数化的,我们称之为anchors。anchors以所述滑动窗口为中心,并与比例和纵横比相关联(图3,左)。默认情况下,我们使用3个尺度和3个纵横比,在每个滑动位置产生k = 9个锚。对于大小为wh的卷积地形图(一般为2,400个),共有whk锚点。

(41)[NIPS15] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks_第6张图片

Translation-Invariant Anchors

我们的方法的一个重要特性是它是平移不变的,无论是在锚点方面,还是在计算相对于锚点的建议的函数方面。如果一个人翻译了图像中的一个对象,那么这个建议就应该翻译,并且相同的函数应该能够在任何位置预测这个建议。这个平移不变性质由我们的方法5保证。作为比较,多框方法[27]使用k-means生成800个锚点,这些锚点不是平移不变的。因此,MultiBox不能保证在翻译对象时生成相同的建议。

平移不变性质也减小了模型的大小。MultiBox具有(4 + 1) x 800维全连通输出层,而我们的方法在k = 9个锚点的情况下具有(4 + 2) x 9维卷积输出层。因此,我们的输出层有2.8 104个参数(512(4 + 2) x 9为VGG-16),比MultiBox s输出层有6.1 x 10^6个参数(1536 x (4 + 1) x 800为GoogleNet[34]为MultiBox[27])少两个数量级。如果考虑到特征投影层,我们的建议层的参数仍然比MultiBox6少一个数量级。我们希望我们的方法对小数据集(如PASCAL VOC)的过度拟合风险更小。

Multi-Scale Anchors as Regression References

我们的锚的设计提出了一种新的解决多尺度(和纵横比)的方案。如图1所示,多尺度预测有两种流行的方法。第一种方法是基于图像/特征金字塔,例如,在DPM[8]和基于cnn的方法[9],[1],[2]。图像在多个尺度上调整大小,每个尺度计算feature map (HOG[8]或deep convolutional features[9],[1],[2])(图1(a))。这种方法通常很有用,但是很耗时。第二种方法是在特征图上使用多个尺度(和/或纵横比)的滑动窗口。例如,在DPM[8]中,不同纵横比的模型分别使用不同的滤波器大小(如5 - 7和7 - 5)进行训练,如果用这种方法处理多个尺度,可以认为是滤波器的金字塔(图1(b))。第二种方法通常与第一种方法[8]联合使用。

作为比较,我们基于锚的方法是建立在一个金字塔锚,这是更有效的成本效益。我们的方法参照多个尺度和纵横比的锚框对边界框进行分类和回归。它只依赖单一尺度的图像和特征图,并使用单一尺寸的过滤器(特征图上的滑动窗口)。通过实验,我们展示了该方案对多尺度、多尺度寻址的效果(表8)。

由于这种基于锚点的多尺度设计,我们可以简单地使用单尺度图像上计算的卷积特征,正如快速R-CNN检测器[2]所做的那样。多尺度锚点的设计是在不增加寻址尺度开销的情况下共享特性的关键组件。

3.1.2 Loss Function

对于训练RPNs,我们为每个锚分配一个二进制类标签(对象或非对象)。我们给两种锚分配了一个积极的标签:

  1. 相交过度并集(IoU)最高的锚与地面真值框重叠;
  2. IoU与地面真值框重叠大于0.7的锚与5个地面真值框重叠。

请注意,一个ground-truth框可以为多个锚分配积极的标签。通常,第二个条件足以确定阳性样本;但我们仍然采用第一种情况,因为在一些罕见的情况下,第二种情况可能找不到阳性样本。如果所有ground-truth框的IoU比率都低于0.3,我们将负标签分配给非正锚。既不积极也不消极的锚对培训目标没有帮助。利用这些定义,我们最小化了快速R-CNN[2]中多任务丢失后的目标函数。图像的损失函数定义为

\begin{aligned} L\left(\left\{p_{i}\right\},\left\{t_{i}\right\}\right) &=\frac{1}{N_{c l s}} \sum_{i} L_{c l s}\left(p_{i}, p_{i}^{*}\right) \\+\lambda & \frac{1}{N_{r e g}} \sum_{i} p_{i}^{*} L_{r e g}\left(t_{i}, t_{i}^{*}\right) \end{aligned}

这里,i为小批量锚的指标,pi为预测锚i为对象的概率。如果锚为正,则ground-truth标签pi为1,如果锚为负,则为0。ti是表示预测边界框的4个参数化坐标的向量,而ti是与一个正锚相关联的ground-truth框的参数化坐标。分类损失Lcls是两个类(对象和非对象)的日志损失。对于回归损失,我们使用L reg(ti;其中R为[2]中定义的鲁棒损失函数(光滑L1)。术语pi Lreg表示回归损失仅在正向锚点(pi = 1)时才被激活,否则为禁用(pi = 0)。cls层和reg层的输出分别由fpig和ftig组成。

这两个术语规范化的ncl和Nreg和加权平衡参数λ。在我们当前的实现中(与发布的代码中一样),Eqn.(1)中的cls术语是由小批处理大小(即, Ncls = 256), reg项由锚点位置(即Nreg 2;400)。默认设置λ= 10,因此cls和注册条款大致同样加权。我们通过实验,结果显示对λ的值在广泛(表9)。我们还注意到正常化如上不是必需的,可以简化。

对于边界盒回归,我们采用以下4个坐标的参数化[5]:

\begin{aligned} t_{\mathbf{x}} &=\left(x-x_{\mathrm{a}}\right) / w_{\mathrm{a}}, \quad t_{\mathrm{y}}=\left(y-y_{\mathrm{a}}\right) / h_{\mathrm{a}} \\ t_{\mathrm{w}} &=\log \left(w / w_{\mathrm{a}}\right), \quad t_{\mathrm{h}}=\log \left(h / h_{\mathrm{a}}\right) \\ t_{\mathrm{x}}^{*} &=\left(x^{*}-x_{\mathrm{a}}\right) / w_{\mathrm{a}}, \quad t_{\mathrm{y}}^{*}=\left(y^{*}-y_{\mathrm{a}}\right) / h_{\mathrm{a}} \\ t_{\mathrm{w}}^{*} &=\log \left(w^{*} / w_{\mathrm{a}}\right), \quad t_{\mathrm{h}}^{*}=\log \left(h^{*} / h_{\mathrm{a}}\right) \end{aligned}

其中x、y、w和h表示盒子的中心坐标及其宽度和高度。变量x、xa和x分别代表预测框、锚框和groundtruth框(同样也代表y;w;h).这可以被认为是从锚框到附近的地面真实框的边界盒回归。

然而,我们的方法与以前基于roi的方法[1]、[2]不同,实现了边界盒回归。在[1]、[2]中,对任意大小的roi汇集的特性执行边界盒回归,回归权重由所有区域大小共享。在我们的公式中,用于回归的特征在特征图上具有相同的空间尺寸(33)。为了适应不同的尺寸,我们学习了一组k个边界盒回归器。每个回归因子负责一个尺度和一个纵横比,而k个回归因子不共享权重。同样,由于锚的设计,即使特性的大小/比例是固定的,仍然可以预测各种大小的盒子。

3.1.3 Training RPNs

RPN可以通过反向传播和随机梯度下降(SGD)[35]进行端到端训练。我们采用以图像为中心的[2]采样策略来训练这个网络。每个小批都来自一个包含许多正面和负面示例锚的图像。所有锚点的损失函数都是可以优化的,但这将偏向于负样本,因为负样本占主导地位。相反,我们在一张图像中随机抽取256个锚点来计算一个小批量的损失函数,其中抽样的正锚点和负锚点的比例高达1:1。如果一个图像中有少于128个阳性样本,我们用阴性样本填充小批。

我们随机初始化所有的新层从一个零均值高斯分布与标准差0.01的权重。所有其他层(即,共享卷积层)通过对ImageNet分类[36]模型的预训练初始化,这是标准实践[5]。我们对ZF网的所有层进行调优,并对VGG网进行conv31和up调优,以保存内存[2]。在PASCAL VOC数据集中,我们对60k个小批次使用0.001的学习率,对下一个20k个小批次使用0.0001的学习率。我们使用0.9的动量和0.0005[37]的重量衰减。我们的实现使用了Caffe[38]。

 

3.2 Sharing Features for RPN and Fast R-CNN

到目前为止,我们已经描述了如何训练一个用于区域建议生成的网络,而不考虑将利用这些建议的基于区域的对象检测CNN。检测网络采用快速R-CNN[2]。接下来,我们描述了学习由RPN和快速R-CNN组成的具有共享卷积层的统一网络的算法(图2)。因此,我们需要开发一种技术,允许在两个网络,而不是学习两个独立的网络。我们讨论了三种具有共同特征的训练网络的方法:

  1. Alternating training. 在这个解决方案中,我们首先训练RPN,并利用这些建议来训练快速的R-CNN。然后使用快速R-CNN调优的网络初始化RPN,并迭代该过程。这是本文所有实验中使用的解。
  2. Approximate joint training. 在这个解决方案中,RPN和快速R-CNN网络在训练过程中合并成一个网络,如图2所示。在每个SGD迭代中,前向遍历生成区域建议,这些建议在训练快速R-CNN检测器时就像处理固定的、预先计算好的建议一样。反向传播照常进行,其中共享层将RPN损耗和快速R-CNN损耗的反向传播信号结合起来。这个解决方案很容易实现。但是这个解忽略了w。r。t的导数。提案框的坐标也是网络响应,所以是近似的。实验结果表明,该算法与交替训练相比,训练时间缩短了约25-50%。这个求解器包含在我们发布的Python代码中。
  3. Non-approximate joint training. 如上所述,RPN预测的边界框也是输入的函数。快速R-CNN中的RoI池层[2]接受卷积特性和预测的边界框作为输入,因此理论上有效的反向传播求解器还应该包含梯度w.r.t。上述近似联合训练忽略了这些梯度。在非近似联合训练解中,我们需要一个RoI池层,它是可微分的w.r.t.。这是一个非常重要的问题,可以通过在[15]中开发的RoI翘曲层给出解决方案,这超出了本文的讨论范围。

4-Step Alternating Training. 本文采用一种实用的四步训练算法,通过交替优化学习共享特征。在第一步中,我们按照第3.1.3节的描述训练RPN。使用imagenet预训练的模型初始化此网络,并为区域建议任务进行端到端调优。第二步,利用step-1 RPN生成的方案,利用快速R-CNN训练一个独立的检测网络。该检测网络也由imagenet预训练模型初始化。此时,两个网络并不共享卷积层。在第三步中,我们使用检测器网络初始化RPN训练,但是我们修复了共享卷积层,只微调了RPN特有的层。现在这两个网络共享卷积层。最后,保持共享卷积层不变,我们微调了快速R-CNN的独特层。因此,两个网络共享相同的卷积层,形成统一的网络。类似的交替训练可以运行更多的迭代,但是我们观察到的改进微不足道。

 

3.3 Implementation Details

在单尺度[1]、[2]图像上,对区域建议和目标检测网络进行训练和测试。我们重新缩放图像,使其较短的一面是s = 600像素[2]。多尺度特征提取(使用图像金字塔)可以提高精度,但不能很好地权衡[2]的速度精度。在重新缩放的图像上,ZF和VGG网在最后一个卷积层上的总步幅为16个像素,因此在调整大小(500375)之前,一个典型的PASCAL图像上的总步幅为10个像素。即使是如此大的步幅也能提供良好的结果,尽管更小的步幅可能会进一步提高准确性。

对于锚点,我们使用了3种尺度,盒子区域为1282、2562和5122像素,长宽比为1:1、1:2和2:1。这些超参数不是为特定数据集精心选择的,我们将在下一节中提供关于它们影响的烧蚀实验。如前所述,我们的解决方案不需要图像金字塔或滤波金字塔来预测多个尺度的区域,节省了大量的运行时间。图3(右)显示了我们的方法在大范围尺度和纵横比下的能力。

表1显示了使用ZF net获得的每个锚的平均建议大小。我们注意到,我们的算法允许比潜在接受域更大的预测。这样的预测不是不可能的,一个人仍然可以粗略地推断出一个物体的范围,只要这个物体的中间是可见的。

需要小心处理跨越图像边界的锚框。在训练过程中,我们忽略了所有的跨界锚点,以免造成损失。对于一个典型的1000600图像,总共大约有20000(60409)个锚。忽略跨界锚点后,每幅图像约有6000个锚点用于训练。如果训练中不忽略跨界离群点,则会在目标中引入较大且难以纠正的误差项,训练不收敛。然而,在测试过程中,我们仍然对整个图像应用全卷积RPN。这可能会生成跨边界的建议框,我们将其剪辑到图像边界。

一些RPN建议彼此高度重叠。为了减少冗余,我们根据提案区域的cls评分对提案区域采用非最大抑制(NMS)。我们将NMS的IoU阈值设置为0.7,这样每个图像就有大约2000个建议区域。正如我们将展示的,NMS不会损害最终的检测精度,但会大大减少提案的数量。在NMS之后,我们使用排名前n的建议区域进行检测。在接下来的测试中,我们使用2000个RPN提案来训练快速的R-CNN,但是在测试时评估不同数量的提案。

 

4. EXPERIMENTS

4.1 Experiments on PASCAL VOC

我们在PASCAL VOC2007检测基准上综合评价我们的方法。此数据集包括20个目标类别,大约5k个trainval图像和5k个test图像。我们还对少数模型提供PASCAL VOC2012基准[11]上的结果。对于ImageNet预训练网络,我们用“fast”版本的ZF网络[32],有5个卷积层和3个 fc层,公开的VGG-16模型(www.robots.ox.ac.uk/~vgg/research/very deep/),有13 个卷积层和3 个fc层。我们主要评估检测的平均精度(mean Average Precision, mAP),因为这是对目标检测的实际度量标准(而不是侧重于目标提案框的代理度量)。

表2(上)显示了使用各种区域提案的方法训练和测试时Fast R-CNN的结果。这些结果使用的是ZF网络。对于选择性搜索(SS),我们用“fast”模式生成了2k个左右的SS提案框。对于EdgeBoxes(EB),我们把默认的EB设置调整为0.7IoU生成提案框。SS的mAP 为58.7%,EB的mAP 为58.6%。RPN与Fast R-CNN实现了有竞争力的结果,当使用300个提案框时的mAP就有59.9%(对于RPN,提案框数量,如300,是一个图像产生提案框的最大数量。RPN可能产生更少的提案框,这样提案框的平均数量也更少了)。使用RPN实现了一个比用SS或EB更快的检测系统,因为有共享的卷积计算;提案框较少,也减少了区域方面的fc消耗(表5)。

Table 2

表2. PASCAL VOC2007年测试集的检测结果(在VOC2007 trainval训练)。该检测器是Fast R-CNN与ZF,但使用各种提案框方法进行训练和测试。

RPN的消融试验。为了研究RPN作为提案框方法的表现,我们进行了多次消融研究。首先,我们展示了RPN和Fast R-CNN检测网络之间共享卷积层的影响。要做到这一点,我们在4步训练过程中的第二步后停下来。使用分离的网络时的结果稍微降低为58.7%(RPN+ ZF,非共享,表2)。我们观察到,这是因为在第三步中,当调整过的检测器特征用于微调RPN时,提案框质量得到提高。 接下来,我们理清了RPN在训练Fast R-CNN检测网络上的影响。为此,我们用2k个SS提案框和ZF网络训练了一个Fast R-CNN模型。我们固定这个检测器,通过改变测试时使用的提案区域,评估检测的mAP。在这些消融实验中,RPN不与检测器共享特征。 在测试时用300个RPN提案框替换SS,mAP为56.8%。mAP的损失是训练/测试提案框之间的不一致所致。该结果作为以下比较的基准。 有些奇怪的是,在测试时使用排名最高的100个提案框时,RPN仍然会取得有竞争力的结果(55.1%),表明这种高低排名的RPN提案框是准确的。另一种极端情况,使用排名最高的6k个RPN提案框(没有NMS)取得具有可比性的mAP(55.2%),这表明NMS不会降低检测mAP,反而可以减少误报。 接下来,我们通过在测试时分别移除RPN的cls和reg中的一个,研究它们输出的作用。当在测试时(因此没有用NMS/排名)移除cls层,我们从没有计算得分的区域随机抽取N个提案框。N =1k 时mAP几乎没有变化(55.8%),但当N=100则大大降低为44.6%。这表明,cls得分是排名最高的提案框准确的原因。 另一方面,当在测试时移除reg层(这样的提案框就直接是anchor框了),mAP下降到52.1%。这表明,高品质的提案框主要归功于回归后的位置。单是anchor框不足以精确检测。 我们还评估更强大的网络对RPN的提案框质量的作用。我们使用VGG-16训练RPN,并仍然使用上述SS+ZF检测器。mAP从56.8%(使用RPN+ZF)提高到59.2%(使用RPN+VGG)。这是一个满意的结果,因为它表明,RPN+VGG的提案框质量比RPN+ZF的更好。由于RPN+ZF的提案框是可与SS竞争的(训练和测试一致使用时都是58.7%),我们可以预期RPN+VGG比SS好。下面的实验证明这一假说。VGG-16的性能。表3展示了VGG-16对提案框和检测的结果。使用RPN+VGG,Fast R-CNN对不共享特征的结果是68.5%,比SS基准略高。如上所示,这是因为由RPN+VGG产生的提案框比SS更准确。不像预先定义的SS,RPN是实时训练的,能从更好的网络获益。对特征共享的变型,结果是69.9%——比强大的SS基准更好,提案框几乎无损耗。在PASCAL VOC2007 trainval和2012 trainval的并集上进一步训练RPN,mAP是73.2%。图5显示了PASCAL VOC 2007测试集的一些结果。跟[5]一样在VOC 2007 trainval+test和VOC2012 trainval的并集上训练时,我们的方法在PASCAL VOC 2012测试集上(表4)有70.4%的mAP。表6和表7显示了详细数字。

表5中我们总结整个目标检测系统的运行时间。SS需要1~2秒,取决于图像内容(平均1.51s),采用VGG-16的Fast R-CNN在2k个SS提案框上需要320ms(若是用了SVD在fc层的话只用223ms2)。我们采用VGG-16的系统生成提案框和检测一共只需要198ms。卷积层共享时,RPN只用10ms来计算附加的几层。由于提案框较少(300),我们的区域计算花费也很低。我们的系统采用ZF网络时的帧率为17fps。

Table 3

表3. 在PASCAL VOC 2007测试集上的检测结果,检测器是Fast R-CNN和VGG16。训练数据:“07”:VOC2007 trainval,“07+12”:VOC 2007 trainval和VOC 2012 trainval的并集。对RPN,用于Fast R-CNN训练时的提案框是2k。这在2中有报告;利用本文所提供的仓库(repository),这个数字更高(68.1)。

Table 4

表4. PASCAL VOC 2012测试集检测结果。检测器是Fast R-CNN和VGG16。训练数据:“07”:VOC 2007 trainval,“07++12”: VOC 2007 trainval+test和VOC 2012 trainval的并集。对RPN,用于Fast R-CNN训练时的提案框是2k。

Table 5

表5. K40 GPU上的用时(ms),除了SS提案框是在CPU中进行评价的。“区域方面”包括NMS,pooling,fc和softmax。请参阅我们发布的代码运行时间的分析。

Table 6

表6. PASCAL VOC 2012测试集检测结果。检测器是Fast R-CNN和VGG16。对RPN,用于Fast R-CNN训练时的提案框是2k。RPN∗RPN∗表示非共享特征版本。

Table 7

表7. PASCAL VOC 2012测试集检测结果。检测器是Fast R-CNN和VGG16。对RPN,用于Fast R-CNN训练时的提案框是2k。

Figure 5

图5. 使用Faster R-CNN系统的PASCAL VOC 2007测试集上的目标检测结果的选定示例。模型为VGG-16,训练数据为07 + 12 trainval(2007的测试集mAP为73.2%)。我们的方法可以检测各种尺度和宽高比的物体。每个输出框与类别标签和[0,1][0,1]的Softmax分数相关联。分数阈值为0.6。获取这些结果的运行时间为每个图像198ms,包括所有步骤。

超参数敏感度。在表8中,我们调查了锚点的设置。默认情况下,我们使用3个尺度和3个纵横比(表8中为69.9%mAP)。如果在每个位置只使用一个锚点,mAP将明显下降3-4%。如果使用3个尺度(1个纵横比)或3个纵横比(1个刻度),则mAP更高,表明使用多个尺寸的锚点作为回归参考是一个有效的解决方案。仅使用3个具有1个纵横比(69.8%)的尺度与在该数据集上使用3个长宽比的3个尺度一样好。但是我们仍然在设计中采用这两个维度来保持系统的灵活性。

在表9中,我们比较了公式(1)(1)中的λλ的不同值。默认情况下,我们使用λ=10λ=10,这使得公式(1)(1)中的两个项在归一化后大致相等地加权。表9显示,当λλ在约两个数量级(1到100)的范围内时,我们的结果仅略微受到影响(约1%)。这表明结果在很大范围内对λλ不敏感。

Table 8

表8:使用不同anchor设置的PASCAL VOC 2007测试集中Faster R-CNN的检测结果。网络是VGG-16。训练数据是VOC 2007 train。使用3个尺度和3个宽高比(69.9%)的默认设置与表3中相同。

Table 9

表9:使用公式(1)(1)中不同λλ值的PASCAL VOC 2007测试集中Faster R-CNN的检测结果。网络是VGG-16。培训数据是VOC 2007 train。使用λ=10λ=10(69.9%)的默认设置与表3中相同。

IoU召回率分析。接下来,我们计算提案框与检测框真值在不同的IoU比例时的召回率。值得注意的是,该IoU召回率度量标准与最终的检测准确率只是松散19 20 21相关的。更适合用这个度量标准来诊断提案框方法,而不是对其进行评估。 在图4中,我们展示使用300,1k,和2k个提案框的结果。我们将SS和EB作比较,并且这N个提案框是基于用这些方法生成的按置信度排名的前N个。该图显示,当提案框数量由2k下降到300时,RPN方法的表现很好。这就解释了使用少到300个提案框时,为什么RPN有良好的最终检测mAP。正如我们前面分析的,这个属性主要是归因于RPN的cls项。当提案框变少时,SS和EB的召回率下降的速度快于RPN。

Figure 4

图4:PASCAL VOC 2007测试集上的召回率 vs. IoU重叠率

单级的检测vs. 两级的提案框+检测。OverFeat论文9提出在卷积特征映射的滑动窗口上使用回归和分类的检测方法。OverFeat是一个单级的,类特定的检测流程,我们的是一个两级的,由类无关的提案框方法和类特定的检测组成的级联方法。在OverFeat中,区域方面的特征来自一个滑动窗口,对应一个尺度金字塔的一个长宽比。这些特征被用于同时确定物体的位置和类别。在RPN中,特征都来自相对于anchor的方形(3×33×3)滑动窗口和预测提案框,是不同的尺度和长宽比。虽然这两种方法都使用滑动窗口,区域提案任务只是RPN + Fast R-CNN的第一级——检测器致力于改进提案框。在我们级联方法的第二级,区域一级的特征自适应地从提案框进行pooling1 5,更如实地覆盖区域的特征。我们相信这些特征带来更准确的检测。 为了比较单级和两级系统,我们通过单级的Fast R-CNN模拟OverFeat系统(因而也规避实现细节的其他差异)。在这个系统中,“提案框”是稠密滑动的,有3个尺度(128,256,512)和3个长宽比(1:1,1:2,2:1)。Fast R-CNN被训练来从这些滑动窗口预测特定类的得分和回归盒的位置。由于OverFeat系统采用多尺度的特征,我们也用由5个尺度中提取的卷积特征来评价。我们使用1 2中一样的5个尺度。 表10比较了两级系统和两个单级系统的变体。使用ZF模型,单级系统具有53.9%的mAP。这比两级系统(58.7%)低4.8%。这个实验证明级联区域提案方法和目标检测的有效性。类似的观察报告在2 39中,在两篇论文中用滑动窗口取代SS区域提案都导致了约6%的下降。我们还注意到,单级系统比较慢,因为它有相当多的提案框要处理。

Table 10

表10:单级检测vs.两级提案+检测。检测结果都是在PASCAL VOC2007测试集使用ZF模型和Fast R-CNN。RPN使用非共享的特征。

4.2在MS COCO上的实验

我们在Microsoft COCO目标检测数据集上提供更多的结果11。此数据集涉及80个目标类别。我们对训练集上的80k图像,验证集上的40k图像以及test-dev上的20k图像进行了实验。我们评估了IoU∈[0.5:0.05:0.95]IoU∈[0.5:0.05:0.95]的mAP均值(COCO的度量标准,简单地表示为mAP @[.5,.95])和[email protected](PASCAL VOC度量标准)。

我们的系统进行了一些细微的修改来适配对这个数据集。我们在8 GPU实现上训练我们的模型,RPN(每个GPU 1个)有效的小批量大小为8,Fast R-CNN(每个GPU 2个)小批量大小16。 RPN步骤和Fast R-CNN步骤都训练了240k次迭代,学习率为0.003,然后用0.0003进行80k次迭代。我们修改学习率(从0.003开始,而不是0.001),因为小批量大小改变了。对于锚点,我们使用3个纵横比和4个尺度(增加642642),主要为了处理该数据集上的小对象。此外,在我们的Fast R-CNN步骤中,负样本被定义为与检测框真值的最大IoU在[0,0.5)[0,0.5)之间,而不是12中使用的[0.1,0.5)[0.1,0.5)。我们注意到,在SPPnet系统1中,在[0.1,0.5)[0.1,0.5)之间的负样本用于网络微调,但在[0,0.5)[0,0.5)之间的负样本仍然在具有难负样本重训练的SVM步骤中被访问。但是Fast R-CNN系统2放弃了SVM步骤,所以在[0,0.1)[0,0.1)之间的负样本从未被访问过。包含这些[0,0.1)[0,0.1)之间的样本在COCO数据集上提高了Fast R-CNN和Faster R-CNN系统的[email protected](但PASCAL VOC的影响可以忽略不计)。

其余的实施细节与PASCAL VOC相同。特别是,我们继续使用300个提案和单尺度(s=600s=600)测试。 COCO数据集上的每个图像的测试时间仍然是大约200ms。

Table 11

表11:MS COCO数据集上的目标检测结果(%)。模型为VGG-16。

在表11中,我们首先使用2的实现评估了Fast R-CNN系统的结果。我们的Fast R-CNN基线在test-dev上[email protected]为39.3%,高于[2]中的结果。我们推测,这个差距的原因主要是由于负样本的定义以及小批量大小的变化。我们还注意到,mAP@[.5,.95]差不多。

接下来我们评估我们的Faster R-CNN系统。使用COCO训练集进行训练,Faster R-CNN在COCO test-dev上[email protected]为42.1%,mAP@[.5,.95]为21.5%的。与相同配置下的Fast R-CNN比较(表11),[email protected]提高2.8%,mAP@[.5,.95]提高2.2%。这表明RPN在较高的IoU阈值下表现出优异的定位精度。使用COCO train训练,Faster R-CNN在COCO test-dev上具[email protected]为42.7%,mAP@[.5,.95]为21.9%。图6显示了MS COCO test-dev的一些结果。

Figure 6

图6. 使用Faster R-CNN系统的MS COCO test-dev上的目标检测结果的选定示例。模型为VGG-16,训练数据为COCOtrainval(在test-dev上[email protected]为42.7%)。每个输出框与类别标签和[0,1][0,1]的Softmax分数相关联。分数阈值为0.6。对于每个图像,一种颜色表示在该图像中的一种目标类别。

ILSVRC和COCO 2015比赛中的Faster R-CNN:我们已经证明,Faster R-CNN从更好的特征中获益更多,这得益于RPN完全通过神经网络学习区域提案的事实。即使将深度大大增加到100多层,这一结论仍然有效18。只通过用101层的残差网络(ResNet-101)代替VGG-16 18,Faster R-CNN系统将在COCO val上mAP从41.5%/ 21.2%(VGG-16)提高到了48.4%/ 27.2%(ResNet -101)。再加上其它对Faster R- CNN的改进,He等人18获得了55.7%/ 34.9%的单模型结果,COCO test-dev的综合结果为59.0%/ 37.4%,在COCO 2015目标检测竞赛中排名第一。同样的系统18也在ILSVRC 2015目标检测比赛中荣获第一名,超过第二名8.5%。 RPN也是ILSVRC 2015定位和COCO 2015分割比赛中第一名获奖作品的组成部分,细节分别在18和15中提供。

4.3从MS COCO到PASCAL VOC

大规模数据对于改进深层神经网络至关重要。接下来,我们调查MS COCO数据集如何帮助PASCAL VOC改善检测性能。

Table 12

表12:PASCAL VOC 2007测试集和2012测试集中使用不同训练数据的Faster R-CNN检测mAP(%)。模型为VGG-16。 “COCO”表示COCO训练集用于训练。另见表6和表7。

作为一个简单的基线,我们直接评估了PASCAL VOC数据集中的COCO检测模型,而不对任何PASCAL VOC数据进行微调。这种评估是可能的,因为COCO的类别是PASCAL VOC类别的超集。在COCO中独有的类别在本实验中被忽略,Softmax层仅在20个类别和背景上执行。在PASCAL VOC 2007测试集上,此设置下的mAP为76.1%(表12)。尽管PASCAL VOC数据没有得到利用,但这一结果比VOC07 + 12(73.2%)得到了很好的提升。

然后我们对VOC数据集上的COCO检测模型进行微调。在该实验中,COCO模型代替ImageNet预先训练的模型(用于初始化网络权重),并且Faster R-CNN系统按3.2节所述进行微调。结果是PASCAL VOC 2007测试集上的mAP为78.8%。 COCO集合的额外数据将mAP增加5.6%。表6显示,在PASCAL VOC 2007上,针对COCO + VOC训练的模型对于每个类别都具有最佳的AP。PASCAL VOC 2012测试集(表12和表7)也有类似的改进。我们注意到,获得这些强大结果的测试速度仍然是每个图像约200ms。

5.总结

我们对高效和准确的区域提案的生成提出了区域提案提案网络(RPN)。通过与其后的检测网络共享卷积特征,区域提案的步骤几乎是无损耗的。我们的方法使一个一致的,基于深度学习的目标检测系统以近乎实时的帧率运行。学到的RPN也改善了区域提案的质量,进而改善整个目标检测的准确性。

表6:Fast R-CNN检测器和VGG16在PASCAL VOC 2007测试集的结果。对于RPN,Fast R-CNN训练时的提案框是2k个。RPN表示非共享特征的版本。

表7:Fast R-CNN检测器和VGG16在PASCAL VOC 2012测试集的结果。对于RPN,Fast R-CNN训练时的提案框是2k个。

图3:对最终的检测结果使用具有共享特征的RPN + FastR-CNN在PASCAL VOC 2007测试集上的例子。模型是VGG16,训练数据是07 + 12trainval。我们的方法检测的目标具有范围广泛的尺度和长宽比。每个输出框与一个类别标签和一个范围在[0,1]的softmax得分相关联。显示这些图像的得分阈值是0.6。取得这些结果的运行时间是每幅图像198ms,包括所有步骤。

 

部分转载自:https://alvinzhu.xyz/2017/10/12/faster-r-cnn/

你可能感兴趣的:(深度学习论文系列博客)