Faster R-CNN在Fast R-CNN的基础上的改进就是不再使用选择性搜索方法来提取框,效率慢,而是使用RPN网络来取代选择性搜索方法,不仅提高了速度,精确度也更高了

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

依靠于区域推荐算法(region proposal algorithms)去假定目标位置的最优的目标检测网络。之前的工作如SPPnet和Fast RCNN都减少了检测网络的运行时间,暴露了区域推荐(region proposal)是阻碍减少运行时间的瓶颈。在这里,我们介绍了一个区域推荐网络(region proposal network,RPN),用于与共享检测网络共享整张图像的卷积特征,使得区域推荐花费时间接近为零成为可能。RPN是一个全卷机网络,能够在每个位置上同时预测目标的边界和其分数。我们将会通过共享RPN和Fast RCNN两个网络的卷积特征来将他们合并成一个简单的网络——使用最近带有“attention”机制的神经网络的流行术语,RPN组件将会告诉统一网络去看哪里。对于一个VGG16模型,我们的检测体系在GPU中的框架效率为5fps(包含所有steps),同时能够在PASCAL VOC2007、2012和每张图片仅有300个proposals的MS COCO数据集上得到最优的目标检测效率。在ILSVRC和COCO 2015竞赛中,Faster RCNN和RPN都是在不同赛道中得到第一名的冠军队伍的基础。代码已经开源

Index Terms—Object Detection, Region Proposal, Convolutional Neural Network.

1 INTRODUCTION

最近在目标检测中的进展都是被区域推荐方法(如[4]selective search)和基于区域的卷积神经网络(R-CNNs)推动的。虽然基于区域的CNNs在计算上和原来在[5]中的方法一样昂贵,但是因为在proposal[1]SPPnet、[2]Fast RCNN中共享了卷积,他们的开销急剧减少。当忽略花费在区域推荐中的时间时,Fast R-CNN[2]使用非常深的网络[3]VGG 获得了接近实时的效率。现在proposals是在最优的检测体系中测试时间计算的瓶颈

区域推荐算法依靠于不昂贵的特性和经济推理方案。选择性搜索([4]selective search)是最流行的方法之一,基于设计的低级特性来贪婪聚类(greedily merges)超级像素。但是与高效的检测网络[2]Fast RCNN对比时,选择搜索法将会慢一个数量级,在CPU中每张图片要花费2秒。EdgeBoxes[6]目前提供了在推荐质量和速度之间的最好权衡。然而区域推荐步骤还是花费和检测网络一样多的时间。

注意到快速的基于区域的CNNs利用的是GPUs,然而区域推荐方法在选择时使用的是CPUs,这样勒对比运行时间可能不公平。一个绝对地加速推荐计算的方法就是在GPU中再运行一遍。这可能是一种高效的设计解决方案,但是重新实现忽略了下游的检测网络并因此错失了共享计算的重要机会。

在该论文中,我们展示了一种算法更改-使用深度卷积神经网络来计算proposals,与检测网络的计算做对比,该proposal计算就接近与0了。最后,介绍了创新的区域推荐网络(RPNs),与最先进的检测网络[1]SPPnet、[2]Fast RCNN共享卷积层。通过在测试时间共享卷积,计算proposals的边界开销很小(如每张图片10ms)

我们观察到使用在基于区域检测器如Fast R-CNN中的卷积特征映射,能够被用在生成区域proposals中,在这些卷积特征上面我们通过添加一些在规则网格每个位置中用于回归区域边界和目标分数的额外的卷积层来构建了一个RPN。因此这个RPN是一种全卷积网络(FCN)[7],并且能够在任务中端到端地进行训练,用于生成检测proposals

RPNs被设计用于使用各种不同的大小和宽高比来高效地预测区域proposals。与之前流行的方法[8][9][1][2]相反的是使用了图片的金字塔(如图1-a)或者过滤器的金字塔(如图2-a),我们介绍了创新的"anchor"框来作为在多种大小和宽高比中的参考。

我们的方案可以看作是一个回归参考的金字塔(如图1-c),避免了枚举多个大小和宽高比的图像或过滤器。该模型在使用单尺度图像进行训练和测试时获得很好的效果,有利于运行速度

