您的位置:首页 > 移动开发 > Objective-C

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

2018-11-30 17:33 555 查看

水平有限,仅供参考,如有翻译不当的地方敬请指出。转载请注明出处。

论文地址:http://papers.nips.cc/paper/5638-faster-r-cnn-towards-real-time-object-detection-with-region-proposal-networks

译文地址:https://blog.csdn.net/weixin_42762089/article/details/84662334

 

更快的R-CNN:利用区域提议网络实现实时目标检测

Shaoqing Ren ∗ Kaiming He Ross Girshick Jian Sun

Microsoft Research

{v-shren, kahe, rbg, jiansun}@microsoft.com

摘要

最先进的目标检测网络依赖于区域提议算法来假设物体的位置。SPPnet [7]和Fast R-CNN [5]等先进技术减少了这些检测网络的运行时间,暴露出了区域建议计算的瓶颈。这篇论文中,介绍了一个区域提议网络(RPN),它与检测网络共享全图像卷积特征,从而实现了几乎零花费的区域生成。RPN是一个完全卷积的网络,它同时预测每个位置的目标边界和目标得分。大量的RPN被连接在一起训练以产生高质量的区域提议,这些提议被Fast R-CNN用于检测。通过简单的交替优化,可以训练RPN和Fast R-CNN来实现共享卷积特征。对于非常深的VGG-16模型 [19],我们的检测系统在GPU上的帧率为5 fps(包括所有步骤),同时在 PASCAL VOC 2007 (73.2% mAP)和 2012 (70.4% mAP)上的每张照片使用300项proposal实现了最先进的目标检测精度。代码可见https://github.com/ShaoqingRen/faster_rcnn.

1 介绍

最近在目标检测方面的进展是由区域提议方法(例如[22])和基于区域的卷积神经网络(R-CNNs) [6]的成功所推动的。尽管基于区域的卷积神经网络最初开发在计算上代价很大 [6],但是由于提议上的共享卷积[7,5],计算成本已经大大降低。最新的Fast R-CNN [5]使用非常深的网络[19]来实现接近实时的速率,忽略了在区域提议上花费的时间。现在,区域提议是最先进的检测系统中的计算瓶颈。

区域提议方法通常依赖于廉价的特征和经济的推理方案。选择性搜索(SS)[22]是最流行的方法之一,它贪婪地合并基于engi的超像素嵌套的低层次特征。然而,与有效的检测网络相比[5],选择性搜索速度慢一个数量级,每幅图像在CPU实现中需要2秒。EdgeBoxes [24]目前在提议质量和速度之间提供最佳的平衡,每张图像需要0.2秒。尽管如此,区域提议步骤仍然消耗与检测网络一样多的运行时间。

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

在本文中,我们展示了一种算法上的改变——有着深厚网络的计算方案——给出了一种优雅而有效的解决方案,在这种方案中,在检测网络上的方案计算几乎是零开销的。为此,我们介绍了一种新的区域提议网络(RPN),它与最先进的目标检测网络[7,5]共享卷积隐藏层。在共享卷积层测试时,计算方案的边际成本很小(例如,每幅图像花费10毫秒)。

我们的观察到基于区域的检测器使用的卷积(转换)特征映射,如Fast R-CNN也可用于生成区域提议。在这些卷积特征的基础上,我们将通过添加两个额外的卷积层来构造RPN:一个卷积层将每个卷积层位置编码成一个短的(例如256-d)特征向量,另一个在每个卷积映射位置输出一个目标分数、的 k区域建议的核心和回归边界相对于该位置的各种尺度和纵横比(k=9是一个典型值)。

因此,我们的RPN是一种全卷积网络(FCN) [14],它们可以被连接起来训练,专门用于产生检测方案的任务。为了将RPN与Fast R-CNN [5]目标检测网络统一起来,我们提出了一种简单的训练方案,该方案在区域提议任务的微调和目标检测的微调之间交替,同时保持提议的固定。 该方案快速收敛并产生具有在两个任务之间共享的转换特征的统一网络。

