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

    该论文于2015年6月首次上传至arxiv,2016年1月份更新至第三版,源码有matlabpython两种语言格式,分别由论文的一作和三作完成。本文主要介绍第三版中涉及的内容,并按照论文的行文结构组织进行呈现。文中如有理解偏差,请各位指正。

摘要

    最新的物体检测网络依赖于候选框(生成)算法来假设物体位置。最新的进展如SPPnet[1]和Fast R-CNN[2]已经减少了检测网络的时间,(间接)凸显出候选框计算成为算法时间的瓶颈。本文中,作者引入了Region Proposal Network (RPN) ,它和检测网络共享整图的卷积特征,这样使得候选框的计算几乎不额外占用时间。RPN是一个全卷积网络,可同时预测物体外接框和每个位置是否为物体的得分。RPN采用端到端的方式进行训练,产生高质量的候选框,进而被Fast R-CNN用来做检测。作者通过共享卷积特征,进一步融合RPN和Fast R-CNN为一个网络——使用最近流行的基于注意力机制的网络技术,RPN单元指引统一后的网络查看的地方。对于很深的VGG-16模型[3],作者的检测系统在GPU上达到5fps(包括所有步骤)的效率,同时实现了VOC2007, 2012和MS COCO数据集上最好的准确率,此时每张图上仅产生300个候选框。在ILSVRC和COCO 2015竞赛中,Faster R-CNN和RPN是几个不同领域中第一名模型的基础。代码已经开源。

关键词——物体检测, 候选框提取,卷积神经网络

1 引言

    物体检测的最新进展受候选框提取算法(如[4])和基于区域的卷积神经网络(R-CNNs)[5]。尽管基于区域的CNNs的计算像最初在[5]中开发的那样很耗时,但是由于候选框间共享卷积[1][2]该时间已经减少很多。最新作品中(incarnation),当忽略候选框提取的时间,Fast R-CNN[2]使用很深的网络几乎实现了实时速度。如今,候选框成为最先进检测系统进行测试时的计算瓶颈。

    候选框提取算法通常依赖低成本的特征和经济的推理(inference)方案。SS(Selective Search)[4],最流行的方法之一,基于工程特征贪婪的合并超像素。但是当对比高效的检测网络,SS慢了一个数量级,CPU上每张图的运行时间为2秒。EdgeBoxes[6]最近给出了候选框质量和计算速度间的最好的权衡,每张图上的运行时间为0.2秒。尽管如此,提取候选框的步骤仍然在检测网络中占据很多运行时间。

    有人可能注意到那些快速的基于区域的cnn算法利用了GPUs,然而研究中使用的候选框提取算法是在cpu上运行的,使得这样对比运行时间不公平。一个很明显的可用来加速候选框提取的计算时间的方法是在GPU上重新实现该算法。这应该是高效的工程解决方法,但是重新算法忽略了下游的检测网络,因此错过了共享计算的最重要的机会。

    本文中,作者展示一个算法上的的改变——使用一个深的卷积网络计算候选框——产生了一个完美且高效的解决方案,该方案中候选框的计算几乎不增加对检测网络的计算耗时。为此,作者引入新颖的Region Proposal Networks(RPNs),它和最新进的检测网络[1], [2]共享卷积层。测试时,通过共享卷积,计算候选框的边际成本变的很小(如,每张图10ms)。

    作者观察到,基于区域的检测算子,如Fast R-CNN使用的卷积特征图可以用来生产候选框。这些卷积特征的顶端,作者通过增加额外的卷积层构建了RPN,(新增加的卷积层)可同时对规则的栅格中每个位置回归区域框和物体得分。这样看来,RPN是一种全卷积网络(FCN)[7],尤其可以对生成检测候选框的任务进行端到端的训练。


    RPN被设计用来高效地预测多尺度和不同长宽比的候选框。对比之前使用图像金字塔(图1, a)的方法,[8],[9],[1],[2]或滤波器金字塔(图1, b),作者引入新颖的锚点(anchor)框来作为多尺度和不同长宽比的参考。作者的方案可以视为回归参考金字塔(图1, c),这避免了遍历不同尺度或长宽比的图像或滤波器。这个模型在单尺度图像上训练和测试的性能很好,且这样使运行速度受益。

    为了将 RPNs和Fast R-CNN[2]统一起来,作者提出一个训练方案:微调候选框提取任务和保持候选框不变微调物体检测任务间交替训练。该方案迅速收敛且获得一个在两任务间共享卷积特征的统一的网络。(该文章[10]的会议版本发布时,作者还得出RPNs可以和Fast R-CNN联合训练,从而节省训练时间)。

