更快的RCNN:通过区域提议网络实现实时外文翻译资料
2021-12-17 23:07:59
英语原文共 35 页
更快的RCNN:通过区域提议网络实现实时
邵少卿,何开明,罗斯·格瑞肖克,孙健
摘要:
目前最先进的目标检测网络需要先用区域建议算法推测目标位置,像SPPnet和Fast R-CNN这些网络已经减少了检测网络的运行时间,这时计算区域建议就成了瓶颈问题。本文中,我们介绍一种区域建议网络(Region Proposal Network, RPN),它和检测网络共享全图的卷积特征,使得区域建议几乎不花时间。RPN是一个全卷积网络,在每个位置同时预测目标边界和objectness得分。RPN是端到端训练的,生成高质量区域建议框,用于Fast R-CNN来检测。通过一种简单的交替运行优化方法,RPN和Fast R-CNN可以在训练时共享卷积特征。对于非常深的VGG-16模型,我们的检测系统在GPU上的帧率为5fps(包含所有步骤),在PASCAL VOC 2007和PASCAL VOC 2012上实现了最高的目标检测准确率(2007是73.2%mAP,2012是70.4%mAP),每个图像用了300个建议框。代码已公开。
1.引言
最近在目标检测中取得的进步都是由区域建议方法和基于区域的卷积神经网络(R-CNN)取得的成功来推动的。基于区域的CNN在中刚提出时在计算上消耗很大,幸好后来这个消耗通过建议框之间共享卷积大大降低了。最近的Fast R-CNN用非常深的网络实现了近实时检测的速率,注意它忽略了生成区域建议框的时间。现在,建议框是最先进的检测系统中的计算瓶颈。
区域建议方法典型地依赖于消耗小的特征和经济的获取方案。选择性搜索(Selective Search, SS)是最流行的方法之一,它基于设计好的低级特征贪心地融合超级像素。与高效检测网络相比,SS要慢一个数量级,CPU应用中大约每个图像2s。EdgeBoxes在建议框质量和速度之间做出了目前最好的权衡,大约每个图像0.2s。但无论如何,区域建议步骤花费了和检测网络差不多的时间。
Fast R-CNN利用了GPU,而区域建议方法是在CPU上实现的,这个运行时间的比较是不公平的。一种明显提速生成建议框的方法是在GPU上实现它,这是一种工程上很有效的解决方案,但这个方法忽略了其后的检测网络,因而也错失了共享计算的重要机会。
本文中,我们改变了算法——用深度网络计算建议框——这是一种简洁有效的解决方案,建议框计算几乎不会给检测网络的计算带来消耗。为了这个目的,我们介绍新颖的区域建议网络(Region Proposal Networks, RPN),它与最先进的目标检测网络共享卷积层。在测试时,通过共享卷积,计算建议框的边际成本是很小的(例如每个图像10ms)。
我们观察发现,基于区域的检测器例如Fast R-CNN使用的卷积(conv)特征映射,同样可以用于生成区域建议。我们紧接着这些卷积特征增加两个额外的卷积层,构造RPN:第一个层把每个卷积映射位置编码为一个短的(例如256-d)特征向量,第二个层在每个卷积映射位置,输出这个位置上多种尺度和长宽比的k个区域建议的objectness得分和回归边界(k=9是典型值)。
我们的RPN是一种全卷积网络(fully-convolutional network, FRN),可以针对生成检测建议框的任务端到端地训练。为了统一RPN和Fast R-CNN目标检测网络,我们提出一种简单的训练方案,即保持建议框固定,微调区域建议和微调目标检测之间交替进行。这个方案收敛很快,最后形成可让两个任务共享卷积特征的标准网络。
我们在PASCAL VOC检测标准集上评估我们的方法,Fast R-CNN结合RPN的检测准确率超过了作为强大基准的fast R-CNN结合SS的方法。同时,我们的方法没有了SS测试时的计算负担,对于生成建议框的有效运行时间只有10毫秒。利用网络非常深的深度模型,我们的检测方法在GPU上依然有5fps的帧率(包括所有步骤),因此就速度和准确率(PASCAL VOC 2007上是73.2%mAP,PASCAL VOC 2012上是70.4%)而言,这是一个实用的目标检测系统。
2.相关工作
最近几篇文章中提出了用深度网络定位类确定或类不确定的包围盒的方法。在OverFeat方法中,训练全连接(fc)层,对假定只有一个目标的定位任务预测包围盒坐标。fc层再转入卷积层来检测多个类确定的目标。MultiBox方法从最后一个fc层同时预测多个(如800)包围盒的网络中生成区域建议,R-CNN就是用的这个。他们的建议框网络应用于单个图像或多个大图像的切割部分(如224x224)。我们在后文中讲我们的方法时会更深层次地讨论OverFeat和MultiBox。
卷积的共享计算高效、精确,已经在视觉识别方面吸引了越来越多的注意。OverFeat论文从图像金字塔计算卷积特征,用于分类、定位、检测。在共享的卷积特征映射上自适应大小的pooling(SPP)能有效用于基于区域的目标检测和语义分割。Fast R-CNN实现了在共享卷积特征上训练的端到端检测器,显示出令人惊叹的准确率和速度。
最近几篇文章中提出了用深度网络定位类确定或类不确定的包围盒的方法。在OverFeat方法中,训练全连接(fc)层,对假定只有一个目标的定位任务预测包围盒坐标。fc层再转入卷积层来检测多个类确定的目标。MultiBox方法从最后一个fc层同时预测多个(如800)包围盒的网络中生成区域建议,R-CNN就是用的这个。他们的建议框网络应用于单个图像或多个大图像的切割部分(如224x224)。我们在后文中讲我们的方法时会更深层次地讨论OverFeat和MultiBox。
卷积的共享计算高效、精确,已经在视觉识别方面吸引了越来越多的注意。OverFeat论文从图像金字塔计算卷积特征,用于分类、定位、检测。在共享的卷积特征映射上自适应大小的pooling(SPP)能有效用于基于区域的目标检测和语义分割。Fast R-CNN实现了在共享卷积特征上训练的端到端检测器,显示出令人惊叹的准确率和速度。
3.区域建议网络
区域建议网络(RPN)将一个图像(任意大小)作为输入,输出矩形目标建议框的集合,每个框有一个objectness得分。我们用全卷积网络对这个过程构建模型,本章会详细描述。因为我们的最终目标是和Fast R-CNN目标检测网络共享计算,所以假设这两个网络共享一系列卷积层。在实验中,我们详细研究Zeiler和Fergus的模型(ZF),它有5个可共享的卷积层,以及Simonyan和Zisserman的模型(VGG),它有13个可共享的卷积层。
为了生成区域建议框,我们在最后一个共享的卷积层输出的卷积特征映射上滑动小网络,这个网络全连接到输入卷积特征映射的nxn的空间窗口上。每个滑动窗口映射到一个低维向量上(对于ZF是256-d,对于VGG是512-d,每个特征映射的一个滑动窗口对应一个数值)。这个向量输出给两个同级的全连接的层——包围盒回归层(reg)和包围盒分类层(cls)。本文中n=3,注意图像的有效感受野很大(ZF是171像素,VGG是228像素)。图1(左)以这个小网络在某个位置的情况举了个例子。注意,由于小网络是滑动窗口的形式,所以全连接的层(nxn的)被所有空间位置共享(指所有位置用来计算内积的nxn的层参数相同)。这种结构实现为nxn的卷积层,后接两个同级的1x1的卷积层(分别对应reg和cls),ReLU应用于nxn卷积层的输出。
图1:左:区域建议网络(RPN)。右:用RPN建议框在PASCAL VOC 2007测试集上的检测实例。
在每一个滑动窗口的位置,我们同时预测k个区域建议,所以reg层有4k个输出,即k个box的坐标编码。cls层输出2k个得分,即对每个建议框是目标/非目标的估计概率(为简单起见,是用二类的softmax层实现的cls层,还可以用logistic回归来生成k个得分)。k个建议框被相应的k个称为anchor的box参数化。每个anchor以当前滑动窗口中心为中心,并对应一种尺度和长宽比,我们使用3种尺度和3种长宽比,这样在每一个滑动位置就有k=9个anchor。对于大小为WxH(典型值约2,400)的卷积特征映射,总共有WHk个anchor。我们的方法有一个重要特性,就是平移不变性,对anchor和对计算anchor相应的建议框的函数而言都是这样。
作为比较,MultiBox方法[20]用k-means生成800个anchor,但不具有平移不变性。如果平移了图像中的目标,建议框也应该平移,也应该能用同样的函数预测建议框。此外,因为MultiBox的anchor不具有平移不变性,所以它需要(4 1)x800-d的输出层,而我们的方法只要(4 2)x9-d的输出层。我们的建议框层少一个数量级的参数(MultiBox用GoogleLeNet需要2700万vs.RPN用VGG-16需要240万),这样在PASCAL VOC这种小数据集上出现过拟合的风险较小。
为了训练RPN,我们给每个anchor分配一个二进制的标签(是不是目标)。我们分配正标签给两类anchor:(i)与某个groundtruth(GT)包围盒有最高的IoU(Intersection-over-Union,交集并集之比)重叠的anchor(也许不到0.7),(ii)与任意GT包围盒有大于0.7的IoU交叠的anchor。注意到一个GT包围盒可能分配正标签给多个anchor。我们分配负标签给与所有GT包围盒的IoU比率都低于0.3的anchor。非正非负的anchor对训练目标没有任何作用。
有了这些定义,我们遵循Fast R-CNN[5]中的多任务损失,最小化目标函数。我们对一个图像的损失函数定义为
这里,i是一个mini-batch中anchor的索引,Pi是anchor i是目标的预测概率。如果anchor为正,GT标签Pi*就是1,如果anchor为负,Pi*就是0。ti是一个向量,表示预测的包围盒的4个参数化坐标,ti*是与正anchor对应的GT包围盒的坐标向量。分类损失*Lcls是两个类别(目标vs.非目标)的对数损失。对于回归损失*,我们用 来计算,其中R是[5]中定义的鲁棒的损失函数(smooth L1)。
Pi* Lreg这一项意味着只有正anchor(Pi* =1)才有回归损失,其他情况就没有(Pi*=0)。cls层和reg层的输出分别由{pi}和{ti}组成,这两项分别由Ncls和Nreg以及一个平衡权重lambda;归一化(早期实现及公开的代码中,lambda;=10,cls项的归一化值为mini-batch的大小,即Ncls=256,reg项的归一化值为anchor位置的数量,即Nreg~2,400,这样cls和reg项差不多是等权重的。
x,y,w,h指的是包围盒中心的(x,y)坐标、宽、高。变量x,xa,x*分别指预测的包围盒、anchor的包围盒、GT的包围盒(对y,w,h也是一样)的x坐标。可以理解为从anchor包围盒到附近的GT包围盒的包围盒回归。
无论如何,我们用了一种与之前的基于特征映射的方法不同的方法实现了包围盒算法。包围盒回归在从任意大小的区域中pooling到的特征上执行,回归权重是所有不同大小的区域共享的。在我们的方法中,用于回归的特征在特征映射中具有相同的空间大小(nxn)。考虑到各种不同的大小,需要学习一系列k个包围盒回归量。每一个回
资料编号:[4623]