Faster R_CNN代码实现详解参见:faster-rcnn源码详解_樱花的浪漫的博客-CSDN博客_faster rcnn源码

Faster-rcnn详细注释版源码地址:faster_rcnn源码详细注释版+每一步均有详细批注-深度学习文档类资源-CSDN下载

Abstract:最先进的目标检测网络依赖于区域建议算法来假设目标的位置。像SPPnet[1]和FastR-CNN[2]这样的进步减少了这些检测网络的运行时间,暴露了区域建议框计算的瓶颈。在这项工作中,我们引入了一个区域建议网络(RPN),它与检测网络共享全图像卷积特征,从而实现了几乎免费的区域建议。RPN是一个完全卷积的网络,它可以同时预测每个位置的目标边界和目标性得分。RPN被端到端训练,以生成高质量的区域建议,并被FastR-CNN用于检测。通过共享它们的卷积特征,我们进一步将RPN和FastR-CNN合并为一个单一的网络——使用最近流行的具有“注意”机制的神经网络术语,RPN组件告诉统一的网络在哪里寻找。对于非常深的VGG-16模型[3],我们的检测系统在GPU上有5帧率(包括所有步骤),同时在PASCAL VOC2007、2012和MSCOCO数据集上实现了最先进的目标检测精度,每幅图像只有300个建议。在ILSVRC和COCO2015年的比赛中,Faster R-CNN和RPN是在几个赛道上获得冠军的基础。

1 INTRODUCTION

区域提出方法(如[4])和基于区域的卷积神经网络(R-CNN)[5]的成功推动了目标检测的最新进展。尽管基于区域的cnn如最初在[5]中开发的那样,计算成本很高,但由于在方案[1]和[2]之间共享卷积,它们的成本已经大幅降低。最新的化身,Fast R-CNN[2],当忽略花费在区域提案上的时间时,使用非常深的网络[3]实现了接近实时的速率。现在,建议框是最先进的检测系统中的测试时间计算瓶颈。

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

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

在本文中,我们证明了一个算法的变化——使用深度卷积神经网络的计算建议——会导致一个优雅而有效的解决方案,其中建议的计算给定检测网络的计算几乎是免费的。为此,我们引入了新的区域建议网络(RPN),它与最先进的目标检测网络[1],[2]共享卷积层。通过在测试时共享卷积,计算方案的边际成本很小(例如,每幅图像为10ms)

        我们的观察是,基于区域的检测器所使用的卷积特征图,如FastRCNN,也可以用于生成区域建议。在这些卷积特征之上,我们通过添加一些额外的卷积层来构建一个RPN,这些卷积层同时回归规则网格上的每个位置的区域边界和目标得分。因此,RPN是一种完全卷积网络(FCN)[7],可以专门为生成检测建议的任务进行末端训练。

rpn被设计用来有效地预测具有广泛尺度和长宽比的区域建议。与使用图像金字塔、[9](图1、[1])或过滤器金字塔(图1、[1])的流行方法相比,我们引入了新的“锚”框,在多个尺度和高宽比上作为参考。我们的方案可以被认为是一个回归参考的金字塔(图1,c),它避免了枚举多个尺度或纵横比的图像或过滤器。该模型在使用单尺度图像进行训练和测试时表现良好,从而有利于运行速度。

为了将rpn与fast R-CNN[2]目标检测网络统一起来,我们提出了一种训练方案,在保持方案不变的同时,先对区域建议任务进行微调,然后对目标检测进行微调。该方案收敛迅速,并产生一个统一的网络,其卷积特征在两个任务之间共享。

我们在PASCAL VOC检测基准[11]上综合评估了我们的方法,其中fast R-cnn的RPN比fast R-CNN的强基线产生更好的检测精度。与此同时,我们的方法几乎免除了在测试时选择性搜索的所有计算负担——提案的有效运行时间只有10毫秒。使用昂贵的非常深的[3]模型,我们的检测方法在GPU上仍然有一个帧率为5fps(包括所有步骤),因此在速度和准确性方面都是一个实用的目标检测系统。我们还报告了MSCOCO数据集[12]的结果,并利用COCO数据研究了对PASCAL VOC的改进。代码已经在https://github.com/shaoqingren/faster_rcnn(MATLAB)和https://github.com/rcnn(Python)上公开提供。