作者在PASCAL VOC标准检测集[11]上综合评价了本文算法,使用RPNs的Fast R-CNN比使用SS的Fast R-CNN最好结果的准确率要好。同时,作者的方法几乎舍弃了SS在测试阶段的计算负担——产生候选框的时间仅需要10ms。使用很深的网络[3],作者的检测算法在GPU上运行时仍可达到5fps(包括所有处理步骤),从而就速度和准确率而言是一个实用的检测系统。作者还测试了在MS COCO[12]上的结果,观察到使用COCO数据时可提高VOC上的效果,代码已经开源:Matlab版和Python版。

    本文的初步版本在以前已经发表[10],自此,RPN和Faster R-CNN框架被采用并延伸至其他方法,如3D物体检测[13],基于块的检测[14],实例分割[15]和看图说话[16]。作者快速高效的检测系统已被嵌入诸如Pinterests[17]商业系统,报告称用户参与度得到提高。

    在ILSVRC和COCO 2015比赛中,Faster R-CNN和RPN是几个第一名网络[18]在ImageNet 检测,ImageNet定位,COCO检测,COCO分割任务的基础。RPNs完全从数据中学习候选区域,这样可很容易从更深更高昂的特征中收益(如[18]中采用101层的残差网络)。Faster R-CNN和RPN也被竞赛2中几个领先的网络使用。这些结果表明作者的方法不仅在实际使用中是一个高效的解决方案,而且是提高检测准确率的有效方法。

2 相关工作

    物体候选框。有很多关于物体候选框的文献。这些方法的综述和对比可查看[19],[20],[21]广泛被采用的方法包括那些组合超像素(SS[4], CPMC[22],MCG[23])和那些基于滑窗的方法(窗口中的物体性[24], EdgeBoxes[6])。物体候选框提取方法作为检测算子的额外模块来使用(如SS[4],物体检测子,R-CNN[5]和Fast R-CNN[2])。

    物体检测的深度网络。R-CNN算法[5]采用端到端的方式训练CNN来将候选区域分为物体或背景。R-CNN主要起到分类器的作用,并没有预测物体边界(除了提炼边界框回归)。算法准确性依赖候选模型的性能(查看文献[20]中的对比)。几篇文献已经提出使用深度网络来预测边界框的方法[25], [9], [26], [27]。OverFeat算法中[9],全连接层用来预测单目标定位任务的box坐标。全连接层然后转变成卷积层用来预测多个特定类别的物体。MultiBox类的算法[26],[27]从网络中产生候选区域,且网络最后的全连接层同时预测多个同类物体的边界框,(该算法可视为)是对OverFeat单框模式的泛化。这些同类框被R-CNN[5]作为候选区域。相比较作者的全卷积方案,MultiBox候选框网络是应用在单个裁剪图或多个大的裁剪区域(如224*224的裁剪图)。MultiBox没有在候选框和检测网络间共享特征。作者在后文中进一步讨论本文算法和OverFeat和MultiBox。和作者的工作类似,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,由两个模块组成。第一个模块是一个深度全卷积网络,用于产生候选区域,第二个模块是Fast R-CNN检测算子[2],来使用候选框。整个系统是一个简单、统一的物体检测网络(图2)。使用最近流行的基于注意力机制的网络技术,RPN模块告诉Fast R-CNN模块搜索的区域。在3.1章节,作者介绍候选框生成网络的设计和属性。3.2章节,作者开发训练具有共享特征的两个模块的算法。