我们在Pascal VOC检测标准[4]上对我们的方法进行了评估,其中具有Fast R-CNNs的RPNs比具有Fast R-CNNs的强选择性搜索基线具有更好的检测精度。同时,我们的方法几乎免除了SS在测试时的所有计算负担——提案的有效运行时间仅为10毫秒。若使用昂贵的深层次模型[19],我们的检测方法在GPU上的帧速率仍为5 fps(包括所有步骤),因此它在速度和精度上都是一个实用的目标检测系统(PASCAL VOC 2007年上的mAP为73.2%,2012年mAP为70.4%)。代码可见 https://github.com/ShaoqingRen/faster_rcnn.

2 相关工作

最近的一些论文提出了使用深度网络来定位特定类或不可知的边界框的方法[21,18,3,20]。在OverFeat方法[18]中,一个全连接层(fc)被训练用于预测假定单个目标的本地化任务的框坐标。然后将全连接层转换为用于检测多个特定类对象的conv层。多元边框方法[3,20]从一个网络中产生区域提议,该网络的最后一个全连接层同时预测多个(例如,800个)边框,这些边框用于R-CNN [6]目标检测。 它们的提议网络应用于单个图像或多个大型图像(例如,224*224像素)。我们在后面的方法中更深入地讨论了OverFeat和多边框。

[18,7,2,5]卷积的共享计算因其高效、准确的视觉识别而受到越来越多的关注。OverFeat 论文[18]从图像中计算卷积特征用于分类、定位和检测。自适应大小的池(SPP)[7]提出了共享卷积特征映射用于有效地基于区域的目标检测 [7,16]和语义分割[2]。Fast R-CNN [5]支持对共享卷积特征进行端到端检测并且展示出了引人注目的准确性和速度。

3 区域提议网络

一个区域提议网络(RPN)以图像(任意大小)作为输入,并输出一组矩形目标,其中每一项都有一个目标分数。我们用一个完全卷积网络来对这个过程进行建模[14],我们在本节中对此进行了描述。由于我们的最终目标是与Fast R-cnn目标检测网络并行计算[5],我们假设在我们的实验中这两个网络共享一组共同的卷积层,我们研究了Zeiler和Fergus模型[23](ZF),它有5个可共享的卷积层,Simonyan和Zisserman模型[19](VGG)有13个可共享的卷积层

为了生成区域提议,我们在最后一个共享卷积层输出的卷积特征图上滑动一个小网络。该网络完全连接到输入卷积特征映射的n×n空间窗口。

              

图1:左:区域提议网络(RPN)。右:在Pascal VOC 2007测试中使用RPN提议示例检测。我们的方法在广泛的尺度和高宽比中检测物体。

每个滑动窗口映射到一个低维向量对于(对于ZF为256-d,对于VGG为512-d)。该向量被喂入到两个完全连接的层:一个盒回归层(reg)和一个盒分类层。我们在本文中使用n = 3,并且指出输入图像上的有效接收区域很大(ZF和VGG分别为171和228像素)。该迷你网络在图1(左)中的单个位置表示出。需要注意的是,由于迷你网络以滑动窗口的方式工作,因此全连接层在所有空间位置共享。这种架构自然使用一个n×n 的卷积层加上两个并列的1×1 卷积层(分别用于reg 和cls)来实现。ReLUs [15]被应用于n×n 卷积层的输出。

平移-不变锚

在每个滑动窗口位置,我们同时预测k个区域提议,因此reg层具有4k个输出,编码k个边框的坐标。cls层输出2k分数,用于评估每个提议的对象/非对象的概率。k个提议相对于k个参考框(称为锚点)进行参数化。每一个锚点都在所讨论的滑动窗口的中心位置,并且与纵横比相关联。按比例和纵横比排列。我们使用3个刻度和3个纵横比,在每个滑动位置产生k=9个锚。对于尺寸为W*H的卷积特征映射(通常为2400),共有WHk个锚点。我们的方法的一个重要性质是它是平移不变的,无论是从锚还是计算相对于锚的函数。

