论文连接
https://arxiv.org/abs/1506.01497
相关论文翻译链接
R-CNN:https://blog.csdn.net/itlilyer/article/details/107190083
Fast R-CNN:https://blog.csdn.net/itlilyer/article/details/107764472
Mask R-CNN:https://blog.csdn.net/itlilyer/article/details/108441734
目前最先进的目标检测网络都依赖区域建议(也称候选框)算法来假设目录的位置。SPPnet和Fast RCNN网络的改进主要是减少了检测网络的运行时间,但是暴露出了 计算候选框的瓶颈 问题。在本文中,我们介绍一个候选区域网络(RPN),该网络与检测网络共享整图的卷积特征,使生成候选区域的开销几乎为0。RPN是一个完完全全的卷积网络,它同时预测每个位置的目标边界和目标得分。RPN通过端到端的训练来生成高质量的候选框,这些候选框被Fast R-CNN用来做检测。通过共享卷积特征,我们进一步将RPN和Fast R-CNN融合成了一个网络——使用最近流行的神经网络术语“注意力”机制,RPN模块告诉融合后的检测网络要看向哪里。对于非常深的VGG16模型[3],我们在一个GPU上的检测帧率为5fps(包含所有的步骤),而且每张图片300个候选框可以在PASCAL VOC 2007,2012和MS COCO数据集上取得了最高的目标检测精度。在ILSVRC和COCO 2015竞赛中,Faster R-CNN和RPN是在多个赛道中获得第一名的作品的基础。代码已公开可获取。https://github.com/ShaoqingRen/faster_rcnn
区域建议方法和基于区域的卷积神经网络(R-CNN)的成功应用推动了目标检测的最新进展。虽然的最初在[5]中提出的基于区域的CNN网络最初版本计算代价昂贵,但是得益于候选框之间共享卷积[1][2]使计算开销已大大降低。该方式的最新代表作,Fast R-CNN使用非常深的网络几乎达到了实时检测速率,当然需要忽略掉生成候选框所占用的时间。 现在生成候选框已经成了最新检测系统中测试阶段的计算瓶颈。
区域推荐方法通常依赖计算开销少的特征和经济的推理方案(个人理解:这里指候选框多的时候要能够用最小的开销获取对应的特征值,经济性应该是不会在占用硬盘空间吧)。选择性搜索(Selective Search)[4],最受欢迎的候选框生成方法之一,基于人工设计的低级别特征通过贪婪方式合并超级像素来生成候选框。但是与高效的检测网络[2]相比,选择性搜索慢了一个数量级,在一个CPU上处理一张图片需要2秒。EdgeBoxes[6]提供了目前候选框质量和速度最好的折中方案,0.2秒处理一张图片。然而,生成候选框的步骤仍然花费了与检测网络相同的时间。
我们应该注意到了,基于区域的CNN网络运行在GPU上,但是生成候选框却在CPU上实现,使得这样比较运行时间会不公平。很明显,一个加快生成候选框计算的方法就是在GPU上重新实现。这可能是一种有效的设计方案,但是重新实现忽略了下游的检测网络,因而也错过了共享计算的重要机会。
在本文中我们展示一个算法上的变化——使用深度卷积神经网络来生成候选框——根据新的算法可以设计出优雅而且高效的解决方案,候选框的计算几乎不会为检测网络添加额外的开销。为此,我们引入了新颖的区域建议网络(RPNs),与最新的目标检测网络[1][2]共享卷积层。通过在测试阶段共享卷积,计算候选框的边际成本非常小(差不多10ms一张图片。)
边际成本指的是每一单位新增生产的产品(或者购买的产品)带来的总成本的增量。 这个概念表明每一单位的产品的成本与总产品量有关。这里指的添加RPN网络后对整个检测网络的影响。
据我们的观察,像Fast R-CNN这种基于区域的检测器使用的卷积特征图,同样可以用来生成候选框。在这些卷积特征的基础上,我们创建了一个RPN网络,是由额外的几个卷基层构成并且可以同时为网格的每一个位置同时进行区域边框回归和目标打分。(这里的网格是不是指讲原始的图片进行分割出来的??继续往下读)。RPN是一种完完全全的卷积网络(FCN:fully convolutional network),可以针对生成检测候选框进行端到端的训练(个人理解:RPN是卷积网络,将其与之前的检测网络融合到一起,可以进行端到端的训练)。
FPN旨在高效的预测不同尺度和纵横比的候选框。与当前流行的使用图像金字塔(图1,a)和滤波器金字塔(图1,b,用来提取特征值)的方法相比,我们引入了一个新概念**"锚定"框(anchor box)作为多种尺度和纵横比的参照物**。我们的方案可以认为是参照物的回归金字塔(图1,c),这样可以避免将不同尺度和纵横比的图像和滤波器都枚举出来。该模型在使用单尺度图片进行训练和测试时表现良好,单尺度同样有利于加快运行速度。
为了将RPN和目标检测网络Fast R-CNN整合到一起,我们提出了一个训练方案,该方案对生成候选框任务和目标检测任务交替进行微调(fine tuning),任务交替但是候选框保持不变。该方案收敛快并且创造了一个融合的网络,两个任务可以共享卷积特征。(个人理解:训练时使用一组候选框分别对生成候选框和目标检测进行微调,然后换下一组)
我们使用PASCAL VOC检测基准对我们的方法进行了全面的评估,结果显示RPN + Fast R-CNN的检测精度比选择性搜索+faste R-CNN的精度更好。同时,我们的方法几乎消除了选择性搜索(下面开始简称SS)给测试阶段带来的计算负担——生成候选框的有效运行时长仅为10ms。使用计算开销很大的非常深的模型[3],我们的方法在一个GPU的帧率仍然可以达到5fps(包含所有步骤),因此该模型从精度和性能上看都是可以实际应用的目标检测系统。我们同样发布了在MS COCO数据集[12]上的结果,并研究了使用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],图像字幕[16]。我们的检测系统快速有效,并且已经集成到商业系统中,例如Printrests,据说客户的参与度得到了提升。
在ILSVRC和COCO 2015竞赛中,Faster R-CNN和RPN的组合是ImageNet检测、ImageNet定位、COCO检测、COCO分割等几个项目第一名的基础。RPN完全是通过学习从数据中提取候选区域,因此可以更容易的从更深的网络和更有表达力的特征中受益 (例如[18]中采用的101层的残差网络)。Faster R-CNN和RPN也被其他一些领先的参赛者所使用。这些结果表明,该方法不仅在实际应用中是一种经济有效的解决方案,而且是提高目标检测精度的有效途径。
目标建议。 有大量的生成目标建议方法(生成候选框)的资料。 [19], [20], [21]中是对这些方法的全面的介绍和比较。广泛应用的目标建议方法包括基于超像素分组(例如,选择性搜索[4]、CPMC[22]、MCG[23])和基于滑动窗口(例如,窗口的物体性 objectness in window[24]、EdgeBoxes[6])。目标建议方法通常作为独立于检测器的外部模块来应用(例如,使用选择性搜索的目标检测、RCNN、Fast RCNN)。
目标检测中使用的深度网络。 R-CNN通过端到端的训练CNN实现将候选框分为目标类别和背景。R-CNN主要功能是一个分类器,不能够预测目标的边框(除非使用边框回归进行优化)。它的精度取决于生成候选框模块的性能,能够选出优质的候选框(参考[20]中的对比)。一些论文中提出了使用深度网络来预测物体边框的一些方法[25][9][26][27]。在OverFeat方法中[9],训练一个全连接层来为只有一个目标(假定只有一个)的定位任务预测框的坐标。随后该全连接层替换为卷积层来检测多类别的目标。MultiBox多框方法[26][27]使用网络来构造候选框,该网络最后的全连接层同时预测多个不知类别的框,扩展了OverFeat的"单框"模式的应用。这些不同类别的框等同于R-CNN[5]中的候选框。与我们的全卷积方案不同,MultiBox应用在单张图片的裁剪或者对一张大图片进行多次裁剪(例如,224x224)。MultiBox方法的候选框与检测网络之间并不共享特征。我们将在后面介绍我们的方法的上下文中更深入的讨论OverFeat和MultiBox。在我们开展工作的同时,开发出了DeepMask方法用于候选框的分割学习。
卷积共享计算以其高效准确的视觉识别得到了越来越多的关注。在OverFeat论文中[9]会计算图像金字塔的卷积特征进行分类、定位和检测。基于共享卷积特征图的自适应大小池化(SPP)[1]用于基于区域的目标检测[1][30]和语义分割[29]。Fast R-CNN[2]实现了使用共享特征完成端到端训练,并且展示了令人信服的精度和速度。
我们的目标检测系统——Faster R-CNN,由两个模块组成:第一个模块是深度卷积网络,用来生成候选框;第二个模块是Fast R-CNN检测器[2],使用候选框实现检测。整个系统是单一并且是统一的目标检测网络(图2)(一句话:从头到尾是一个整体)。用最近流行的神经网络术语"注意力"机制来说,RPN模块告诉Fast R-CNN要往图片的哪里看。在3.1章节我们讲介绍生成候选框网络的设计的特性。在3.2章节我们开发了使用共享特征训练两个模块的算法。
Region Proposal Network(RPN)接收一张任意大小的图片作为输入,输出一组矩形候选框,每个候选框还有一个目标得分。我们使用一个全是卷积的网络对该过程进行抽象建模,也是本章节将要讲的。因为我们的最终目标是RPN与Fast R-CNN检测网络共享计算,我们假设两个网络共享一组卷积层。在实验中,我们研究了拥有5个共享卷积层的Zeiler and Fergus模型[32](ZF)和拥有13个共享卷基层的Simonyan and Zisserman模型[3] (VGG6)。
为了生成候选框,我们在最后一个共享卷基层的输出特征图上加了一个小的滑动网络。(好好理解一下这里生成proposal的过程)这个小网络将输入的卷积特征图中的一个nxn的空间窗口作为输入(个人理解:就是滑动遍历最后一个特征图,每次读取大小为nxn)。每一个滑动窗口都映射到一个低纬度的特征(ZF:256d,VGG:512d,后面接一个ReLU[33])。然后将该特征输入到两个滑动的全连接层——一个边框回归层(reg)和一个分类层(cls)。在本文中我们取n=3,可以看到在输入图片上的有效感受野很大(ZF:171像素,VGG:228像素)。这个迷你网络在图三左侧进行了单独的描述。注意迷你网络是通过滑动窗口的方式来运行,全连接层在所以空间位置上共享。很自然的该架构有一个nxn的卷积层后面跟着两个并行的1x1的卷积层(分别对应reg和cls)。(个人理解:这段的意思主要是将通过卷积生成的特征图传给一个小的网络进行滑动遍历,得到一个低纬度的特征,然后讲得到的低纬度特征创给回归和分类两个分支进行处理)
在每个滑动窗口位置,我们同时预测多个候选框,每个位置候选框的最大个数用k表示。因此,reg有4k个输出对应到k个框,cls有2k个得分用来评估每个候选框是不是目标的可能性(为了实现简单我们使用二分类的softmax层,或者使用sigmode获得k个得分)。这k个候选框是对k个参考框(我们成为锚点)的参数化。锚点位于现在讨论的滑动窗口的中心,每个锚点都有几种尺度和纵横比(图三左侧)。默认情况下我们使用三种尺度和三种纵横比,每一个滑动位置会产生9个锚点。对于一个大小为WxH(通常~2400)的卷积特征图,总共会有WxHxk个锚点。
锚点的平移不变性(Translation-Invariant Anchors)
我们的方法一个很重要的特性是它的平移不变性,无论是锚点还是计算锚点对应候选框的计算函数都具有该特性。如果平移一个图片中的物体,那么候选框也应该会平移,使用同一个函数同样应该可以预测两个位置的候选框。我们的方法保证了这种平移不变性(与FCN[7]情况一样,我们的网络可以满足所有步长的平移不变性)。作为比较,MultiBox方法使用k-means来生成800个锚点,并且这些锚点不具有平移不变性。所以MultiBox不能保证图片中的物体平移后还能够得到相同的候选框。
平移不变性还可以减小模型的大小。MultiBox方法的全连接输出层输出是一个(4 + 1) × 800维,而我们的方法当取k=9个锚点时卷基层输出的是(4 + 2) × 9维。因此我们的输出层有2.8 × 104个参数(VGG16:512 × (4 + 2) × 9),比MultiBox输出层的参数数量少了两个数量级,MultiBox的输出层有6.1 × 106个参数(GoogleNet:1536 × (4 + 1) × 800)。如果把特征映射层也考虑在内,我们生成候选框所用的参数仍然比MultiBox少一个数量级。我们期望我们的方法在小数据集例如PASCAL VOC上有更小的过拟合风险。
多尺度锚点作为回归参考(Multi-Scale Anchors as Regression References)
我们的锚点设计为解决多尺度(和纵横比)提出新的方案。就像图1中展示的,现在已经有两种多尺度预测的流行方法。第一种方法基于图片/特征金字塔,例如:DPM [8] 和基于CNN的方法 [9] [1] [2]。图片按照多种尺度被缩放,然后为每个尺度(图1 a)分别计算特征(HOG[8] or 深度卷积网络 [9] [1] [2])。该方法经常使用,但是比较耗时。第二种方法是在特征图上使用多种尺度的滑动窗口(和/或纵横比)。 例如,在DPM[8]中,不同纵横比的模型分别使用不同的滤波器来训练(例如5x7和7x5)。如果用这种方式实现多尺度的话,可以把它看做是“过滤器金字塔”(图1b)。第二种方法通常和第一种方法联合使用[8]。
作为比较,我们基于锚点的方法基于锚点金字塔实现,该方法的效率更高。我们的方法对以多种尺度和纵横比锚点为参考的框进行分类和边框回归(个人理解:这里指一个锚点可能对应多个不同尺度和纵横比的候选框)。它只依赖图片和一个尺度的特征值,和一种大小的滤波器(特征值上的活动窗口)。我们通过实验展示了这种方案对解决多尺度和多尺度问题的效果(表8)。
由于这种基于锚的多尺度设计,我们可以简单地使用在单尺度图像上计算的卷积特征,Fast R-CNN检测器也是这样做的[2]。多尺度锚点的设计是共享特征来解决多尺度问题而且不增加额外成本的关键。
为了训练RPN,我们为每一个锚点(anchor)分配一个二分类的标签(区分是不是一个物体)。我们为两类锚点(anchor)分配正标签(也就是正样本):(i)与标注框(ground-true box)有最大的交并比(Intersection-over-Union IoU)的锚点;(ii)与标注框的IoU大于0.7的锚点。(疑问:计算IoU应该是根据锚点生成的候选框吧,anchor只是窗口的中心点,要怎么计算??)。注意,一个标注框可能会为多个锚点分配正标签。通常第二个条件就足以决定哪些是正样本;我们仍然采用第一个条件是因为在极少数的情况下,第二个条件可能找不到正样本。如果一个锚点(anchor)与所有的标注框的IoU都小于0.3,就给该无正样本锚点分配负标签。既不是正标签也不是负标签的锚点对于训练没有任何作用。(注意划分正负样本的方法)
有了这些定义,我们根据Fast R-CNN的多任务损失函数定义了我们要最小化的目标函数。我们针对一张图片的损失函数计算方法如下:
这里,i指的是一个小批量数据中一个anchor的下标,pi是该anchor是一个目标的概率。如果anchor分配的是正标签则标注框标签p*i值为1,否则p*i值为0。ti是预测边框的四个值组成的vector,t*i是标签为正的anchor对应标注框。分类损失函数Lcls是一个二分类的log损失函数(是or不是物体)。回归的损失函数,我们使用Lreg(ti, t*i) = R(ti − t*i),其中R是鲁棒的损失函数(smooth L1)在[2]中定义。多项式p*iLreg的含义是回归的loss只有对标签为正的anchor(p*i = 1)起作用,其他情况(p*i = 0)是不起作用的。cls和reg层的输出分别包含{pi}和{ti}。(个人理解:cls的返回值是不同分类的概率,reg的返回值是预测坐标)
这两个多项式分别使用Ncls和Nreg进行归一化,并且使用平衡参数λ进行加权控制。在我们当前的实现中(与发布的代码一样),公式1中的cls多项式使用小批量数据集的大小(即,Ncls = 256)进行归一化,reg多项式使用anchor位置数量(即,Nreg ∼ 2, 400)进行归一化。默认情况下我们取λ = 10,因此cls和reg的权重大致相等。我们通过实验表明,结果对λ在一个大范围内的取值不敏感(表9)。我们还注意到上面降到的归一化并不是必须的,可以进行简化。
对于边框回归,我们将4个坐标进行参数化[5],如下:
这里,x,y,w,h分别表示了框的中心点坐标和它的宽和高。变量x,xa,x*分别表示预测框、锚点框、标注框的值(y,w,h也类似)。这个可以看做是一个锚点框到标注框的边框回归。
但是,我们边框回归的实现方法与前面基于RoI(Region of Interest)方法[1][2]不同。在[1][2]中,边框回归是对任意大小的RoI池化后的特征上执行的,并且回归的权重是不同大小的区域共享的。在我们的公式中,回归用的是特征图上空间大小相同(3x3)的特征值。(这里还没理解透)。考虑到大小的变化,我们训练了k个边框回归。每一个回归对应一个尺度和一个纵横比,这k个回归并不共享权重。因此,由于anchor的设计,即使特征值是固定大小/尺度,仍然可以预测不同大小的框。
RPN网络可以通过反向传播和随机梯度下降(SGD)进行端到端的训练[35]。我们遵循[2]中"以图片为中心"的采样策略来训练该网络。每一个小批量数据都来自同一张图片,该图片包含很多的正样本anchor和负样本anchor。可以对所有anchor的损失函数进行优化,但是结果会偏向负样本,因为负样本的数量占多数。取而代之的是,我们从一张图片中随机抽样256个anchor来计算一个小批量数据的loss值,这里选取的正样本和负样本的比例为1:1。如果一张图片中正样本的数量少于128个,则用负样本来补充。
我们使用均值为0、标准差为0.01的高斯分布来随机初始化所有新层的权重。所有的其他层(即共享卷基层)通过使用ImageNet分类进行预训练的模型进行初始化,这也是通常的做法[5]。我们调整ZF的所有层和VGG中conv3_1及以上的层来节约内存[2]。我们在PASCAL VOC数据集上使用0.001的学习率训练了钱6万个batch,然后使用0.0001训练了后面的2万个batch。我们使用的momentum为0.9,weight decay为0.0005[37]。我们使用Caffe来实现[38]。
到目前为止,我们描述了怎么训练一个生成候选框的网络,不考虑后面使用这些候选框的基于区域目标检测的CNN网络。对于检测网络,我们使用Fast R-CNN[2]。下面我们将介绍由RPN和Fast R-CNN组成的统一网络的训练算法,RPN和Fast R-CNN是共享卷基层的(图2)。
RPN和Fast R-CNN都是分别进行训练的,并且以不同的方式来修改他们的卷积层。因此,我们需要开发一种技术可以使两个网络共享卷基层,而不是学习两个独立的网络。我们讨论了三种使用共享特征来训练网络的方法:
(i)交替训练。在该解决方案中,我们首先训练RPN,然后使用RPN创建的候选框训练Fast R-CNN。然后再使用Fast R-CNN修改后的网络来初始化RPN,这个过程是迭代进行的。本文中的所有实验都是用的该方案。
(ii)近似联合训练。在该解决方案中,RPN和Fast R-CNN网络会在训练时合并为一个网络,如图2所示。在每一个SGD的迭代中,前向传播生成候选框,这些候选框在训练Fast R-CNN检测器的时候可以认为是固定的、已计算好的。反向传播照常执行,共享卷基层要将从RPN loss和Fast R-CNN loss获得的反向传播信号组合在一起。该方案很容易实现。但是该方案忽略了候选框坐标的导数,候选框坐标也是网络的响应,因此说它是近似的。通过实验我们发现该方案可以获得与交替训练接近的结果,而且训练时间减少了25%-50%。我们发布的Python代码中已包含了该方案。(总起来说就是得到的结果不比交替训练差,还能节省很多时间)
(iii)非近似联合训练。就像上面探讨的,RPN预测的边框也是输入的函数(有点拗口啊)。Fast R-CNN中的RoI池化层[2]接收卷积特征值和预测框作为输入,因此一个理论上有效的反向传播方法应该包含预测框坐标的梯度。这是一个很重要的问题,可以通过[15]中给出的"RoI Warping"层来解决,这已经超出了本文的范围。
4步交替训练。本文中,我们采用了一种实用的4步四步训练算法通过交替优化来学习共享特征。第一步,如3.1.3章节描述的方法来训练RPN网络。RPN网络使用ImageNet预训练的模型进行初始化,然后针对生成候选框任务进行端到端的微调。第二步,我们使用第一步RPN生成的候选框,由Fast RCNN训练一个单独的检测网络。该检测网络也是通过使用ImageNet预训练的模型进行初始化。此时,两个网络还不共享卷积层。第三步,我们使用检测网络来初始化RPN的训练,但是我们固定了共享的卷积层,只微调RPN独有的层。这时两个网络共享卷积层。最后,固定共享的卷积层,对Fast R-CNN网络独有的层进行微调。这样,两个网络共享卷积层并形成了统一的网络。像这样的交替训练可以运行更多的迭代,但是我们发现只有微不足道的提升。
我们使用一种尺度的图片来训练和测试候选区域网络(RPN)和检测网络(Fast R-CNN)[1][2]。我们对图片进行缩放,使图片的短边s=600像素[2]。提取多种尺度的特征(使用图像金字塔)可能提升精度但是不能够很好的平衡速度和精度。在缩放后的图片上,ZF和VGG网络的最后一个卷基层的总步长是16像素,在典型的PASCAL 图像调整大小(~500x375)之前步长为~10像素。即使这么大的步长可以得到比较好的结果,但是更小的步长可以使精度得到进一步的提升。
对于锚点,我们使用三种尺度的框,面积分别是1282、2562、5122像素,和三种长宽比:1:1、1:2、2:1。这些超参数并不是为特定的数据集精心选择的,我们将在下一节中对它们的影响进行消融实验。如前所述,我们的方案不需要图像金字塔或滤波器金字塔来预测多尺度的区域,这样可以节省大量的运行时间。图片三(右侧)展示了我们的方法处理各种尺度和纵横比的能力。表1中展示了使用ZF网络学习到的每个锚点的候选框的平均大小。我们注意到,我们的算法可以实现比基础感受野更大的预测。这样的预测并非不可能——如果只看到物体的中间,人们仍然可以预测出该物体的大概范围。
超出图片边界的锚点框需要小心的处理。在训练过程中,我们忽略了所有超出边界的锚点,这样他们就不会对loss有任何的影响。对于一张典型的1000x600的图片,总共大约有20000(≈ 60 × 40 × 9,这个怎么算的呢??)个锚点。忽略掉超出边界的锚点后,每张图片大约有6000个锚点进行训练。如果训练中不排除超出边界的锚点,这会在目标中引入大而且很难校正的错误项,并且训练也不会收敛。但是,在测试阶段我们仍然对整张图片进行全卷积的RPN操作。这样可能会生成超出边界的候选框,我们将这些候选框进行裁剪,只保留图片范围内的区域。
一些RPN的候选框之间高度重叠。为了减少冗余,我们基于候选框的cls得分执行非极大值抑制(NMS)。我们将NMS的IoU的阈值设置为0.7,这样每张图片还剩下大约2000个候选框。下面我们将会展示,NMS对最终的检测精度没有影响,但是却大大的减少了候选框的数量。在NMS之后,我们使用排名前N的候选框进行检测,随后我们使用2000个RPN的候选框来训练Fast R-CNN,但是在测试时使用不同数据的候选框。
我们在PASCAL VOC 2007检测基准上对我们的方法进行了综合评估[11]。该数据集由20个对象类别的大约5k个训练图像和5k个测试图像组成。我们还提供了一些模型基于PASCAL VOC 2012基准的测试结果。至于预训练的ImageNet网络,我们使用“快速”版本的ZF网络,该网络包含5个卷积层和3个全连接层;公开版本的VGG16模型有13个卷积层和3个全连接层。我们主要评估检测的平均精度(mAP),因为这是目标检测的实际标准(而不是关注候选目标代理指标)。
表2(上面)展示了Fast R-CNN使用不同生成候选框方法的训练和测试结果。这些结果都是使用ZF网络。对于Selective Search(SS)[4]方法,我们使用“fast”模式生成大约2000个候选框。对于EdgeBoxes(EB)[6],我们使用EB的默认配置并将IoU调整为0.7来生成候选框。在Fast R-CNN上SS的mAP为58.7%,EB的mAP为58.6%。RPN + Fast R-CNN取得了更好的结果,在最多使用300个候选框(RPN中候选框的数量指的是每张图片的最大数量即300个。但是执行NMS后RPN生成的候选框数量会更少,因此平均数据会更小一些)的情况下mAP达到了59.9%。由于共享卷积计算,使用RPN比使用SS和EB的检测系统更快,更少的候选框也减少了区域方面的全连接计算成本(表5)。
一句话:RPN比SS和EB更快更准,就是好就是好就是好
RPN上的消融实验。 为了研究RPN作为生成候选框方法的行为,我们进行了几项消融实验。第一,我们展示RPN和Fast R-CNN检测网络共享卷积层的影响。为了达到该目的,我们只进行了4步训练的前两步。使用分开的网络使结果略微的下降到了58.7%(RPN+ZF,unshared,表2)。我们发现,出现这种情况的原因是在第三步中检测网络修改了特征值可以用来对RPN进行微调,这样使候选框的质量得到了提高。总结一下:共享卷积使两个网络相互影响,提升了候选框质量
下一个,我们分析一下RPN对训练Fast R-CNN检测网络的影响。为了达到目的,我们使用2000个SS候选框和ZF网络来训练Fast R-CNN。在测试阶段我们将检测器固定,替换候选区域。在该实验中,RPN与检测器不共享特征值。
在测试时用300个RPN生成的候选框替换SS候选框取得的mAP为56.8%。mAP下降的原因是训练和测试的候选框的不一致。这个结果将作为下面比较的基线。
让人有些吃惊的是,在测试时使用排名前100的候选框仍然可以得到一个不错的结果(55.1%),这说明排在前面的RPN候选框是比较准确的。另一个极端实验,使用排名前6000的RPN候选框(不使用NMS),得到一个差不多的mAP(55.2%)。这说明NMS并不会损害精度,并且可以减少误报。
接下来,我们分别研究了RPN的cls和reg两个输出分别承担的角色,通过在测试阶段关闭其中一个来实现。将测试阶段中cls移除以后(这样就不使用NMS和排名了),我们从未排序的区域中随机算账N个作为候选框。当N取1000时,mAP几乎没有变化(55.8%),但是当N取100时mAP下降到44.6%。这说明cls的得分可以用来准确指示排名最高的候选框。
另一方面,当在测试阶段讲reg层移除后(这样候选框就是锚点框),mAP掉到了52.1%。这说明高质量的候选框主要以来回归后的框边界。锚点框(anchor box)虽然有多种尺度和纵横比,但是对于检测精度还是不够的。
我们还评估了更强大的网络对RPN候选框质量的影响。我们使用VGG16来训练RPN,仍然商用SS+ZF的检测器,mAP从56.8%(使用RPN+ZF)提升到了59.2%(使用RPN+VGG)。这是一个令人鼓舞的结果,因为这说明RPN+VGG生成的候选框质量要比RPN+ZF的要高。由于RPN+ZF的方案与SS相比具有竞争性(在训练和测试时保持一致,两者均为58.7%),我们预计RPN+VGG将优于SS。下面的实验证明了这个假设的正确性。
VGG16的性能。表3中展示了使用VGG时的候选框和检测的结果。使用RPN+VGG,在不共享特征的时候结果是68.5%,稍微比SS基线高一点。就上上面说的,这是因为RPN+VGG生成的候选框比SS的更准确(应该是回归后的位置)。与SS不同,SS是预先定义好的,而RPN是可以动态训练并且可以从更好的网络中获益。对于特征共享的版本,结果是69.9%——比强大的SS基线表现更好,而且生成候选框几乎没有计算成本。我们进一步使用PASCAL VOC 2007 trainval和2012 trainval的合集来训练RPN和检测网络。得到的mAP为73.2%。图5中展示了在PASCAL VOC 2007测试集上的一些结果。在PASCAL VOC2012测试集上(表4),我们的方法可以得到mAP为70.4%,模型是使用VOC 2007 trainval+test 和 VOC 2012 trainval的合集进行训练的。表6和表7展示了一些细节的数据。
在表5中我们汇总了整个目标检测系统的运行时间。SS根据内容需要1-2秒(平均约1.5秒),Fast R-CNN + VGG16在使用2000个SS候选框时使用320ms(如果在全连接层使用SVD则花费223ms)(SVD:奇异值分解)。我们使用VGG的系统生成候选框和检测总共需要198ms。由于卷积特征值共享,RPN只需要单独花费10ms来计算额外的添加的层。我们区域维度的计算也更低,这要归功与更少的候选框(每张图片300张)。我们的系统使用ZF网络的帧率为17fps。
对超参数的敏感性。 在表8中我们探讨了不同anchor的设置。默认情况下我们使用三种尺度和三种纵横比(在表8中mAP为69.9%)。如果每一个位置只用一个anchor,则mAP会下降3-4%。如果使用三种尺度(一种纵横比)或者三种纵横比(一种尺度)mAP都会得到提升,证明使用多种尺寸的anchor作为回归参考是一种有效的解决方案。在该数据集上使用三种尺度一种纵横比(69.8%)与三种尺度三种纵横比得到了一样好的结果,这说明尺度和纵横比对于检测精度来说是不可分离的。 但是我们仍然在设计中采用这两个维度,以保持系统的灵活性。
在表9中,我们比较了等式1中λ取不同值的情况。默认情况下,我们取λ= 10,这使等式1中的两项在归一化后具有大致相等的加权。表9表明,当λ在大约两个数量级(1到100)的范围内时,我们的结果仅受到很小的影响(约1%)。 这表明结果对λ的一个很大范围的取值都不敏感。
Recall-to-IoU分析。接下来我们计算真值框在不同IoU比率下候选框的召回率。值得注意的是Recall-to-IoU指标与最终的检测精度之间只是松散的关系[19][20][21]。使用该指标来诊断候选框生成方法比评估更合适一些。(个人理解:这里诊断应该是用来找出生成候选框中的问题)
在图4中,我们展示了使用300,1000,2000个候选框的结果。我们与SS和EB进行了比较,N个候选框是选取的基于这些方法产生的置信度排名前N的候选框。这些图表明,当候选框的数量从2000降到300时,RPN表现的更好。就像我们之前分析的,这个特点主要归功于RPN中的cls。当候选框减少时SS和EB的召回率比RPN下降的更快。
一阶段检测 VS 两阶段候选生成 + 检测。 在OverFeat的论文[9]中提出了一个检测方法,在对卷积的特征图上的滑动窗口进行回归和分类。OverFeat是一阶段的,特定类别的检测流水线;而我们的方法是二阶段瀑布式的,由特定类别的候选框和特定类别的检测组成。在OverFeat中,区域特征是通过在一个尺度金字塔(就是包含多种尺度的)上执行滑动窗口来获得的。这些特征同时确定对象的位置和类别。在RPN中,特征来自于正方形(3x3)的滑动窗口,然后预测相对于anchor的不同尺度和长宽比的候选框。虽然两个方法都使用滑动窗口,生成候选框的任务只是Faster R-CNN的第一阶段——下游的Fast R-CNN检测器只关注候选框并对候选框进行筛选。在我们瀑布流程的第二阶段,区域特征是通过对候选框的自适应池化获得的,这些候选框能够更好的覆盖区域特征。我们相信这些特征能够带来更高的检测精度。
为了比较一阶段和两阶段的检测系统,我们使用一阶段的Fast R-CNN模拟了OverFeat系统(从而也规避了其他执行细节上的差异)。在该系统中,使用三种尺度(128,256,512)和三种纵横比(1:1,1:2,2:1)的密集滑动窗口来模拟"候选框"。Fast R-CNN通过训练来预测这些滑动窗口属于指定类别的得分和边框回归的位置。因为在OverFeat中使用了图像金字塔,我们同样提取五种尺度的卷积特征进行评估。我们使用这五种尺度的方式与[1][2]中一样。
表10中比较了两阶段系统和两个一阶段系统的变体。使用ZF模型,一阶段系统的mAP为53.9%。这比两阶段系统(58.7%)低了4.8%。该实验证明了候选区域算法+目标检测这种级联系统的有效性。在论文[2][39]中发表了类似的发现,他们使用滑动窗口来替代生成候选框的SS,都导致了6%的精度下降。我们也注意到一阶段系统由于需要处理大量的候选框导致运行也会慢一些。
我们给出了在Microsoft COCO数据集上的更多结果[12]。该数据集包含80种类别的物体。我们使用训练即的80000张图片、验证集的40000张图片、和测试集的20000张图片进行实验。我们评估了IoU∈ [0.5 : 0.05 : 0.95]的平均mAP(COCO的标准指标,可以简写为mAP@[.5, .95])和[email protected](PASCAL VOC的指标)。
我们的系统为这个数据集做了一些小的改动。我们在8GPU的设备上训练我们的模型,小批量数据的大小RPN取8(每个GPU 1个),Fast R-CNN取16(每个GPU 2个)。RPN和Fast R-CNN都用0.003的学习率训练了240k个迭代,0.0003的学习率训练了80K个迭代。我们修改了学习率(起始学习率由0.001修改为0.003)是因为小批量数据的大小变化了。对于锚点,我们使用三种纵横比和四种尺度(添加了642),主要目的是处理该数据集中的小目标。另外,Fast R-CNN阶段的负样本定义与真值框的IoU由[1][2]中的[0.1, 0.5)替换为了[0, 0.5)。我们注意到,在SPPnet系统中[1],[0.1, 0.5)的负样本用来进行网络微调,但是[0, 0.5)的负样本在SVM中作为困难负样本使用。但是Fast R-CNN网络[2]放弃了SVM,所以[0, 0.1)样本永远不会被使用。将[0, 0.1)的负样本包含进去以后提升了Fast R-CNN和Faster R-CNN在COCO数据集上的[email protected]精度(但对PASCAL VOC的影响可以忽略不计)。
剩下的实现细节与PASCAL VOC上的一致。特别是,我们继续使用300个候选框和单一尺度(s = 600)进行测试。在COCO数据集上的测试时间依然是200ms一张图片。
在表11中我们第一次发布了使用本文中实现的Fast R-CNN系统[2]的结果。我们的Fast R-CNN在测试集上的基线是39.3% [email protected],比[2]中发布的高。我们推测造成这种差距的主要原因是负样本的定义不同以及小批量数据大小的变化。我们还注意到mAP@[.5,.95]是差不多的。
接下来评估了我们的Faster R-CNN系统。使用COCO训练集来训练,Faster R-CNN在COCO测试集上达到了42.1% [email protected] 和 21.5% mAP@[.5, .95]的精度。这比相同约束下Fast R-CNN的[email protected]和mAP@[.5, .95]分别高了 2.8%和2.2%(表11)。这表明RPN在更高的IoU阈值的情况下对提升定位的精度表现出色。使用COCO的trainval数据集进行训练,Faster R-CNN在COCO的测试集上可以达到42.7% [email protected]和21.9% mAP@[.5, .95]的精度。图6中显示了在COCO测试集上的一些结果。
Fast R-CNN在ILSVRC和COCO2015上的比较,我们已经证明Faster R-CNN从更好的特征值受益更多,这归功于RPN完全是通过神经网络学习来生成候选框。即使当深度增加到100层以上时,该发现仍然有效[18]。仅仅使用101层的残差网络(ResNet-101) [18]替换VGG16,Faster R-CNN在COCO val数据集上的mAP从41.5%/21.2% (VGG-16)提升到了48.4%/27.2% (ResNet-101)。把其他一些改进叠加到Faster R-CNN上,He等人[18]在COCO测试开发集上获得了55.7%/34.9%的单模型结果和59.0%/37.4%的集成结果,这也获得了COCO 2015目标检测竞赛的第一名。相同的系统[18]同时也获得了ILSVRC 2015目标检测竞赛第一名,超过了第二名8.5%。RPN也是ILSVRC 2015定位和COCO 2015分割比赛中第一名获奖作品的组成部分,详情请参见[18]和[15]。
大规模数据对于提升深度神经网络具有重要意义。接下来,我们研究MS COCO数据集如何帮助提高PASCAL VOC的检测性能。
我们直接使用COCO的检测模型在PASCAL VOC上进行评估,没有使用PASCAL VOC数据进行任何的微调,将该数据作为基线。这也评估是可行的,因为COCO数据集的物体类别是PASCAL VOC的一个超集。那些COCO特有的类别会在实验中被忽略掉,softmax层也只对PASCAL VOC的20个种类和背景框有效。在PASCAL VOC 2007测试集上,此设置下的mAP为76.1%(表12)。尽管训练没有利用PASCAL VOC数据,但这一结果比VOC07+12训练的结果(73.2%)要好得多。
接下来我们使用VOC数据集对COCO检测模型进行了微调。在该实验中,COCO模型替代了ImageNet预训练模型(用于初始化网络权重),并根据3.2节的叙述对Faster R-CNN系统进行了微调。这样的操作使在PASCAL VOC 2007测试集上的mAP达到了78.8%。COCO数据集中的额外数据使mAP提升了5.6%。表6显示,用COCO+VOC训练的模型在PASCAL VOC 2007上的每个类别都能取得最好的AP。在PASCAL VOC 2012测试集(表12和表7)上也观察到了类似的提升。我们注意到,在测试阶段获得这么好的结果的速度仍然是每幅图像200ms左右。
我们展示了RPN可以快速且准确的生成候选区域。通过与下游的检测网络共享卷积特征,生成候选区域步骤几乎没有计算成本。我们的方法使一个统一的、基于深度学习的目标检测网络以接近实时的帧率运行的检测系统成为可能。通过训练得到的RPN还提高了候选框的质量,从而提高了整体目标检测精度。
[1] K. He, X. Zhang, S. Ren, and J. Sun, “Spatial pyramid pooling in deep convolutional networks for visual recognition,” in European Conference on Computer Vision (ECCV), 2014.
[2] R. Girshick, “Fast R-CNN,” in IEEE International Conference on Computer Vision (ICCV), 2015.
[3] K. Simonyan and A. Zisserman, “Very deep convolutional networks for large-scale image recognition,” in International Conference on Learning Representations (ICLR), 2015.
[4] J. R. Uijlings, K. E. van de Sande, T. Gevers, and A. W. Smeulders, “Selective search for object recognition,” International
Journal of Computer Vision (IJCV), 2013.
[5] R. Girshick, J. Donahue, T. Darrell, and J. Malik, “Rich feature hierarchies for accurate object detection and semantic segmentation,” in IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2014.
[6] C. L. Zitnick and P. Dollár, “Edge boxes: Locating object proposals from edges,” in European Conference on Computer Vision(ECCV),2014.
[7] J. Long, E. Shelhamer, and T. Darrell, “Fully convolutional networks for semantic segmentation,” in IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2015.
[8] P. F. Felzenszwalb, R. B. Girshick, D. McAllester, and D. Ramanan, “Object detection with discriminatively trained part-based models,” IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI), 2010.
[9] P. Sermanet, D. Eigen, X. Zhang, M. Mathieu, R. Fergus, and Y. LeCun, “Overfeat: Integrated recognition, localization and detection using convolutional networks,” in International Conference on Learning Representations (ICLR), 2014.
[10] S. Ren, K. He, R. Girshick, and J. Sun, “FasterR-CNN: Towards real-time object detection with region proposal networks,” in
Neural Information Processing Systems (NIPS), 2015.
[11] M. Everingham, L. Van Gool, C. K. I. Williams, J. Winn, and A. Zisserman, “The PASCAL Visual Object Classes Challenge 2007 (VOC2007) Results,” 2007.
[12] T.-Y. Lin, M. Maire, S. Belongie, J. Hays, P. Perona, D. Ramanan, P. Dollár, and C. L. Zitnick, “Microsoft COCO: Common Objects in Context,” in European Conference on Computer Vision (ECCV), 2014.
[13] S. Song and J. Xiao, “Deep sliding shapes for amodal 3d object detection in rgb-d images,” arXiv:1511.02300, 2015.
[14] J. Zhu, X. Chen, and A. L. Yuille, “DeePM: A deep part-based model for object detection and semantic part localization,” arXiv:1511.07131, 2015.
[15] J. Dai, K. He, and J. Sun, “Instance-aware semantic segmentation via multi-task network cascades,” arXiv:1512.04412, 2015.
[16] J. Johnson, A. Karpathy, and L. Fei-Fei, “Densecap: Fully convolutional localization networks for dense captioning,” arXiv:1511.07571, 2015.
[17] D. Kislyuk, Y. Liu, D. Liu, E. Tzeng, and Y. Jing, “Human curation and convnets: Powering item-to-item recommendations on pinterest,” arXiv:1511.04003, 2015.
[18] K. He, X. Zhang, S. Ren, and J. Sun, “Deep residual learning for image recognition,” arXiv:1512.03385, 2015.
[19] J. Hosang, R. Benenson, and B. Schiele, “How good are detection proposals, really?” in British Machine Vision Conference (BMVC), 2014.
[20] J. Hosang, R. Benenson, P. Dollar, and B. Schiele, “What makes for effective detection proposals?” IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI), 2015.
[21] N. Chavali, H. Agrawal, A. Mahendru, and D. Batra, “Object-Proposal Evaluation Protocol is ’Gameable’,” arXiv: 1505.05836, 2015.
[22] J. Carreira and C. Sminchisescu, “CPMC: Automatic object segmentation using constrained parametric min-cuts,” IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI), 2012.
[23] P. Arbelaez, J. Pont-Tuset, J. T. Barron, F. Marques, and J. Malik, “Multiscale combinatorial grouping,” in IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2014.
[24] B. Alexe, T. Deselaers, and V. Ferrari, “Measuring the objectness of image windows,” IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI), 2012.
[25] C. Szegedy, A. Toshev, and D. Erhan, “Deep neural networks for object detection,” in Neural Information Processing Systems (NIPS), 2013.
[26] D. Erhan, C. Szegedy, A. Toshev, and D. Anguelov, “Scalable object detection using deep neural networks,” in IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2014.
[27] C. Szegedy, S. Reed, D. Erhan, and D. Anguelov, “Scalable, high-quality object detection,” arXiv:1412.1441 (v1), 2015.
[28] P. O. Pinheiro, R. Collobert, and P. Dollar, “Learning to segment object candidates,” in Neural Information Processing Systems (NIPS), 2015.
[29] J. Dai, K. He, and J. Sun, “Convolutional feature masking for joint object and stuff segmentation,” in IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2015.
[30] S. Ren, K. He, R. Girshick, X. Zhang, and J. Sun, “Object detection networks on convolutional feature maps,” arXiv:1504.06066, 2015.
[31] J. K. Chorowski, D. Bahdanau, D. Serdyuk, K. Cho, and Y. Bengio, “Attention-based models for speech recognition,” in Neural Information Processing Systems (NIPS), 2015.
[32] M. D. Zeiler and R. Fergus, “Visualizing and understanding convolutional neural networks,” in European Conference on Computer Vision (ECCV), 2014.
[33] V. Nair and G. E. Hinton, “Rectified linear units improve restricted boltzmann machines,” in International Conference on Machine Learning (ICML), 2010.
[34] C. Szegedy, W. Liu, Y. Jia, P. Sermanet, S. Reed, D. Anguelov, D. Erhan, and A. Rabinovich, “Going deeper with convolutions,” in IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2015.
[35] Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard, and L. D. Jackel, “Backpropagation applied to handwritten zip code recognition,” Neural computation, 1989.
[36] O. Russakovsky, J. Deng, H. Su, J. Krause, S. Satheesh, S. Ma, Z. Huang, A. Karpathy, A. Khosla, M. Bernstein, A. C. Berg, and L. Fei-Fei, “ImageNet Large Scale Visual Recognition Challenge,” in International Journal of Computer Vision (IJCV), 2015.
[37] A. Krizhevsky, I. Sutskever, and G. Hinton, “Imagenet classification with deep convolutional neural networks,” in Neural Information Processing Systems (NIPS), 2012.
[38] Y. Jia, E. Shelhamer, J. Donahue, S. Karayev, J. Long, R. Girshick, S. Guadarrama, and T. Darrell, “Caffe: Convolutional architecture for fast feature embedding,” arXiv:1408.5093, 2014.
[39] K. Lenc and A. Vedaldi, “R-CNN minus R,” in British Machine Vision Conference (BMVC), 2015.