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

来源:互联网 发布:星界边境 传输网络 编辑:程序博客网 时间:2024/06/01 07:29

1 介绍

对象检测的最新进展是由区域建议法(region proposal methods)和基于区域的卷积神经网络(R-CNNs)的成功推动的。尽管R-CNN最初开发时计算量重,通过在各建议中共享卷积使它们的耗费大幅降低。最新的变化,fast R-CNN达到接近实时速率通过很深的网络,当忽略在区域建议上花费的时间。现在,在最新的检测系统中区域建议是测试时间的计算瓶颈。

区域建议法通常基于低成本特征和推理方案。选择性搜索,最流行的方法之一,基于设计的低级特征贪婪的合并超像素。和高效的检测网络相比,选择性搜索慢一个数量级,CPU实现中达到2s一幅图片。EdgeBoxes目前提供区域质量和速度的最好平衡,达到0.2s一幅图片。然而,区域建议的步骤仍然消耗和检测网络一样的时间。

有人会指出利用GPU的优势加快R-CNNS,然而研究中的R-CNN的实现是在CPU上的,使得这种运行时比较不公平。一个明显的做法加快建议计算是在GPU上重新实现。这可能是工程上的有效方法,但是重新实施忽略了下游检测网络,因此错过了共享计算的重要机会。

在本篇论文中,我们展示一种算法变化-通过深度卷积神经网络计算建议-引出一个优雅有效的解决方法,其中给出检测网络的计算,建议的计算几乎没有计算成本。为此,我们介绍新的区域建议网络使用最先进的对象检测网络共享卷积层。通过在测试时间共享卷积,计算方案的边际成本很小(10ms每幅图片)

我们的意见是,基于区域的检测器使用的卷积特征图,例如Fast R-CNN,也可以用于生成区域建议。在这些卷积特征的上层,我们构造一个RPN,通过添加一些额外的卷积层,在正常网格的每个位置同时回归区域边界和对象评分。RPN是一种全卷积网络,可以专门训练生成检测建议的任务。

RPNs设计用于有效预测具有广泛尺度和纵横比的区域建议。和普通方法(使用图像金字塔或过滤器金字塔)相比,我们引入新的边框“anchor(锚)”作为多尺度和纵横比的参考。我们的方案可以想象为一个回归引用的金字塔,避免了遍历多尺度或纵横比的图片或过滤器。这个模型在使用单尺度图像训练和测试时表现较好,而且运行速度提升。

为了统一Fast R-CNN对象检测网络中的RPNs,我们提出一个训练方案在区域建议和对象检测之间交替微调,同时保持适合的建议。这个方案收敛的很快,生成一个共享两个任务的联合的卷积特征网络。
我们在PASCAL VOC检测基准上综合评估我们的方法,在其上RPNs的Fast R-CNNs提供的检测准确率比选择性搜索基准的R-CNNs。同时,我们的方法几乎抛弃了所有选择性搜索在测试时间的计算负担—生成建议有效运行时间仅10ms。使用【3】中昂贵的深度模型,我们的检测方法仍然在GPU上帧率是5fps(包括所有步骤),因此在速度和准确率上是一个实用的对象检测系统。我们也在MS COCO数据库上提供结果,并且调查了使用COCO数据在PASCAL VOC上的改进。源码在github上开源。

该手稿的初步版本以前发表过【10】。从那以后,RPN和Fster R-CNN的框架已经被采用和推广到其他方法,例如3D对象检测,基于部分的检测,实例分割和图片说明。我们快速有效对象检测系统也已经在商业系统中构建,例如Pinterests。

在ILSVRC和COCO 2015竞赛中,Faster R-CNN和RPN获得了多个第一名,在ImageNet检测,ImageNet定位,COCO检测和COCO分割。RPNs从数据中完整的学习区域建议,可以轻松从更深和更多的表现特征中获益(例如在【18】中采用的101层残留网络)。Faster R-CNN和RPN也被这些比赛的其他几个主要参赛作品所采用。这些结果表明,我们的方法不仅是实用的成本效益的解决方案,而且是提高对象检测精度的有效方法。

2 相关工作

对象建议(Object Proposals):有大量关于对象建议方法的文献。对象提案方法的综合调查与比较在文献【19】【20】【21】。广泛使用的对象建议方法包括基于分组超像素(Selective Search [4], CPMC [22], MCG [23] )和基于滑动窗口(objectness in windows [24], EdgeBoxes [6] )。对象建议方法作为独立于检测被应用(Selective Search [4] object detectors, R- CNN [5], and Fast R-CNN [2] )。