该手稿的初步版本先前发表于[10]。从那时起,RPN和FasterR-CNN的框架已经被采用并推广到其他方法中,如三维目标检测[13]、基于部分的检测[14]、实例分割[15]和图像字幕[16]。我们的快速有效的目标检测系统也建立在商业系统中,如利益[17],用户参与度的改进。在ILSVRC和COCO2015年的比赛中,Faster R-CNN和RPN是ImageNet检测、ImageNet定位、COCO检测和COCO分割轨道中几个第一名条目的[18]的基础。rpn完全学习从数据中提出区域,因此可以很容易地受益于更深层次、更具表现力的特征(如[18]中采用的10个1层残差网)。Faster R-CNN和RPN也被这些比赛中的其他几个主要参赛选手使用2。这些结果表明,该方法不仅是一种具有成本效益的实用应用解决方案,而且是提高目标检测精度的有效方法。

2 RELATED WORK

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

用于对象检测的深度网络。R-CNN方法[5]端到端训练cnn,将建议区域分类为对象类别或背景。R-CNN主要作为一个分类器,它不预测对象的边界(除了通过边界盒回归进行细化)。其准确性取决于区域建议模块的性能(见[20]中的比较)。一些论文提出了利用深度网络预测对象边界盒[25]、[9]、[26]、[27]的方法。在OverFeat方法[9]中,训练一个全连接的层来预测假设单个对象的定位任务的方框坐标。然后将全连接的层转换为一个卷积层,用于检测多个类特定的对象。多盒方法[26],[27]从最后一个完全连接层的网络中同时预测多个类不可知的box,推广了OverFeat的“单盒”方式。这些类不可知的框被用作R-CNN[5]的建议。与我们的完全卷积方案相比,多盒建议网络应用于单一图像作物或224×224作物(例如,224×224)。多盒在提议网络和检测网络之间不共享特性。稍后我们将用我们的方法更深入地讨论过度和多盒。与我们的工作同时,深度掩模方法[28]被开发用于学习分割建议。

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

3 FASTER R-CNN

我们的目标检测系统,称为Faster R-CNN,是由两个模块组成的。第一个模块是提出区域的深度全卷积网络,第二个模块是使用建议区域的fast R-CNN检测器[2]。 整个系统是一个单一的、统一的目标检测网络(图2)。使用最近流行的具有“注意”[31]机制的神经网络术语,RPN模块告诉FastR-CNN模块在哪里看。在第3.1节中,我们介绍了针对区域提案的网络的设计和特性。在第3.2节中,我们开发了用于训练这两个模块具有共享特征的算法。

3.1 Region Proposal Networks

区域提案网络(RPN)以一幅图像(任何大小的)作为输入,输出一组矩形对象建议,每个都有一个目标得分。我们用一个完全卷积的网络[7]来建模这个过程,我们将在本节中描述它。因为我们的最终目标是与Fast R-CNN目标检测网络[2]共享计算,所以我们假设两个网络共享一组共同的卷积层。在我们的实验中,我们研究了有5个可共享卷积层的泽勒和费格斯的模型[32](ZF),以及西蒙扬和有13个可共享卷积层的齐塞曼的模型[3](VGG-16)。

为了生成区域建议,我们在最后一个共享卷积层的卷积特征图输出上滑动一个小网络。这个小网络以输入卷积特征图的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)。

3.1.1 Anchors

在每个滑动窗口位置,我们同时预测多个区域的建议,其中每个位置的最大可能建议的数量记为k。因此,reg层有4k个输出编码k个box的坐标,cls层输出2k个分数,为每个提议的对象或非对象的概率。 k个建议是相对于k个参考箱参数化的,我们称之为锚点。锚点以有问题的滑动窗口为中心,并与比例和高宽比相关联(图3,左)。默认情况下,我们使用3个尺度和3个长宽比,在每个滑动位置产生k=9个锚点。对于大小为W×H(通常为∼2,400)的卷积特征图,总共有WHk锚点。

Translation-Invariant Anchors

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