作为比较,多边框方法 [20]使用k-均值方法生成800个锚点,这些锚点不是平移不变的。如果一个人转化图像中的对象,该提案应该翻译并且相同的功能应该能够在任一位置预测提案。此外,由于多边框锚点不是平移不变的,因此需要一个(4+1)*800维输出层,而我们的方法则需要一个(4+2)*9维输出层。我们的提议层的参数减少了一个数量级(使用GoogLeNet的多边框为2700万,而使用VGG-16的RPN为240万),因此在小型数据集(如Pascal VOC)上过拟合的风险较小。

学习区域提案的损失函数

为了训练RPN,我们给每个锚分配一个二进制类标签(不管是否是一个对象)。我们为两种锚指定了一个正标签:(i)具有最高交集的锚:与地面实际值边框过度联合(IoU),或(ii)具有IoU重叠的任何实际值边框都高于0.7的锚点。注意,单个实际值边框可以指定正标签到多个锚。如果非正锚的IoU比值比所有地面地面实际值边框低0.3,则我们为非正锚分配负标签。既不是正面也不是负面的锚对于训练目标来说没有贡献。利用这些定义,我们将Fast R-CNN[5]中的多任务损失函数最小化。我们对图像的损失函数定义为:

这里,i是小批次中锚点的索引,pi是锚点i作为对象的预测概率。如果锚为正,则实际标签p i*为1,如果锚为负,则为0。ti是表示预测边界框的4个参数化坐标的向量,t i*是与正锚点相关联的实际边框的向量。分类损失Lcls是两类(对象与非对象)的对数损失。 对于回归损失,我们使用Lreg(ti,t i *)= R(ti -t i*)其中R是[5]中定义的鲁棒损失函数(光滑L1)。 术语p i *Lreg表示仅对正锚(p * i = 1)激活回归损失,否则p i *= 0。 cls的产出和reg层分别由pi和ti组成。 这两个术语用Ncls和Nreg进行标准化,以及平衡权重λ。对于回归,我们采用[6]之后的4个坐标的参数化:

其中x,y,w和h表示框中心,宽度和高度的两个坐标。变量X,Xa和X *分别用于预测框,锚框和实际边框(同样适用于y,w,h)。这可以被认为是从锚箱到附近的实际边框的边界框回归。

然而,我们的方法通过与先前基于特征图的方法不同的方式实现了边界框回归[7,5]。在[7,5]中,对从任意大小的区域汇集的特征执行边界框回归,并且回归权重由所有区域大小共享。在我们的公式中,用于回归的特征在特征图上具有相同的空间大小(n*n)。为了解释不同的大小,学习一组k个边界框的回归量。每个回归量负责一个区域和一个纵横比,并且k个回归量不共享权重。因此,即使特征具有固定的尺寸或比例,仍然可以预测各种尺寸的边框。

优化

RPN被实现为完全卷积网络[14],可以通过反向传播和随机梯度下降(SGD)进行端到端训练[12]。我们遵循[5]中的“以图像为中心”的采样策略来训练这个网络。每个小批量的图像包含许多正负锚。优化所有锚的损失函数是可行的,但这将偏向负样本,因为它们占主导地位。相反,我们在图像中随机采样256个锚点来计算小批量的损失函数,其中采样的正和负锚点的比率高达1:1。如果图像中的正样本少于128个,我们将小批量填充为负数。

我们通过从标准偏差为0.01的零均值高斯分布中绘制权重来随机初始化所有新图层。通过预训练ImageNet分类模型[17]来初始化所有其他层(即共享卷积层),作为标准进行实践[6]。我们调整ZF网络的所有层,并为VGG网络调整内存[5]。对于60k小批量数据,我们使用0.001的学习率,对于PASCAL数据集中的下一个20k小批量数据,我们使用0.0001的学习率。我们还使用0.9的动量和0.0005的权重衰减[11]。我们使用Caffe来实现 [10]。

共享区域提议和对象检测的卷积特征

到目前为止,我们已经描述了如何训练用于区域建议生成的网络,而不考虑将利用这些建议的基于区域的对象检测卷积神经网络。对于检测网络,我们采用快速R-CNN [5] 4,现在描述一种算法,用于学习在RPN和快速R-CNN之间共享的卷积层。

