基于区域建议网络的Faster R-CNN实时目标检测

目前最先进的目标检测网络依赖于区域建议算法来假设目标的位置。SPPnet[1]和Fast R-CNN[2]等技术的发展减少了这些检测网络的运行时间,使区域建议计算成为瓶颈。在这项工作中,我们引入了一个区域建议网络(RPN)它与检测网络共享完整的图像卷积特征,从而实现几乎无成本的区域建议。RPN是一个完全卷积的网络,它同时预测每个位置的对象边界和对象得分。RPN通过端到端的训练来产生高质量的区域建议,并被Fast 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是第一个赢得参赛项目。代码已公开。

索引项  目标检测区域建议卷积神经网络

1 INTRODUCTION

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

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

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

在本文中,我们证明了使用深卷积神经网络的算法变更计算方案可以得到一个优雅而有效的解决方案,在给定检测网络的计算量的情况下,方案计算几乎是无成本的。为此,我们引入了新的区域建议网络(RPNs),它与最新的目标检测网络共享卷积层[1],[2]。通过在测试时共享卷积,计算建议的边际成本很小(例如,每张图像10毫秒)。

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

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

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

我们在PASCAL VOC检测基准[11]上对我们的方法进行了综合评估,其中具有快速R-CNNs的RPNs比具有快速R-CNNs的选择性搜索的强基准产生更好的检测精度。同时,我们的方法几乎免除了测试时选择性搜索的所有计算负担。建议的有效运行时间仅为10毫秒。利用文[3]中昂贵的深部模型,我们的检测方法在GPU上的帧速率仍然是5fps(包括所有步数),因此在速度和精度上都是一个实用的目标检测系统。我们还报告了MS-COCO数据集的结果[12],并研究了使用COCO数据对PASCAL VOC的改进。代码已在https://github.com/shaoqingren/faster urcnn(在MATLAB中)和https://github.com/rbgirshick/py faster rcnn(在Python中)上公开。

该手稿的初稿比[10]要早出版。自那时起,RPN和更快的R-CNN框架被采用并推广到其他方法,如3D目标检测[13]、基于部分的检测[14]、实例分割[15]和图像字幕显示[16]。我们快速有效的目标检测系统已经被应用于商业系统,如at Pinterests[17],报告了用户参与度的改进。

在ILSVRC和COCO 2015比赛中,更快的R-CNN和RPN是ImageNet检测、ImageNet定位、COCO检测和COCO分割的几个第一名条目的基础[18]。RPNs完全学会了从数据中提出区域,因此可以很容易地从更深更具表现力的特征中获益(例如[18]中采用的101层剩余网络)。更快的R-CNN和RPN也被这些比赛中的其他几个领先参赛者使用2。这些结果表明,我们的方法不仅是一种经济实用的解决方案,而且是提高目标检测精度的有效途径。

2相关工作

目标提案。有大量关于对象建议方法的文献。目标建议方法的综合调查和比较见[19]、[20]、[21]。广泛使用的对象建议方法包括基于分组超级像素的方法(例如,选择性搜索[4]、CPMC[22]、MCG[23])和基于滑动窗口的方法(例如,windows中的对象[24]、edgebox[6])。目标建议方法被用作独立于检测器的外部模块(例如,选择性搜索[4]目标检测器、R- CNN[5]和Faster R-CNN[2])。

用于目标检测的深层网络。R-CNN方法[5]训练CNNs端到端地将提议区域分类为对象类别或背景。R-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]计算图像金字塔的卷积特征,以进行分类、定位和检测。为了有效的基于区域的目标检测[1]、[30]和语义分割[29],提出了基于共享卷积特征映射的自适应大小池(SPP)[1]。Fast R-CNN[2]支持对共享卷积特征的端到端检测器训练,并显示出令人信服的准确性和速度。

3 FASTER R-CNN

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

3.1 Region Proposal Networks(区域提案网络)

