Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

2022-09-04 21:50:10 浏览数 (1)

1、摘要

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

2、简介

区域建议方法和基于区域的卷积神经网络(R-CNNs)的成功应用推动了目标检测领域的最新进展。虽然基于区域的CNNs的计算成本与最初在R-CNN中开发时一样高,但是由于SPP-Net和Fast R-CNN之间共享卷积,它们的成本已经大大降低。最新的版本是Fast R-CNN,当忽略了在区域建议上花费的时间时,它使用非常深的网络实现了接近实时的速率。目前,在最先进的检测系统中,区域建议是测试时间计算的瓶颈。区域建议方法通常依赖于廉价的特性和经济的推理方案。选择性搜索是最流行的方法之一,它贪婪地合并基于工程底层特性的超像素。然而,与高效的检测网络Fast R-CNN相比,选择性搜索要慢一个数量级,在CPU实现中,每幅图像的搜索速度为2秒。EdgeBoxes目前提供了区域建议质量和速度之间的最佳权衡,每幅图0.2秒。然而,区域建议步骤仍然消耗与检测网络相同的运行时间。

Onemay指出,基于区域的cnns利用了gpu,而研究中使用的区域建议方法是在CPU上实现的,这使得这种运行时比较不公平。加速建议计算的一个明显方法是为GPU重新实现它。这可能是一个有效的工程解决方案,但重新实现忽略了下游的检测网络,因此错过了共享计算的重要机会。在本文中,我们证明了一种基于深度卷积神经网络的算法变化计算方案,在给定检测网络计算量的情况下,可以得到一种优雅而有效的解决方案,该方案的计算几乎是免费的。为此,我们引入了新的区域建议网络(RPNs),它与最先进的目标检测网络SPP-Net和Fast R-CNN共享卷积层。通过在测试时共享卷积,计算提议的边际成本很小(例如,每张图像10毫秒)。

我们观察到,基于区域的检测器使用的卷积特征图,如Fast R-CNN,也可以用来生成区域建议。在这些卷积特性的基础上,我们通过添加一些额外的卷积层来构造RPN,这些卷积层同时在一个规则网格上的每个位置上回归区域边界和客观度评分。因此,RPN是一种全卷积网络(FCN),可以针对生成检测建议的任务进行端到端训练。区域规划系统的设计是为了有效地预测具有广泛规模和纵横比的区域方案。与使用图像金字塔(图1a)或过滤器金字塔(图1b)的流行方法SPP-Net、Fast R-CNN、DPM、Overfeat相比,我们引入了新的“锚”盒,可在多个尺度和纵横比下作为参考。我们的方案可以被认为是一个回归参考的金字塔(图1c),它避免了枚举图像或多个尺度或纵横比的过滤器。当使用单尺度图像进行训练和测试时,该模型性能良好,从而提高了运行速度。

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

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

我们的快速和有效的目标检测系统也已在商业系统中建立,如在pinterest,与用户参与的改进报告。在ILSVRC和COCO 2015的比赛中,Faster R-CNN和RPN是在ImageNet检测、ImageNet定位、COCO检测、COCO分割等几个方面排名第一的条目的基础。完全学会从数据中提出区域,因此可以很容易地从更深层次和更富表现力的特性(如R二十Net中采用的101层剩余网)。Faster R-CNN和RPN在这些比赛中也被其他几个领先的参赛选手使用。这些结果表明,我们的方法不仅是一种实用的经济有效的解决方案,而且是提高目标检测精度的有效途径。

3、FASTER R-CNN

我们的目标检测系统faster R-CNN由两个模块组成。第一个模块是提出区域的深度全卷积网络,第二个模块是使用提出区域的快速R-CNN检测器。整个系统是一个单一的、统一的目标检测网络(图2)。RPN模块使用了最近流行的具有“Attention”机制的神经网络术语,告诉Faster R-CNN模块去哪里查看。

3.1、区域建议网络

区域建议网络以图像(任何大小)作为输入和输出一组矩形对象建议,每个建议都有一个客观度评分。我们用一个全卷积网络来模拟这个过程,我们将在本节中对此进行描述。因为我们的最终目标是与一个Faster R-CNN对象检测网络共享计算,所以我们假设这两个网络共享一组公共的卷积层。