独立训练的RPN和快速R-CNN都将以不同方式修改其卷积层。因此,我们需要开发一种技术,允许在两个网络之间共享卷积层,而不是学习两个独立的网络。注意,这并不像简单地定义包含RPN和快速R-CNN的单个网络然后与反向传播一起优化它那样容易。原因是快速R-CNN训练依赖于固定对象提议,并且如果在改变提议机制的同时学习快速R-CNN将会收敛,则不是先验的。虽然这种联合优化是未来工作的一个有趣问题,但我们开发了一种实用的4步训练算法,通过交替优化来学习共享特征。

在第一步中,我们如上所述训练RPN。该网络使用ImageNet预先训练的模型进行初始化,并针对区域提议任务进行端对端微调。在第二步中,我们使用由步骤1中RPN生成的提议通过快速R-CNN训练单独的检测网络。该检测网络也由ImageNet预训练模型初始化。此时,两个网络不共享卷积层。在第三步中,我们使用检测网络来初始化RPN训练,但我们修复了共享转换层并只微调RPN特有的层。现在这两个网络共享了卷积层。最后,保持共享卷积层固定,我们微调快速R-CNN的fc层。因此,两个网络共享相同的卷积层并形成统一的网络。

实施细节

我们在单区域图像上训练和测试区域建议以及对象检测网络[7,5]。我们重新缩放图像,使其短边为s = 600像素[5]。多尺度特征提取可以提高准确性,但没有表现出良好的速度、准确性权衡[5]。我们还注意到,对于ZF和VGG网络,最后一个转换层上的总步长在重新缩放后的图像上是16个像素,因此在典型的PASCAL图像上是10个像素(500*375)。即使是如此大的步长也能提供良好的效果,尽管可以通过更小的步幅进一步提高精度。

对于锚点,我们使用3个刻度,框区域为1282,2562和5122像素,3个宽高比为1:1,1:2和2:1。我们注意到,我们的算法允许在预测大型提案时使用大于底层区域的锚箱。这样的预测并非不可能——如果只有对象的中间可见,人们仍然可以大致推断出对象的范围。通过这种设计,我们的解决方案不需要多尺度功能或多尺度滑动窗口来预测大区域,从而节省了大量的运行时间。图1(右)显示了我们的方法适用于各种尺度和纵横比的能力。下表显示了使用ZF网络的每个锚点的学习平均建议大小(s = 600)。

需要小心处理跨越图像边界的锚箱。在训练期间,我们忽略所有跨越边界的锚点,因此它们不会造成损失。对于典型的1000*600图像,总共将有大约20k(60*40*9)个锚。由于忽略了跨越边界的锚点,每个图像大约有6k个锚点用于训练。如果在训练中不忽略跨越边界的异常值,则会在目标中引入难以纠正的误差项,并且训练不会收敛。然而,在测试期间,我们仍然将完全卷积RPN应用于整个图像。这可能会生成跨越边界的提议框,我们将其剪切到图像边界。

一些RPN提案彼此高度重叠。为了减少冗余,我们根据其cls分数对提议区域采用非最大抑制(NMS)。我们将NMS的IoU阈值修正为0.7,这使得每个图像的提议区域大约为2k。正如我们将要展示的那样,NMS不会损害最终的检测准确性,但会大大减少提议的数量。在NMS之后,我们使用排名前N的提议区域进行检测。在下文中,我们使用2k RPN提议训练快速R-CNN,但在测试时评估不同数量的提议。

4 实验

我们在PASCAL VOC 2007检测标准[4]上全面评估了我们的方法。 该数据集由大约5k个训练图像和5k个测试图像以及超过20个对象类别组成。我们还为少数模型提供PASCAL VOC 2012标准测试结果。对于ImageNet预训练网络,我们使用具有5个卷积层和3个fc层的ZF网络[23]的“快速”版本,以及具有13个转换层和3个fc层的VGG-16模型[19]。 我们主要评估检测平均精度(mAP),因为这是对象检测的实际度量(而不是关注对象提议代理度量)。