平移不变的特性也减少了模型的大小。MultiBox有一个(4+1)×800维全连接输出层,而我们的方法在k=9锚的情况下有一个(4+2)×9维卷积输出层。因此,我们的输出层有2.8×104参数(VGG-16中的512×(4+2)×9),比多盒的输出层少两个数量级,后者有6.1×106参数(多盒[27]中的1536×(4+1)×800)。如果考虑特征投影层,我们的建议层仍然比MultiBox6少一个数量级。我们希望我们的方法在小数据集上过拟合的风险更小,比如PASCAL VOC。

Multi-Scale Anchors as Regression References

        我们的锚的设计提出了一个新的方案来解决多尺度(和纵横比)。如图1所示,有两种流行的多尺度预测方法。第一种方法是基于图像/特征金字塔,例如,在DPM[8]和基于CNN的方法[9],[1],[2]。图像在多个尺度上调整大小,并为每个尺度计算特征图(HOG[8]或深度卷积特征[9]、[1]、[2])(图1(a))。这种方法通常很有用,但也很耗时。第二种方法是在特征贴图上使用多个尺度(和/或高宽比)的滑动窗口。例如,在DPM[8]中,不同长宽比的模型是分别使用不同的过滤器大小(如5×7和7×5)进行训练的。如果使用这种方法来处理多个尺度,那么可以认为它是一个“过滤器的金字塔”(图1(b))。第二种方法通常与第一种方法[8]联合采用。

作为比较,我们的基于锚的方法建立在锚的金字塔上,成本效益更高。我们的方法根据多个尺度和长宽比的锚盒对边界框进行分类和回归。它只依赖于单一尺度的图像和特征地图,并使用单一大小的过滤器(特征地图上的滑动窗口)。我们通过实验展示了该方案在解决多种尺度和规模方面的效果(表8)。由于这种基于锚点的多尺度设计,我们可以简单地使用在单尺度图像上计算出的卷积特征,就像快速R-CNN检测器[2]所做的那样。多尺度锚的设计是共享特性的关键组件,而不需要花费额外的成本。

3.1.2 Loss Function

对于训练RPN,我们为每个锚点分配一个二进制类标签(是否作为对象)。我们为两种锚点分配了一个正标记:(i)具有最高交集覆盖的锚点(IoU)与真值框重叠,或者(ii)具有IoU重叠高于0.7的锚点 : (ii)与任何地面真实盒重叠高于0.7的锚。请注意,一个地面真值框可能会为多个锚点分配正标签。通常第二个条件足以确定阳性样本;但我们仍然采用第一个条件,因为在某些罕见的情况下,第二种情况可能没有发现阳性样本。如果一个非正锚的IoU比率低于0.3,我们给一个非正锚分配一个负标签。既不积极也不消极的锚点对训练目标没有贡献。

有了这些定义,我们在FastR-CNN[2]中根据多任务损失最小化一个目标函数。我们的一个图像的损失函数被定义为:

这里,i是一个小批中的一个锚的索引,是锚i是一个对象的预测概率。如果锚为正,地面真实标签为1,如果锚为负,则为0。是表示预测边界框的4个参数化坐标的向量,是与正锚相关的地面真实框的向量。分类损失是两个类(对象与不是对象)的日志损失。对于回归损失,我们使用,其中R是[2]中定义的稳健损失函数(平滑L1)。术语意味着回归损失仅对正锚点被激活(=1),否则将被禁用(=0)。cls层和reg层的输出分别由{pi}和{ti}组成。

这两项用Ncls和Nreg归一化,并用平衡参数λ进行加权。在我们当前的实现中(如在已发布的代码中),Eqn中的cls术语。(1)由小批大小(即Ncls=256)归一化,而reg项由锚定位置的数量(即Nreg∼2,400)归一化。默认情况下,我们设置了λ=10,因此cls和reg项的权重大致相等。我们通过实验表明,结果在很大范围内对λ的值不敏感(表9)。我们还注意到,上述的标准化是不需要的,可以进行简化。

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

其中,x、y、w和h表示方框的中心坐标及其宽度和高度。变量x、xa和x∗分别用于预测框、锚框和地面真实框(y、w、h)。 这可以被认为是从一个锚盒到一个附近的地面真实盒的边界盒回归。然而,我们的方法通过一种不同于以前的基于旋转的(感兴趣区域)方法[1],[2]的方式来实现边界盒回归。在[1],[2]中,对从任意大小的roi中汇集出来的特征进行边界盒回归,回归权值由所有区域大小共享。在我们的公式中,用于回归的特征在特征图上具有相同的空间大小(3×3)。为了解释不同的大小,我们学习了一组k个边界盒回归变量。每个回归变量负责一个量表和一个高宽比,而k个回归变量不共享权重。因此,由于锚点的设计,即使其特征的尺寸/比例是固定的,也仍然可以预测各种尺寸的盒子。