对象检测的深度网络:R-CNN方法训练端到端CNNs用于将区域建议划分为对象类别或背景。R-CNN主演作为分类器,它并不预测对象边界(除了通过边界框回归进行精炼)。它的准确率依赖于区域建议模型的表现(【20】中对比)。许多论文中提出了方法:使用深度网络预测对象边界框【25】【9】【26】【27】。在OverFeat【9】方法中,一个训练好的全连接层用来为单一对象定位任务预测边界框坐标。全连接层然后转换成卷积层为了检测多个类特定对象。MultiBox方法生成区域建议,来自一个最后的全连接层同时预测多个类无关边框,泛化了单一边框点OverFeat。这些类无关边框窄R-CNN中作为建议。多边框建议网络应用于单幅图片或多幅图片,和我们的完全卷积方案对比,MultiBox没有在在建议和检测网络中分享特征。我们在本文后面更深入讨论OverFeat和MultiBox和我们的方法。同时,用于学习分割建议的DeepMask方法在发展中。

共享卷积计算吸引到越来越多的关注,在高效准确,视觉识别方面。OverFeat论文用于分类,定位和检测的图像金字塔计算卷积特征。自适应池(SPP)共享卷积特征图被发展成高效的基于区域对象检测和语义分割。Fast R-CNN使端到端检测成为可能,在共享卷积特征上训练并且展示出引人注目的准确性和速度。

3 FASTER R-CNN

我们的对象检测系统,叫做Faster R-CNN,是由两个模块组成。第一个模块是一个深度完全卷积网络生成区域建议,第二个模块是使用区域建议的Fast R-CNN检测。整个系统是一个单一的统一的对象检测网络。使用最佳流行的神经网络术语“attention”机制,RPN模块告诉Fast R-CNN模块观察哪里。在3.1节中,我们介绍RPN(区域建议网络)的设计和性能,在3.2节中,我们生成训练两个模块的共享特征的算法

3.1 Region Proposal Networks(RPN)

RPN使用一幅图片作为输入,输出矩形对象建议的集合,每个包含对象评分。我们使用完全卷积网络模拟这个过程,如我们这节描述的。因为我们最终目标是和Fast R-CNN对象检测网络共享计算,我们假设两个网络共享一个共同的卷积网络集合。在我们的经验里,我们调查拥有5个可共享卷积层的ZeilerFergus(ZF)模型和拥有13个可共享卷积层的SimonyanZisserman模型。

为了生成区域建议,我们在最后共享卷积层输出的卷积特征图赏滑动一个小网络。这个小网络将输入卷积特征图的n×n空间窗口作为输入。每个滑动窗口被映射到较低维特征(256-d for ZF and 512-d for VGG, with ReLU [33] following )。这个特征被喂入两个兄弟全连接层—一个边界回归层(reg)和一个边界分类层(cls)。本文中我们使用n=3,注意输入图像的有效接收区域很大(ZF中171个超像素,VGG中228个超像素)。在图3Left一个位置的插图。由于Mini网络操作在一个滑动窗口上,全连接层在所有空间位置共享。这个架构自然地被实现为一个n*n卷积层厚跟着两个1*1的兄弟卷积层(分别是reg和cls)。

3.1.1 Anchors 锚

在每个滑动窗口位置,我们同时预测多个区域建议,每个位置的最大可能值记为k,所以reg层有输出的k个边框的4k个坐标,cls层输出2k个评分,每个区域是对象或者不是对象的评分。k个建议被参数化,对应k个参考框,我们称作Anchors(锚)。 Anchors在滑动窗口的中心,与尺度和纵横比相关联。默认我们使用3个尺度和3个纵横比,在每个滑动位置产生k = 9个锚点,对于一个W*H大小的卷积特征图,总共有W*H*k个anchors。

Multi-Scale Anchors as Regression References 多尺寸Anchors作为回归参考

我们的锚的设计提供了一种解决多尺度(长宽比)的新方案。图1所示,有两种流行的多尺度预测的方法。第一种方法给予图像/特征金字塔,例如在DP【8】和基于CNN方法【9】【1】【2】。图片被调整多个尺度和特征图(HOG【8】或深度卷积【9】【1】【2】),每个尺度都被计算。这种方法常常是有效的,但是耗时。第二种方法是利用特征图赏读多尺度滑动窗口。例如,在DPM【8】,不同长宽比的模型被用不同尺度的过滤器(5*7或7*5)分开训练。如果这种方法被用于解决多尺度,它可以被想象为“金字塔过滤器”。第二种方法通常和第一种方法被联合采用。