表1(上图)显示了使用各种区域提议方法进行训练和测试时的快速R-CNN结果。 这些结果使用ZF网络。对于选择性搜索(SS)[22],我们通过“快速”模式生成大约2k个SS提议。对于边缘框(EB)[24],我们通过调整0.7 IoU的默认EB设置生成提案。SS的mAP为58.7%,EB的mAP为58.6%。 具有快速R-CNN的RPN产生了很好的效果,mAP为59.9%,同时使用多达300个提案。 由于共享卷积计算,使用RPN比使用SS或EB更快产生检测系统; 较少的提案也减少了区域性的fc代价。接下来,我们考虑几次消除RPN,结果表明在使用非常深的网络时提案质量会提高。

表1:PASCAL VOC 2007测试集的检测结果(在VOC 2007 trainval上训练)。该

探测器是具有ZF的快速R-CNN,使用各种提议方法进行训练和测试。

消融实验。为了研究RPN作为提议方法的行为,我们进行了几项消融研究。首先,我们展示了在RPN和快速R-CNN检测网络之间共享卷积层的效果。为此,我们在4步训练过程的第二步后停止。使用单独的网络将结果略微降低至58.7%(RPN + ZF,非共享,表1)。我们观察到这是因为在第三步中,当使用检测器的特征来微调RPN时,提议质量得到改善。

接下来,我们将解开RPN对训练快速R-CNN检测网络的影响。为此,我们使用2k SS提议和ZF网络训练快速R-CNN模型。我们通过更改在测试时使用的提议区域来修复此检测器并评估检测mAP。在这些消融实验中,RPN不与检测器共享特征。

在测试时用300个RPN提议替换SS导致mAP为56.8%。 mAP的损失是由于训练/测试提案之间的不一致。该结果作为以下比较的基准。

令人惊讶的是,在测试时使用排名靠前的100个提案时,RPN仍然会产生很好的结果(55.1%),这表明排名靠前的RPN提案是准确的。另一方面,使用排名靠前的6k RPN提议(没有NMS)具有可比较的mAP(55.2%),这表明NMS不会影响检测mAP并可能减少误报。

接下来,我们通过在测试时关闭其中任何一个来分别调查RPN的cls和reg输出的作用。当在测试时移除cls层(因此不使用NMS /排名)时,我们从未划分的区域中随机抽样N个提议。 mAP几乎没有变化,N = 1k(55.8%),但是当N = 100时,mAP显著降低到44.6%。这表明cls得分是最高排名提案的原因。

另一方面,当在测试时移除reg层(因此提议成为锚盒)时,mAP降至52.1%。这表明高质量的提案主要是由于回归。单独的锚盒不足以进行准确检测。

表2:PASCAL VOC 2012测试集的检测结果。检测器是快速R-CNN和VGG-

16.训练数据:“07”: VOC 2007 trainval,“07 + 12”: VOC 2007 trainval和 VOC 2012的联合数据集。 对于 RPN, 该提议在快速 R-CNN上的训练时间是2K。 † : 这个在 [5]中指出; 使用本文提供的存储库,这个数字会更高(六次运行结果在68.0 ± 0.3)。

表3:PASCAL VOC 2012测试集的检测结果。检测器是快速R-CNN和VGG-16.训练数据:“07”: VOC 2007 trainval,“07 + 12”: VOC 2007 trainval和 VOC 2012的联合数据集。对于 RPN, 该提议在快速 R-CNN上的训练时间是2K。† : http:// host.robots.ox.ac.uk:8080/anonymous/HZJTQA.html 。 ‡ : http : //host.robots.ox.ac.uk : 8080 / anonymous / YNPLXB.html

表4:K40 GPU上的计时(ms),但SS提议使用CPU评估。 “区域性”包括NMS,池化,fc和softmax。 请参阅我们发布的运行时代码。