3.1.3 Training RPNs

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

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

3.2 Sharing Features for RPN and Fast R-CNN

到目前为止,我们已经描述了如何训练网络生成区域提案,而不考虑将利用这些建议的基于区域的目标检测CNN。对于检测网络,我们采用FastR-CNN[2]。接下来,我们描述了学习由RPN和FastR-CNN组成的具有共享卷积层的共享网络的算法(图2)。

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

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

(ii)近似的联合训练。在这个解决方案中,RPN和Fast R-CNN网络在训练过程中被合并成一个网络,如图2所示。在每次SGD迭代中,当训练一个快速R-CNN检测器时,前向传递产生的区域建议被当作固定的、预先计算的建议一样处理。反向传播像往常一样发生,对于共享层,来自RPN损失和Fast R-CNN损失的反向传播信号被相结合。这个解决方案易于实现。但是这个解决方案忽略了导数w.r.t.建议框的坐标也是网络响应,所以是近似的。在我们的实验中,我们通过经验发现,这个求解器可以产生很接近的结果,但与交替训练相比,它减少了约25-50%的训练时间。这个求解器包含在我们发布的Python代码中。

(iii)非近似联合训练。如上所述,RPN预测的边界框也是输入的函数。FastR-CNN中的RoI池化层[2]接受卷积特征和预测的边界框作为输入,因此理论上有效的反向传播求解器也应该涉及梯度w.r.t.该方框的坐标。这些梯度在上述近似的联合训练中被忽略了。在非近似联合训练解中,我们需要一个可微w.r.t.的RoI池化层该方框的坐标。这是一个不平凡的问题,可以通过在[15]中开发的“RoI扭曲”层来给出一个解决方案,这超出了本文的范围。

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

3.3 Implementation Details

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

对于锚点,我们使用3个尺度,box分别为128**2、256**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提案来训练FastR-CNN,但在测试时评估不同数量的提案。

4 EXPERIMENTS

4.1 Experiments on PASCAL VOC

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

表2(上)显示了使用不同区域建议方法进行训练和测试时的FastcR-CNN结果。这些结果使用了ZF网络。对于选择性搜索(SS)[4],我们通过“fast”模式生成了大约2000个提案。对于边box(EB)[6],我们根据0.7IoU的默认EB设置生成建议。在FastR-CNN框架下,SS的mAP为58.7%,EB的mAP为58.6%。RPN与FastR-CNN获得了具有竞争的结果,当使用多达300个提案时,mAP为59.9%8。由于共享的卷积计算,使用RPN比使用SS或EB产生的检测系统要快得多;较少的建议也降低了区域级全连接层的成本(表5)。

        在RPN上进行的消融实验。为了研究rpn作为一种建议方法的行为,我们进行了几项消融研究。首先,我们展示了在RPN和FastR-CNN检测网络之间共享卷积层的效果。为了做到这一点,我们在四步训练过程的第二步之后停止。使用单独的网络可以将结果略微降低到58.7%(RPN+ZF,非共享,表2)。我们观察到,这是因为在第三步中,当检测调整特性用于微调RPN时,建议质量得到了提高。

接下来,我们解开了RPN对Fast R-CNN检测网络训练的影响。为此,我们使用2000SS提案和ZF网络训练一个Fast R-CNN模型。我们修复了这个检测器,并通过改变在测试时使用的建议区域来评估检测mAP。在这些烧蚀实验中,RPN与探测器没有相同的特征。在测试时用300个RPN方案替换SS,导致mAP为56.8%。mAP的损失是由于培训/测试方案之间的不一致。这个结果可以作为以下比较的基线。

