最先进的目标检测网络依赖于区域建议算法来假设目标的位置。SPPnet[1]和快速R-CNN[2]等技术的进步缩短了这些检测网络的运行时间,暴露了区域建议计算的瓶颈。在这项工作中,我们引入了一个区域建议网络(RPN),它与检测网络共享全图像卷积特性,从而实现了几乎免费的区域建议。RPN是一个全卷积网络,它同时预测每个位置的对象界限和对象得分。RPN经过端到端的训练,生成高质量的区域建议,快速R-CNN将其用于检测。通过共享卷积特征,我们进一步将RPN和Fast R-CNN合并成一个网络——使用最近流行的具有“注意力”机制的神经网络术语,RPN组件告诉统一网络去哪里看。对于非常深的VGG-16型号[3],我们的检测系统在GPU上的帧率为5fps(包括所有步骤),同时在P ASCAL VOC 2007、2012和MS COCO数据集上实现了最先进的目标检测精度,每张图像只有300个建议。在ILSVRC和COCO 2015比赛中,Faster R-CNN和RPN是在多个赛道中获得第一名的基础。代码已经公开。
区域建议方法(如[4])和基于区域的卷积神经网络(RCNNs)[5]的成功推动了近年来在目标检测方面的进展。虽然基于区域的CNNs的计算成本与最初在[5]中开发时一样高,但是由于在提案[1]和[2]之间共享卷积,它们的成本已经大幅降低。最新的化身,快速R-CNN[2],实现了接近实时率使用非常深的网络[3],而忽略了时间花在地区建议。现在,提案是最先进的检测系统的测试时间计算瓶颈。
区域建议方法通常依赖于廉价的特征和经济的推理方案。选择性搜索[4]是最流行的方法之一,它贪婪地合并基于工程底层特征的超像素。然而,与高效的检测网络[2]相比,选择性搜索要慢一个数量级,在CPU实现中,每幅图像要慢2秒。EdgeBoxes[6]目前提供了提案质量和速度之间最好的折衷,每幅图0.2秒。尽管如此,区域建议步骤仍然与检测网络消耗同样多的运行时间。
人们可能会注意到,快速的基于区域的cnn利用了gpu,而研究中使用的区域建议方法是在CPU上实现的,这使得运行时比较不公平。加速提案计算的一个明显方法是为GPU重新实现它。这可能是一个有效的工程解决方案,但重新实现忽略了下游检测网络,因此错过了共享计算的重要机会。
在这篇论文中,我们证明了一个基于深度卷积神经网络的算法变化——计算建议——导致了一个优雅而有效的解决方案,该方案的计算在给定检测网络计算量的情况下几乎是免费的。为此,我们引入了新的区域建议网络(rpn),它与最先进的目标检测网络[1]、[2]共享卷积层。通过在测试时共享卷积,计算建议的边际成本很小(例如,每张图像10ms)。
我们观察到,基于区域的探测器(如Fast RCNN)使用的卷积特征图也可以用于生成区域建议。在这些卷积特征的基础上,我们通过增加几个额外的卷积层来构建RPN,这些卷积层同时在一个规则网格上的每个位置上回归区域边界和目标度得分。因此,RPN是一种全卷积网络(FCN)[7],可以针对生成检测建议的任务进行端到端的训练。
区域规划系统的设计是为了有效地预测具有广泛的比例尺和高宽比的区域规划。与常用的[8],[9],[1],[2]方法不同图像的金字塔(图1,a)或过滤器的金字塔(图1,b),我们引入了新的“锚”框,在多种尺度和纵横比下作为参考。我们的方案可以被认为是一个回归引用的金字塔(图1,c),它避免了枚举图像或多个尺度或长宽比的过滤器。当使用单尺度图像进行训练和测试时,该模型表现良好,因此提高了运行速度。
图1:处理多种规模和大小的不同方案。(a)构建图像和地物图的金字塔,并在所有尺度上运行分类器。(b)在feature map上运行多个尺度/尺寸的过滤器的金字塔。©我们在回归函数中使用了参考盒的金字塔。
为了将rpn与快速R-CNN[2]对象检测网络相结合,我们提出了一种训练方案,在保持建议固定的情况下,在区域建议任务的微调和对象检测的微调之间交替进行。该方案收敛速度快,产生了一个具有卷积特征的统一网络,在两个任务之间共享
我们在PASCAL VOC检测基准[11]上对我们的方法进行了综合评估,在[11]中,快速R-CNNs的rpn产生的检测精度优于快速R-CNNs选择性搜索的强基线。同时,我们的方法在测试时几乎免除了选择性搜索的所有计算负担,提案的有效运行时间只有10毫秒。使用昂贵的非常深入的[3]模型,我们的检测方法在GPU上仍然有5fps的帧速率(包括所有步骤),因此在速度和精度方面都是一个实用的对象检测系统。我们还报告了在MS COCO数据集[12]上的结果,并调查了使用COCO数据在PASCAL VOC上的改进。代码已经在 https://github.com/shaoqingren/faster_rcnn(在MATLAB中)和https://github.com/rbgirshick/py-faster-rcnn(在Python中)公开可用。
该手稿的初步版本已在[10]之前出版。从那时起,RPN和更快的R-CNN框架被采用并推广到其他方法,如3D对象检测[13]、基于部件的检测[14]、实例分割[15]、图像字幕[16]。我们的快速和有效的目标检测系统也已建成商业系统,如在pinterest[17],与用户参与改进报告。
在ILSVRC和COCO 2015竞赛中,Faster R-CNN和RPN是ImageNet检测、ImageNet定位、COCO检测和COCO分割等几个领域中排名第一的参赛作品[18]的基础。rpn完全学会了从数据中提出区域,因此可以很容易地从更深层次和更有表现力的特性中获益(例如[18]中采用的101层残网)。更快的R-CNN和RPN在这些竞赛中也被其他几个领先的参赛选手使用。结果表明,该方法不仅是一种经济实用的解决方案,而且是提高目标检测精度的有效途径。
对象的建议。有大量关于对象建议方法的文献。对象建议方法的综合调查和比较可以在[19]、[20]、[21]中找到。广泛使用的对象建议方法包括基于超像素分组的方法(例如,选择性搜索[4]、CPMC[22]、MCG[23])和基于滑动窗口的方法(例如,窗口[24]中的对象性、边缘盒[6])。对象建议方法作为独立于检测器的外部模块(如选择性搜索[4]对象检测器、RCNN[5]、Fast R-CNN[2])。
用于对象检测的深度网络。R-CNN方法[5]训练CNNs端到端,将建议区域分类为对象类别或背景。R-CNN主要扮演分类器的角色,它并不预测对象的界限(除了通过边界盒回归进行细化外)。它的准确性取决于区域建议模块的性能(参见[20]中的比较)。一些论文提出了使用深度网络预测对象边界盒[25]、[9]、[26]、[27]的方法。在OverFeat方法[9]中,一个全连接层被训练来预测假定一个单一对象的定位任务的盒子坐标。然后,完全连接的层被转动一个卷积层,用于检测多个类特定的对象。多盒方法[26]、[27]从一个网络生成区域建议,该网络的最后一个全连接层同时预测多个类无关的盒,从而推广了OverFeat的“单盒”方式。这些类不可知的盒子被用作R-CNN[5]的提案。与我们的全卷积方案相比,多盒建议网络适用于单个图像裁剪或多个大型图像裁剪(例如,224×224)。MultiBox在提案网络和检测网络之间不共享特性。稍后,我们将在上下文中用我们的方法更深入地讨论OverFeat和MultiBox。与我们的工作同时,深度掩码方法[28]被开发用于学习分割建议。
图2:更快的R-CNN是一个单一的,统一的对象检测网络。RPN模块是这个统一网络的“关注点”。
卷积的共享计算[9]、[1]、[29]、[7]、[2]因其高效、准确的视觉识别而受到越来越多的关注。超专业论文[9]从图像金字塔中计算卷积特征,用于分类、定位和检测。针对基于区域的目标检测[1]、[30]和语义分割[29],提出了基于共享卷积特征映射的自适应大小池(SPP)[1]算法。快速R-CNN[2]支持端到端检测器共享卷积特征的训练,显示了令人信服的准确性和速度。
我们的目标检测系统,叫做Faster R-CNN,由两个模块组成。第一个模块是提出区域的深度全卷积网络,第二个模块是使用提出区域的快速R-CNN检测器[2]。整个系统是一个单一的、统一的对象检测网络(图2)。RPN模块使用最近流行的带有“注意力”[31]机制的神经网络术语,告诉快速R-CNN模块去哪里查看。在3.1节中,我们介绍了区域建议网络的设计和特性。在第3.2节中,我们开发了用于训练具有共享特征的两个模块的算法。
区域建议网络(RPN)以任意大小的图像作为输入和输出一组矩形对象建议,每个建议都有一个客观评分。我们用一个全卷积网络[7]来模拟这个过程,我们将在本节中对此进行描述。因为我们的最终目标是与一个快速的R-CNN对象检测网络[2]共享计算,我们假设两个网络共享一组公共的卷积层。在我们的实验中,我们研究了具有5个可共享卷积层的Zeiler和Fergus模型32,以及具有13个可共享卷积层的Simonyan和Zisserman模型3。
为了生成区域建议,我们在最后一个共享卷积层的卷积特征图输出上滑动一个小网络。该小网络以输入卷积特征图的一个n×n空间窗口作为输入。每个滑动窗口被映射到一个低维的特性(256-d为ZF, 512-d为VGG,下面是ReLU[33])。这个特性被输入到两个完全连接的层—box-regression层(reg)和box-classification层(cls)。我们在本文中使用n = 3,注意到输入图像上的有效接受域很大(ZF和VGG分别为171和228像素)。图3(左)显示了这个迷你网络的一个位置。请注意,由于微型网络以滑动窗口的方式运行,因此所有空间位置都共享完全连接的层。这个架构很自然地通过一个n×n卷积层和两个同级的1×1卷积层(分别用于reg和cls)来实现。
在每个滑动窗口的位置,我们同时预测多个地区的提议,在最大可能的提案的数量为每个位置表示为k。所以reg层4 k输出编码k框的坐标,和cls层输出2 k分数估计为每个proposal4对象或对象的概率。k个建议是相对于k个参考框参数化的,我们称之为锚。锚位于所讨论的滑动窗口的中心,并与比例和高宽比相关联(图3,左)。在默认情况下,我们使用3个尺度和3个纵横比,在每个滑动位置产生k = 9个锚点。对于大小为W×H(典型为∼2400)的卷积地形图,总共有W个Hk锚点。
图3:左:区域建议网络(RPN)。正确示例:在PASCAL VOC 2007测试中使用RPN建议进行检测。我们的方法检测对象在一个广泛的规模和高宽比。
平移不变锚
我们的方法的一个重要特性是它是平移不变的,无论是在锚点方面,还是在计算相对于锚点的建议的函数方面。如果一个人在一个图像中翻译一个物体,这个建议应该翻译,同样的功能应该能够预测在任何一个位置的建议。我们的方法保证了这种平移不变性。作为比较,MultiBox方法[27]使用k-means生成800个锚点,这些锚点不是平移不变量。因此,MultiBox不能保证在翻译对象时生成相同的建议。
平移不变的性质也减少了模型的大小。MultiBox有(4 + 1)×800维全连通输出层,而我们的方法在k = 9个锚点的情况下,有(4 + 2)×9维卷积输出层。因此,我们的输出层有2.8×104parameters(512×(4 + 2)×9 VGG-16),比MultiBox的输出层有6.1×106parameters(1536×(4 + 1)×800 for GoogleNet [34] in MultiBox[27])少了两个数量级。如果考虑到特征投影层,我们的建议层的参数仍然比MultiBox6少一个数量级。我们期望我们的方法在小的数据集上有更少的过拟合风险,比如PASCAL VOC。
多尺度锚点作为回归参考
我们的锚的设计提出了一种解决多尺度(和高宽比)的新方案。如图1所示,多尺度预测有两种流行的方法。第一种方法是基于图像/特征金字塔,例如,在DPM[8]和基于cnn[9],[1],[2]的方法中。图像在多个尺度上调整大小,计算每个尺度下的feature maps (HOG[8]或deep convolutional features[9],[1],[2])(图1(a))。这种方法通常很有用,但是很耗时。第二种方法是在特征图上使用多个尺度(和/或纵横比)的滑动窗口。例如,在DPM[8]中,使用不同的滤波器尺寸(如5×7和7×5)分别训练不同长宽比的模型。如果这种方法用于处理多个尺度,它可以被认为是一个“过滤器的金字塔”(图1(b))。第二种方式通常与第一种方式[8]共同采用。
作为比较,我们基于锚的方法是建立在一个金字塔的锚,这是更经济有效的。我们的方法参照多尺度和高宽比的锚盒对边界盒进行分类和回归。它只依赖单一尺度的图像和特征图,并使用单一尺度的过滤器(特征图上的滑动窗口)。通过实验,我们展示了该方案对多尺度和多尺寸寻址的效果(表8)。
由于这种基于锚点的多尺度设计,我们可以简单地使用单尺度图像上计算的卷积特征,就像快速R-CNN检测器[2]所做的那样。多尺度锚点的设计是实现特征共享的关键环节,而不需要额外的寻址尺度成本。
对于训练rpc,我们为每个锚分配一个二进制类标签(对象或非对象)。我们对两种锚点进行了积极的标记:(i)具有最高相交-过并度(IoU)的锚点与地面真值框重叠,或(ii) IoU与地面真值框重叠大于0.7的锚点与5个地面真值框重叠。请注意,单个ground-truth框可以为多个锚点分配积极的标签。通常,第二个条件足以确定阳性样本;但我们仍然采用第一种情况,因为在少数情况下,第二种情况可能找不到阳性样本。如果所有地面真值箱的IoU比率低于0.3,则我们将负标签分配给非正锚点。既不积极也不消极的锚对训练目标没有贡献。
根据这些定义,我们可以最小化Fast R-CNN[2]中多任务丢失后的目标函数。我们对图像的损失函数定义为:
这里,i是一个小批量锚点的索引,pi是一个对象锚点i的预测概率。如果锚点为正,则地面真实值标记p iis 1,如果锚点为负,则为0。tiis是一个向量,代表预测边界框的4个参数化坐标,t∗iis是与一个正锚相关联的地面真相框的坐标。分类丢失Lclsis日志丢失超过两个类(对象和非对象)。对于回归损耗,我们使用Lreg(ti, t∗i) = R(ti−t∗i),其中R是[2]中定义的健壮的损耗函数(平滑的L1)。术语p∗iLreg意味着回归损耗只在正的定位器上被激活(p∗i= 1),否则就被禁用(p∗i= 0)。cls和reg层的输出分别是{pi}和{ti}
这两个术语规范化的Nclsand Nreg和加权平衡参数λ。在我们当前的实现中(在发布的代码中),Eqn.(1)中的cls术语通过小批处理大小(即, Ncls= 256),而reg项由锚点位置的数量(即2400年,Nreg∼)。默认设置λ= 10,因此cls和注册条款大致同样加权。我们通过实验,结果显示对λ的值在广泛(表9)。我们还注意到正常化如上不是必需的,可以简化。
对于边界盒回归,我们采用[5]以下4个坐标的参数化:
其中x, y, w, h表示盒子的中心坐标和它的宽度和高度。预测箱、锚定箱和groundtruth箱的变量x、xa和x are分别是什么(y、w、h也是一样)。这可以被看作是从锚定箱到附近的ground-truth箱的边界箱回归。
然而,我们的方法与以前的基于roi的(兴趣区域)方法[1]、[2]实现了不同的边界盒回归。在[1]、[2]中,对从任意大小的roi汇集的特性执行了边界盒回归,回归权值由所有区域大小共享。在我们的公式中,用于回归的特征在地形图上具有相同的空间尺寸(3×3)。为了解释不同的大小,我们学习了一组k个边界盒回归量。每个回归变量负责一个尺度和一个长宽比,而k个回归变量不共享权重。同样,由于锚的设计,即使特性的尺寸/比例是固定的,仍然可以预测各种尺寸的盒子。
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]。
到目前为止,我们已经描述了如何训练一个区域建议生成的网络,而不考虑将利用这些建议的基于区域的对象检测CNN。检测网络采用快速R-CNN[2]。接下来,我们将介绍使用共享卷积层学习由RPN和Fast R-CNN组成的统一网络的算法(图2)。
RPN和快速R-CNN都是经过独立训练的,它们将以不同的方式修改各自的卷积层。因此,我们需要开发一种技术,允许在。之间共享卷积层两个网络,而不是学习两个独立的网络。我们讨论了三种具有共享特征的训练网络的方法:
表1:使用ZF网络获得的每个锚点的平均建议大小(s = 600的数字)。
(一)交流培训。在这个解决方案中,我们首先训练RPN,并使用建议来训练快速的R-CNN。然后使用Fast R-CNN调优的网络初始化RPN,并迭代此过程。这是本文所有实验都采用的解决方案。
(二)近似联合训练。在这个解决方案中,RPN和快速R-CNN网络在训练过程中合并成一个网络,如图2所示。在每个SGD迭代中,前向遍历生成区域建议,这些建议在训练快速R-CNN检测器时就像处理固定的、预先计算的建议一样。反向传播照常进行,其中共享层将来自RPN损耗和快速R-CNN损耗的反向传播信号合并在一起。这个解决方案很容易实现。但是这个解忽略了w.r.t的导数,即提案箱的坐标也是网络响应,所以是近似的。在我们的实验中,我们通过实验发现,该算法与交替训练相比,在训练时间上缩短了约25-50%。这个解决程序包含在我们发布的Python代码中。
(三)非近似联合训练。如前所述,RPN预测的边界框也是输入的函数。快速R-CNN的RoI池层[2]接受卷积特性和预测的边界框作为输入,因此理论上有效的反向传播求解器也应该包含梯度w.r.t。在上述近似联合训练中忽略了这些梯度。在非近似联合训练解决方案中,我们需要一个RoI池层,它是可微分的w.r.t.方框坐标。这是一个重要的问题,可以通过在[15]中开发的“RoI翘曲”层来给出解决方案,这超出了本文的范围。
4级交替下雨。在本文中,我们采用了一种实用的四步训练算法,通过交替优化来学习共享特征。在第一步中,我们按照第3.1.3节的描述来训练RPN。使用imagenet预训练的模型初始化此网络,并对区域建议任务进行端到端调优。在第二步中,我们使用step-1 RPN生成的建议,通过快速R-CNN训练一个单独的检测网络。该检测网络也由imagenet预训练模型初始化。在这一点上,两个网络并不共享卷积层。在第三步中,我们使用检测器网络来初始化RPN训练,但是我们修复了共享的卷积层,并且只微调了RPN特有的层。现在这两个网络共享卷积层。最后,保持共享的卷积层不变,我们微调Fast R-CNN的独特层。因此,这两个网络共享相同的卷积层,形成一个统一的网络。类似的交替训练可以运行更多的迭代,但是我们观察到的改进微不足道。
我们在单一尺度[1],[2]的图像上训练和测试区域建议和目标检测网络。我们重新缩放图像,使其较短的一面是s = 600像素[2]。多尺度特征提取(使用图像金字塔)可以提高精度,但不能很好地权衡[2]的速度精度。在重新缩放的图像上,ZF和VGG网在最后一层卷积层上的总步幅为16像素,因此调整大小之前,典型的PASCAL图像上约为10像素(∼500×375)。即使如此大的步幅也能带来好的结果,尽管小的步幅可以进一步提高准确性。
对于锚点,我们使用了三种比例,分别为1282、2562和5122px的盒子区域,以及三种1:1、1:2和2:1的长宽比。这些超参数并不是为特定的数据集精心选择的,在下一节中我们将提供关于它们影响的消融实验。如前所述,我们的解决方案不需要图像金字塔或过滤器金字塔来预测多个尺度的区域,节省了大量的运行时间。图3(右)显示了我们的方法对于大范围的比例和高宽比的能力。表1显示了使用ZF net获得的每个锚的平均建议大小。我们注意到,我们的算法允许比潜在接受域更大的预测。这样的预测并不是不可能的——一个人仍然可以粗略地推断出一个物体的范围,只要这个物体的中间是可见的。
跨图像边界的锚框需要小心处理。在培训过程中,我们忽略了所有的跨界锚点,以免造成损失。对于一个典型的1000×600图像,总共大约有20000(≈60×40×9)个锚。忽略跨界锚点后,每幅图像约有6000个锚点可供训练。如果在训练中不忽略跨界离群点,它们就会在目标中引入大型的、难以纠正的误差项,训练就不会收敛。然而,在测试期间,我们仍然对整个图像应用全卷积RPN。这可能会生成跨边界的建议框,我们剪辑到图像边界。
一些RPN建议彼此高度重叠。为了减少冗余,我们根据提案区域的cls评分对其采用非最大抑制(non-maximum suppression, NMS)。我们将NMS的IoU阈值设为0.7,这样每个图像就有大约2000个建议区域。正如我们将展示的,NMS不会损害最终的检测精度,但会大大减少提案的数量。在NMS之后,我们使用排名前n的建议区域进行检测。下面,我们使用2000个RPN建议来训练快速R-CNN,但是在测试时评估不同数量的建议。
我们在PASCAL VOC 2007检测基准[11]上对我们的方法进行了综合评价。该数据集包含约5k个训练图像和超过20个对象类别的5k个测试图像。我们还提供了一些模型的PASCAL VOC 2012基准测试结果。对于ImageNet的预训练网络,我们使用的是ZF net[32]的“快速”版本,它有5个卷积层和3个全连接层,公共VGG-16 model7[3]有13个卷积层和3个全连接层。我们主要评估检测平均精度(mAP),因为这是用于对象检测的实际度量(而不是关注对象建议代理度量)。
表2 (top)显示了使用各种区域建议方法进行训练和测试时的快速R-CNN结果。这些结果使用ZF网络。对于选择性搜索(SS)[4],我们通过“快速”模式生成了大约2000个建议。对于EdgeBoxes (EB)[6],我们使用调至0.7的缺省EB设置生成建议借据。在快速R-CNN框架下,SS的地图为58.7%,EB的地图为58.6%。RPN与快速R-CNN的竞争结果,与地图59.9%,而使用多达300个提案8。由于共享卷积计算,使用RPN比使用SS或EB产生更快的检测系统;提案越少,全连通层的区域成本也越低(表5)。
RPN烧蚀实验。为了研究RPNs的行为,我们进行了一些消融研究。首先,我们展示了在RPN和快速R-CNN检测网络之间共享卷积层的效果。为此,我们在4步训练过程的第二步之后停止。使用单独的网络将结果略微降低到58.7% (RPN+ZF, unshared,表2)。我们观察到,这是因为在第三步,当detector调谐特性用于微调RPN时,提案质量得到了提高。
接下来,我们分析了RPN对快速R-CNN检测网络训练的影响。为此,我们使用2000 SS proposal和ZF net来训练一个快速的R-CNN模型。我们修正了这个检测器,并通过改变测试时使用的建议区域来评估检测图。在这些烧蚀实验中,RPN与探测器没有共同的特征。
在测试时用300个RPN提案替换SS,得到56.8%的mAP。mAP中的损失是由于培训/测试建议之间的不一致造成的。这个结果作为下面比较的基线。
有些令人惊讶的是,当使用排名最靠前的RPN时,仍然可以获得一个有竞争力的结果(55.1%)测试时100个提案,表明排名最高的RPN提案是准确的。在另一个极端,使用排名最高的6000 RPN提案(不使用NMS)有一个可比较的mAP(55.2%),这表明NMS不会损害检测mAP,并可能减少错误警报。
表3:PASCAL VOC 2007测试集检测结果。检测器为Fast R-CNN和VGG-16。培训数据:“07”:VOC 2007培训,“07+12”:VOC 2007培训与VOC 2012培训的联合集。对于RPN,快速R-CNN的训练时间建议是2000。†:这个数字是在[2]上报道的;使用本文提供的存储库,这个结果更高(68.1)。
表4:PASCAL VOC 2012测试集检测结果。检测器为Fast R-CNN、VGG-16。培训数据:“07”:VOC 2007培训瓦尔,“07++12”:VOC 2007培训瓦尔+测试联合集,VOC 2012培训瓦尔。对于RPN,快速R-CNN的训练时间建议是2000。http://host.robots.ox.ac.uk:8080/anonymous/HZJTQA.html http://host.robots.ox.ac.uk:8080/anonymous/YNPLXB.htmlhttp://host.robots.ox.ac.uk:8080/anonymous/XEDH10.html
表5:在K40 GPU上的定时(ms),除了SS方案在CPU上评估。“区域智能”包括NMS、池、全连接和softmax层。有关运行时间的分析,请参阅我们发布的代码。
接下来,我们通过在测试时关闭RPN的cls和reg中的任何一个来分别研究它们的作用。当cls层在testtime被移除时(因此没有使用NMS/ranking),我们从未得分的区域中随机抽取N个建议。N = 1000时,mAP几乎没有变化(55.8%),但当N = 100时,mAP下降到44.6%。这表明,cls评分说明了排名最高的提案的准确性。
另一方面,当reg层在测试时被移除(因此提案变成了定位点),mAP下降到52.1%。这表明,高质量的建议主要是由于回归框界限。锚盒虽然有多个尺度和纵横比,但不足以进行准确的检测。
我们也评估了更强大的网络对RPN提案质量的影响。我们使用VGG-16来训练RPN,仍然使用上面的SS+ZF检测器。地图从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,未共享特征的结果为68.5%,略高于SS基线。如上所示,这是因为RPN+VGG生成的建议比SS更准确。与预定义的SS不同,RPN是经过积极训练的,并且受益于更好的网络。对于功能共享的版本,结果是69.9%—比强SS基线好,但是几乎没有成本。我们在PASCAL VOC 2007 trainval和2012 trainval的联合集上进一步培训了RPN和检测网络。占73.2%。图5显示了在PASCAL VOC 2007测试集上的一些结果。在PASCAL VOC 2012测试集上(表4),我们的方法在VOC 2007 trainval+test和VOC 2012 trainval的联合集上训练了70.4%的mAP。表6和表7显示了详细的数字。
表6:使用快速R-CNN检测器和VGG-16对PASCAL VOC 2007测试集的结果。对于RPN,快速R-CNN的训练时间建议是2000。显示不共享的特性版本。
表7:使用快速R-CNN检测器和VGG-16检测PASCAL VOC 2012测试集的结果。对于RPN,快速R-CNN的训练时间建议是2000。
表8:使用不同设置的锚点,快速R-CNN对PASCAL VOC 2007测试集的检测结果。网络是VGG-16。培训数据为VOC 2007培训值。使用3个量表和3个高宽比的默认设置(69.9%)与表3相同。
表9:检测结果的速度R-CNN于2007年帕斯卡VOC测试集在方程(1)中使用不同的λ值。网络VGG-16。培训数据为VOC 2007培训值。默认设置使用λ= 10(69.9%)是一样的,在表3。
在表5中,我们总结了整个对象检测系统的运行时间。根据内容的不同,SS需要1-2秒(平均约1.5秒),而使用VGG-16的快速R-CNN在2000个SS提案上需要320ms(如果在全连接层[2]上使用SVD则需要223ms)。我们的VGG-16系统的提案和检测总时间为198ms。由于卷积特性是共享的,仅RPN一项就只需要10ms计算额外的层。我们的区域计算也比较低,这得益于较少的提案(每幅图300个)。我们的系统在ZF网的帧速率为17帧。
Hyper-parameters敏感性。在表8中,我们研究了锚的设置。默认情况下,我们使用3个比例尺和3个高宽比(表8中的地图为69.9%)。如果在每个位置只使用一个锚点,地图会下降3-4%。使用3个尺度(1个高宽比)或3个尺度(1个尺度)时,图值更高,说明使用多种尺寸的锚点作为回归参考是一种有效的解决方案。仅使用3个长径比为1的尺度(69.8%)与在该数据集上使用3个长径比尺度(69.8%)一样好,这表明尺度和长径比并不是用于检测精度的解纠缠维度。但是我们仍然在设计中采用这两个维度来保持系统的灵活性。
表9中我们比较不同的λ值在方程(1)。默认情况下我们使用λ= 10使方程(1)大致相等的两项加权归一化之后。表9显示,我们的结果是影响略(∼1%)当λ在规模约两个数量级(1到100)。这表明结果是对λ广泛。
Recall-to-IoU分析。接下来,我们使用groundtruth框计算不同IoU比率下的提案的回收。值得注意的是,Recall-to-IoU度量只是与最终检测精度相关的松散的[19]、[20]、[21]。使用这个度量来诊断建议方法比评估建议方法更合适。
在图4中,我们显示了使用300、1000和2000个提案的结果。我们与SS和EB进行了比较,根据这些方法产生的置信度,N个提案是排名前N的提案。从图中可以看出,当提案数量从2000减少到300时,RPN方法表现得很好。这解释了为什么RPN有一个很好的最终检测地图时,使用300个建议。正如我们之前分析过的,这个特性主要归因于RPN的cls项。当提案数量较少时,SS和EB的召回比RPN下降更快。
表10:单阶段检测vs.两阶段建议+检测。检测结果在使用ZF模型和Fast R-CNN的PASCAL VOC 2007测试集上。RPN使用非共享特性。
d
单阶段检测vs.两阶段建议+检测。提出了一种基于卷积特征映射的滑动窗口的回归量和分类器检测方法。OverFeat是一个单级的,特定于类的检测管道,而我们的是一个由类不可知的提议和特定于类的检测组成的两级级联。在OverFeat中,区域方向的特征来自于一个尺度金字塔上的一个宽高比的滑动窗口。这些特征被用来同时确定物体的位置和类别。在RPN中,特征来自方形(3×3)滑动窗,并预测了不同尺度和高宽比的锚固方案。虽然这两种方法都使用了滑动窗口,但区域建议任务只是快速rcn的第一阶段—下游的快速R-CNN检测器负责改进建议。在我们的级联的第二阶段,从更忠实地覆盖区域特征的建议框中自适应地合并[1]和[2]。我们相信这些特征会导致更精确的探测。
为了比较单级和两级系统,我们使用单级快速R-CNN模拟了OverFeat系统(因此也规避了实现细节上的其他差异)。在这个系统中,“提案”是3个尺度(128,256,512)和3个纵横比(1:1,1:2,2:1)的密集滑动窗口。快速的R-CNN被训练来预测特定职业的分数,并从这些滑动窗口返回盒子的位置。由于超专长系统采用的是图像金字塔,我们也使用从5个尺度中提取的卷积特征进行评估。我们在[1]和[2]中使用这5个音阶。
表10比较了两级系统和一级系统的两个变体。使用ZF模型,一级系统的mAP为53.9%。这比两阶段系统(58.7%)低4.8%。该实验验证了级联区域建议和目标检测的有效性。类似的观察结果在[2]和[39]中也有报道,在这两篇文章中,用滑动窗口替换SS区域的提议导致了约6%的性能下降。我们还注意到,onestage系统比较慢,因为它要处理的提案要多得多。
我们在微软的COCO对象检测数据集[12]上展示了更多的结果。该数据集涉及80个对象类别。我们对训练集上的80k张图像、验证集上的40k张图像和测试-dev集上的20k张图像进行了实验。我们对IoU∈[0.5:0.05:0.95](COCO的标准度量,简单地表示为mAP@[。和[email protected](帕斯卡VOC的度量)
我们的系统对这个数据集做了一些细微的修改。我们在一个8-GPU实现上训练我们的模型,有效的小批量大小为RPN为8(每个GPU 1)和快速R-CNN为16(每个GPU 2)。RPN步骤和快速R-CNN步骤都是针对学习率为0.003的240k迭代和针对学习率为0.0003的80k迭代进行训练。我们修改了学习率(从0.003开始,而不是0.001),因为迷你批大小发生了变化。对于锚点,我们使用了3个长宽比和4个比例尺(添加了642),主要是通过处理这个数据集上的小对象来激发的。此外,在我们的快速R-CNN步骤中,负样本被定义为那些在[0,0.5]区间内具有最大IoU和ground truth的样本,而不是在[1],[2]区间内使用的[0.1,0.5)。我们注意到,在SPPnet系统[1]中,[0.1,0.5]中的负样本被用于网络微调,而在支持向量机步骤中,[0,0.5]中的负样本仍然被硬负挖掘访问。但是快速的R-CNN系统[2]放弃了支持向量机的步骤,因此[0,0.1]中的负样本从未被访问过。对于快速R-CNN和更快的R-CNN系统,包含这些[0,0.1]样本可以改进COCO数据集上的[email protected](但是对PASCAL VOC的影响可以忽略不计)。
表11:MS COCO数据集上的对象检测结果(%)。模型是VGG-16。
其余的实现细节与PASCAL VOC上的相同。特别是,我们一直使用300个提案和单标度(s = 600)测试。在COCO数据集上,测试时间仍然是每幅图像200毫秒左右。
在表11中,我们首先报告了使用本文实现的快速R-CNN系统[2]的结果。我们的快速R-CNN基线在测试-开发集上有39.3%的[email protected],比[2]中报告的要高。我们推测产生这种差异的原因主要是由于负样本的定义以及小批量尺寸的变化。我们还注意到映射@[。5, .95]只是比较。
接下来,我们评估更快的R-CNN系统。使用COCO训练集训练,更快的R-CNN有42.1%的地图@0.5和21.5%的地图@[。在COCO测试-开发集上,这对于[email protected]来说要高出2.8%,对于mAP@[来说要高出2.2%。5, .95]比快速RCNN下的同类协议(表11)。这表明在较高的IoU阈值下,RPN可以很好地提高定位精度。使用COCO trainval集合进行训练,更快的RCNN拥有42.7%的[email protected]和21.9%的mAP@[。图6显示了在MS COCO测试-dev集上的一些结果。
更快的R-CNN在ILSVRC和COCO 2015竞赛中,我们已经证明更快的R-CNN从更好的特性中受益更多,这是因为RPN完全通过神经网络学会了推荐区域。即使将深度增加到超过100层[18],这种观察仍然有效。只有更换VGG-16 101层剩余净(resnet - 101)[18],越快R-CNN系统增加了地图从41.5% / 21.2% (VGG16) 48.4% / 27.2% (resnet - 101)在可可val集。与其他改进正交RCNN更快,他et al。[18]获得单模55.7% / 34.9%和59.0% / 37.4%的整体结果可可test-dev集,赢得了第一名在可可2015对象检测竞争。[18]系统还在2015年ILSVRC对象检测竞赛中获得了第一名,以绝对8.5%的优势超过第二名。RPN也是ILSVRC 2015本地化和COCO 2015 segmentation比赛的第一名的参赛作品的一个组成部分,详细信息分别在[18]和[15]中可以找到
表12:使用不同训练数据的Faster R-CNN在PASCAL VOC 2007测试集和2012测试集上的检测图(%)。模型是VGG-16。“COCO”表示用于训练的COCO训练集。见表6和表7。
大规模数据对于改进深度神经网络至关重要。接下来,我们研究MS COCO数据集如何帮助PASCAL VOC的检测性能。
作为一个简单的基线,我们直接在PASCAL VOC数据集上评估COCO检测模型,而不需要对任何PASCAL VOC数据进行微调。这种评价是可能的,因为可可上的类别是帕斯卡VOC上的超集。在这个实验中,我们忽略了COCO独有的类别,softmax层只在20个类别和背景上执行。在PASCAL VOC 2007测试集上,此设置下的mAP为76.1%(表12)。这个结果比VOC07+12(73.2%)训练的结果要好得多,即使没有利用PASCAL VOC数据。
然后对VOC数据集上的COCO检测模型进行微调。在本实验中,COCO模型代替了imagenet预训练模型(用于初始化网络权值),更快的R-CNN系统如3.2节所述进行了微调。这样,在PASCAL VOC 2007测试集上得到了78.8%的mAP。来自COCO集的额外数据使mAP增加了5.6%。表6显示,在COCO+VOC上训练的模型在PASCAL VOC 2007上的每个类别AP都是最好的。类似的改进也出现在PASCAL VOC 2012测试集(表12和表7)上。我们注意到,获得这些强大结果的测试时间速度仍然是每幅图像200毫秒左右。
提出了一种高效、准确的区域建议生成方法。通过共享卷积具有下游检测网络的特点,区域建议步骤几乎是免费的。我们的方法使得一个统一的、基于深度学习的对象检测系统能够以接近实时的帧速率运行。学习的RPN也提高了区域建议的质量,从而提高了整体目标检测的精度。
图5:在使用更快的R-CNN系统的PASCAL VOC 2007测试集上选择的对象检测结果示例。模型为VGG-16,训练数据为07+12 trainval(在2007年的测试集上为73.2%的mAP)。我们的方法检测对象的范围广泛的规模和高宽比。每个输出框都与一个类别标签和[0,1]中的softmax分数相关联。这些图像的得分阈值为0.6。获得这些结果的运行时间为每幅图像198ms,包括所有步骤。