论文笔记:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

来源:互联网 发布:string.h 51单片机 编辑:程序博客网 时间:2024/06/06 18:05

摘要:

目前最先进的目标检测网络是基于区域建议算法推测目标位置。像SPPnet和Fast R-CNN已经减少了检查网络的运行时间,这时区域建议算法就成了一个瓶颈本文中提出了一个区域建议网络(RPN),它和检测网络共享全图的卷积特征,因此区域建议基本不耗时。RPN是一个全卷积网络,在每个位置同时预测目标边界和目标得分。RPN是端到端训练的,生成高质量的区域建议,被Fast R-CNN用来检测。我们一进步通过共享它们的卷积特征来合并RPN和Fast R-CNN到一个网络中——使用最近流行的术语叫做“注意力机制”,RPN部分告诉整个网络去看哪里。对非常深的VGG-16模型,我们的检测系统在GPU上获得5帧每秒的速度,同时取得了PASCAL VOC 2007,2012和MS COCO数据集上取得了最好的目标检测准确率,每个图像只用300个建议框。

1.引言:

Fast R-CNN利用了GPU,但是区域建议的方法是在CPU中实现的。一种明显的加速建议计算的方式是重新在GPU上实现,这是一种工程上很有效的方式,但是忽略了下游的检测网络,因而也错过了共享计算的重要机会。
本文中,我们改变了算法——用深度卷积神经网络计算建议框——引入了一种简单高效的解决方案,在检测网络计算中建议计框计算几乎没有消耗。为了这个目的,我们引入了区域建议网络(RPN),它和最先进的检测网络共享卷积层。通过共享卷积,计算建议框的边际成本很小(例如,每个图10ms)。
我们观察发现,基于区域的检测器例如Fast R-CNN使用的卷积特征图,同样可以用于生成区域建议框。我们在这些卷积特征的最上面增加一些额外的卷积层来构建RPN,同时回归区域边界和区域得分。RPN是一种全卷积网络(FCN),可以针对生成检测建议框的任务端到端的训练。
RPN被设计来高效的使用多尺度和宽高比预测建议区域。和以前的方法不同,以前使用图像金字塔(图1.a)或者滤波器金字塔(图1.b),我们引入了新的“anchor”框,作为多多尺度和比例的参考。我们的策略可以被想成一个回归参考的金字塔(图1.c),可以避免枚举图片或者滤波器的多个尺度和比例。

为了统一RPN和Fast R-CNN目标检测网络,我们提出了一个训练策略,即在保持建议框固定的同时,交替微调区域建议任务和目标检测。这个方案收敛的很快,形成一个共享卷积特征的统一网络。(我们也发现RPN可以和Fast R-CNN联合训练,训练时间更短)
我们在PASCAL VOC检测基准上评估我们的方法,结合RPN的Fast R-CNN检测准确率超过了结合Selective Search的Fast R-CNN的强大基准。同时,我们的方法没有了Selective Search的计算负担,生成建议框的时间只有10毫秒。

2.相关工作:

目标建议

目标建议方法独立于检测器被用于外部模块。

目标检测的深度网络

R-CNN方法端对端的训练CNN来分类建议区域到目标类别或背景。R-CNN主要扮演了一个分类器的角色,它并不预测目标边界(除非为了改善检测框回归)。它的准确率依赖于区域建议模块。

3.Faster R-CNN:

Faster R-CNN是由两个模块组成。第一个模块是一个建议区域的深度全卷积网络。第二个模块是使用建议区域的Fast R-CNN检测器。这整个系统是一个独立统一的目标检测网络(图2)。



3.1区域建议网络

区域建议网络(RPN)将一个图片(任意尺寸)作为输入,输出矩形目标建议框的集合,每一个框有一个目标得分。我们用全卷积网络对这个过程建模,本章会详细描述。因为我们的最终目标是和Fast R-CNN共享计算,我们假设这个两个网络共享一系列卷积层。在实验中,我们研究了ZF模型,有5个可共享的卷积层,VGG-16模型,有13个可共享的卷积层。