区域建议网络(RPN)以任意大小的图像为输入,输出一组矩形的对象建议,每个建议都有一个对象分数。我们用一个完全卷积的网络[7]对这个过程进行建模,我们在本节中对此进行了描述。因为我们的最终目标是与快速R-CNN目标检测网络共享计算[2],所以我们假设两个网络共享一组共同的卷积层。在我们的实验中,我们研究了具有5个可共享卷积层的Zeiler和Fergus模型(ZF),以及具有13个可共享卷积层的Simonyan和Zisserman模型(VGG-16)。

为了生成区域建议,我们在最后一个共享卷积层输出的卷积特征映射上滑动一个小网络。该小网络以输入卷积特征图的n×n空间窗作为输入。每个滑动窗口都映射到一个低维特征(ZF为256-d,VGG为512-d,ReLU[33]如下)。这个特性被输入到两个完全连接的兄弟层中:一个盒子回归层(reg)和一个盒子分类层(cls)。在本文中,我们使用n=3,注意到输入图像上的有效接收场很大(ZF和VGG分别为171和228像素)。这个小型网络在图3(左)中的一个位置进行了说明。请注意,由于迷你网络以滑动窗口方式运行,因此完全连接的层在所有空间位置共享。该体系结构自然地由一个n×n卷积层和两个并列的1×1卷积层(分别用于reg和cls)实现。

3.1.1 Anchors

每个滑动窗口位置,我们同时预测多个区域建议,其中每个位置的最大可能提议的数目被表示为K。因此,ReG层具有4K输出,编码K盒的坐标,CLS层输出2K得分,估计每个提议的对象或不对象的概率。k个建议是相对于k个参考框参数化的,我们称之为锚。锚定位于所述滑动窗口的中心,并且与比例和纵横比相关(图3,左)。默认情况下,我们使用3个比例和3个纵横比,在每个滑动位置产生k=9个锚。对于大小为W×H(通常为2400)的卷积特征图,总共有W Hk锚。

Translation-Invariant Anchors(旋转不变锚)

我们的方法的一个重要特性是它是平移不变的,无论是在锚方面还是在计算相对于锚的建议的函数方面。如果一个人翻译一个图像中的一个对象,建议应该翻译和相同的功能应该能够预测建议在任何位置。我们的方法保证了这种平移不变性。作为比较,MultiBox方法[27]使用k-均值生成800个锚,这些锚不是平移不变的。所以MultiBox不能保证在翻译对象时生成相同的建议。

平移不变量属性也减小了模型的大小。MultiBox具有(4+1)×800维全连通输出层,而在k=9锚的情况下,我们的方法具有(4+2)×9维卷积输出层。因此,我们的输出层有2.8×104个参数(VGG-16为512×(4+2)×9),比MultiBox的输出层少两个数量级,MultiBox的输出层有6.1×106个参数(MultiBox[27]中的GoogleNet[34]为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)。

由于这种基于锚的多尺度设计,我们可以简单地使用在单尺度图像上计算的卷积特征,正如快速R-CNN检测器所做的那样[2]。多尺度锚定器的设计是共享特征而无需额外成本来处理尺度的关键组成部分。

3.1.2损失函数

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

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

基于区域建议网络的Faster R-CNN实时目标检测_第1张图片

 

这里,是一个小批量锚的索引,是锚作为对象的预测概率。如果锚为正,则地面真值标签 为1;如果锚为负,则为0。表示预测边界框的4个参数化坐标,表示与正锚关联的地面真值框的参数化坐标。分类损失记录两类(对象与非对象)的损失。对于回归损失,我们使用,其中是在[2]中定义的稳健损失函数(平滑L1)。术语是指回归损失仅对正锚()激活,否则禁用()。层和层的输出分别由组成 。