为了整合RPNs和Fast RCNN[2]目标检测网络,我们提出了一个训练方案来更换用于区域推荐任务的微调和用于目标检测的微调,同时保持proposlas固定大小。该方案收敛快并生成一个带有卷积特征的整合网络,该网络在两个任务中共享。(RPNs能够和Fast R-CNN一起训练,使用更少的训练时间)

我们在PASCAL VOC检测基准[11]上对我们的方法进行了综合评价,其中带有Fast R-CNNs的RPNs检测精度优于带有Fast R-CNNs的选择性搜索方法。同时,我们的方法几乎免除了测试时选择搜索方法的所有计算负担——proposals的高效与运行时间大概是10毫秒。即使是使用昂贵的VGG模型,我们的方法仍在GPU中有5fps的frame rate,因此无论是在速度还是精确度上这都是个实用的目标检测系统。我们也报告了七仔MS COCO数据库上的结果,并使用COCO数据调查其在PASCAL VOC上的改进。代码被发布在https://github.com/shaoqingren/faster_ rcnn (in MATLAB)和https://github.com/ rbgirshick/py-faster-rcnn (in Python)

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

在ILSVRC和COCO 2015竞赛中,Faster R-CNN和RPN都是在ImageNet检测、ImageNet定位、COCO检测和COCO分割赛道上几个第一名模型的基本。RPNs完全学着去从数据中推荐区域,因此能够很容易地从更深和更昂贵的特征中受益(比如采用在[18]中采用的101层残差网络)。Faster R-CNN和RPN也被上面集中竞赛(http://image-net.org/challenges/LSVRC/2015/results)中的其他优秀模型使用。这些结果说明了该方法不仅是在实际使用中的一种成本效益解决方案,也是用于改善目标检测精确度的有效方法。

2 RELATED WORK其他的相关工作

目标proposals(Object Proposals)。有大量关于目标推荐方法的文献。对目标推荐方法的综合调查和比较可见[19][20][21]。目标推荐方法的广泛应用在那些基于grouping super-pixels的方法和那些基于滑动窗口(如objectness in windows[24],EdgeBoxes[6])。目标推荐方法被采用为与检测器独立的额外模块(如选择性搜索[4]目标检测器,R-CNN[5]和Fast R-CNN[2])

用于目标检测的深度网络(Deep Networks for Object Detection)。R-CNN方法[5]端到端训练CNNs去将推荐区域分类为指定的目标类别和背景类。R-CNN主要就是作为一个分类器,并不用来预测目标边界(除非通过边界框回归bounding box regression进行精炼,实现回归预测目标边界)。它的准确度都取决于区域推荐模型的性能(可见[20]中的对比)。有好几篇论文都提出了使用深度网络来预测目标边界框,如[25][9][26][27]。在OverFeat方法[9]中,一个全连接层被训练去预测框坐标,用于完成假设一个单一目标的定位任务。该全连接层被转成一个用于检测多个具体类目标的卷积层。MultiBox方法[26][27]从最后一个全连接层是用来同时预测多个未知类框的网络中生成区域proposals,生成的是OverFeat中的“单一框”类型。这些未知类的框被用作R-CNN的proposals。MultiBox推荐网络被用于一个单一图像切割或多个大图像切割(如224*224),与我们的全卷积方案不同。MultiBox并不在proposal和检测网络中共享特性。稍后,我们将在上下文中使用我们的方法更深入地讨论OverFeat和MultiBox。结合我们的工作,开发了用于学习分割proposals的DeepMask方法[28]。

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

3 FASTER R-CNN我们的工作

我们的目标检测系统被称为Faster R-CNN,包括两个模块:

  • 一个是用于推荐区域的全卷积网络,即RPN
  • 一个是使用推荐区域的Fast R-CNN检测器

整个系统是一个单一的、整合的用于目标检测的网络,如图2:

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

该图步骤即:

  • 首先向CNN网络(该论文使用的是ZF或VGG-16网络)输入任意大小的图片
  • 然后前向传播到最后共享的卷积层,这时候该输出一边会作为RPN网络的输入特征图,一边则等待RPN得到proposals后共同作为RoI池化层的输入
  • 然后RPN网络就会根据输入的特征图得到区域proposals(利用bounding box regression修正anchors获得精确的proposals)和每个proposals的得分,得分范围在[0,1],并对这些proposals根据他们的得分采用非极大值抑制方法(阈值为0.7,只取大于0.7的proposals),然后输出这里面得分top-N(该论文N=300)的区域proposals给RoI池化层
  • 第二步中另一个方向得到的特征图和第三步中得到的proposals将会同时输入到RoI池化层中,提取对应区域proposals的特征
  • 然后将使用上面得到的proposals的特征输入全连接层(3个),然后输出该区域的分类得分以及再次bounding box regression获得检测框最终的精确位置

该图参考了https://zhuanlan.zhihu.com/p/31426458?utm_source=qq&utm_medium=social&utm_oi=827947156655718400

3.1 Region Proposal Networks

区域推荐网络(RPN)将任意大小的图像作为输入,并输出一系列长方形的目标proposals,每一个都带着objectness分数。(⚠️“objectness”用于度量一系列目标类VS背景类的成员关系) 。我们将使用一个全卷积网络来实现该过程。因为我们最终的目标是与Fast R-CNN目标检测网络共享计算,因此我们假设两个网络共享一组通用的卷积层。在我们的实验中,我们调查了有着5个共享卷积层的

Zeiler and Fergus模型[32](ZF)和有着13个共享卷积层的Simonyan and Zisserman模型(VGG-16)。

为了生成区域proposals,我们在由最后一个共享卷积层得到的卷积特征映射输出中滑动一个小网络。该小网络将来自输入的卷积特征映射的一个n*n大小的空间窗口作为RPN网络的输入。每个滑动窗口都映射到一个更低维度的特征上,该图以ZF网络为例(即下面图中的intermediate layer ,对于ZF输入特征图的维度是256维度,对于VGG输入特征图的维度是512维度,接下来跟着ReLU)。该特征被输入两个同级的全连接层-一个是框回归层(reg,用于定位),一个是框分类层(cls,用于分类)。在该论文中设置n=3,注意,输入图像上的有效接收域很大(ZF是171个像素,VGG是228个像素)。该微网络可见图3。注意,由于微网络以滑动窗口的方式运行,因此所有空间位置上都共享全连接层。因此该网络是使用一个n*n(n=3)卷积层和两个同级的1*1卷积层(分别用于reg和cls)来实现的

第一个卷积层将特征图每个滑窗位置编码成一个特征向量(⚠️设置了该卷积层的输出没有改变特征图的宽高),第二个卷积层对应每个滑窗位置输出k个区域得分,表示该位置的anchor为物体的概率,这部分总输出长度为2×k(一个anchor对应两个输出:是物体的概率+不是物体的概率)和k个回归后的区域proposal(框回归),一个anchor对应4个框回归参数,因此框回归部分的总输出的长度为4×k,并对得分区域进行非极大值抑制后输出得分Top-N(文中为300)区域,就得到了检测网络应该注意的proposals。

由上上图可见经过1*1卷积后分类线路得到的通道数为18=9*2,保证了这个特征映射每个点都有9个anchors,并且每个anchors都分成了是目标或不是目标两类,所以输出为W*H*(9*2);回归线路得到的通道数为36=9*4

此时得到的proposals的大小是不同的,因此RoI池化层能够对其处理后得到固定长度的输出,用于全连接层

3.1.1 Anchors

在每个滑动窗口位置,我们同时预测多个区域proposals,每一个位置可能的proposals的最大数量设置为k。因此reg层有着4k个输出来标记k个框的坐标,cls层输出2k个分数来估计每个proposal是否是目标的概率(即该proposal是目标还是背景)。⚠️为了简化我们能够使用二分类的softmax层来实现cls,或者使用使用逻辑回归去生成k个分数。

k个proposals是相对于k个参考框来参数化的,该参考框我们称之为anchor。anchor以所述滑动窗口为中心,并与大小和宽高比相关联(如上面图3)。默认情况下,我们使用3个大小和3个纵横比,在每个滑动位置产生k = 9个anchor。对于大小为W×H(通常为∼2400)的卷积特征图,总共有WHk个anchors(即SSD中的方法,可见SSD论文学习)。

⚠️下面3.1.3中也会提到,全部anchors拿去训练太多了,训练程序会在合适的anchors中随机选取128个postive anchors+128个negative anchors进行训练

Translation-Invariant Anchors平移不变形

我们的方法的一个重要的特性是它是平移不变的,对于anchors和计算相对于anchors的proposals的函数都有该特性。即如果在一个图片上平移一个目标,proposal也会平移且相同的函数应该不管在哪个位置都能够预测该proposal。该平移不变特性在我们的方法中是保证的。作为对比,在MultiBox方法中使用k-means方法去生成800个anchors,它就没有平移不变形。所以MultiBox就不能够保证当目标平移时能生成相同的proposal。

平移不变特性能够减少模型的大小。MuiltiBox有着一个(4+1)*800-维度的全连接输出层,然而我们的方法只有一个(4+2)*9-维度的卷积输出层,当设置k=9时。作为结果,我们的输出层有着2.8*10^ 4个参数(即对于VGG-16网络来说为512*(4+2)*9),比MultiBox中6.1*10^6个参数(即对于GoogleNet来说为1536*(4+1)*800)的输出层少两个量级。如果考虑到特征投射层,将其的参数也加进来,我们的proposal层仍比MultiBox少一个量级:

对于VGG-16网络特征投射层的计算为3*3*512*512,因为RPN的卷积特征映射输入为3*3*512,所以卷积核大小为3*3*512,为了输出为512维,则需要512个卷积核

我们希望我们的方法在小的数据集,如PASCAL VOC上有较少的过拟合的风险

Multi-Scale Anchors as Regression References多尺度的anchors作为回归参考

我们anchors的设计提出了一个创新的方案,用于解决多尺度的问题(和多宽高比的问题)。就像在图1中展示的那样,有两个用于多尺度预测的流行的方法:

  • 第一个是基于图像/特征金字塔,如DPM[8]和基于CNN的方法[9][1][2]。图像被重置为多种大小,特征映射(HOG[8]或深度卷积特征[9][1][2])在每种大小种被计算(如图1-a)。这种方式是有效的,但是很花费时间。
  • 第二种方法是在特征映射上使用多种大小的滑动窗口(和/或多种宽高比)。如在DPM[8]中,不同宽高比的模型被分开使用不同过滤器大小训练(如5*7和7*5)。如果这种办法被用来解决多尺度问题,则可被当作"过滤器金字塔"(如图1-b)。第二个方法总是和第一个方法共同使用。

作为比较,我们的基于anchor的方法是建立在anchors金字塔上的,有着更好的成本效益。我们的方法是参考有着不同大小和宽高比的anchor框来分类和回归边界框。它仅依赖于图像、一个单一大小的特征映射和一个单一大小的过滤器(即在特征映射上的滑动窗口)。我们将在下面的实验中展示该方案解决多尺度问题的效果,表8:

因为该基于anchors的多尺度设计,我们可以简单在单尺度图像上使用卷积特征计算,就像在Fast R-CNN上使用的一样。该多尺度anchors设计是共享特征的一个重要组成部分,用于解决尺度问题而不需要额外的开销

3.1.2 Loss Function

为了训练RPNs,我们为每个anchor赋值一个二进制类标签(即是一个类与否)。我们将两类anchors赋值为正样本:

  • 与真实框覆盖的有着最高交并比(IoU)的anchor/anchors
  • 或者是与真实框覆盖,交并比(IoU)高于0.7的anchor

⚠️单个真实框可能会将多个anchors赋值为正样本。通常第二个条件就足够去决定正样本;但是我们仍然采用第一个条件的原因是在一些极少见的情况下第二种条件可能没有任何满足的正样本。而对于非正样本的框中,如果其与真实框的交并比小于0.3,就会被赋值为负样本。那些既不是正样本,也不是负样本的anchors将不会对训练目标函数作出贡献

根据上面的定义,我们将遵循Fast R-CNN中的多任务损失函数来最小化一个目标函数。对于一张图片我们的损失函数定义为:

这里i表示在mini-batch中一个anchor的索引,pi是anchor i 为一个对象的预测概率。当anchor为正样本时,其对应的真实框pi*值为1;当anchor为负样本时,其对应的真实框pi*值为0。ti是一个表示预测的边界框的4个参数坐标,ti*则是与一个正样本anchor相关联的真实框的4个坐标。分类损失函数Lcls是两类(即是对象或不是对象)的对数损失。对于回归损失函数Lreg,使用的R函数是定义在[2]中的鲁棒损失函数(smooth L1):

上面式子中的pi*Lreg表示回归损失函数仅在anchors判定为正样本(即pi*=1)时使用。cls层和reg层相互包含了{pi}和{ti}

{pi}和{ti}通过Ncls和Nreg归一化,并使用平衡参数λ赋予权重。在我们目前的实现中,等式(1)中的cls部分被mini-batch的大小(Ncls=256)归一化(即除以Ncls);reg部分则使用anchor位置的数量(如Nreg ~ 2400)来归一化。默认设置λ=10(因为Nreg/Ncls ≈ 10),因此cls和reg项的权重大致相等。通过实验展示了结果当λ在一个大范围内都是不敏感的,如表9:

我们还注意到上面的归一化不是必需的,能被简化

对于边界框回归,我们采用如下4个坐标的参数化方法:

x、y、w和h是框中心坐标以及其宽和高。变量x、xa和x*分别对应与预测框、anchor框和真实框(y、w、h的也是一样)。这能够认为是从一个anchor框到临近真实框的边界框回归。

然而,我们的方法是从以前的基于RoI的方法,如[1][2],以一种不同的方式得到边界框回归。在[1][2]中,边界框回归实现在来自任意大小的RoIs的特征池化中,并且回归权重被所有区域大小共享。在我们的公式中,用于回归的特征在特征映射中有着相同的空间大小3*3。为了适应不同的尺寸,我们学习了一组k个边界框回归器。每个回归器负责一个尺度和一个宽高比,而k个回归器不共享权重。同样,由于锚的设计,即使特性的大小/比例是固定的,仍然可以预测各种大小的盒子

3.1.3 Training RPNs

RPN能够通过后向传播和随机梯度下降(SGD)来被端对端训练。我们遵循着[2]中“图像中心”的采样策略来训练该网络。每个mini-batch都由一个包含了多个正样本和负样本的单一图像组成。优化所有anchors的损失函数是可能的,但是当负样本占支配地位时,结果可能会偏差。所以我们将随机从单个图片中采样256个anchors去计算一个mini-batch(batch size=256)的损失函数,采样的正样本和负样本的比例是1:1。如果一张图片中的正样本的数量少于128,那么将会用负样本去填补

通过使用来自均值为0,标准差为0.01的高斯分布来绘制权重来随机初始化所有新层。而其他的层(即共享的卷积层)将通过预训练一个用于ImageNet分类的模型作为标准实例来初始化。我们调ZF网络中的所有层,对于VGG网络则是仅调conv3_1以上的层来节省内存。对于PASCAL VOC数据集中60k 的mini-batches(则前60k张图片)设置学习率为0.001,接下来的20k的mini-batch则设置为0.0001。动量momentum设置为0.9,权重衰减设置为0.0005,使用caffe来实现。

3.2 Sharing Features for RPN and Fast R-CNN

到目前为止,我们描述了怎么训练用于区域proposal生成的网络,没有考虑将会使用这些proposals的基于区域目标检测的CNN网络。对于检测网络,我们采用了Fast R-CNN。接下来我们将描述学习一个包含RPN和带着共享卷积层的Fast R-CNN的整合网络的算法

RPN和Fast R-CNN是单独训练的,以不同的方法来修改卷积层。因此,我们需要开发一种技术,允许在两个网络之间共享卷积层,而不是学习两个独立的网络。我们讨论了三种共享功能的训练网络的方法:

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

近似的联合训练。在这个解决方案中,RPN和Fast R-CNN网络在训练过程中合并成一个网络,如图2所示。在每个SGD迭代中,前向遍历生成区域proposals,这些proposals在训练Fast R-CNN检测器时就像处理固定的、预先计算好的proposals一样。反向传播照常进行,其中共享层将RPN损失函数和Fast R-CNN损失函数的反向传播信号结合起来。这个解决方案很容易实现。但是这个解忽略了w.r.t的导数,proposal框的坐标也是网络响应,所以是近似的。实验结果表明,该算法与交替训练相比,训练时间缩短了约25-50%。这个求解器包含在我们发布的Python代码中。

非近似的联合训练。如上所述,RPN预测的边界框也是输入的函数。Fast R-CNN中的RoI池层[2]接受卷积特性和预测的边界框作为输入,因此理论上有效的反向传播求解器还应该包含梯度w.r.t。上述近似联合训练忽略了这些梯度。在非近似联合训练解中,我们需要一个RoI池层,它是可微分的w.r.t.,即框的坐标。这是一个非常重要的问题,可以通过[15]中开发的“RoI warping”层给出解决方案,这超出了本文的讨论范围。

4-Step Alternating Training四步交替训练。在该论文中,我们通过交替优化方式,采用了一个务实的4步训练算法来学习共享特性:

  • 第一步:如3.1.3中所说地先训练RPN。该网络使用一个ImageNet预训练模型来初始化,然后为了区域推荐任务进行端到端地微调。
  • 第二步:使用在第一步中生成的proposals来训练一个分开的检测网络Fast R-CNN。该检测网络也使用一个ImageNet预训练模型来初始化
  • 第三步:使用第二步检测器网络去初始化RPN训练,但是会固定共享的卷积层,只微调RPN独有的层。现在就实现了两个网络的共享卷积层的参数是相同的了。
  • 最后:保持共享卷积层是固定的,仅微调Fast R-CNN独有的层。

这样,两个网络就共享了相同的卷积层,并生成了一个整合的网络。类似的交替训练可以运行更多的迭代,但是我们观察到,这样做的改进是微不足道,即四步走一遍就足够了。

3.3 Implementation Details

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

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

表1显示了使用ZF net获得的每个anchor的平均proposal大小。我们注意到,我们的算法允许比潜在接受域更大的预测。这样的预测并非不可能——如果一个物体的中心是可见的,那么人们仍然可以粗略地推断出这个物体的范围。

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

一些RPNproposals彼此高度重叠。为了减少冗余,我们根据推荐区域的cls评分对推荐区域采用非极大抑制(NMS)。我们将NMS的IoU阈值设置为0.7,这样每个图像就有大约2000个推荐区域。正如我们将展示的,NMS不会损害最终的检测精度,但会大大减少proposals的数量。在NMS之后,我们使用排名前n的推荐区域进行检测。这上面都是对RPN的训练来得到proposals

在接下来的测试中,我们使用2000个RPN proposals来训练Fast R-CNN,但是在测试时评估不同数量的proposals。

4 EXPERIMENTS

4.1 Experiments on PASCAL VOC

Ablation Experiments on RPN

下面的是去掉一部分的对比操作:

首先是不共享参数,即去掉4-steps中的后两步。可见使用分开的网络将会使结果轻微降低到58。这是因为在第三步中当使用第二部的检测器调节特征来微调RPN,将能够改善proposal质量

接下来就是消除RPN在训练Fast R-CNN检测网络中的影响(即train-time method都为SS的部分)。首先就是使用2000个SS方法得到的proposals和ZF网络去训练一个Fast R-CNN。然后固定该检测器,通过改变使用在测试中的推荐区域来评估检测mAP,在该ablation实验中,RPN不会跟检测器共享特征。

在测试中使用300个RPN得到的proposals去替换SS得到的proposals,mAP结果为56.8%。该mAP的降低是因为训练/测试的proposals中的不一致性。该结果提供了一个下面其他对比的基线。

使人惊奇的是在测试时仅使用排名前100的proposals也能够得到有竞争性的结果55.1%,说明了排名靠前的RPN proposals的准确度高。另一个极端例子就是使用了前6000哥proposals(即不使用NMS)则得到了差不多的结果55.2%,说明NMS不会伤害检测的mAP并能够减少错误的警告

接下来就是通过在测试中去掉cls或reg之一来调查RPN中cls和reg输出的角色。当在在测试中移除cls层(即没有NMS/ranking排序)时,随机从没有打分的区域中采样N个proposals。N=1000时mAP几乎没有什么改变,为55.8%;但是当N=100时会大幅降低到44.6%。这显示了cls评分对最高排序的proposals的精确度的重要性

另一方面,如果在测试中移除reg层(即proposals就是anchor框),mAP就会降到52.1%。这说明了高质量的proposals主要来自回归框边界。anchor框虽然有着多种大小和宽高比,但对于精确检测来说还是不够的。

我们还检测了更强的网络对RPN的推荐质量的单独影响。使用VGG-16去训练RPN检测器则仍然使用上米的SS+ZF。mAP将会从56.8%(使用的是RPN+ZF)改善到59.2%(RPN+VGG)。该结果说明了RPN+VGG的推荐质量比RPN+ZF好。因为RPN+ZF的proposals是能够与SS竞争的(表5可见第一行结果和第四行结果,如果两者的proposals都一直用于训练和测试,两者结果都是58.7%),因此我们可能期待RPN+VGG的效果比SS好。接下来的实验将证明该假设

Performance of VGG-16

表3显示了在推荐和检测中VGG-16的结果:

对于不共享特性的情况,使用RPN和VGG,结果是68.5%,比表中SS的结果稍微高些。如上面所示,这是因为proposals是从RPN+VGG中生成的,会比SS精确度更高。不同于SS是预定义的,RPN得到了积极的训练,并受益于更好的网络。对于特征共享情况,结果会变成69.9%-比表中强的SS的结果好,但是使用的是成本近乎无的proposals。

我们之后还在PASCAL VOC 2007和2012训练集的组合中训练了RPN和检测网络,mAP为73.2%。图5显示了在PASCAL VOC 2007测试集中的一些结果:

在PASCAL VOC 2007测试集中,如表4,我们的方法在PASCAL VOC 2007训练测试集和2012训练验证集组合数据中的mAP为70.4%,表6和表7显示了详细的数字:

在表5中总结了整个目标检测系统的运行时间:

SS根据内容不同,花费时间大概在1-2秒(平均在1.5秒),VGG-16网络的Fast R-CNN在2000个SS的proposals中花费320ms(如果在全连接层中使用SVD将花费223ms)。对于同时进行推荐和检测,我们使用VGG-16网络的系统将花费198ms。当共享卷积特征时,RPN在计算额外的层时仅花费10ms。由于更少的proposals(每张图片300个),我们基于区域的计算将更短。我们系统使用ZF网络时的frame-rate为17 fps

Sensitivities to Hyper-parameters

表8中调查了anchors的设置:

默认使用的是3个大小scale和3个宽高比(在表中结果为69.9%)。如果每个位置仅使用1个anchor,那么mAP就会降低3-4%。如果使用3个scale(和一个宽高比)或3个宽高比(和1个scale),mAP将会有所升高,说明了使用不同大小的anchors是一个十分有效果的解决方案。在该数据库中,使用3个scale和1个宽高比的情况(69.8%)和使用3个宽高比的情况一样好,说明对于检测的准确度来说,scales和宽高比两者不是能解开的维度。但是我们仍然采用这两个维度去保持我们系统的灵活度。

在表9中对比了在等式(1)中不同λ的影响。默认设置为λ=10来保证在归一化后等式(1)中的两项权重能够组略地相等。表9显示,当λ在规模约两个数量级(1到100)时,我们的结果影响略小(∼1%)。这表明结果在一个广泛范围内对λ是不敏感的。

Analysis of Recall-to-IoU

接下来我们将计算在与真实框的不同IoU比例设置下的proposals的召回率。值得注意的是,Recall-to-IoU度量只是与最终检测精度松散的相关[19]、[20]、[21]。使用这个度量来诊断推荐方法比评估推荐方法更合适。

如图4可见,我们显示了使用300、1000和2000个proposals的结果。我们与SS和EB做对比,基于这些方法生成的置信度来排序得到的前N名作为proposals。图表明了当proposals的数量从2000降到300时,RPN方法表现得更优雅。这解释了为什么当使用和300个proposals一样少的proposals时,RPN有着更好的最终检测检测mAP。如我们之前的分析,该特性主要得益于RPN中的cls项。当proposals很少时,SS和EB的召回率下降得比RPN快得多。

One-Stage Detection vs. Two-Stage Proposal + De- tection.

OverFeat论文提出了一个在滑动窗口上对卷积特征映射使用回归器和分类器的检测方法。OverFeat是一个一阶段、特定类别检测的管道,而我们的方法是包含未知类proposals和具体类检测的两阶段级联。在OverFeat中,区域上的特征来自于一个尺度金字塔上的一个高宽比滑动窗口。该特征同时用于决定位置和目标类别。在RPN中,特征来自方形(3*3)滑动窗口,并且使用不同大小和宽高比的anchor来预测proposals。虽然两个方法都使用了滑动窗口,但区域推荐任务仅在Faster R-CNN的第一阶段进行——Faster R-CNN检测器的下半部分将加入proposals去精炼他们。在我们的级联的第二阶段中,区域方面的特性被更忠实地覆盖区域特性的proposal框自适应池化[1]和[2]。我们相信这些特征会导致更精确的检测。

为了比较单级和两级系统,我们通过单级Fast R-CNN模拟了OverFeat系统(从而也规避了实现细节上的其他差异)。在这个系统中,“proposals”是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%的性能下降。我们还注意到,单级的制度较慢,因为它有更多的proposal要处理

转载于:https://www.cnblogs.com/wanghui-garcia/p/11156243.html

Faster RCNN论文学习相关推荐

  1. 【Faster R-CNN论文精度系列】从Faster R-CNN源码中,我们“学习”到了什么?

    [Faster R-CNN论文精度系列] (如下为建议阅读顺序) 1[Faster R-CNN论文精度系列]从Faster R-CNN源码中,我们"学习"到了什么? 2[Faste ...

  2. faster rcnn论文_【论文解读】精读Faster RCNN

    Faster R-CNN论文链接: Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 推荐代 ...

  3. (目标检测)Faster R-CNN 论文解读+复现

    Faster R-CNN xyang 声明:本篇文章借用了他人理解,如有侵权,请联系,另如需转载,请注明出处 关于最新最全的目标检测论文,可以查看awesome-object-detection &l ...

  4. 关于RPN中proposal的坐标回归参数的一点理解及Faster R-CNN的学习资料

    在Faster R-CNN的区域生成网络RPN中为了能够以目标真实框(Ground Truth box)为监督信号去训练RPN网络依据anchor预测proposal的位置,作者并不是直接回归prop ...

  5. 深度学习 Feeding behavior recognition for group-housed pigs with the Faster R-CNN 论文篇

    Feeding behavior recognition for group-housed pigs with the Faster R-CNN -- 在Faster R-CNN中对群养猪的进食行为识 ...

  6. 目标检测——Faster R-CNN论文阅读

    论文阅读--Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks 文章目录 论文阅读--Faste ...

  7. faster rcnn论文_faster-rcnn论文思路及代码编译

    先给出全套的程序及参考文献链接: https://github.com/facebookresearch/Detectron​github.comhttps://github.com/rbgirshi ...

  8. Faster R-CNN论文笔记——FR

    转载自:http://blog.csdn.net/qq_17448289/article/details/52871461 在介绍Faster R-CNN之前,先来介绍一些前验知识,为Faster R ...

  9. Faster R-CNN论文详解

    原文链接:http://lib.csdn.net/article/deeplearning/46182 paper链接:Faster R-CNN: Towards Real-Time Object D ...

最新文章

  1. JVM---虚拟机栈(动态链接与方法返回地址)
  2. linux -- framebuff驱动总结
  3. 如何利用C/C++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
  4. OpenCV在水平线上校准3个摄像机的实例(附完整源代码)
  5. Android 图形系统之gralloc
  6. hyperterminal使用教程_如何在Win7中安装使用超级终端Hyper Terminal(转)
  7. java 对象的解释过程
  8. Android变形(Transform)之Camera使用介绍【转】
  9. 介绍几种常用的Oracle客户端工具
  10. Python项目:结合Django和爬虫开发小说网站,免安装,无广告
  11. Chrome 网上应用店- FaWave(发微)
  12. spring boot 配置文件properties,yml语法学习及属性获取@ConfigurationProperties和@Value
  13. python高清图片合成_Python用PIL合成图片
  14. 微信小程序如何实现上拉刷新(即分页加载数据)?
  15. iOS如何避免图像解压缩的时间开销
  16. Enhanced Assertions
  17. bootStrap 教程 文档
  18. micropython 蓝牙音箱_Arduino从入门到创客带师(-1)—Hello World!
  19. 谈一谈量化投资从哪里获取数据(会经常更新-2020-09-06)
  20. JSR --- JAVA Java Specification Requests 意思是Java 规范提案

热门文章

  1. 面试之Spring的启动原理
  2. 微信小程序体验版ios白屏 安卓报错 {“errMsg“:“hideLoading:fail:toast can‘t be found“}
  3. 深度解析为什么v-if和v-for不能同时使用
  4. windows cmd 执行命令文件路径带有空格的处理方式
  5. 小米扫地机器人划区清扫定时_小米机器人怎么设定扫地区域 小米机器人设定扫地区域的方法...
  6. 关于iPhone界面图片适配详细版本
  7. javascript中mouseenter与mouseover的异同
  8. 很不错的两款Bootstrap Icon图标选择组件
  9. 第二次修有关路基和隧道的CASIO 5800P 万能曲线计算程序可以正反标
  10. DateTimePicker 日期时间选择器设置默认时间