有些令人惊讶的是,当在测试时使用排名靠前的100个提案时,RPN仍然会导致一个有竞争的结果(55.1%),这表明排名靠前的RPN提案是准确的。在另一个极端,使用排名靠前的6000RPN提案(没有NMS)具有类似的mAP(55.2%),表明NMS不会损害检测mAP,并可能减少误警报。 

        接下来,我们分别研究了RPN的cls和reg输出的作用,通过在测试时关闭它们中的任何一个。当在测试时cls层被删除时(因此不使用NMS/排名),我们从未得分的区域随机抽取N个建议。mAP与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 VOC2007训练和2012训练的联合集上训练了RPN和检测网络。mAP为73.2%。图5显示了关于PASCA VOC2007测试集的一些结果。在pascalVOC2012测试集(表4)上,我们的方法在VOC2007训练+测试和VOC2012训练的联合集上训练的mAP为70.4%。表6和表7显示了详细的数字。

在表5中,我们总结了整个对象检测系统的运行时间。根据内容的不同,SS需要1-2秒(平均约1.5秒),而使用VGG-16的FastR-CNN对于2000个SS提议需要320ms(如果在全连接层[2]上使用SVD,则需要223ms)。我们的VGG-16系统总共需要1个建议和检测198ms。由于共享了卷积特性,RPN单独只需要10个ms来计算额外的层。我们的区域计算量也较低,因为提案更少(每张图片300个)。我们的系统的帧率为17帧每秒。

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

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

         回收值率分析。接下来,我们用真值框计算在不同IoU比率下的提案的召回率。值得注意的是,召回到iou的度量只是松散的[19],[20],[21],与最终的检测精度相关。使用这个度量来诊断建议方法比评估它更合适。在图4中,我们展示了使用300、1000和2000个提案的结果。我们与SS和EB进行了比较,根据这些方法产生的置信度,N个建议是排名前N位的。图4显示,当提案数量从2000下降到300时,RPN方法表现优雅。这就解释了为什么RPN在使用多达300个建议时,有一个很好的最终检测mAP。正如我们之前所分析的,这一特性主要归因于RPN的cls项。当提案较少时,SS和EB的召回率比RPN下降得更快。

        一级检测vs两阶段提案+检测。[9]的论文提出了一种检测方法,该方法在卷积特征映射上的滑动窗口上使用回归器和分类器。OverFeat是一个单阶段的、类特定的检测管道,我们的管道是一个两级级联,包括类不可知的建议框和类特定的检测级联。在OverFeat中,区域级特征来自于一个比例金字塔上的一个纵横比的滑动窗口。这些特征用于同时确定对象的位置和类别。在RPN中,这些特征来自于正方形(3×3)滑动窗口,并预测了相对于具有不同尺度和纵横比的锚点的建议。虽然这两种方法都使用滑动窗口,但区域建议任务只是Faster RCNN的第一阶段——下游的快速R-CNN检测器负责改进它们的建议。在我们的级联的第二阶段,区域级特征是自适应地汇集的[1],[2],从建议框中更忠实地覆盖了区域的特征。我们相信这些特征可以导致更准确的检测。

为了比较一阶段和两阶段系统,我们通过一级FastR-CNN模拟OverFeat系统(从而也规避了实现细节的其他差异)。在这个系统中,“建议框”是3个尺度(128,256,512)和3个高宽比(1:1、1:2、2:1)的密集滑动窗口。Fast R-CNN被训练来预测特定类别的分数,并从这些滑动窗口回归方框的位置。由于OverFeat系统采用了一个图像金字塔,我们也使用从5个尺度中提取的卷积特征进行评估。我们使用这5个量表,如在[1],[2]中所述。

表10比较了两阶段系统和单阶段系统的两种变体。使用ZF模型,一期系统的mAP为53.9%。这比两阶段系统(58.7%)低了4.8%。本实验证明了级联区域建议和目标检测的有效性。在[2],[39]中也报道了类似的观察结果,用滑动窗口替换SS区域建议会导致两篇论文中∼下降6%。我们还注意到,监督管理系统的速度较慢,因为它有相当多的建议需要处理。

4.2 Experiments on MS COCO

