最先进的目标检测网络算法是基于区域候选方法来预测目标位置,SPPnet和Fast R-CNN已经减少了检测网络的运行时间,但是候选区域的计算量仍然是网络的一大瓶颈。
本文引入了区域候选网络RPN,和检测网络共享整幅图像的卷积特征图,使得候选区域的开销很小。RPN是一个全卷积网络,能够同时预测目标框边界和每个位置的得分。
RPN是利用端到端的方式来生成高质量的候选区域,和Fast R-CNN结合起来用于检测,RPN和Fast R-CNN通过共享卷积特征进一步合并为一个单一的网络,使用最近流行的“注意力”机制网络,RPN组件告诉统一网络在哪里寻找。对于非常深的VGG-16模型[3],我们的检测系统在GPU上的帧率为5fps(包括所有步骤),同时在PASCAL VOC 2007,2012和MS COCO数据集上实现了最新的目标检测精度,每个图像只有300个候选区域提出。在ILSVRC和COCO 2015竞赛中,Faster R-CNN和RPN是多个比赛中获得第一名输入的基础。代码可公开获得。
目前最优的目标检测结果是由候选区域方法和R-CNN获得的,尽管R-CNN之前的计算开销很大,但在进行了候选区域卷积特征共享之后就有了很大的降低。忽略花费在候选区域上的时间,最新版本的Fast R-CNN就是利用非常深的网络实现了接近实时的速率,目前要解决的是候选区域测试时间的计算瓶颈。
候选区域的方法基于简单的特征和推断方案,选择性搜索[4]是最流行的方法之一,它贪婪的合并基于底层特征的子区域。然而,与高效的检测网络相比,选择性搜索慢了一个数量级,在CPU上对每张图像的处理需要2s,EdgeBoxes目前提供了在候选区域质量和速度间的最佳权衡,每幅图像需要0.2s来处理,尽管如此,候选区域步骤仍然像检测网络那样消耗很多的时间。
有人可能会注意到,基于区域的快速CNN利用GPU会加速处理过程,然而区域提议方法仍然在CPU上实现,使得运行时间不等。加速区域提议计算的一个显而易见的方法是将其在GPU上重新实现。这可能是一个有效的工程解决方案,但重新实现忽略了下游检测网络,因此错过了共享计算的重要机会。
本文展示了算法的变化——用深度卷积神经网络计算候选区域——提出了一个优雅且有效的解决方案,其中候选区域的计算基本上接近0成本。为此,我们引入了新的区域提议网络(RPN),和最先进的目标检测网络共享卷积特征,在测试过程共享卷积特征,使得计算候选区域的边界成本很小。
我们观察到,基于区域的检测器所使用的卷积特征映射,如Fast R-CNN,同样可以被用处产生候选区域。卷积特征之上,我们通过添加一些额外的卷积层来构建RPN,这些卷积层能够同时回归区域边界和计算规则网格上每个位置上的分数。因此RPN是一种全卷积网络(Fully Convolutional Network,FCN),并且可以针对生成检测区域的任务进行端到端的训练。
RPN被用来在大尺度和纵横比的区域机芯高效的候选区域预测,与使用图像金字塔(Fig.1 a)或滤波器金字塔(Fig.1 b)等流行的方法相比,我们引入新的“锚”(anchor)框作为多尺度和纵横比的参考框。本文的方法可以被看成回归参考金字塔(Fig.1 c),避免了枚举多种尺度或纵横比的图像或滤波器,这个模型在单尺度图像上训练和测试良好,故有利于运行速度的提升。
为了将RPN和Fast R-CNN目标检测网络结合起来,本文提出了一种训练方案,可以在微调候选区域和微调目标检测之间进行转换,同时保持候选区域的固定,该方案可以快速收敛并产生两个任务之间共享卷积特征的统一网络。
我们在PASCAL VOC数据集上评估了我们的方法,其中具有Fast R-CNN的RPN取得的检测精度优于使用选择性搜索的Fast R-CNN的效果。同时,我们的方法在测试时免去了所有的计算负担——区域提议的有效运行时间仅仅有10ms,使用[3]中的昂贵的非常深的模型,我们的检测方法在GPU上仍然有5fps的帧率(包括所有的步骤),因此在素的和准确性方面是使用的目标检测系统。同时也在COCO上进行了实验,并进行了改进。代码可公开获得https://github.com/shaoqingren/faster_rcnn(在MATLAB中)和https://github.com/rbgirshick/py-faster-rcnn(在Python中)。
本框架最初的版本是以前发表的[10],从那时起Faster R-CNN和RPN的框架已经被采用并推广到其他方法,如3D目标检测[13],基于部件的检测[14],实例分割[15]和图像加标题[16]等。我们快速且有效的目标检测系统已经在Pinterest[17]中的商业系统中应用了。
在ILSVRC和COCO 2015竞赛中,Faster R-CNN和RPN是ImageNet检测,ImageNet定位,COCO检测和COCO分割中几个第一名参赛者[18]的基础。RPN完全从数据中学习提议区域,因此可以从更深入和更具表达性的特征(例如[18]中采用的101层残差网络)中轻松获益。Faster R-CNN和RPN也被这些比赛中的其他几个主要参赛者所使用。这些结果表明,我们的方法不仅是一个实用合算的解决方案,而且是一个提高目标检测精度的有效方法。
目标提议: 目标提议方法方面有大量的文献,目标提议方法的综述可在[19,20,21]中找到,广泛使用的目标提议方法包括基于超像素分组和基于滑窗的方法。目标提议方法一般是独立于检测器(如 Selective Search [4] object detectors, R-CNN [5], and Fast R-CNN [2])的外部模块。
用于目标检测的深度网络多种多样。R-CNN[5]方法端到端的对CNN进行训练,将候选区域分为目标类和背景类。R-CNN主要作为分类器,并不能预测目标边界框(除了多边界框回归进行细化)。其准确度依赖于区域提议模型的性能([20]),一些论文中提出使用深度网络进行边界框的预测[259,26,27]。在OverFeat方法[9]中,训练一个全连接层来预测单个目标边界框的坐标,然后将全连接层变成卷积层来检测多个类别的目标。在MultiBox方法中[26,27],从网络中产生区域提议,网络最后的全连接层同时预测多个类别未知的边界框,并推广到“单个边界框”的方式。这些类别未知的边界框被用于R-CNN中的区域提议。MultiBox区域提议网络适用于单张裁剪图像或者多张大型裁剪图像(如224*224)。MultiBox在区域提议和检测网络中不共享特征,下面会讨论到OverFeat和 MultiBox 与本文方法的对比。与我们的工作同时进行的,DeepMask方法[28]是为学习分割提议区域而开发的。
卷积计算特征的共享越来越受到人们的关注,因为其可以有效且准确的进行视觉识别。OverFeat[9]计算图像金字塔卷积特征图用于分类、定位和检测。共享卷积特征映射的自适应大小池化(SPP)利用共享卷积特征而被有效的用于基于区域的目标检测[1,30]、语义分割[29],Fast R-CNN能够对共享卷积特征进行端到端的检测器训练,获得了优秀的准确度和快速性。
本文的目标检测系统,称为Faster R-CNN由两部分组成,第一部分是深度全卷积网络,用于提议区域。第二部分是利用提议区域的Fast R-CNN检测器。整体的结构是一个统一的目标检测网络(Fig.2),使用最近流行的“注意力”机制神经网络术语,RPN模块知道Fast R-CNN模块在哪里寻找。3.1节中,我们介绍了区域提议网络的设计和属性,3.2节中我们开发了用于训练具有共享特征模块的算法。
图2:Faster R-CNN是一个统一的目标检测网络。RPN模块作为这个统一网络的“注意力”
RPN以任意大小的图像作为输入,输出一系列矩形目标提议区域,每个提议区域都有一个目标得分。我们用全卷积网络[7]来建模。因为我们的目标是和Fast R-CNN目标检测网络共享卷积特征,故我们假定两个网络共享一组共同的卷积层,在我们的实验中,我们研究了具有5个共享卷积层获得Zeiler和Fergus[32]模型,和具有13个共享卷积层的Simonyan和Zisserman模型[3](VGG-16)。
为了生成区域提议,我们在最后的共享卷积层特征映射上滑动一个小网络,该小的网络将输入卷积特征映射的nn维空间窗口作为输入。每个滑窗映射到一个低维特征(ZF为256维,VGG为512维,后面是ReLU[33])。该特征被送入两个子全连接层——一个边界框回归层和一个边界框分类层。本文使用n=3,注意,输入图像撒花姑娘的有效感受野是大的(ZF和VGG分别为171和228个像素)。图3(左)显示了这个小型网络的一个位置,因为小网络以滑动窗口方式运行,所有空间位置共享全连接层。这种架构通过一个nn的卷积层,后面级联两个子1*1的卷积层(分别用于reg和cls)。
在每个滑动窗口位置,我们同事预测多个区域提议,其中每个位置可能提议的最大数目为 k k k。因此reg层有 4 k 4k 4k个输出,编码边界框坐标,cls层有 2 k 2k 2k个分数,估计每个提议是目标或不是目标的概率。k个提议是和k个参考框而进行参数化的,称为锚。一个锚点位于滑窗中心,并与一个尺度和纵横比相关(图3),我们默认使用3个尺度和3个纵横比,在每个滑动位置产生k=9个锚点,对于大小为 W × H W\times H W×H(通常约为2400)的卷积特征图,总共有 W H k WHk WHk个锚点。
平移不变性锚点:
本文方法的一个重要特性是平移不变性的,无论是在锚点还是计算相对于锚点的区域提议函数,如果在图像中平移目标,提议区域也应该平移,而且同样的函数应该可以在任意位置预测提议区域。本文的方法可以保证平移不变性。作为比较, MultiBox[27]使用k-means方法生成800个锚点,不具有平移不变性,所有如果平移目标, MultiBox不能保证生成同样的提议。
平移不变特性也减小了模型的大小。MultiBox有(4+1)×800维的全连接输出层,而我们的方法在k=9个锚点的情况下有(4+2)×9维的卷积输出层。因此,对于VGG-16,我们的输出层具有2.8×104个参数(对于VGG-16为512×(4+2)×9),比MultiBox输出层的6.1×106个参数少了两个数量级(对于MultiBox [27]中的GoogleNet[34]为1536×(4+1)×800)。如果考虑到特征投影层,我们的提议层仍然比MultiBox少一个数量级。我们期望我们的方法在PASCAL VOC等小数据集上有更小的过拟合风险。
多尺度锚点作为回归参考:
本文的锚点设计中,提出了一种新型方案来定位多尺度(和多种纵横比)。图一中展示了两种流行的多尺度预测方法。第一种是基于图像/特征的金字塔,如DPM[8]和基于CNN的方法[9,1,2]。图像在多个尺度上进行缩放,并在每个尺度上计算特征映射(Fig 1 a)。这种方法通常是有用的,但非常耗时。第二种方法是在特征图上使用多种尺度的滑窗进行特征提取,如DPM[8]中使用不同大小的滤波器分别对不同纵横比的模型进行训练。如果用这种方法来解决多尺度问题,可以把它看做一个“滤波器金字塔”(图1 b)。第二种方法通常和第一种方法联合使用。
作为比较,本文基于锚点的方法将建立在锚点金字塔上,这也很合算。本方法参照多尺度和多纵横比的锚框来分类和回归边界框。仅仅依赖于单一尺度的图像和特征映射,并使用单一尺寸的滤波器(特征映射上的滑动窗口),我们通过实验来展示这个方案解决多尺度和尺寸的效果(表8)。
因为该多尺度的设计基于锚点,所以我们可以简化,使用从单一尺度图像计算得到的卷积特征,Fast R-CNN检测器也是这样做的[2]。多尺度锚点设计是共享特征的关键组件,不需要额外的成本来处理尺度。
如何理解anchor:
首先我们需要知道anchor的本质是什么,本质是SPP(spatial pyramid pooling)思想的逆向。而SPP本身是做什么的呢,就是将不同尺寸的输入resize成为相同尺寸的输出。所以SPP的逆向就是,将相同尺寸的输出,倒推得到不同尺寸的输入。
接下来是anchor的窗口尺寸,这个不难理解,三个面积尺寸(1282,2562,512^2),然后在每个面积尺寸下,取三种不同的长宽比例(1:1,1:2,2:1).这样一来,我们得到了一共9种面积尺寸各异的anchor。示意图如下:
至于这个anchor到底是怎么用的,这个是理解整个问题的关键。
下面是整个faster RCNN结构的示意图:
利用anchor是从第二列这个位置开始进行处理,这个时候,原始图片已经经过一系列卷积层和池化层以及relu,得到了这里的 feature:51x39x256(256是层数)
在这个特征参数的基础上,通过一个3x3的滑动窗口,在这个51x39的区域上进行滑动,stride=1,padding=2,这样一来,滑动得到的就是51x39个3x3的窗口。
对于每个3x3的窗口,作者就计算这个滑动窗口的中心点所对应的原始图片的中心点。然后作者假定,这个3x3窗口,是从原始图片上通过SPP池化得到的,而这个池化的区域的面积以及比例,就是一个个的anchor。换句话说,对于每个3x3窗口,作者假定它来自9种不同原始区域的池化,但是这些池化在原始图片中的中心点,都完全一样。这个中心点,就是刚才提到的,3x3窗口中心点所对应的原始图片中的中心点。如此一来,在每个窗口位置,我们都可以根据9个不同长宽比例、不同面积的anchor,逆向推导出它所对应的原始图片中的一个区域,这个区域的尺寸以及坐标,都是已知的。而这个区域,就是我们想要的 proposal。所以我们通过滑动窗口和anchor,成功得到了 51x39x9 个原始图片的proposal。接下来,每个proposal我们只输出6个参数:每个 proposal 和 ground truth 进行比较得到的前景概率和背景概率(2个参数)(对应图上的 cls_score);由于每个 proposal 和 ground truth 位置及尺寸上的差异,从 proposal 通过平移放缩得到 ground truth 需要的4个平移放缩参数(对应图上的 bbox_pred)。
所以根据我们刚才的计算,我们一共得到了多少个anchor box呢?
51 x 39 x 9 = 17900
为了训练RPN,我们为每个锚点分配一个二值类别标签(表明其是目标或不是目标)。我们给两种锚点分配一个正标签:(i)锚点框和真实框具有最高的IoU,(ii)具有与实际边界框的重叠超过0.7 IoU的锚点。注意,单个真实的边界框可以为多个锚点分配正标签,通常第二个条件足以确定正样本,但我们仍然采用第一个条件,因为在一些极少数情况下,第二个条件可能找不到正样本。对于所有的真实边界框,如果一个锚点的IoU比率低于0.3,我们给非正面的锚点分配一个负标签。既不正也不负的锚点不会有助于训练目标函数。
根据这些定义,我们对目标函数Fast R-CNN中的多任务损失最小化,图像损失函数定义为:
L ( p i , t i ) = 1 N c l s Σ i L c l s ( p i , p i ∗ ) + λ 1 N r e g Σ i p i ∗ L r e g ( t i , t i ∗ ) L({p_i},{t_i})=\frac{1}{N_{cls}}\Sigma_iL_{cls}(p_i,p_i^*)+\lambda \frac{1}{N_{reg}}\Sigma_ip_i^*L_{reg}(t_i,t_i^*) L(pi,ti)=Ncls1ΣiLcls(pi,pi∗)+λNreg1Σipi∗Lreg(ti,ti∗)
其中,i是小批量中每个锚的索引, p i p_i pi是锚点 i i i预测为目标的概率,如果锚点为正,那么真实标签 p i ∗ p_i^* pi∗为1,如果锚点为负,则为0。 t i t_i ti表示预测边界框四个参数的坐标向量, t i ∗ t_i^* ti∗是正锚点的真实边界框向量。分类损失 L c l s L_{cls} Lcls是两个类别(目标或非目标)上的对数损失。回归损失使用 L r e g ( t i , t i ∗ ) = R ( t i − t i ∗ ) L_{reg}(t_i,t_i^*)=R(t_i - t_i^*) Lreg(ti,ti∗)=R(ti−ti∗),其中 R R R是在文献[2]中定义的鲁棒损失函数(L1损失), p i ∗ L r e g p_i^*L_{reg} pi∗Lreg表示回归损失只在锚点为正( p i ∗ = 1 p_i^*=1 pi∗=1)的时候被激活,否则被禁用( p i ∗ = 0 p_i^*=0 pi∗=0)。cls和reg层的输出由 p i {p_i} pi和 t i t_i ti构成。
这两项用 N c l s N_{cls} Ncls和 N r e g N_{reg} Nreg进行标准化,且由一个平衡参数 λ \lambda λ进行权衡。我们的实验中,公式(1)中的cls项通过小批量数据的大小(即 N c l s = 256 N_{cls}=256 Ncls=256)进行归一化,reg项根据锚点位置的数量(即 N r e g — — 2400 N_{reg} —— 2400 Nreg——2400)。默认 λ = 10 \lambda=10 λ=10,因此cls和reg项的权重大致相等,通过实验显示,结果对大范围的 λ \lambda λ并不敏感(Table 9),而且归一化并非必须的,可以简化。
t x = ( x − x a ) / w a , t y = ( y − y a ) / h a t_x=(x-x_a)/w_a, t_y=(y-y_a)/h_a tx=(x−xa)/wa,ty=(y−ya)/ha
t w = l o g ( w / w a ) , t h = l o g ( h / h a ) t_w=log(w/w_a), t_h=log(h/h_a) tw=log(w/wa),th=log(h/ha)
t x ∗ = ( x ∗ − x a ) / w a , t y ∗ = ( y ∗ − y a ) / h a t_x^*=(x^*-x_a)/w_a, t_y^*=(y^*-y_a)/h_a tx∗=(x∗−xa)/wa,ty∗=(y∗−ya)/ha
t w ∗ = l o g ( w ∗ / w a ) , t h ∗ = l o g ( h ∗ / h a ) t_w^*=log(w^*/w_a), t_h^*=log(h^*/h_a) tw∗=log(w∗/wa),th∗=log(h∗/ha)
其中,x,y,w和h分别表示边界框的中心坐标、宽和高。变量 x x x, x a x_a xa和 x ∗ x^* x∗分别表示预测框、锚框和真实框,这可以被认为是从锚框到邻近真实边界框的回归。
然而,我们的方法通过与之前的基于RoI的方法[1,2]不同的方式来实现边界框回归,在[1,2]中对任意大小的RoI池化特征执行边界框回归,并且回归权重由所有不同大小的区域共享,我们的公式中,回归中利用的特征是特征图中具有相同大小的空间区域(如3*3)。为了说明不同大小,学习一系列的k个回归器,每个回归器都是从相同尺度和相同纵横比而学来的,k个回归器不共享权重,因此,有了锚框之后,即使特征是固定大小和尺度的,仍然可以预测各种尺寸的边界框。
RPN可以通过反向传播和随机梯度下降(SGD)进行端到端的想你了[35],我们遵循[2]中的“以图像为中心”的采样策略来训练这个网络,每个小批量数据都从包含许多正例和负例锚点的单张图像中产生。对所有锚点的损失函数进行优化时有可能的,单张这样一来会偏向于负样本,因为它们是占主导地位的,取而代之的是,我们在图像中随机采样256个锚点,计算一个小批量数据的损失函数,其中采样的正锚点和负锚点的比例可达1:1,如果图像中的正样本少于128个,我们使用负样本填充小批量数据。
我们利用均值为0,方差为0.01来随机初始化所有新层的权重,所有其他层(即所有共享卷积层)通过预训练的ImageNet分类模型[36]来进行初始化,如同[5]中的标准步骤一样。我们调整ZF网络中的所有层,以及conv3_1及其之上的层来节省内存,对于60k的小批量数据,我们使用0.001的学习率,对于PASCAL VOC数据集中的下一个20k小批量数据,我们使用0.9的动量和0.0005的衰减率,使用Caffa实现[38]。
目前为止,我们已经描述了如何训练用于区域提议生成的网络,没有考虑将这些提议的用于基于区域的目标检测CNN,为了检测网络,我们使用Fast R-CNN。下面我们将介绍一些算法,学习由RPN和Fast R-CNN组成的具有共享卷积层的统一网络(Fig.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%。这个求解器包含在我们发布的Python代码中。
(iii)非近似的联合训练。
如上所述,由RPN预测的边界框也是输入的函数。Fast R-CNN中的RoI池化层[2]接受卷积特征以及预测的边界框作为输入,所以理论上有效的反向传播求解器也应该包括关于边界框坐标的梯度。在上述近似联合训练中,这些梯度被忽略。在一个非近似的联合训练解决方案中,我们需要一个关于边界框坐标可微分的RoI池化层。这是一个重要的问题,可以通过[15]中提出的“RoI扭曲”层给出解决方案,这超出了本文的范围。
四步交替训练:
四步交替训练。在本文中,我们采用实用的四步训练算法,通过交替优化学习共享特征。
在第一步中,我们按照3.1.3节的描述训练RPN。该网络使用ImageNet的预训练模型进行初始化,并针对区域提议任务进行了端到端的微调。
在第二步中,我们使用由第一步RPN生成的提议,由Fast R-CNN训练单独的检测网络。该检测网络也由ImageNet的预训练模型进行初始化。此时两个网络不共享卷积层。
在第三步中,我们使用检测器网络来初始化RPN训练,但是我们修正共享的卷积层,并且只对RPN特有的层进行微调。现在这两个网络共享卷积层。
最后,保持共享卷积层的固定,我们对Fast R-CNN的独有层进行微调。因此,两个网络共享相同的卷积层并形成统一的网络。类似的交替训练可以运行更多的迭代,但是我们只观察到可以忽略的改进。
我们在单尺度图像上训练和测试区域提议和目标检测网络[1],[2]。我们重新缩放图像,使得它们的短边是s=600像素[2]。多尺度特征提取(使用图像金字塔)可能会提高精度,但不会表现出速度与精度的良好折衷[2]。在重新缩放的图像上,最后卷积层上的ZF和VGG网络的总步长为16个像素,因此在调整大小(〜500×375)之前,典型的PASCAL图像上的总步长为〜10个像素。即使如此大的步长也能提供良好的效果,尽管步幅更小,精度可能会进一步提高。
对于锚点,我们使用了3个尺度,边界框面积分别为 12 8 2 128^2 1282, 25 6 2 256^2 2562和 51 2 2 512^2 5122个像素,以及1:1,1:2和2:1的长宽比。这些超参数不是针对特定数据集仔细选择的,我们将在下一节中提供有关其作用的消融实验。如上所述,我们的解决方案不需要图像金字塔或滤波器金字塔来预测多个尺度的区域,节省了大量的运行时间。图3(右)显示了我们的方法在广泛的尺度和长宽比方面的能力。表1显示了使用ZF网络的每个锚点学习到的平均提议大小。我们注意到,我们的算法允许预测比基础感受野更大。这样的预测不是不可能的——如果只有目标的中间部分是可见的,那么仍然可以粗略地推断出目标的范围。
跨越图像边界的锚盒需要小心处理。在训练过程中,我们忽略了所有的跨界锚点,所以不会造成损失。对于一个典型的1000×600的图片,总共将会有大约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]上全面评估了我们的方法。这个数据集包含大约5000张训练评估图像和在5000张测试图像,共20个类别。我们还提供了一些模型在PASCAL VOC 2012基准数据集上的测试结果。对于ImageNet预训练网络,我们使用具有5个卷积层和3个全连接层的ZF网络[32]的“快速”版本以及具有13个卷积层和3个全连接层的公开的VGG-16模型[3]。我们主要评估检测的平均精度均值(mAP),因为这是检测目标的实际指标(而不是关注目标提议代理度量)。
表2(顶部)显示了使用各种区域提议方法进行训练和测试的Fast R-CNN结果。这些结果使用ZF网络。对于选择性搜索(SS)[4],我们通过“快速”模式生成约2000个提议。对于EdgeBoxes(EB)[6],我们通过调整0.7 IoU的默认EB设置生成提议。SS在Fast R-CNN框架下的mAP为58.7%,EB的mAP为58.6%。RPN与Fast R-CNN取得了有竞争力的结果,使用多达300个提议,mAP为59.9%。由于共享卷积计算,使用RPN比使用SS或EB产生了更快的检测系统;较少的区域提议也减少了区域方面的全连接层成本(表5)。
为了研究RPN作为区域提议方法的效果,我们进行了几项消融实验。首先,我们展示了RPN和Fast R-CNN检测网络共享卷积层的效果,为此,我们在四步训练过程的第二步之后停止训练,使用单独的网络将结果降维58.7%(RPN+ZF,非共享,表2)。可以观察到这是因为第三步中,当使用检测器调整的特征来微调RPN时,区域提议的质量得到了改善。
接着,我们分了RPN对训练Fast R-CNN检测网络的影响,为此,我们通过使用2000个SS提议和ZF网络来训练Fast R-CNN模型,我们固定检测器并通过改变测试时使用的区域提议来评估检测的mAP,在这些消融实验中,RPN不与检测器共享特征。
在测试阶段用来300个RPN的区域提议替换SS的区域提议,得到了56.8%的mAP,mAP的损失是因为训练/测试的提议不一致造成的,这个结果作为以下比较的基准。
令人惊讶的是,RPN在测试时使用top-100提议区域仍会获得较好的结果,表明排名靠前的RPN提议是准确的。另外,使用排名前6000的提议区域获得的mAP结果是55.2%,这表明NMS不会损害检测mAP并可能减少误报。
接着,我们分别测试在关闭RPN的cls和reg来发现RPN的作用。当cls层在测试时被移除时(故不使用NMS/排名),我们从未得分的区域中随机采样N个提议区域,当n=1000时,mAP几乎没有变化(55.8),但当N=100时,mAP降为44.6%,这表明cls分数考虑了排名最高的提议的准确性。
另一方面,当在测试阶段移除reg层时(提议变为预定义的锚盒),mAP降为52.1%,这表明高质量的提议主要是由于回归的边界框,锚盒虽然有多个尺度和纵横比,但不足以进行准确的检测。
我们还单独评估了更强大的网络对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的性能:
表3显示了VGG-16的提议和检测结果。使用RPN+VGG,非共享特征的结果是68.5%,略高于SS的基准。如上所示,这是因为RPN+VGG生成的提议比SS更准确。与预先定义的SS不同,RPN是主动训练的并从更好的网络中受益。对于特性共享的变种,结果是69.9%——比强壮的SS基准更好,但几乎是零成本的提议。我们在PASCAL VOC 2007和2012的训练评估数据集上进一步训练RPN和检测网络。该mAP是73.2%。图5显示了PASCAL VOC 2007测试集的一些结果。在PASCAL VOC 2012测试集(表4)中,我们的方法在VOC 2007的trainval+test和VOC 2012的trainval的联合数据集上训练的模型取得了70.4%的mAP。表6和表7显示了详细的数字
在表5中我们总结了整个目标检测系统的运行时间。根据内容(平均大约1.5s),SS需要1-2秒,而使用VGG-16的Fast R-CNN在2000个SS提议上需要320ms(如果在全连接层上使用SVD[2],则需要223ms)。我们的VGG-16系统在提议和检测上总共需要198ms。在共享卷积特征的情况下,单独RPN只需要10ms计算附加层。我们的区域计算也较低,这要归功于较少的提议(每张图片300个)。我们的采用ZF网络的系统,帧速率为17fps。
对超参数的敏感度:
在表8中,我们调查锚点的设置。默认情况下,我们使用3个尺度和3个长宽比(表8中69.9%的mAP)。如果在每个位置只使用一个锚点,那么mAP的下降幅度将是3−4%。如果使用3个尺度(1个长宽比)或3个长宽比(1个尺度),则mAP更高,表明使用多种尺寸的锚点作为回归参考是有效的解决方案。在这个数据集上,仅使用具有1个长宽比(69.8%)的3个尺度与使用具有3个长宽比的3个尺度一样好,这表明尺度和长宽比不是检测准确度的解决维度。但我们仍然在设计中采用这两个维度来保持我们的系统灵活性。
在表9中,我们比较了公式(1)中λ的不同值。默认情况下,我们使用λ=10,这使方程(1)中的两个项在归一化之后大致相等地加权。表9显示,当λ在大约两个数量级(1到100)的范围内时,我们的结果只是稍微受到影响(∼1%)。这表明结果对宽范围内的λ不敏感。
分析IoU召回率:
接下来,我们使用实际边界框来计算不同IoU比率的提议召回率。值得注意的是,Recall-to-IoU度量与最终的检测精度的相关性是松耦合的[19,20,21]。使用这个指标来诊断提议方法比评估提议方法更合适。
在图4中,我们显示了使用300,1000和2000个提议的结果。我们与SS和EB进行比较,根据这些方法产生的置信度,N个提议是排名前N的提议。从图中可以看出,当提议数量从2000个减少到300个时,RPN方法表现优雅。这就解释了为什么RPN在使用300个提议时具有良好的最终检测mAP。正如我们之前分析过的,这个属性主要归因于RPN的cls项。当提议较少时,SS和EB的召回率下降的比RPN更快。
一阶段 检测 vs. 两阶段 提议+检测:
OverFeat论文[9]提出了一种在卷积特征映射的滑动窗口上使用回归器和分类器的检测方法。OverFeat是一个一阶段,类别特定的检测流程,而我们的是两阶段级联,包括类不可知的提议和类别特定的检测。在OverFeat中,区域特征来自一个尺度金字塔上一个长宽比的滑动窗口。这些特征用于同时确定目标的位置和类别。在RPN中,这些特征来自正方形(3×3)滑动窗口,并且预测相对于锚点具有不同尺度和长宽比的提议。虽然这两种方法都使用滑动窗口,但区域提议任务只是Faster R-CNN的第一阶段——下游的Fast R-CNN检测器会致力于对提议进行细化。在我们级联的第二阶段,在更忠实覆盖区域特征的提议框中,区域特征自适应地聚集[1],[2]。我们相信这些功能会带来更准确的检测结果。
为了比较一阶段和两阶段系统,我们通过一阶段Fast R-CNN来模拟OverFeat系统(从而也规避了实现细节的其他差异)。在这个系统中,“提议”是3个尺度(128,256,512)和3个长宽比(1:1,1:2,2:1)的密集滑动窗口。训练Fast R-CNN来预测类别特定的分数,并从这些滑动窗口中回归边界框位置。由于OverFeat系统采用图像金字塔,我们也使用从5个尺度中提取的卷积特征进行评估。我们使用[1],[2]中5个尺度。
表10比较了两阶段系统和一阶段系统的两个变种。使用ZF模型,一阶段系统具有53.9%的mAP。这比两阶段系统(58.7%)低4.8%。这个实验验证了级联区域提议和目标检测的有效性。在文献[2],[39]中报道了类似的观察结果,在这两篇论文中,用滑动窗取代SS区域提议会导致∼6%的退化。我们也注意到,一阶段系统更慢,因为它产生了更多的提议。
我们在Microsoft COCO目标检测数据集[12]上提供了更多的结果。这个数据集包含80个目标类别。我们用训练集上的8万张图像,验证集上的4万张图像以及测试开发集上的2万张图像进行实验。我们评估了IoU∈[0.5:0.05:0.95]的平均mAP(COCO标准度量,简称为mAP@[.5,.95])和[email protected](PASCAL VOC度量)。
本文提出了RPNs来生成高效、准确的区域提议,区域提议步骤通过与下游的检测网络共享卷积特征,变为几乎是0成本的过程。我们的方法使得同一且基于深度学习的目标检测系统能够以接近实时的帧率运行,学习到的RPN也提高了区域提议的质量,从而提高了目标检测精度。