3.1 Region Proposal Networks

    RPN将(任意分辨率的)图像作为输入,输出一些矩形的物体候选框,每个框具有是否为物体的得分3。作者使用一个全卷积网络[7]建模该过程,也就是本章节讲述的内容。因为最终目标是和Fast R-CNN物体检测网络[2]共享运算,作者假设两个网络共享一些共同的卷积层。实验中,作者观察到Zeiler and Fergus模块[32](ZF)有5个共享的卷积层,Simonyan and Zisserman模块[3](VGG-16)有13个共享的卷积层。


    为生成候选区域框,作者在最后一层共享卷积层输出的卷积特征图上滑动小的网络。这个小网络将输入卷积特征图上n*n大小的窗口作为输入。每个滑窗映射为低维特征(ZF模块的是256维, VGG模块的为512维,后连接ReLU[33])。特征被送给两个全连接层——边界框回归层(reg)和边界框分类层(cls)。本文中,作者令n=3,注意(滑窗中像素)在输入图上的有效感受野很大(ZF和VGG的分别为171和228)。这个小网络在某一位置上的图解如图3(左)所示。注意,由于小网络以滑窗形式操作,所有空间位置共享全连接层。该结构可以用n*n的卷积层后接两个1*1的卷积层(分别用于回归和分类)很自然地实现。

3.1.1 Anchors

    每个滑窗位置,作者同时预测多个候选框,每个位置候选框的最大数量表示为k。所以,回归层有4*k个输出来编码k个box的坐标,分类层输出2*k个得分来估计每个候选框是否为物体的概率4。k个候选框作为k个参考框的参数,在这里作者称之为锚点(anchors)。一个锚点(anchor)位于滑窗的中心,关联一个尺度和一个长宽比(图3,左)。默认情况下,作者使用3个尺度和3个长宽比,每个滑窗位置共生成9个锚点(anchors)。对一个W*H(一般约为2400)大小的卷积特征图而言,共有W*H*k个锚点。

Translation-Invariant Anchors

    就anchors本身和相对于anchors产生候选框的函数这两者而言,作者方法的一个重要属性是具有平移不变性。如果有人在图像中平移了物体,候选框将跟着平移,函数能在那两个位置处(平移前后)预测候选框。这种平移不变性由作者的算法决定的5。相比较而言,MultiBox使用k均值产生的800个锚点不具有平移不变性。因此MultiBox不能保证物体平移时,生成相同的候选框。

    平移不变性还减小了模型大小。MultiBox有一个(4+1)*800维的全连接输出层,而作者的方法当k=9时,仅有(4+2)*9维的卷积输出层。结果是,作者的输出层有2.8*10000个参数(512*(4+2)*9),比GoogleNet[34]使用MultiBox时,MultiBox的输出层参数量6.1*1000000(1536*(4+1)*800)少了两个数量级。如果考虑特征投影层,作者的候选框生成层的参数仍比MultiBox6的参数少一个数量级。作者希望其方法对诸如PASCAL VOC这样的小数据集具有更少的过拟合风险。

Multi-scale Anchors as Regression References

    作者设计的锚点呈现出解决多尺度(和长宽比)的一种新颖的方案。如图1所示,已经有两种流行的方法来进行多尺度预测。第一种方法是基于图像/特征金字塔,如DPM[8]和基于CNN的方法[9],[1], [2]。图像被缩放为多个尺度,(如图1(a)所示)在每个尺度上计算特征图(HOG[8]或深度卷积特征[9, 1, 2])。该方法通常有效但是耗时。第二种方法是在特征图上使用多尺度的滑窗(和/或者长宽比)。例如,在DPM[8]中,使用不同大小的滤波器(如5*7和7*5)来训练不同长宽比的模型。如果用这种方法来解决多尺度,可以认为是“滤波器金字塔”(图1(b)所示)。第二种方法通常级联在第一种方法[8]后。

    相比较而言,作者基于锚点的方法是建立在锚点金字塔上的,更加省时。作者的方法是参考多个不同尺度和长宽比的锚点框来分类和回归边界框的。它仅依赖单尺度的图像和特征图,使用单尺度的滤波器(在特征图上进行滑窗)。实验表明该方案解决多尺度和不同大小的有效性(如表8所示)。

    由于基于锚点的多尺度设计,作者可简单的使用单尺度图像生成的卷积特征,如Fast R-CNN检测算子[2]也是那样做的(使用单尺度图的卷积特征)。多尺度锚点的设计是(利用)共享特征时解决尺度问题而无需额外计算的关键部分