为了生成区域建议,我们在最后一个共享卷积层的卷积feature map输出上滑动一个小网络。这个小网络将输入卷积特征图的一个nxn空间窗口作为输入。每个滑动窗口都映射到一个低维特性(ZF为256-d, VGG为512-d)。该特性被输入到两个同级全连接层—box-regression层和box-classification层。我们在本文中使用n = 3,注意到输入图像上的有效接收域很大(ZF和VGG分别为171和228像素)。图3(左)显示了这个微型网络的单个位置。注意,由于微型网络以滑动窗口的方式运行,因此所有空间位置都共享完全连接的层。这个架构用nxn的卷积层,紧跟其后的是两个1x1的卷积层,分别用来进行回归和分类。

3.1.1 Anchors

在每个滑动窗口位置,我们同时预测多个区域建议,其中每个位置的最大可能区域建议数记为k。因此,reg层有4k个输出,编码k个框的坐标,cls层输出2k个分数,用于估计每个区域建议的目标或非目标的概率。k个区域建议是相对于k个参考框参数化的,我们称之为锚。锚以所述滑动窗口为中心,并与比例和纵横比相关联。默认情况下我们使用三个尺度和三个宽高比,对WxH的卷积特征图,通常情况下,总共有WHk锚。

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

平移不变性质也减小了模型的大小。MultiBox有(4 1)x800的全链接输出, 而当k=9的时候,我们的方法有(4 2)x9维的卷积输出层 。结果是,输出层有2.8 times 10^{4} 个参数(对于VGG-16有512 times(4 2) times 9 个参数)。两个数量级少于 MultiBox’s输出层的6.1 times 10^{6} 个参数。如果考虑到特征投影层,我们的建议层的参数仍然比MultiBox少一个数量级。我们希望我们的方法对小数据集(如PASCAL VOC)的过度拟合风险更小。

多尺度锚作为回归参考。我们锚的设计提出了一种新的解决多尺度(和纵横比)的方案。多尺度预测有两种流行的方法。第一种方法是基于图像/特征金字塔,如DPM在多个尺度下调整大小。第二正方法是基于CNN的方法,计算每个尺度下的feature map (HOG或deep convolutional features)。这种方法通常很有用,但是很耗时。第二种方法是在特征图上使用多个尺度(和/或纵横比)的滑动窗口。例如,在DPM中,使用不同的滤波器大小(如5x7和7x5)分别训练不同纵横比的模型。如果这种方法用于处理多个尺度,它可以被认为是一个“滤波器金字塔”。第二种方法通常与第一种方联合使用。

作为比较,我们基于锚的方法是建立在一个金字塔锚,这是更有效的成本效益。我们的方法参照多个尺度和纵横比的锚框对边界框进行分类和回归。它只依赖单一尺度的图像和特征图,并使用单一尺寸的过滤器(特征图上的滑动窗口)。我们通过实验展示了该方案在处理多个尺度和大小方面的效果。我们通过实验展示了该方案在处理多个尺度和大小方面的效果。由于这种基于锚点的多尺度设计,我们可以简单地使用单尺度图像上计算的卷积特征,正如快速R-CNN检测器所做的那样。多尺度锚点的设计是实现特征共享的关键部件,而不需要额外的规模寻址成本。

3.1.2 Loss Function

为了训练RPN,我们为每个锚分配一个二进制类标签(目标或非目标)。我们给两种锚分配了一个正标签标签:(i)anchor和groundtruth框的IOU最高,或(ii) IoU与任何ground truth框重叠大于0.7的锚。请注意,一个ground-truth框可以为多个锚分配正标签。通常,第二个条件足以确定正样本;但我们仍然采用第一种情况,因为在一些罕见的情况下,第二种情况可能找不到正样本。如果所有ground-truth框的IoU比率都低于0.3,我们将负标签分配给非正锚。既不是正标签也不是负标签的锚对训练没有帮助。

利用这些定义,我们最小化了Fast R-CNN中多任务丢失后的目标函数。图像的损失函数定义为:

L({p,},{t,})=frac{1}{N_{c / s}} sum_{1} L_{c / s}left(p_{1}, p_{j}^{*}right) lambda frac{1}{N_{r e g}} sum_{1} p_{j}^{*} L_{r e g}left(t_{,}, t_{j}^{*}right)

这里,i 是mini-batch中anchor的指数,p_ii被预测为目标的概率。如果一个锚是正样本ground truth标签p^*_l 为1,如果一个锚是负样本就为零。ti代表是预测得到的4个bounding box坐标的参数向量,t^*_i 是与一个正锚相关联的ground truth框。分类损失Lcls是两个类(目标与非目标)的对数损失。对回归损失,我们使用operatorname{L_{reg}}left(t_{p r} t_{j}^{*}right)=Rleft(t_{j}-t_{j}^{*}right)R是Fast-RCNN中定义的鲁邦损失函数。p_{i}^{*} L_{r e g} 意味着只有在正样本的时候才计算。分类层和回归层分别由p_jt_j 构成。