这两个项用规范化,并用平衡参数加权。在我们当前的实现中(如在发布的代码中),Eqn.(1)中的项通过小批量大小(即)规范化,而项通过锚位置的数量(即)规范化。默认情况下,我们设置λ=10,因此项的权重大致相等。我们通过实验表明,结果对大范围内的λ值不敏感(表9)。我们还注意到,上述规范化是不需要的,可以简化。

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

基于区域建议网络的Faster R-CNN实时目标检测_第2张图片

其中表示框的中心坐标及其宽度和高度。变量分别用于预测框、锚定框和真实框(同样和y、w、h一样)。这个可以被认为是从锚框到附近真值框的边界框回归。

然而,我们的方法通过不同于以往基于roi(感兴趣区域)的方法来实现包围盒回归[1],[2]。在[1],[2]中,对从任意大小的roi集合的特征执行包围盒回归,回归权重由所有区域大小共享。在我们的公式中,用于回归的特征在特征地图上具有相同的空间大小(3×3)。为了解释不同的大小,我们学习了一组k-包围盒回归方程。每个回归者负责一个尺度和一个纵横比,而k个回归者不共享权重。因此,由于锚的设计,即使特征是固定尺寸/比例的,仍然可以预测各种尺寸的盒子

3.1.3 T raining RPNs

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

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

3.2 RPN和Fast R-CNN的共享功能

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

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

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

(ii)近似关节训练。在这个解决方案中,RPN和快速R-CNN网络在训练期间合并为一个网络,如图2所示。在每次SGD迭代中,前向过程生成区域建议,在训练快速R-CNN检测器时,这些建议被视为固定的、预先计算的建议。反向传播与通常一样发生,其中对于共享层,来自RPN损耗和快速R-CNN损耗的反向传播信号被组合在一起。这个解决方案很容易实现。但是这个解决方案忽略了导数W.R.T。建议框的坐标也是网络响应,所以是近似的。在我们的实验中,我们发现这个解算器产生了接近的结果,但是与交替训练相比,减少了大约25-50%的训练时间。这个解算器包含在我们发布的Python代码中。

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

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

3.3实施细则

我们训练并测试了单尺度图像上的区域建议和目标检测网络[1],[2]。我们重新缩放图像,使其较短的边为s=600像素[2]。多尺度特征提取(使用图像金字塔)可以提高精度,但不能表现出良好的速度精度权衡[2]。在重新缩放的图像上,最后一个卷积层上的ZF和VGG网络的总跨距为16像素,因此在调整大小之前,典型PASCAL图像上的总跨距为10像素(500×375)。即使如此大的步幅也能提供很好的效果,尽管用较小的步幅可以进一步提高精确度。对于锚定,我们使用3个比例尺,框区域为128^2、256^2和512^2像素,3个纵横比为1:1、1:2和2:1。这些超参数不是为特定数据集精心选择的,我们将在下一节中提供有关它们影响的消融实验。如前所述,我们的解决方案不需要图像金字塔或滤波金字塔来预测多尺度区域,节省了相当多的运行时间。图3(右)显示了我们的方法在各种尺度和纵横比下的能力。表1显示了使用ZF网络的每个锚的学习平均建议大小。我们注意到我们的算法允许比潜在感受野更大的预测。这样的预测并非不可能,如果只有物体的中间是可见的,人们仍然可以粗略地推断出物体的范围。需要小心处理跨越图像边界的锚定框。在训练过程中,我们忽略所有的跨界锚,所以它们不会造成损失。对于典型的1000×600图像,总共将有大约20000(≈60×40×9)个锚。忽略跨界锚定后,每个图像约有6000个锚定用于训练。如果训练中不忽略边界交叉离群点,则会在目标中引入较大且难以修正的误差项,训练不会收敛。然而,在测试过程中,我们仍然对整个图像应用完全卷积的RPN。这可能会生成跨边界的建议框,我们将其剪裁到图像边界。

 

你可能感兴趣的:(深度学习,目标检测,计算机视觉,Faster,RCNN,卷积神经网络,目标检测)