我们在Microsoft COCO目标检测数据集[12]上提供了更多的结果。这个数据集涉及80个对象类别。我们在训练集上使用80k图像,在验证集上使用40k图像,在测试开发集上使用20k图像。我们评估了IoU∈[0.5:0.05:0.95](COCO的标准度量,简单地表示为mAP@[0.5,0.95])和mAP@0.5(pascalVOC的度量)的mAP平均值。 

        我们的系统对这个数据集做了一些小的改变。我们在8-GPU实现上训练我们的模型,RPN的有效小批量大小为8(每个GPU1个),Fast R-CNN为16(每个GPU2个)。RPN步骤和FastR-CNN步骤都被训练为240k迭代,学习率为0.003,然后被训练为80k迭代,学习率为0.0003。我们修改了学习速率(从0.003开始,而不是从0.001开始),因为小批处理的大小被改变了。对于锚点,我们使用3个高宽比和4个尺度(添加64**2),主要是通过处理这个数据集上的小对象。此外,在我们的FastR-CNN步骤中,负样本被定义为在[0,0.5)区间内具有最大真真值且地面真实值的样本,而不是在[1],[2]中使用的[0.1,0.5)。我们注意到,在SPPnet系统[1]中,[0.1,0.5)中的负样本被用于网络微调,但[0,0.5)中的负样本仍然在硬负挖掘的SVM步骤中被访问。但是FastR-CNN系统[2]放弃了SVM步骤,所以[0,0.1)中的阴性样本永远不会被访问。包括这些[0,0.1)样本改进了FastR-CNN和R-CNC更快系统在COCO数据集上的mAP@0.5(但对pascalVOC的影响可以忽略不计)。

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

在表11中,我们首先报告了使用本文中实现的FastR-CNN系统[2]的结果。我们的FastR-CNN基线在测试开发集上有39.3%的mAP@0.5,高于[2]中报告的数据。我们推测,造成这种差距的原因主要是由于负样本的定义和小批量大小的变化。我们还注意到,mAP@[.5,0.95]只是具有可比性。

          接下来,我们评估我们Faster R-CNN系统。使用COCO训练集进行训练,Faster R-CNN在COCO测试-dev集上有42.1%的mAP@0.5和21.5%的mAP@[0.5,0.95]。在相同协议下,比Fast RCNN高2.8%(mAP@0.5)高2.22%(mAP@[0.5,0.95])(表11)。这表明RPN在较高的IoU阈值下具有很好的提高定位精度。使用COCO训练集来进行训练,Faster RCNN在COCO测试开发集上有42.7%的mAP@0.5和21.9%的mAP@[0.5,0.95]。图6显示了关于MSCOCO测试开发集的一些结果。

Faster R-CNN 在ILSVRC和COCO2015年的比赛中,我们已经证明了Faster R-CNN从更好的特性中获益更多,因为RPN完全学习了通过神经网络提出区域。即使将深度大大增加到100层[18],这种观察结果仍然有效。只有用101层残差网(ResNet-101)[18]取代VGG-16,Faster R-CNN系统才能将COCOval集上的mAP从41.5%/21.2%(VGG-16)增加到48.4%/27.2%(ResNet-101)。通过与FasterRCNN正交的其他改进,He等[18]获得了55.7%/34.9%和59.0%/37.4%在COCO测试开发集上的集成结果,在2015年COCO目标检测竞赛中获得第一名。该系统的[18]也在2015年的ILSVRC目标检测竞赛中获得了第一名,以8.5%的绝对优势超过了第二名。RPN也是ILSVRC2015本地化和COCO2015细分比赛中第一名的组成部分,详情分别在[18]和[15]中获得。

4.3 From MS COCO to PASCAL VOC

大规模数据对于改进深度神经网络至关重要。接下来,我们研究了MSCOCO数据集如何帮助对PASCAL VOC的检测性能。作为一个简单的基线,我们直接在PASCAL VOC数据集上评估COCO检测模型,而无需对任何PASCAL VOC数据进行微调。这种评估是可能的,因为COCO上的类别是PASCAL VOC上的超集。本实验忽略了COCO上唯一的类别,softmax层仅对20个类别加上背景的softmax层执行。在该VOC2007测试集中的mAP为76.1%(表12)。这一结果优于VOC07+12训练的结果(73.2%),为73.2%),尽管PASCAL VOC数据没有被利用。