这两种形式用N_{reg}N_{cls} 来归一化,通过平衡参数lambda 进行加权。在我们当前的实现中上式的cls是由小批处理大小(即,N_{cls}=256 )来归一化的,而reg是由输出锚位置的数量类归一化的,例如2400。默认我们设置lambda=10 ,因此cls和reg的权重大致相同。实验表明结果对lambda 的值不敏感。我们还注意到,上面的标准化不是必需的,可以简化。

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

t_{x}=left(x-x_{a}right) / w_{a}, t_{y}=left(y-y_{a}right) / h_{a}
t_{w}=log left(w / w_{s}right), t_{h}=log left(h / h_{a}right)
t_{x}^{*}=left(x^{*}-x_{a}right) / w_{a}, t_{y}^{*}=left(y^{*}-y_{a}right) / h_{a}
t_{w}^{*}=log left(w^{*} / w_{a}right), t_{n}^{*}=log left(h^{*} / h_{a}right)

其中x、y、w和h表示盒子的中心坐标及其宽度和高度。变量x、xa、x*分别是预测框、anchor框和ground truth框(对y,w,h也一样)。然而,我们的方法与以前基于roi的(感兴趣区域)方法不同,实现了边界盒回归。在R-CNN和Fast R-CNN中,对任意大小的roi汇集的特性执行边界盒回归,回归权重由所有区域大小共享。用于回归的特性是相同的空间大小(3x3)的特性为了适应不同的尺寸,我们学习了一组k个边界盒回归器。每个回归因子负责一个尺度和一个纵横比,而k个回归因子不共享权重。同样,由于锚的设计,即使特性的大小/比例是固定的,仍然可以预测各种大小的盒子。

3.1.3 Training RPNs

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

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

3.2 对RPN和Fast R-CNN共享特征

到目前为止,我们已经描述了如何训练一个区域建议生成网络,而不考虑将利用这些提案的基于区域的目标检测网络。检测网络采用Fast R-CNN。接下来,我们描述了学习由RPN和Fast R-CNN组成的具有共享卷积层的统一网络的算法。因此,我们需要开发一种技术,允许在两个网络之间共享卷积层,而不是学习两个独立的网络。我们讨论了三种共享功能的培训网络的方法:

(i)交替训练。在这个解决方案中,我们首先训练RPN,并利用这些建议来训练Faster R-CNN。然后使用Fast R-CNN调优的网络初始化RPN,并迭代该过程。这是本文所有实验中使用的解。

(ii)近似联合训练。在该方案中,RPN和快速R-CNN网络在训练过程中合并成一个网络,如上图所示。在每个SGD迭代中,前向遍历生成区域建议,这些建议在训练Fast R-CNN检测器时就像处理固定的、预先计算好的建议一样。反向传播照常进行,其中共享层将RPN损耗和快速R-CNN损耗的反向传播信号结合起来。这个解决方案很容易实现。但是这个解忽略了框坐标的导数,建议框的坐标也是网络响应,所以是近似的。在我们的实验中,我们已经通过经验发现该求解器产生了接近的结果(mAP 70.0%与下表中报告的69.9%的交替训练相比),但是与交替训练相比,减少了大约25- 50%的训练时间。这个求解器包含在我们发布的Python代码中。

(iii)非近似联合训练。如上所述,RPN预测的边界框也是输入的函数。Fast R-CNN中的RoI池层接受卷积特性和预测的边界框作为输入,因此理论上有效的反向传播求解器也应该包含梯度是方框的坐标。上述近似联合训练忽略了这些梯度。在非近似联合训练解决方案中,我们需要一个可微分的RoI池层。t是方框的坐标。

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

3.3 实现细节

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

对于锚点,我们使用了三个尺度,盒子区域为128^2、256^2和512^2像素,长宽比为1:1、1:2和2:1。这些超参数不是为特定数据集精心选择的,我们将在下一节中提供关于它们影响的消融实验。如前所述,我们的解决方案不需要图像金字塔或滤波金字塔来预测多个尺度的区域,节省了大量的运行时间。下图(右)显示了我们的方法对大范围的尺度和纵横比的能力。表1显示了使用ZFnet学习的每个锚的平均建议大小。我们注意到,我们的算法允许比潜在接受域更大的预测。这样的预测并非不可能——如果一个物体的中心是可见的,那么人们仍然可以粗略地推断出这个物体的范围。