作为对比,我们的基于锚的方法建立在金字塔锚点上,这个更有效。我们的方法分类和回归边界框,参考多尺度和长宽比的锚边框。它仅依赖于单一尺度图像和特征图和使用单一尺度的过滤器(特征图赏读滑动窗口)。我们通过实验展示了该方案对于多种尺度和尺寸的影响(图8)。

由于这种多尺度的设计基于锚,我们可以容易的窄单一图片上计算卷积特征,也在R-CNN检测器上使用。多尺度锚点设计是分享特征的重要组成,不需要额外的标记尺度的耗费。

3.1.2 Loss Function 损失函数

为了训练RPNs,我们为每个锚分配二进制标签(是或不是一个对象)。我们为两种类型的锚分配一个正向标签:1.与真实的边框相重叠的最高的IOU的锚,或2.与真实的边界框重叠的IOU超过0.7点锚。注意,一个真实的边界框可能被分配多个锚的正向标签。通常第二种情况足够确定正向的样本;但是我们仍然树立了第一种方式,由于在有些罕见案例中,第二种方法可能找不到正向样本。我们给非正向锚分配负面标签,如果它和真实边界框的IOU低于0.3。不管是正面或负面的锚,都没有给训练目标做贡献。

有了这些定义,我们最小化目标函数遵循Fast R-CNN中的多任务损失。我们对于一张图片的损失函数定义为:

损失函数

这里,i是小批量中锚的索引,pi是说预测锚是一个对象的概率。如果锚是正向的,真实的标签pi*是1,如果锚是负向的,pi*是0。ti是预测的边界框的4个坐标参数向量,ti*是正向锚对应的真实边框。分类损失函数Lcls是两个类型的log损失(对象或非对象)。对于回归损失,我们使用Lreg(ti,ti*) = R(ti-ti*)
R是【2】中定义的健全的损失函数。香pi*Lreg意味着回归损失仅在正向锚(pi*=1)时激活,否则禁用(pi*=0)。cls和reg层的输出分别由{pi}和{ti}组成。

两项由Ncls和Nreg归一化,λ 加权平衡参数。在我们现在的实现中(在发布的代码中),cls项由最小批量大小标准化(Ncls=256),reg项由锚的位置坐标标准化(Nreg~2400)。默认情况下我们设置λ =10,从而cls和reg项大致相等的加权。我们通过实验展示结果对大范围的λ 的值不敏感。我们注意到上面的标准化是不需要的,而且可以被简化。

对于边界框回归,我们采用以下4个坐标参数。
坐标参数

x,y,w和h表示框的中心坐标和塔的宽度和长度。变量x,xa,x*分别是预测边框,锚边框和真实边框(y,w,h是同样的)。这可以被认为是边界框回归,从一个锚边框到一个接近真实的边框。

虽然我们的方法实现了边界框回归,通过前面基于RoI(Region of Interest兴趣区域)方法不同的方式【1】【2】。【1】【2】中,对来自任意大小的RoI特征池进行边界框回归,回归权重在所有的区域大小间共享。在我们的公式中,用于回归的特征在特征图上是同样的空间大小(3*3)。要考虑到不同的大小,学习了一组k边界框回归。每个回归负责一个尺度和纵横比,k个回归不共享全中。因此,即使特征是固定的尺寸/尺度,由于锚的设计,仍然可以预测各种尺寸的盒子

3.1.3 Training RPNs 训练RPNs

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

我们通过从具有标准偏差0.01的零均值高斯分布绘制权重来随机初始化所有新层。所有其他层(即,共享卷积层)通过预先训练ImageNet分类的模型来初始化[36],作为标准实践的。我们调整ZF网络的所有层和conv3_1,和VGG网络以上,为了节省内存。对于60k小批量,我们使用0.001的学习率,在PASCAL VOC数据集上的下一个20k小批量的学习率为0.0001。我们使用0.9的动量,权重衰减为0.0005。我们的实现使用Caffe【38】。

Sharing Features for RPN and Fast R-CNN RPN和Fast R-CNN共享特征

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

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

1.Alternating training。交替训练

我们首先训练RPN,利用建议去训练Fast R-CNN。然后,使用Fast R-CNN调整的网络初始化RPN,并重复此过程。 这是本文所有实验中使用的解决方案。