然后,我们在VOC数据集上对COCO检测模型进行了微调。在本实验中,COCO模型取代了imagenet预训练模型(用于初始化网络权值),并对Faster R-CNN系统进行了微调,如第3.2节所述。这样做会导致PASCAL VOC2007测试集的地图达到78.8%。来自COCO集的额外数据使mAP增加了5.6%。表6显示,用COCO+VOC训练的模型在pascalVOC2007的每个单独类别中具有最佳的AP。在pascalVOC2012测试集上也观察到了类似的改进(表12和表7)。我们注意到,获得这些强结果的测试时间速度仍然是每张图像200ms。

5 CONCLUSION

 我们提出了一个能够高效和准确的区域提案生成的rpn。通过与下游检测网络共享卷积特征,区域建议步骤几乎免费的。我们的方法使一个统一的,基于深度学习的目标检测系统能够以接近实时的帧速率运行。学习到的RPN还提高了区域建议质量,从而提高了整体目标检测精度。 

         

论文精读:Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks相关推荐

  1. 深度学习论文阅读目标检测篇(三):Faster R-CNN《 Towards Real-Time Object Detection with Region Proposal Networks》

    深度学习论文阅读目标检测篇(三):Faster R-CNN< Towards Real-Time Object Detection with Region Proposal Networks&g ...

  2. 读书笔记:Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks

    Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks 著名的faster R-CNN 当然应该好好 ...

  3. Faster RCNN原理分析(二):Region Proposal Networks详解

    Region Proposal Networks是Faster RCNN出新提出来的proposal生成网络.其替代了之前RCNN和Fast RCNN中的selective search方法,将所有内 ...

  4. 《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》论文翻译

    原文:https://arxiv.org/abs/1506.01497 Faster R-CNN: Towards Real-Time ObjectDetection with Region Prop ...

  5. Faster R CNN

    Faster R CNN 3 FASTER R-CNN 我们的Faster R CNN 由两个模块组成,第一个模块是 proposes regions 的全卷积网络,第二个是使用 proposed r ...

  6. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(更快的RCNN:通过区域提议网络实现实时)

    原文出处 感谢作者~ Faster R-CNN: Towards Real-Time Object Detection with Region ProposalNetworks Shaoqing Re ...

  7. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(理解)

    0 - 背景 R-CNN中检测步骤分成很多步骤,fast-RCNN便基于此进行改进,将region proposals的特征提取融合成共享卷积层问题,但是,fast-RCNN仍然采用了selectiv ...

  8. 【论文精读1】基于BN的模型剪枝-Learning Efficient Convolution Networks through Network Slimming

    原论文下载地址 论文思想:先结构剪枝后微调.

  9. Faster R-CNN 《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》论文笔记

    本学弱喜欢在本子上记笔记,但字迹又丑. 望看不懂我的字的大佬不要喷我,看得懂的大佬批评指正.

最新文章

  1. codefores 786B. Legacy(最短路,线段树优化拆点,好题)
  2. 贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码
  3. void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)的一些理解
  4. 一文秒懂!Python字符串格式化之format方法详解
  5. 真心酸,程序员工作了十年,衣服和电脑包破了都没钱买新的
  6. 深度强化学习和强化学习_深度强化学习:从哪里开始
  7. 蓝桥杯 BASIC-15 基础练习 字符串对比
  8. python常用代码大全-python基础,python基础代码大全
  9. cad插件_CAD插件自动标注
  10. 示波器同步的调节方法
  11. aida32系统信息报告
  12. S3接口访问华为云OBS
  13. 广东省计算机一级网络题分值,计算机一级考试分值分布
  14. pacman 查询_pacman命令
  15. 松下plcgr7安装序列号_向上一阶段跃进,松下 SZ5/SX2 对比、体验与心得
  16. NY145 聪明的小柯
  17. 机器人是如何实现控制的,它的控制器有哪些组成?
  18. 敏涵控股集团刘敏:一个85后创业者的民族使命
  19. 二叉树先序遍历、中序遍历、后序遍历 递归和非递归算法
  20. 常见路由协议总览以及路由协议分类方式

热门文章

  1. Python小程序之倒计时
  2. python基础数据类型
  3. 【Python爬虫】第一课 Python爬虫环境与爬虫简介
  4. 初识selenium--发送QQ邮件
  5. dump文件,windbg
  6. 点云3d检测SA-SSD
  7. C语言中使用rand()函数产生随机数用法
  8. 数据分析案例-数据可视化
  9. 将网站封装成APP安卓应用
  10. 数据分析的年度工作计划,这样制定才合理!