需要小心处理跨越图像边界的锚框。在训练过程中,我们忽略了所有的跨界锚点,以免造成损失。对于一个典型的1000x600的图像总共大约有20,000个锚。忽略跨界锚点后,每幅图像约有6000个锚点用于训练。如果训练中不忽略跨界离群点,则会在目标中引入较大且难以纠正的误差项,训练不收敛。然而,在测试过程中,我们仍然对整个图像应用全卷积RPN。这可能会生成跨边界的建议框,我们将其剪辑到图像边界。一些RPN建议彼此高度重叠。为了减少冗余,我们根据提案区域的cls评分对提案区域采用非最大抑制(NMS)。我们将NMS的IoU阈值设置为0.7,这就为每张图像留下了大约2000个建议区域。正如我们将展示的,NMS不会损害最终的检测精度,但会大大减少建议的数量。在NMS之后,我们使用排名前n的建议区域进行检测。下面,我们使用2000个RPN提案来训练快速的R-CNN,但是在测试时评估不同数量的提案。

4、实验

4.1 在PASCAL VOC的实验

我们在PASCAL VOC 2007检测基准上对我们的方法进行了综合评价。该数据集由约5k个训练图像和5k个测试图像组成,包含20多个对象类别。我们还提供了PASCAL VOC 2012基准测试的一些模型的结果。对于ImageNet预训练网络,我们使用了ZF net的“快速”版本,它有5个卷积层和3个全连接层,以及公共VGG-16 model,它有13个卷积层和3个全连接层。我们主要评估检测平均精度(mAP),因为这是用于对象检测的实际度量(而不是关注对象建议代理度量)。

表2 (top)显示了使用不同区域建议方法训练和测试时Fast R-CNN结果。这些结果使用ZF网络。对于选择性搜索(SS),我们通过“快速”模式生成了大约2000个建议。对于edge-box (EB),我们使用调优为0.7 IoU的缺省EB设置生成建议。在Fast R-CNN框架下,SS拥有58.7%的地图,EB拥有58.6%的地图。RPN与Fast R-CNN实现了竞争的结果,与map 59.9%,而使用多达300个提案。由于共享卷积计算,使用RPN比使用SS或EB产生更快的检测系统;较少的提案也降低了区域性全连接层的成本(表5)。

RPN烧消融实验。为了研究RPNs的行为,我们进行了几项消融研究。首先,我们展示了在RPN和Fast R-CNN检测网络之间共享卷积层的效果。为此,我们在四步训练过程的第二步之后停止。使用单独的网络将结果略微降低到58.7% (RPN ZF, unshared, Table 2)。我们发现,这是因为在第三步中,当使用检测器调优的特性对RPN进行微调时,提案质量得到了提高。

其次,分析了RPN对训练Fast R-CNN检测网络的影响。为此,我们利用2000 SS proposal和ZF net训练了一个Fast R-CNN模型。我们修正了这个检测器,并通过改变测试时使用的建议区域来评估检测图。在这些消融实验中,RPN与检测器没有共同的特征。

在测试时用300个RPN建议替换SS,得到56.8%的mAP。mAP中的损失是由于培训/测试建议之间的不一致。这个结果作为以下比较的基线。有些令人惊讶的是,当在测试时使用排名前100的建议时,RPN仍然会导致竞争结果(55.1%),这表明排名前100的建议是准确的。在另一个极端,使用排名前6000的RPN建议(不使用NMS)有一个类似的mAP(55.2%),这表明NMS不会损害检测mAP,并且可能减少错误警报。接下来,我们通过在测试时关闭RPN的cls和reg输出,分别研究它们的作用。当在测试时去掉cls层(因此不使用NMS/rank),我们从未得分区域随机抽取N个提案。当N=1000时几乎没有改变(55.8%),但是当N=100时显著的下降到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。下面的实验验证了这一假设。

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的联合集上训练的mAP为70.4%。表6和表7显示了详细的数字。

在表5中,我们总结了整个目标检测系统的运行时间。根据内容的不同,SS需要1-2秒(平均1.5秒),而使用VGG-16的Fast R-CNN在2000个SS提案上需要320毫秒(如果在全连接层上使用SVD,则需要223毫秒)。我们的VGG-16系统在方案和检测上总共花费了198毫秒。由于卷积特性是共享的,仅RPN就只需要10 ms就可以计算额外的层。我们的区域计算也较低,这要感谢较少的建议(每幅图像300个)。在ZF网络中,我们的系统帧速率为17帧。