为了生成区域建议框,我们在最后一个共享卷积层输出的卷积特征图上滑动一个小的网络。这个小的网络把输入卷积特征图上的n*n的空间窗口作为输入。每个滑动窗口被映射到一个低维特征(256-d for ZF and 512-d for VGG,随后ReLU)。这种特征被输入到两个同级的全连接层——一个包围盒回归层(reg),一个包围盒分类层(cls)。本文使用n=3,注意输入图像的有效感受野很大(ZF是171像素,VGG是228像素)。图3以这种小网络在一个位置的情况举了个例子。注意,由于小网络是在滑动窗口上操作,所以全连接层网络(权值)被所有空间位置共享。这种架构很自然的使用n*n的卷积层加两个同级的1*1的卷积层实现(分别对应reg和cls)。


3.1.1anchor

在每个滑动窗口的位置,我们同时预测多个区域建议,每个位置的最大可能的建议数是k。所以reg层有4k个输出,编码了k个盒子的坐标,cls层输出2k个得分,估计每个建议框是目标或非目标的可能性。这k个建议框被参数化到k个称为anchors的参考盒子。一个anchor以当前的滑动窗的中心为中心,并对应一种尺度和长宽比(图3)。默认我们使用3种尺度和3种宽高比,在每个滑动位置产生9个anchor。对于尺寸是W*H(典型值约2400)的卷积特征图,总共有W*H*k个anchor。

平移不变的anchor
我们方法的一个重要的特性就是平移不变性,对anchor和对计算anchor相应建议框的的函数而言都是这样。如果平移了一个图像中的目标,建议框也应平移,同样的函数应该能在任何位置预测建议框。这种平移不变性是由我们方法保证的。
作为回归参考的多尺度anchor

我们anchor的设计提出了一个解决多尺度(长宽比)问题的新方案。如图1所示,有两种比较流行的多尺度预测的方法。一种是基于图像或者特征金字塔。一种是在特征图上使用多尺度的滑动窗口,称为卷积核金字塔。

作为对比,我们的基于anchor的方法是构建在anchor金字塔上,更加高效。我们的方法使用多尺度和长宽比的anchor盒子的引用分类和回归边界盒。它只依赖于单尺度的图像和特征图,使用单尺度的滤波器(在特征图上滑动窗口)。我们通过实验展示了这种方式处理多尺度问题的效果(表8)。

因为这种基于anchor的多尺度设计,我们可以简单的使用在单一尺度的图像上计算的卷积特征,这些特征同样被Fast R-CNN检测器使用。多尺度anchor的设计是一种无需额外消耗来共享特征解决尺度问题的关键部分。

3.1.2损失函数

为了训练RPN,我们给每个anchor分配了一个二进制类别标签(是不是目标)。我们分配正标签给两类anchor:(i)与某个groud truth包围盒有最高IoU(交集并集比)重叠的anchor,(ii)与任意groud-truth的IOU重叠高于0.7的anchor。注意一个gt包围盒可能分配正标签给多个anchors。一般第二个条件足够决定正样本。我们分配一个负标签给与所有groud-truth的IoU比率都低于0.3的anchor。既非正也非负的anchor对训练目标没有任何作用。

有了这些定义,我们按照Fast R-CNN的多任务损失来最小化目标函数。一个图像的损失函数定义为:


这里,i是一个mini-batch中一个anchor的索引,pi是 anchor i为一个目标的预测概率。如果anchor为正,GT标签Pi*就是1,如果anchor为负,Pi*就是0ti是一个向量,代表预测的包围盒的4个参数化坐标,ti*是与正anchor对应的GT包围盒的坐标向量。分类损失Lcls是两个类别(目标or非目标)的对数损失。对于回归损失,我们使用Lreg(ti, t*i) =R(ti - t*i) ,R是鲁棒损失函数(smoothL1)。p*Lreg这项意味着只有正anchor(p*= 1)才会激活回归损失。cls和reg层的数据分别由{pi}{ti}构成。 