我们还评估了更强大的网络对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的检测精度和运行时间。表2显示了提案和检测的VGG-16结果。使用RPN + VGG,非共享特征的快速R-CNN结果为68.5%,略高于SS基准。如上所示,这是因为RPN + VGG生成的提议比SS更准确。与预先定义的SS不同,RPN受到积极训练并受益于更好的网络。对于特征共享变量,结果是69.9%,比强SS基准更好,是几乎零代价的提议。在[5]之后,我们进一步训练了PASCAL VOC 2007 和2012联合数据集的RPN和检测网络。mAP为73.2%。在PASCAL VOC 2012测试集(表3)中,我们的方法在VOC 2007训练集+测试集和VOC 2012 训练集的联合数据集上接受了70.4%的mAP训练,[5]。

在表4中,我们总结了整个对象检测系统的运行时间。SS取决于内容(平均1.51秒),一般需要1-2秒,而VGG-16的快速R-CNN在2k SS建议上仅需要320毫秒(如果在fc层上使用SVD,则只需223毫秒 [5])。我们的VGG-16系统在提议和检测方面总共需要198毫秒。在共享卷积特征的情况下,RPN需要10毫秒来计算附加层。由于提案较少(300),我们的区域范围计算也很低。我们系统的ZF网络帧速率为17 fps。

召回到IoU的分析。接下来,我们使用基础边框计算不同IoU比率的提案召回率。值得注意的是,召回到IoU的指标与最终检测精度有关[9,8,1]。使用此度量标准来诊断提案方法比评估提案方法更合适。

图2: PASCAL VOC 2007测试集上的召回率与IoU重叠率。

表5: 一阶段检测与二阶段提议+检测的对比。检测结果是ZF模型和Fast R-CNN在PASCAL VOC 2007测试集上得出的。RPN使用非共享特征。

在图2中,我们显示了使用300个,1k个和2k个提议的结果。我们与SS和EB进行比较,并且N个提议是排名前N的基于这些方法产生置信度的提议。这些图显示,当提案数量从2k个减少到300个时,RPN方法表现良好。这解释了为什么RPN在使用少至300个提案时具有良好的最终检测mAP。正如我们之前分析的那样,这个属性主要归因于RPN的cls属性。当提案较少时,SS和EB的召回比RPN下降得更快。

一阶段检测与二阶段提案+检测对比。OverFeat论文[18]提出了一种检测方法,该方法在卷积特征映射上的滑动窗口上使用回归量和分类器。OverFeat是一阶段,限定于类别的检测管道,我们的是一个由阶段不可知的提议和特定于类别的检测组成的两阶段级联。在OverFeat中,区域特征来自比例上的一个纵横比的滑动窗口。这些特征用于同时确定对象的位置和类别。在RPN中,这些特征来自方形(3*3)滑动窗口,并预测相对于具有不同尺度和纵横比的锚点的提议。虽然两种方法都使用滑动窗口,但区域提议任务只是RPN和快速R-CNN的第一阶段——探测器参与改进它们的提议。在我们级联的第二阶段,区域性特征从覆盖区域特征的提议框自适应地汇集[7,5]。我们相信这些特征可以提供更准确的检测。

为了比较一级和二级系统,我们通过一级快速R-CNN模拟OverFeat系统(因此也避免了实现细节的其他差异)。在该系统中,“提议”是3个刻度(128,256,512)和3个纵横比(1:1,1:2,2:1)的密集滑动窗口。训练快速R-CNN以预测特定类别的分数并从这些滑动窗口回归边框位置。由于OverFeat系统使用图像金字塔,因此我们还使用从5个刻度中提取的卷积特征进行评估。我们使用[7,5]中的那5个尺度。

表5比较了二阶段系统和一阶段系统的两个变体。使用ZF模型,一级系统的mAP为53.9%。这比二阶段系统(58.7%)低4.8%。该实验证明了级联区域提议和对象检测的有效性。在[5,13]中描述了类似的观察结果,两篇论文中用滑动窗口替换SS区域提议导致退化率降低6%。我们还注意到,一阶段系统较慢,因为它有更多的提议要处理。

5结论

我们提出了区域提案网络(RPN),以实现高效准确的区域提案生成。通过与下游检测网络共享卷积特征,区域提议步骤几乎是零花销的。我们的方法使基于深度学习的统一对象检测系统能够以5至17 fps的帧率运行。学习到的RPN还改善了区域提议质量,从而提高了对象检测精度。

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