Hyper-Parameters敏感性。在表8中,我们研究了锚的设置。默认情况下,我们使用三个比例尺和三个纵横比(表8中的69.9% mAP)。如果使用三个尺度(1个纵横比)或3个纵横比(1个尺度),mAP会更高,说明使用多种尺寸的锚作为回归参考是一种有效的解决方案。在该数据集上仅使用三个具有一个纵横比的尺度(69.8%)就可以与使用三个具有三个纵横比的尺度一样好,这表明尺度和纵横比对于检测精度来说并不是解纠缠的维度。但是我们仍然在设计中采用这两个维度来保持系统的灵活性。

表(9)比较了损失中不同lambda 的值。我们默认设置lambda=10 使得式(1)在归一化后近似相等。表9显示,当在大约两个数量级(1到100)的范围内时,我们的结果只受到很小的百分比的影响。这说明结果在很大范围内是不敏感的。

在表10中,我们研究了测试时建议框的数量。

Recall-to-IoU分析。接下来,我们用基本ground truth框计算不同IoU比率下建议框的Recall。使用这个度量来诊断建议方法比评估建议方法更合适。

在图4中,我们显示了使用300、1000和2000个建议的结果。通过与SS、EB和MCG的比较,基于这些方法产生的置信度,N个方案是排名前N位的方案。从图中可以看出,当建议数量从2000个下降到300个时,RPN方法表现得很好。这就解释了为什么RPN在使用300个建议时就有一个很好的最终检测图。正如我们之前分析过的,这个特性主要归因于RPN的cls项。当提案数量较少时,SS、EB和MCG的召回比RPN下降得更快。

单阶段检测与两阶段建议 检测。OverFeat提出了一种对卷积特征图上滑动窗口使用回归器和分类器的检测方法。OverFeat是一个单级的、特定于类的检测流水线,而我们的是一个由不确定类的提议和特定于类的检测组成的两级级联。在OverFeat中,区域上的特征来自一个尺度金字塔上的一个宽高比滑动窗口。这些特征用于同时确定目标的位置和类别。在RPN中,特征来自正方形滑动窗(3x3),并对不同尺度和长宽比的锚进行预测。虽然这两种方法都使用滑动窗口,但区域建议任务只是Fast R-CNN的第一阶段,下游的Fast R-CNN检测器负责改进建议。在我们的级联的第二阶段中,区域方面的特性从更忠实地覆盖区域特性的建议框中自适应地合并到R-CNN和Fast R-CNN。我们相信这些特征会使得检测更加精确。

为了比较单级和两级系统,我们通过单级Fast R-CNN模拟了OverFeat系统(从而也规避了实现细节上的其他差异)。在这个系统中,“建议”是三个尺度(128,256,512)和三个宽高比(1:1,1:2,2:1)的密集滑动窗口。训练好的Fast R-CNN从这些滑动窗特定类的分数回归框的位置,并从这些滑动窗口返回框的位置。由于OverFeat系统采用了图像金字塔,也使用了从五个尺度中提取的卷积特征来进行评估。我们在R-CNN和Fast R-CNN中使用这五个尺度。

表11比较了两级系统和一级系统的两种变体。使用ZF模型,单级系统的mAP为53.9%。这比两级系统(58.7%)低4.8%。该实验验证了级联区域建议和目标检测的有效性。在R-CNN中也有类似的观察报告,用滑动窗口替换SS区域建议引起了6%的下降。我们还注意到,一阶段制度较慢,因为它有更多的建议要处理。

4.2在MS COCO上的实验

我们展示了更多关于微软cocoobject检测数据集[12]的结果。这个数据集包含80个对象类别。我们用训练集上的80k张图片、验证集上的40k张图片和测试开发集上的20k张图片进行了实验。当mathrm{IoU} in[0.5: 0.05: 0.95] 时我们评估平均mAP和mAP@0.5(PASCAL的标准)。