3.1.2 Loss Function

    训练RPN时,作者为每个anchor分配一个二分类标签(是或者不是物体)。作者为两类锚点分配正标签:(i)和物体真实的外接矩形框有最高的交并比(Intersection-over-Union)的锚点,或者(ii)锚点和任意一个真实框的IOU超过0.7。注意,一个真实框可能会分配多个锚点为正标签。通常第二个条件足够判定正样本,但仍然采用第一个条件的原因是在极少数情况下,第二个条件可能无法找到正样本。作者给非正的锚点分配一个负标签,如果它和所有真实框的IOU低于0.3。那些既不是正样本也不是负样本的锚点不参与训练。

    基于上述定义,作者将Fast R-CNN[2]中的多任务损失函数最小化。本文对一幅图像的损失函数定义如下:


    其中,i表示批处理中一个锚点的索引,Pi表示i锚点为物体的预测概率。真实标签当锚点是正样本时为1,负样本时为0。为预测边框的4个参数坐标的向量,是与正锚点相关的真实框(坐标)。分类损失是两个类(是否为物体)的对数损失函数。对于回归损失,作者使用,其中R是[2]中定义的鲁棒的损失函数(Smooth L1)。表示仅对正锚点()计算回归损失,否则则不计算,cls和res层的输出分别包括


    两个因式使用进行归一化,并通过平衡参数λ进行加权。当前实现中(Released代码),公式1中的cls因式使用最小批处理的大小进行归一化(如),reg因式使用锚点位置的数量进行归一化(如)。默认设置λ=10,这样cls和reg因式的权重大体相等。通过实验表明,结果对λ值在很大范围内不敏感(表9)。作者还注意到上述的归一化不是必须的,公式可以简化。

    对于边界框回归,作者根据[5]采用4个参数坐标:


    其中,x,y,w和h表示框的中心点坐标和其宽高。变量x,分别对应预测框,锚点框和真实框(y,w和h也一样)。这可看作是边界框从锚点框回归至附近的真实框。

    然而,本文算法实现边界框回归的方式不同于之前基于ROI的算法[1],[2]。文章[1],[2]中对任意大小的ROIs进行池化后的特征上进行边界框回归,所有区域大小共享回归权重。本文公式中,用于回归的特征是特征图上相同的空间大小。考虑到不同大小(的边界框),学习一组k个边界框回归器。每个回归器负责一个尺度和长宽比,且k个回归器不共享权重。这样,由于锚点的设计,尽管特征是固定大小/尺度,仍可能预测出不同大小的边界框。

3.1.3 Training PRNs

    RPN可以通过反向传播和随即梯度下降(SGD)[35]进行端到端的训练。作者根据[2]中图像为中心的采样策略来训练网络。每个批大小来自于包含正负锚点样本的单一图像。对所有锚点的损失函数进行优化是可能的,但由于负样本占据多数,优化将会偏向负样本。(因此)改为从一幅图像中随机采样256个锚点来计算批单元的损失函数,其中正负锚点的比例为1:1。如果图像中的正样本数少于128,则用负样本进行填充(补齐)。

    作者使用均值为0,方差为0.01的高斯分布来随机初始化网络的所有新层。其他层(如共享卷积层)采用从ImageNet 分类[36]模型中预训练的参数进行初始化,这是标准做法[5]。作者调整了ZF网络和VGG网络conv3_1及其以上的所有层来节省内存[2]。使用PASCAL VOC数据集时,作者对前60k的批单元使用0.001的学习率,紧接着的20k的批单元使用0.0001。使用0.9的动量和0.0005的权重衰减[37]。作者使用Caffe代码实现。

3.2 Sharing Features for RPN and Fast R-CNN

    至此,作者已经描述了如何训练生成候选框的网络,并没有考虑基于区域进行物体检测的CNN,(而正是)CNN将使用这些候选框。对于检测网络,作者采用的是Fast R-CNN[2]。接下来作者描述学习一个由RPN和Fast R-CNN共享卷积层的统一网络的算法(图2)。

    独立训练的RPN和Fast R-CNN通过不同的方式改变它们的卷积层。因此作者需要开发允许两个网络共享卷积层的技术,而不是学习两个不同的网络。作者探讨了三种拥有共享特征网络的训练方法:

    (i)交替训练。该方案中,作者首先训练RPN,并使用候选框训练Fast R-CNN。然后,将经过Fast R-CNN改动后的网络初始化RPN,迭代进行该过程。这是本文中所有实验使用的方法。

    (ii)近似联合训练。该方案中,RPN和Fast R-CNN网络训练时融合为一个网络,如图2所示。每个SGD迭代时,前向传播产生的候选框被视为训练Fast R-CNN检测算子时固定的、预计算的候选框。反向传播照常进行,对于共享层而言,反向传播信号是RPN和Fast R-CNN损失的和。该方案易于实现。但是它忽略了同样为网络响应的关于候选框坐标的导数,因此称之为近似。实验中,通过经验发现该方案和联合训练相比,结果相近,但减少了25-50%的训练时间。该方案也包含在Released代码中。

    (iii)非近似联合训练。如上讨论的,RPN预测的框也是函数的输入。Fast R-CNN[2]中的RoI 池化层可以将卷积特征和预测的边界框作为输入,因此有效的传播方案应当包含关于框坐标的梯度。这些梯度在上述近似联合训练中被忽略。在非近似联合训练中,作者需要ROI 池化层进行关于框坐标的微分。这是个不平凡的问题,可以通过文章[15]中开发的'RoI warping'层给出解决方案,这超出了本文的范围。

