最先进的目标检测网络依靠区域建议算法来假设目标位置。SPPnet[1]和Fast R-CNN[2]等技术进步缩短了这些检测网络的运行时间,使区域建议计算成为瓶颈。 在这项工作中,我们引入了一个区域建议网络(RPN),它与检测网络共享完整的图像卷积特征,从而实现几乎cost-free的区域建议。RPN是一个完全卷积的网络,可以同时预测对象边界和每个位置的对象性分数。RPN经过端到端的训练,生成高质量的区域建议,由Fast R-CNN用于检测。我们进一步将RPN和Fast R-CNN合并成一个单一的网络,通过使用最近流行的神经网络术语和“注意”机制来共享它们的卷积特征,RPN组件告诉统一网络在哪里寻找。对于非常深的VGG-16模型[3],我们的检测系统在GPU上的帧速率为5fps(包括所有步骤),同时在PASCAL VOC 2007、2012和MS COCO数据集上实现了最先进的目标检测精度,每幅图像只有300个proposals。在ILSVRC和COCO 2015比赛中,Faster R-CNN和RPN是在多个领域中获得第一名的基础。代码已经公开。
区域建议方法(例如[4])和基于区域的卷积神经网络(RCNN)[5]的成功推动了目标检测的最新进展。尽管基于区域的CNN最初在[5]中开发时计算成本较高,但由于在方案[1]、[2]之间共享卷积,它们的成本已大幅降低。最新的版本Fast R-CNN[2]在忽略了在区域提案上花费的时间后,使用非常深的网络[3]实现了接近实时的速率。现在,在最先进的检测系统中,这些方案是测试时间计算的瓶颈。区域建议方法通常依赖于廉价的特征和经济的推理方案。选择搜索[4]是最流行的方法之一,它贪婪地基于工程化的低级特征合并超级像素。然而,与高效的检测网络[2]相比,选择性搜索要慢一个数量级,在CPU实现中,每幅图像的速度为2秒。EdgeBoxes[6]目前提供了提案质量和速度之间的最佳折衷,每幅图像0.2秒。尽管如此,区域建议步骤仍消耗与检测网络相同的运行时间。
人们可能会注意到,基于区域的Fast CNN利用了GPU,而研究中使用的区域建议方法是在CPU上实现的,这使得这种运行时比较不公平。 加速提案计算的一个明显方法是在GPU上重新实现它。这可能是一个有效的工程解决方案,但重新实施忽略了接下来的检测网络,因此错过了共享计算的重要机会。
在本文中,我们展示了一种算法变化——使用深度卷积神经网络计算建议,可以得到一个优雅而有效的解决方案,在给定检测网络计算的情况下,建议计算几乎是免费的。为此,我们引入了与最先进的目标检测网络共享卷积层的新型区域建议网络(RPNs)[1],[2]。通过在测试时共享卷积,计算建议的边际成本很小(例如,每幅图像10毫秒)。
我们的观察结果是,基于区域的检测器(如Fast RCNN)使用的卷积特征图也可以用于生成区域建议。在这些卷积特征的基础上,我们通过添加几个额外的卷积层来构建RPN,这些卷积层同时回归规则网格上每个位置的区域边界和对象性分数。因此,[RPN]是一种专门为卷积网络生成建议的方法。
RPN设计用于有效预测具有广泛尺度和纵横比的区域方案。与使用图像金字塔(图1,a)或过滤器金字塔(图1,b)的流行方法[8]、[9]、[1]、[2]不同,我们引入了新颖的“锚(anchor)”框,作为多尺度和宽高比的参考。我们的方案可以被认为是回归参考的金字塔(图1,c),它避免了枚举多尺度或宽高比的图像或过滤器。该模型在使用单尺度图像进行训练和测试时表现良好,因此有利于提高运行速度。
为了将RPN与Fast R-CNN[2]目标检测网络统一起来,我们提出了一种训练方案,在保持建议不变的情况下,在区域建议任务的微调和目标检测的微调之间交替进行。该方案收敛速度快,产生了一个统一的网络,该网络具有卷积特性,可在两个任务之间共享。
我们在PASCAL VOC检测基准[11]上综合评估了我们的方法,其中Fast R-CNN的RPN比Fast R-CNN选择性搜索的强基线产生更好的检测精度。同时,我们的方法几乎免除了测试时选择性搜索的所有计算负担,提案的有效运行时间仅为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和 Faster R-CNN的框架被采用,并被推广到其他方法,如3D对象检测[13]、基于部分的检测[14]、**实例分割[15]**和图像字幕[16]。 我们的快速有效的目标检测系统也已在Pinterest[17]等商业系统中构建,并报告了用户参与度的提高。
在ILSVRC和COCO 2015比赛中,Faster R-CNN和RPN是在ImageNet检测、ImageNet定位、COCO检测和COCO分割方面获得多项第一名的基础[18]。 RPN完全从数据中提出区域学习,因此可以很容易地受益于更深入、更具表现力的特征(例如[18]中采用的101层残差网络)。Faster R-CNN和RPN也被其他几个领先的参赛者所使用。这些结果表明,我们的方法不仅是一种经济高效的实际应用解决方案,而且是一种提高目标检测精度的有效方法。
有大量关于目标提议方法的文献。在[19]、[20]、[21]中可以找到对目标提议方法的全面调查和比较。广泛使用的目标提议方法包括基于分组超级像素的方法(例如,选择性搜索[4]、CPMC[22]、MCG[23])和基于滑动窗口的方法(例如,窗口中的对象性[24]、边缘框[6])。目标提议方法被用作独立于探测器的外部模块(例如,选择性搜索[4]对象探测器、RCNN[5]和Fast R-CNN[2])。
R-CNN方法[5]对CNN进行端到端训练,将提议区域划分为对象类别或背景。而细化主要是通过对象边界来预测(CNN除外)。其准确性取决于区域提案模块的性能(参见[20]中的比较)。有几篇论文提出了使用深度网络预测对象边界框的方法[25]、[9]、[26]、[27]。在OverFeat方法[9]中,训练一个完全连接的层来预测假设单个对象的定位任务的框坐标。然后将完全连接的层转换为卷积层,用于检测多个特定于类的对象。MultiBox方法[26]、[27]从一个网络生成区域建议,该网络的最后一个完全连接层同时预测多个类不可知盒,从而推广了OverFeat的“单盒”方式。这些与类别无关的盒子被用作R-CNN的提案[5]。与我们的完全卷积方案相比,多盒方案网络应用于单个图像裁剪或多个大型图像裁剪(例如,224×224)。MultiBox不在提案网络和检测网络之间共享功能。我们将在后面的上下文中用我们的方法更深入地讨论OverFeat和MultiBox。与我们的工作同时,DeepMask方法[28]是为学习语义建议而开发的。
卷积的共享计算[9]、[1]、[29]、[7]、[2]因其高效、准确的视觉识别而受到越来越多的关注。OverFeat论文[9]从图像金字塔中计算卷积特征,用于分类、定位和检测。基于共享卷积特征映射的自适应大小池(SPP)[1]是为高效的基于区域的目标检测[1]、[30]和语义分割[29]而开发的。Fast R-CNN[2]支持对共享卷积特征进行端到端检测器训练,并显示出令人信服的准确性和速度。
我们的目标检测系统称为Faster R-CNN,由两个模块组成。第一个模块是提出区域的深度全卷积网络,第二个模块是使用提出的区域的Fast R-CNN检测器[2]。整个系统是一个单一、统一的目标检测网络(图2)。RPN模块使用最近流行的带有“注意”机制的神经网络术语[31],告诉Fast R-CNN模块去哪里看。在第3.1节中,我们将介绍区域提案网络的设计和特性。在第3.2节中,我们开发了用于训练两个模块的算法,这两个模块具有共享的功能。
区域建议网络(RPN)将(任何大小的)图像作为输入,并输出一组矩形对象建议,每个建议都有一个目标性分数。我们用一个全卷积网络[7]来模拟这个过程,我们在本节中对此进行了描述。因为我们的最终目标是与Fast R-CNN目标检测网络[2]共享计算,所以我们假设两个网络共享一组共同的卷积层。在我们的实验中,我们研究了Zeiler和Fergus模型[32](ZF),它有5个可共享的卷积层,以及Simonyan和Zisserman模型[3](VGG-16),它有13个可共享的卷积层。
为了生成区域建议,我们在最后一个共享卷积层输出的卷积特征图上滑动一个小网络。这个小网络以输入卷积特征图的n×n空间窗口作为输入。每个滑动窗口都映射到一个低维特征(ZF为256-d,VGG为512-d,ReLU[33]如下)。该功能被输入到两个完全连接的同级层中——一个box回归层(reg)和一个box分类层(cls)。在本文中,我们使用n=3,注意到输入图像上的有效感受野很大(ZF和VGG分别为171和228像素)。图3(左)中的单个位置显示了这个迷你网络。请注意,由于迷你网络以滑动窗口方式运行,因此完全连接的层在所有空间位置共享。该体系结构自然地由一个n×n卷积层和两个并行1×1卷积层(分别用于reg和cls)实现。
在每个滑动窗口位置,我们同时预测多个区域建议,其中每个位置的最大可能建议数表示为k。因此,reg层有4k个输出,编码k个框的坐标,cls层输出2k个分数,用于估计每个提议的目标或非目标概率。k个建议是相对于k个参考框进行参数化的,我们称之为锚。锚定位于所讨论的滑动窗口的中心,并与比例和纵横比相关联(图3,左侧)。默认情况下,我们使用3个刻度和3个纵横比,在每个滑动位置产生k=9个锚。对于大小为 W × H W\times H W×H(通常为~2400)的卷积特征图,总共有 W H k WHk WHk个锚。
我们的方法的一个重要特性是,它在锚和计算相对于锚的建议的函数方面都是平移不变的(Translation-Invariant)。如果一个Translates了图像中的一个对象,建议应该translate,同样的功能应该能够预测任何位置的建议。我们的方法保证了这种平移不变性。作为比较,多框方法[27]使用k-均值生成800个锚,这些锚不是平移不变的。如果生成的是同一个提议,则不能保证该提议被转换为同一个提议。
平移不变特性还减小了模型大小。MultiBox有一个(4+1)×800维全连接输出层,而我们的方法在k=9锚的情况下有一个(4+2)×9维卷积输出层。因此我们的输出层有 2.8 × 1 0 4 2.8\times 10^{4} 2.8×104个参数(VGG-16为 512 × ( 4 + 2 ) × 9 512\times (4+2)\times 9 512×(4+2)×9),比MultiBox的输出层少两个数量级,MultiBox的输出层有 6.1 × 1 0 6 6.1\times 10^{6} 6.1×106个参数(MultiBox中的GooleNet为 1536 × ( 4 + 1 ) × 800 1536\times (4+1)\times 800 1536×(4+1)×800)。如果考虑特征投影层,我们的建议层的参数仍然比MultiBox少一个数量级。我们希望我们的方法在小数据集(如PASCAL VOC)上具有较小的过拟合风险。
我们的锚的设计提出了一种解决多尺度(和纵横比)问题的新方案。如图1所示,有两种流行的多尺度预测方法。第一种方法基于图像/特征金字塔,例如在DPM[8]和基于CNN的方法[9]、[1]、[2]中。图像在多个尺度上调整大小,并为每个尺度计算特征图(HOG[8]或深卷积特征[9]、[1]、[2])(图1(a))。 这种方法通常很有用,但很耗时。第二种方法是在特征图上使用多个比例(和/或纵横比)的滑动窗口。例如,在DPM[8]中,不同长宽比的模型分别使用不同的过滤器大小(例如5×7和7×5)进行训练。如果使用这种方法来处理多个尺度,可以将其视为“过滤器金字塔”(图1(b))。第二种方法通常与第一种方法联合使用[8]。
作为比较,我们基于锚的方法建立在锚的金字塔上,这更具成本效益。我们的方法参考多尺度和纵横比的锚定框对边界框进行分类和回归。它只依赖于单一比例的图像和特征图,并使用单一尺寸的过滤器(特征图上的滑动窗口)。我们通过实验展示了该方案对解决多尺度和大小问题的效果(表8)。
由于这种基于锚的多尺度设计,我们可以简单地使用单尺度图像上计算的卷积特征,Fast R-CNN检测器也可以这样做[2]。多尺度锚的设计是共享特征的关键组件,而无需额外成本来解决尺度问题。
为了训练RPN,我们为每个锚指定一个二进制类标签(是否为对象)。我们为两种锚定指定了一个正标签:
(1) 具有最高 Intersection-over-Union(IoU)的与ground-truth框重叠的锚
(2) 与任何ground-truth框的IoU重叠超过0.7的锚
请注意,单个ground-truth框可能会将正标签指定给多个锚。通常,第二个条件足以确定阳性样本;但我们仍然采用第一种条件,因为在一些罕见的情况下,第二种条件可能找不到阳性样本。如果所有ground-truth框的IoU比率均低于0.3,则我们将负标签分配给非正锚。既不积极也不消极的锚定对训练目标没有帮助。
根据这些定义,我们在Fast R-CNN[2]中最小化了多任务损失后的目标函数。图像的损失函数定义为:
此处,i是小批量中锚的索引。 p i p_{i} pi是锚i成为目标的预测概率。如果锚为正的话,ground-truth标签 p i ∗ p_{i}^{*} pi∗为1,如果锚为负,i为0。 t i t_{i} ti是一个向量,表示预测边界框的4个参数化坐标, t i ∗ t_{i}^{*} ti∗是一个与正的锚相关联的ground-truth框。分类损失 L c l s L_{cls} Lcls是两类(目标与非目标)的log损失。对于回归损失,我们使用 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是[2]中定义的鲁棒的损失函数(smooth L 1 L_{1} L1)。 p i ∗ L r e g p_{i}^{*}L_{reg} pi∗Lreg意味着回归损失仅对正锚激活( p i ∗ p_{i}^{*} pi∗),否则禁用( p i ∗ p_{i}^{*} pi∗)。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} Nregnormalized,并通过平衡参数λ加权。在我们当前的实现中(如在发布的代码中)。公式(1)中的cls项由mini-batch大小( N c l s N_{cls} Ncls)normalized,reg项由锚位置的数量(即 N r e g N_{reg} Nreg~2400)对reg项进行标准化。默认情况下,我们设置λ=10,因此cls和reg项的权重大致相等。我们通过实验表明,结果在很大范围内对λ值不敏感(表9)。我们还注意到,上述规范化不是必需的,可以简化。
对于bounding box回归,我们采用以下4个坐标的参数化:
其中x、y、w和h表示长方体的中心坐标及其宽度和高度。变量 x , x a x,x_{a} x,xa和 x ∗ x^{*} x∗分别用于预测预测框、锚框和ground-truth框(同样适用于y,w,h)。这可以认为是锚框到ground-truth框的边界框回归。
然而,我们的方法通过与以前基于RoI(感兴趣区域)方法的不同方式实现了bounding-box回归。在[1],[2]中,对从任意大小的ROI汇集的特征执行bounding-box回归,回归权重由所有区域大小共享。在我们的公式中,用于回归的特征在特征图上具有相同的空间大小(3×3)。为了解释不同的大小,我们学习了一组kbounding-box回归。每个回归器负责一个尺度和一个纵横比,k个回归器不共享权重。因此,由于锚的设计,即使特征具有固定的尺寸/比例,仍然可以预测各种尺寸的boxes。
RPN可以通过反向传播和随机梯度下降(SGD)进行端到端训练[35]。我们遵循[2]中的“以图像为中心”采样策略来训练这个网络。每个小批量都来自一张包含许多正面和负面示例锚的图像。可以优化所有锚的损失函数,但这将偏向于负样本,因为它们占主导地位。取而代之的是,我们在一幅图像中随机抽样256个锚,以计算小批量的损失函数,其中抽样的正锚点和负锚点的比率高达1:1。如果一张图像中阳性样本少于128个,我们用阴性样本填充小批量样本。
我们通过从标准偏差为0.01的零均值高斯分布中提取权重,随机初始化所有新层。所有其他层(即,共享卷积层)通过预训练ImageNet分类模型[36]进行初始化,这是标准实践[5]。我们对ZF网络的所有层进行了调优,并对VGG网络进行了conv3_1的升级,以节省内存[2]。在PASCAL VOC数据集上,我们对60k个小批次使用0.001的学习率,对接下来的20k个小批次使用0.0001的学习率。我们使用0.9的动量和0.0005的权重衰减[37]。我们的实现使用Caffe[38]。
到目前为止,我们已经描述了如何为区域建议生成训练网络,而不考虑将利用这些建议的基于区域的目标检测CNN。对于目标检测网络,我们采用了Fast R-CNN[2]。接下来,我们将描述学习由RPN和快速R-CNN组成的统一网络的算法,该网络具有共享卷积层(图2)。
独立训练的RPN和Fast R-CNN将以不同的方式修改它们的卷积层。因此,我们需要开发一种技术,允许在两个网络之间共享卷积层,而不是学习两个独立的网络。我们将讨论共享特征的训练网络的三种方式:
(1)交替训练。在这个解决方案中,我们首先训练RPN,并使用建议训练Fast R-CNN。然后使用Fast R-CNN调谐的网络初始化RPN,并迭代该过程。这是本文所有实验中使用的解决方案。
(2) 近似联合训练。在这个解决方案中,RPN和Fast R-CNN网络在训练期间合并为一个网络,如图2所示。在每个SGD迭代中,前向传递生成区域建议,这些建议在训练Fast R-CNN检测器时被视为固定的、预先计算的建议。反向传播像往常一样发生,对于共享层,来自RPN损失和Fast R-CNN损失的反向传播信号被合并。这个解决方案很容易实现。但是这个解决方案忽略了导数w.r.t。建议框的坐标也是网络响应,所以是近似值。在我们的实验中,我们根据经验发现,这种求解器产生的结果非常接近,但与交替训练相比,训练时间减少了约25-50%。这个解算器包含在我们发布的Python代码中。
(3)非近似联合训练。如上所述,RPN预测的边界框也是输入的函数。Fast R-CNN中的RoI池层[2]接受卷积特征和预测的边界框作为输入,因此理论上有效的反向传播解算器还应包括梯度w.R.t.,框坐标。在上述近似联合训练中,这些梯度被忽略。在非近似联合训练解决方案中,我们需要一个RoI池化层,该层是可微的w.r.t. box 坐标。这是一个非常重要的问题,可以通过[15]中开发的“RoI warping”层给出解决方案,这超出了本文的范围。
本文采用一种实用的四步训练算法,通过交替优化学习共享特征。在第一步中,我们按照第3.1.3节所述训练RPN。该网络由ImageNet预先训练的模型初始化,并针对区域建议任务进行端到端微调。在第二步中,我们使用step-1 RPN生成的建议,通过Fast R-CNN训练一个单独的检测网络。该检测网络也由ImageNet预训练模型初始化。此时,两个网络不共享卷积层。在第三步中,我们使用检测器网络初始化RPN训练,但我们固定了共享卷积层,只微调RPN特有的层。现在这两个网络共享卷积层。最后,保持共享卷积层固定,我们微调Fast R-CNN的独特层。因此,两个网络共享相同的卷积层,并形成一个统一的网络。类似的交替训练可以进行更多的迭代,但我们观察到可以忽略不计的改进。
我们在单尺度图像上训练和测试区域建议和目标检测网络[1],[2]。我们重新缩放图像,使其短边为s=600像素[2]。多尺度特征提取(使用图像金字塔)可能会提高精度,但不会表现出良好的速度-精度权衡[2]。在重新缩放的图像上,最后一个卷积层上ZF和VGG网络的总步长为16像素,因此为∼在调整大小之前,在典型的PASCAL图像上显示10个像素(∼500×375). 即使如此大的步长也能提供很好的效果,尽管更小的步长可能会进一步提高准确性。
对于锚,我们使用了3个比例,框面积为 12 8 2 、 25 6 2 128^{2}、256^{2} 1282、2562和 512 … … 2 512……{2} 512……2,3个纵横比分别为1:1、1:2、2:1。这些超参数并不是为特定数据集精心选择的,我们将在下一节提供关于它们影响的消融实验。如前所述,我们的解决方案不需要图像金字塔或过滤器金字塔来预测多尺度的区域,节省了大量的运行时间。图3(右)显示了我们的方法在各种尺度和纵横比下的能力。表1显示了使用ZF网络学到的每个锚的平均提案大小。我们注意到,我们的算法允许比潜在的感受野更大的预测。这样的预测并非不可能,如果只有物体的中间部分是可见的,人们仍然可以粗略地推断出物体的范围。
需要小心处理跨越图像边界的锚框。在训练期间。忽略所有的跨边界锚框,因为它们不会造成损失。对于典型的1000×600图像,大约有20000个(≈ 总共60×40×9)个锚。忽略跨境锚框后,每幅图像约有6000个锚用于训练。如果在训练中不忽略边界交叉异常值,它们会在目标中引入较大且难以纠正的误差项,并且训练不会收敛。然而,在测试期间,我们仍然对整个图像应用全卷积RPN。这可能会生成交叉边界的提议框,我们将其裁剪到图像边界。一些RPN提案彼此高度重叠。为了减少冗余,我们根据提议区域的cls分数对其采用非最大抑制(NMS)。我们将NMS的IoU阈值固定为0.7,这使我们每个图像大约有2000个提议区域。正如我们将要展示的那样,NMS不会损害最终的检测精度,但会大幅减少提案数量。在NMS之后,我们使用排名前N的建议区域进行检测。在下文中,我们使用2000个RPN建议训练Fast R-CNN,但在测试时评估不同数量的建议。
我们在PASCAL VOC 2007检测基准上对我们的方法进行了综合评估[11]。该数据集由超过20个对象类别的约5k TranVal图像和5k测试图像组成。我们还提供了一些模型的PASCAL VOC 2012基准测试结果。对于ImageNet预训练网络,我们使用“fast”版本的ZF net[32],它有5个卷积层和3个完全连接的层,以及公共VGG-16 model7[3],它有13个卷积层和3个完全连接的层。我们主要评估检测平均精度(mAP),因为这是对象检测的实际指标(而不是关注对象建议代理指标)。
表2(顶部)显示了使用各种区域建议方法进行训练和测试时的Fast R-CNN结果。这些结果使用ZF网络。对于选择性搜索(SS)[4],我们通过“快速”模式生成了大约2000个提案。对于EdgeBoxes(EB)[6],我们根据0.7 IoU的默认EB设置生成提案。在Fast R-CNN框架下,SS的mAP为58.7%,EB的mAP为58.6%。RPN与Fast R-CNN合作,在使用多达300份提案的同时,获得了59.9%的mAP,取得了有竞争力的结果。由于共享卷积计算,使用RPN比使用SS或EB产生更快的检测系统;更少的提案还可以降低区域级全连接层的成本(表5)。
作为一种生成提案方法,我们对RPN的行为进行了研究。首先,我们展示了RPN和Fast R-CNN检测网络之间共享卷积层的效果。为了做到这一点,我们在4步训练过程的第二步之后停止。使用单独的网络将结果略微降低到58.7%(RPN+ZF,非共享,表2)。我们观察到这是因为在第三步中,当使用detectortuned特征来微调RPN时,提案质量得到了提高。
接下来,我们将分析RPN对训练Fast R-CNN检测网络的影响。为此,我们使用2000个SS提案和ZF网络来训练Fast R-CNN模型。我们修复了这个检测器,并通过更改测试时使用的建议区域来评估检测mAP。在这些烧蚀实验中,RPN与探测器没有相同的特征。
在测试时用300个RPN方案替换SS,mAP为56.8%。mAP中的损失是因为训练/测试方案之间的不一致。该结果作为以下比较的基线。有些令人惊讶的是,当在测试时使用排名前100的提案时,RPN仍然会导致竞争结果(55.1%),这表明排名前100的RPN提案是准确的。另一个极端是,使用排名前6000的RPN方案(不含NMS)有一个可比的mAP(55.2%),表明NMS不会损害检测mAP,并可能减少误报。
接下来,我们通过在测试时关闭RPN的cls和reg输出来分别研究它们的作用。当cls层在测试时被移除(因此没有使用NMS/排名)时,我们从未评分区域随机抽取N个提案。当N=1000(55.8%)时,mAP几乎没有变化,但当N=100时,mAP显著降低至44.6%。这表明cls分数说明了排名最高的提案的准确性。
另一方面,当reg层在测试时被移除(因此提案成为锚定框)时,mAP下降到52.1%。这表明,高质量的提案主要是由于回归框界限。锚框虽然有多个刻度和纵横比,但不足以进行精确检测。
我们还评估了更强大的网络对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。下面的实验证明了这一假设的正确性。
表3显示了VGG-16的建议和检测结果。使用RPN+VGG,非共享特征的结果为68.5%,略高于SS基线。如上所示,这是因为RPN+VGG生成的方案比SS更准确。与预先定义的SS不同,RPN经过正向训练,并受益于更好的网络。对于功能共享的变体,结果是69.9%——比强大的SS基线好,但几乎没有成本。我们在PASCAL VOC 2007 trainval和2012 trainval的联合集上进一步训练RPN和检测网络。mAP是73.2%。图5显示了PASCAL VOC 2007测试集的一些结果。在PASCAL VOC 2012测试集(表4)上,我们的方法在VOC 2007 trainval+测试和VOC 2012 trainval的联合集上训练了70.4%的mAP。表6和表7显示了详细的数字。
在表5中,我们总结了整个目标检测系统的运行时间。SS需要1-2秒,具体取决于内容(平均约1.5秒),而带有VGG-16的Fast R-CNN在2000个SS提案上需要320毫秒(如果在完全连接的层上使用SVD,则需要223毫秒[2])。我们使用VGG-16的系统在建议和检测方面总共需要198ms。由于共享了卷积特性,RPN单独计算额外的层只需要10毫秒。由于提案较少(每张图片300个),我们的区域计算也较低。我们的系统在ZF网络上的帧速率为17 fps。
在表8中,我们调查了锚的设置。默认情况下,我们使用3个比例和3个纵横比(表8中69.9%的mAP)。如果在每个位置只使用一个锚,mAP将下降3-4%的幅度。如果使用3个比例(1个高宽比)或3个高宽比(1个比例),mAP会更高,这表明使用多个尺寸的锚作为回归参考是一种有效的解决方案。在该数据集上,仅使用3个具有1纵横比的尺度(69.8%)与使用3个具有3纵横比的尺度一样好,这表明尺度和纵横比并不是检测精度的disentangled维度。但是我们在设计中仍然采用这两个维度来保持系统的灵活性。
在表9中,我们比较了(1)式中λ的不同值。默认情况下,我们使用λ = 10,这使得(1)式中的两项在归一化后权重大致相等。表9显示,当λ在两个数量级(1 ~ 100)范围内时,我们的结果受到了轻微的影响(约1%)。这表明,该结果在很大范围内对λ不敏感。
接下来,我们使用ground-truth框计算不同IoU比率下的提案召回率(Recall)。值得注意的是,Recall-to-IoU度量只是松散地与最终检测精度相关的[19],[20],[21]。使用这个度量来诊断提议方法比评估它更合适。
在图4中,我们展示了使用300、1000和2000提案的结果。我们与SS和EB进行比较,根据这些方法产生的置信度,N个方案是排名前N的方案。从图中可以看出,当提案数从2000下降到300时,RPN方法表现良好。这就解释了为什么RPN在只使用300个提案的情况下具有很好的最终检测mAP。正如我们之前分析的,这个性质主要归因于RPN的cls项。当提案数较少时,SS和EB的召回率比RPN下降更快。
OverFeat论文[9]提出了一种检测方法,该方法在卷积特征映射上的滑动窗口上使用回归器和分类器。OverFeat是一个单阶段的、特定于类的检测管道,而我们的是一个两阶段的级联,由与类无关的提议和特定于类的检测组成。在OverFeat中,区域特征来自于比例金字塔上的一个宽高比的滑动窗口。这些特征被用来同时确定物体的位置和类别。在RPN中,特征来自正方形(3×3)滑动窗口,并预测与锚的不同比例和宽高比相关的建议。虽然这两种方法都使用滑动窗口,但区域建议任务只是Faster rcnn的第一阶段,下游的Fast R-CNN检测器负责对其进行改进。在级联的第二阶段,区域方向的特征从提案框中自适应池化[1],[2],更完整地覆盖区域的特征。我们相信这些特征会导致更准确的检测。
为了比较单阶段和两阶段系统,我们通过单阶段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模型,单级系统的mAP为53.9%。这比两阶段制(58.7%)低4.8%。实验证明了级联区域提议和目标检测的有效性。在[2],[39]中也报道了类似的观察结果,其中用滑动窗口替换SS区域提案导致了两篇论文中约6%的退化。我们还注意到,单阶段系统的速度较慢,因为它有相当多的提案要处理。
我们给出了更多关于Microsoft COCO对象检测数据集[12]的结果。该数据集涉及80个对象类别。我们在训练集中使用80k图像进行实验,在验证集中使用40k图像,在测试开发集中使用20k图像。我们评估了IoU∈[0.5:0.05:0.95]的mAP平均值(COCO的标准度量,简称为mAP@[.5,.95])和[email protected] (PASCAL VOC的度量)。
我们的系统对这个数据集做了一些小的更改。我们在8-GPU实现上训练我们的模型,RPN的有效小批量大小为8(每个GPU 1个),Fast R-CNN的有效小批量大小为16(每个GPU 2个)。RPN step和Fast R-CNN step都以0.003的学习率训练了240k次迭代,然后以0.0003的学习率训练了80k次迭代。我们修改了学习速率(从0.003开始,而不是0.001),因为小批量大小改变了。对于锚点,我们使用了3个长宽比和4个尺度(添加 6 4 2 64^{2} 642个尺度),主要是为了处理这个数据集上的小对象。此外,在我们的Fast R-CNN步骤中,负样本定义为在[0,0.5)区间内具有ground truth的最大IoU的样本,而不是[1],[2]中使用的[0.1,0.5)。我们注意到,在SPPnet系统[1]中,使用[0.1,0.5)中的负样本进行网络微调,但在hard-negative挖掘的SVM步骤中,仍然访问了[0,0.5)中的负样本。我们注意到,在SPPnet系统[1]中,使用[0.1,0.5)中的负样本进行网络微调,但在硬负挖掘的SVM步骤中,仍然访问了[0,0.5)中的负样本。但是Fast R-CNN系统[2]放弃了SVM步骤,所以没有访问[0,0.1]中的负样本。包括这些[0,0.1]样本,在COCO数据集上提高了[email protected]的Fast R-CNN和Faster R-CNN系统(但对PASCAL VOC的影响可以忽略不计)。
其余的实现细节与PASCAL VOC相同。特别是,我们一直使用300个提案和单尺度(s = 600)测试。在COCO数据集上,每幅图像的测试时间仍然是200毫秒左右。在表11中,我们首先报告了使用本文实现的Fast R-CNN系统[2]的结果。我们的Fast R-CNN基线有39.3% [email protected]在测试开发设置,高于[2]报道。我们推测造成这种差距的原因主要是由于负样品的定义,以及小批量尺寸的变化。我们还注意到mAP@[.5, .95]只是可比性的。
接下来,我们评估Faster R-CNN系统。利用COCO训练集进行训练,Faster R-CNN拥有42.1%的[email protected]和21.5%的mAP@[.5, .95]。在COCO测试开发集上。这比[email protected]高2.8%,mAP@[.5、.95]高2.2%比相同protocol下的Fast RCNN对等物(表11)。这表明,在较高的IoU阈值下,RPN具有较好的定位精度。使用COCO trainval设置进行训练,Faster RCNN拥有42.7%的[email protected]和21.9%的mAP@[.5, .95]。在COCO测试开发集上。图6显示了MS COCO测试开发集上的一些结果。
我们已经证明Faster R-CNN从更好的特征中获益更多,这要感谢RPN完全通过神经网络学习提出区域的事实。这一观察结果仍然有效,甚至当深度大大增加到100层以上[18]。只有用101层残差网(ResNet-101)[18]替换VGG-16, Faster R-CNN系统在COCO val集上将mAP从41.5%/21.2% (VGG16)增加到48.4%/27.2% (ResNet-101)。He et al.[18]在其他正交于Faster RCNN的改进下,在COCO测试开发集上获得了55.7%/34.9%的单模型结果和59.0%/37.4%的整体结果,获得了COCO 2015目标检测比赛的第一名。同样的系统[18]在2015年ILSVRC物体检测比赛中也获得了第一名,以8.5%的绝对优势超越了第二名。RPN也是ILSVRC 2015定位和COCO 2015语义比赛的第一名获奖作品的组成部分,详细信息分别在[18]和[15]
大规模数据对于改进深度神经网络至关重要。接下来,我们研究MS COCO数据集可以如何帮助PASCAL VOC的检测性能。
作为一个简单的基线,我们直接在PASCAL VOC数据集上评估COCO检测模型,而没有对任何PASCAL VOC数据进行微调。这种评估是可能的,因为COCO上的类别是PASCAL VOC上的类别的超集。本实验忽略COCO上独占的类别,只对20个类别加背景进行softmax层。该设置下的mAP在PASCAL VOC 2007测试集上是76.1%(表12)。即使没有利用PASCAL VOC数据,该结果也比VOC07+12训练的结果(73.2%)好很多。
然后在VOC数据集上对COCO检测模型进行微调。在本实验中,使用COCO模型代替ImageNet预训练模型(用于初始化网络权值),并对Faster 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)。我们注意到,获得这些强结果的测试时间速度仍然是每张图像约200ms。
我们提出了高效、准确地生成区域提案的RPNs。通过与下游检测网络共享卷积特征,区域提议步骤几乎是零成本的。我们的方法使一个统一的,基于深度学习的目标检测系统运行在接近实时帧率。学习后的RPN还提高了区域建议的质量,从而提高了整体目标检测的准确性。