这两项通过Ncls 和 Nreg以及一个平衡参数加权进行归一化。在我们现在的实现中(公开的代码中),cls项通过mini-batch的大小(Ncls = 256)进行归一化,reg项通过anchor位置的数量(Nreg~2,400)进行归一化。我们默认设置λ=10,这样cls和reg项差不多等权重。我们同样注意到归一化是不需要、可以被简化的。

对于边界盒回归,我们采用4个坐标参数:


…………可以想成一个从anchor盒子到一个旁边的groud-truth盒子的边界回归。

3.1.3训练RPN

RPN可以通过反向传播和梯度下降端到端的训练。我们遵循“image-centric”的采用策略来训练这个网络。每个mini-batch是由包含了很多正负样本anchors的单张图片组成。可以优化所有anchor的损失函数,但是因为主要是负样本,这会偏向于负样本。因此,我们随机的在一张图片上采样256个anchor,计算一个mini-batch的损失函数,其中采样的正负anchor的比例是1:1。
我们通过均值为0方差为0.01的高斯分布获取权重来初始化所有新层(最优一个卷积层以后的层)。所有其它层(共享的卷积层)是通过ImageNet分类预训练的模型初始化的,这是标准惯例。

3.2RPN和Fast R-CNN共享特征

迄今为止,我们已经描述了怎么训练网络来生成区域建议,没有考虑基于区域的目标检测CNN如何利用这些建议框。对于检测网络,我们采用Fast R-CNN。接下来我们描述了一个算法,学习一个由RPN和Fast R-CNN共享卷积网络组成的统一网络(如图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 loss和Fast R-CNN loss反向传播的信号被组合在一起。这种方案实现简单。但是这种方案忽略了***,候选盒子的坐标也是网络的相应,所以是近似的。在我们的实验中,我们已经经验的发现这种方案产出结果近似,但是减少了25%-50%的训练时间。

3.3实现细节

我们训练、测试区域建议和目标检测网络都是在单一尺度的图像上我们缩放图像,让它们的短边s=600像素。多尺度的特征提取(图像金字塔)可能提升了
准确率,但是不利于速度和准确率之间的平衡。在缩放后的图像上,ZF和VGG网络在最后一个卷积层的步长是16像素,这样相当于一个典型的PASCAL图像(~500x375)上大约10个像素(600/16=375/10)。即使是这样大的步长也取得了好结果,尽管若步长小点准确率可能得到进一步提高。 
对于anchor,我们使用3个尺度,包围盒面积为128^2,256^2,512^2,3个长宽比,1:1,1:2,2:1。这些超参不是精心为特定数据集选的,下一节我们提供了一个效果的消融实验。如讨论中一样,我们的方案不需要图像金字塔或滤波器金字塔来预测多尺度的区域,节省了大量的运行时间。图3显示了我们的方法处理多种尺度和长宽比的能力。表1显示了使用ZF网络对每个anchor学到的平均建议框大小。注意到,我们的算法允许预测结果大于基本感受野。这种预测不是不可能——只要看得见目标的中间部分,还是能大致推算出这个目标的范围的。
对于跨越图像边界的包围盒要小心处理。在训练中,我们忽略所有跨越图像边界的anchor,这样他们不会对loss有影响。对一个典型的1000*600的图像,差不多总共有20k(~60*40*9)个anchor。忽略了跨越边界的anchor后,每个图像只剩下6k个anchors需要训练。如果跨越边界的异常值不在训练时忽略,就会在目标中引入又大又困难的修正误差项,训练不会收敛。但是,在测试时,我们仍然对整张图使用全卷积RPN。这可能生成跨越边界的建议框,我们将其裁剪到图像边界位置。
一些RPN建议框之间高度重叠。为了减少冗余,我们基于建议区域的cls得分采用非极大值抑制(non-maximum suppression,NMS)。我们固定NMS的IoU阈值为0.7,这样每个图像只剩下2k个建议区域。NMS不会影响最终的检测准确率,但是大幅的减少了建议框的数量。NMS后,我们时候用候选区域中的top-N来检测。在下文中,我们用2000个RPN建议框训练Fast R-CNN,但在测试时会对不同数量的建议框进行评估。



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