4-Step Alternating Training。本文中,作者采用实用的4步训练算法通过交替优化来学习共享特征。第一步,按照3.1.3章节训练RPN。网络由ImageNet预训练模型初始化,为候选框任务进行端到端的微调;第二步,使用第一步中RPN得到的候选框单独训练Fast R-CNN检测网络。该检测网络同样有ImageNet预训练模型进行初始化。此刻,两个网络没有共享卷积层;第三步,作者使用检测网络初始化RPN的训练,但是固定共享卷积层的参数,仅微调RPN独有的网络层。此时,两个网络共享卷积层;最后,保持共享卷积层参数不变,微调Fast R-CNN独有的层。因此,两个网络共享相同的卷积层并形成统一的网络。类似的交替训练可迭代运行多次,但作者发现性能的提升微不足道。


3.3 实现细节

    作者在单尺度图像上对候选框和检测网络都进行了训练和测试[1],[2]。作者对图像进行了缩放,使其短边s=600像素[2]。多尺度特征提取(使用图像金字塔)可能提高准确性,但是没能很好地平衡速度和准确性[2]。在缩放后的图,ZF和VGG网络在最后一个卷积层的总步长为16个像素,缩放前(大约500*375分辨率的图)PASCAL典型图的步长为10个像素。即使大步长会有好的结果,但使用小步长可能进一步提高准确性。

    对于锚点来说,作者使用128*128,256*256,512*512共3个尺度框的面积和1:1,1:2, 2:1共3个长宽比。这些超参不是针对特殊的数据集选择的,下章节作者通过剥离(ablation)实验说明其影响。正如上文讨论的那样,作者的方案不需要图像金字塔或滤波器金字塔来预测多尺度的区域,节省了可观的运行时间。图3(右)展示了算法对不同尺度和长宽比(图像的检测)能力。表1表明使用ZF网络时每个锚点的平均生成大小。作者注意到其算法允许预测出比底层感受野更大的物体。这种预测不是不可能的——只有物体的中间部分可见时,仍然可以推断物体的范围。

    跨越图像边界的锚点框需要小心处理。训练时,作者忽视所有跨越边界的锚点,因此他们对损失函数没有影响。对于一个典型的1000*600的图像而言,总共大约有20000(60*40*9)个锚点。忽略跨越边界框的锚点,每张图大约有6000个锚点用于训练。如果训练时没有忽略离群的边界框,它们会在目标中产生大的、难以纠正的错误,训练将不会收敛。然而测试时,仍然对整个图像使用全卷积的RPN。这可能会产生跨越边界的框,此时(将其)裁剪至图像边界

    一些RPN产生的候选框之间高度重叠。为减少冗余,作者基于分类得分,对候选框采用非最大值抑制(NMS)处理。作者规定NMS的阈值为0.7,这样每张图留下大约2000个候选区域。正如将要展示的,NMS没有伤害最终的检测准确性,但大幅度减少了候选框的数量。NMS处理后,作者利用排名前N的候选框用于检测。后文中,作者利用2000个RPN候选框训练Fast R-CNN,但是测试时评测不同数量的候选框。

4 实验

此处省略好多字。

5 结论

    作者提出RPN用于生成高效,准确的候选框。通过和下游检测网络共享卷积,候选框步骤(时间上)几乎无成本。作者的方法使得一个统一的、基于深度学习的物体检测系统运行时几乎达到实时的帧率。学习出来的RPN也提高了候选框的质量并(提高了)整体检测的准确性。

猜你喜欢

转载自blog.csdn.net/hzhj2007/article/details/80046565