我们的系统对这个数据集做了一些小的修改。我们在8-GPU实现上训练我们的模型,对于RPN(每个GPU 1个)和Fast R-CNN(每个GPU 2个),有效的小批处理大小分别为8和16。RPN步和Fast R-CNN步分别训练240k迭代和80k迭代,学习率分别为0.003和0.0003。我们修改了学习率(从0.003开始,而不是0.001),因为mini-batch大小发生了变化。对于锚,我们使用了三个宽高比和四个比例尺(添加642),主要动机是处理这个数据集中的小目标。此外,在我们Fast R-CNN一步,负样本被定义为与groundtruth的IoU在[0,0.5],而不是Fast R-CNN中的[0.1,0.5]。我们注意到在SPP-Net系统中在[0.1,0.5]的负样本被用来微调,而在[0;0:5]仍然访问支持向量机步骤中的难负挖掘。但是快速的R-CNN系统放弃了SVM步骤,因此在[0;0:1]从未到访。包括这些(0;0:1]对于快速R-CNN和Faster R-CNN系统,样例改进了COCO数据集上的mAP@0.5(但是对PASCAL VOC的影响可以忽略不计)。

其余的实现细节与PASCAL VOC上的相同。特别是,我们继续使用300 Proposal 和单尺度(s=600)测试。在COCO数据集上,每个图像的测试时间仍然是200 ms左右。在表12中,我们首先报告了使用本文实现的Fast R-CNN系统的结果。我们的Fast R-CNN基线在测试开发集中有39.3%的mAP@0.5,比Fast R-CNN中报告的要高。我们推测产生这种差距的原因主要是由于负样品的定义以及小批量尺寸的变化。我们还注意到mAP@[.5, .95]只是比较。

接下来我们评估Faster R-CNN系统。使用COCO训练集进行训练,Faster R-CNN拥有42.1%的mAP@0.5和21.5%的mAP@[在COCO test-dev集中,这对于mAP@0.5和mAP@[分别提高了2.8%和2.2% .5, .95]比Fast R-CNN对应的相同协议(表12)。这表明,在较高的IoU阈值下,RPN对提高定位精度有很好的效果。使用COCO trainval来训练,Fast R-CNN有42.7%的mAP@0.5和21.9%的mAP。

Faster R-CNN在ILSVRC和COCO 2015比赛。我们已经证明,Faster R-CNN从更好的特性中获益更多,这是因为RPN完全学会了通过神经网络提出区域。即使深度大大增加到超过100层,这种观察仍然有效。只有用101代替VGG-16层剩余净(resnet - 101),在coco验证集Faster R-CNN系统将mAP增加了从41.5% / 21.2% (VGG-16) 48.4% / 27.2% (resnet - 101)。残差网络获得单模55.7% / 34.9%和59.0% / 37.4%的整体结果可可test-dev集,赢得了第一名在coco2015对象检测竞争。同样的系统也在2015年ILSVRC对象检测比赛中获得了第一名,以绝对8.5%的优势超过第二名。RPN也是ILSVRC 2015本地化和COCO 2015 segmentation比赛中获得第一名的作品的构建块。

4.3 从MS COCO到PASCAL VOC

大规模数据对改进深度神经网络至关重要。接下来,我们研究MS COCO数据集如何帮助PASCAL VOC的检测性能。作为一个简单的基线,我们直接在PASCAL VOC数据集上评估COCO检测模型,而不需要对任何PASCAL VOC数据进行微调。这种评估是可能的,因为COCO上的类别是PASCAL VOC上的超集。在这个实验中,我们忽略了COCO上唯一的类别,softmax层只在20个类别和背景上执行。在PASCAL VOC 2007测试集上,此设置下的mAP为76.1%(表13)。这一结果比VOC07 12(73.2%)的训练结果要好得多,即使没有利用PASCAL VOC数据。

然后对VOC数据集上的COCO检测模型进行了微调。在本实验中,COCO模型代替了imagenet预训练模型(用于初始化网络权值),对Faster R-CNN系统进行了微调,如3.2节所述。这样做将导致PASCAL VOC 2007测试集上的mAP增加78.8%。来自COCO集的额外数据将mAP增加5.6%。表6显示,在COCO VOC上训练的模型在PASCAL VOC 2007上对每个类别的AP都是最好的。这种改进主要是由于背景虚报较少(图7),PASCAL VOC 2012测试集也有类似的改进(表13和表7),我们注意到获得这些最新结果的测试时间仍然是每张图像200 ms左右。

5 结论

为了高效、准确地生成区域建议,我们提出了一种新的区域建议生成方法。通过与下游检测网络共享卷积特性,区域建议步骤几乎是免费的。我们的方法使一个统一的,基于深度学习的目标检测系统运行在5-17帧每秒。学习的RPN还提高了区域建议质量,从而提高了总体目标检测精度。

0 人点赞