2.Approximate joint training 近似联合训练

RPN和Fast R-CNN网络在训练中被合并到一个网络。在每次随机梯度下降迭代中,在训练Fast R-CNN检测器时,正向产生区域建议,这些建议被视为固定的,预先计算的建议。反向传播和往常一样发生,其中对于共享层,来自RPN 损失和快速R-CNN损失的反向传播信号被组合。这个解决方案很容易实现。但是这个解决方案忽略了衍生物w.r.t。建议框的坐标也是网络回复,所以是近似值。在我们的实验中,我们经验性地发现,该求解器产生了较为接近的结果,但与交替训练相比,训练时间减少了约25-50%。该解决方案包含在我们发布的Python代码中。

3.Non-approximate joint training 非近似联合训练

上面的讨论,RPN预测的边界框也是输入的函数。在Fast R-CNN中RoI池化层接收卷积特征和预测作为输入的边界框,所以一个理论上有效的反向传播求解器也应该包括梯度w.r.t的框坐标。这些梯度在上述近似联合训练中被忽略。在非近似联合训练中,我们需要RoI池化层区分wrt框坐标。这是一个非常重要的问题,解决方案可以由[15]中开发的“RoI翘曲”层给出,这超出了本文的范围。

4-Step Alternating Training 四步交替训练

在本文中,我们采用务实的4步训练算法,通过交替优化来学习共享特征。在第一步,我们训练RPN,如3.1.3节所述。该网络使用ImageNet预先训练的模型进行初始化,并针对区域预备任务进行端对端的微调。在第二步,我们使用由步骤1 RPN生成的提案,通过Fast R-CNN训练单独的检测网络。该检测网络也由ImageNet预先训练的模型初始化。 在这一点上,两个网络不共享卷积层。在第三步,我们使用检测器网络初始化RPN训练,但是我们修复共享卷积层,只调整RPN唯一的层。现在两个网络共享卷积层。最后,保持共享的卷积层,我们可以调整快速R-CNN的独特层。因此,两个网络共享相同的卷积层并形成统一的网络。 类似的交替训练可以运行更多的迭代,但是我们已经观察到微乎其微的改进。

3.3 Implementation Details 实现细节

我们在同一尺寸的图片集【1】【2】上训练和测试回归建议和对象检测网络.我们重新缩放图像,使得它们的短边s = 600像素。多尺度特征提取(使用图像金字塔)可以提高精度,但不能表现出良好的速度精度权衡。在重新缩放的图像上,最后一个卷积层上的ZF和VGG网络的总步幅为16像素,因此在调整大小之前,典型的PASCAL图像约10像素。即使如此大的步幅也提供了良好的效果,尽管以更小的步幅可以进一步提高精度。

对于锚,我们使用三种尺度边框128*128、256*256、512*512像素,和三种比例1:1、1:2、2:1。对于特定的数据集,这些超参数没有被仔细选择,我们在下一节提供了对其影响的消融实验。如所讨论的,我们的解决方案不需要图像金字塔或过滤器金字塔来预测多个尺度的区域,从而节省大量的运行时间。图3(右)显示了我们的方法在广泛的尺度和纵横比上的能力。表1显示了使用ZF网络的每个锚点的学习平均建议大小。我们注意到,我们的算法允许预测大于底层接受域。这样的预测并不是不可能的 - 如果只有对象的中间是可见的,那么仍然可以粗略地推断对象的范围。

跨越图像边界的锚边框需要小心处理。在训练过程中,我们忽略所有的跨边框的锚,所以它们不会贡献损失。对于典型的1000*600图片,会有总共大概20000(~60*40*9)个锚。忽略了跨边框的锚,每个图片有6000个锚会训练。如果跨边框的锚没有在训练中被忽略,它们在目标中引入大量难以纠正的错误项,训练不会收敛。然而在测试中,我们仍然将完全卷积的RPN应用于整个图像。这可能会产生跨边界建议框,我们将剪辑到图像边界。

一些RPN建议高度重叠。为了减少冗余,我们根据其分数得分,在建议区采用非最大抑制(NMS)。我们修改了NMS的IoU阈值为0.7,这使得我们每个图像大约有2000个提议区域。正如我们将展示的,NMS不会损害最终的检测精度,而是大大减少了提案数量。在NMS之后,我们使用排名前N的提案区域进行检测。接下来,我们使用2000个RPN提案对Fast R-CNN进行训练,但在测试时评估不同的提案数量。

阅读全文
0 0
原创粉丝点击