what is Faster-RCNN|Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

参考其他文章,在此表示感谢,文章仅用于学习,侵权请联系,感谢


https://arxiv.org/pdf/1506.01497.pdf
https://blog.csdn.net/quincuntial/article/details/79132243


主要贡献:提出RPN网络

论文翻译

Abstract

最先进的目标检测网络依靠区域提出算法来假设目标的位置。SPPnet[1]和Fast R-CNN[2]等研究已经减少了这些检测网络的运行时间,使得区域提出计算成为一个瓶颈。在这项工作中,我们引入了一个区域提出网络(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是多个比赛中获得第一名输入的基础。代码可公开获得。

1.introduction

目标检测的最新进展是由区域提出方法(例如[4])和基于区域的卷积神经网络(R-CNN)[5]的成功驱动的。尽管在[5]中最初开发的基于区域的CNN计算成本很高,但是由于在各种提议中共享卷积,所以其成本已经大大降低了[1],[2]。忽略花费在区域提议上的时间,最新版本Fast R-CNN[2]利用非常深的网络[3]实现了接近实时的速率。现在,proposals是最新的检测系统中测试时间的计算瓶颈。

区域提议方法通常依赖廉价的特征和简练的推断方案。选择性搜索[4]是最流行的方法之一,它贪婪地合并基于设计的低级特征的超级像素。然而,与有效的检测网络[2]相比,选择性搜索速度慢了一个数量级,在CPU实现中每张图像的时间为2秒。EdgeBoxes[6]目前提供了在提议质量和速度之间的最佳权衡,每张图像0.2秒。尽管如此,区域提议步骤仍然像检测网络那样消耗同样多的运行时间。

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

在本文中,我们展示了算法的变化——用深度卷积神经网络计算区域提议——导致了一个优雅和有效的解决方案,其中在给定检测网络计算的情况下区域提议计算接近领成本。为此,我们引入了新的区域提议网络(RPN),它们共享最先进目标检测网络的卷积层[1],[2]。通过在测试时共享卷积,计算区域提议的边际成本很小(例如,每张图像10ms)

我们的观察是,基于区域的检测器所使用的卷积特征映射,如Fast R-CNN,也可以用于生成区域提议。在这些卷积特征之上,我们通过添加一些额外的卷积层来构建RPN,这些卷积层同时在规则网格上的每个位置上回归区域边界和目标分数。因此RPN是一种全卷积网络(FCN)[7],可以针对生成检测区域建议的任务进行端到端的训练。

图1:解决多尺度和尺寸的不同方案。(a)构建图像和特征映射金字塔,分类器以各种尺度运行。(b)在特征映射上运行具有多个比例/大小的滤波器的金字塔。(c)我们在回归函数中使用参考边界框金字塔。

RPN旨在有效预测具有广泛尺度和长宽比的区域提议。与使用图像金字塔(图1,a)或滤波器金字塔(图1,b)的流行方法[8],[9],[1]相比,我们引入新的“锚(anchor)”盒作为多种尺度和长宽比的参考。我们的方案可以被认为是回归参考金字塔(图1,c),它避免了枚举多种比例或长宽比的图像或滤波器。这个模型在使用单尺度图像进行训练和测试时运行良好,从而有利于运行速度。

为了将RPN与Fast R-CNN 目标检测网络相结合,我们提出了一种训练方案,在微调区域提议任务和微调目标检测之间进行交替,同时保持区域提议的固定。该方案快速收敛,并产生两个任务之间共享的具有卷积特征的统一网络。

我们在PASCAL VOC检测基准数据集上[11]综合评估了我们的方法,其中具有Fast R-CNN的RPN产生的检测精度优于使用选择性搜索的Fast R-CNN的强基准。同时,我们的方法在测试时几乎免除了选择性搜索的所有计算负担——区域提议的有效运行时间仅为10毫秒。使用[3]的昂贵的非常深的模型,我们的检测方法在GPU上仍然具有5fps的帧率(包括所有步骤),因此在速度和准确性方面是实用的目标检测系统。我们还报告了在MS COCO数据集上[12]的结果,并使用COCO数据研究了在PASCAL VOC上的改进。代码可公开获得https://github.com/shaoqingren/faster_rcnn(在MATLAB中)和https://github.com/rbgirshick/py-faster-rcnn(在Python中)。

这个手稿的初步版本是以前发表的[10]。从那时起,RPN和Faster R-CNN的框架已经被采用并推广到其他方法,如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也被这些比赛中的其他几个主要参赛者所使用。这些结果表明,我们的方法不仅是一个实用合算的解决方案,而且是一个提高目标检测精度的有效方法。

2.related work

目标提议。目标提议方法方面有大量的文献。目标提议方法的综合调查和比较可以在[19],[20],[21]中找到。广泛使用的目标提议方法包括基于超像素分组(例如,选择性搜索[4],CPMC[22],MCG[23])和那些基于滑动窗口的方法(例如窗口中的目标[24],EdgeBoxes[6])。目标提议方法被采用为独立于检测器(例如,选择性搜索[4]目标检测器,R-CNN[5]和Fast R-CNN[2])的外部模块。

用于目标检测的深度网络。R-CNN方法[5]端到端地对CNN进行训练,将提议区域分类为目标类别或背景。R-CNN主要作为分类器,并不能预测目标边界(除了通过边界框回归进行细化)。其准确度取决于区域提议模块的性能(参见[20]中的比较)。一些论文提出了使用深度网络来预测目标边界框的方法[25],[9],[26],[27]。在OverFeat方法[9]中,训练一个全连接层来预测假定单个目标定位任务的边界框坐标。然后将全连接层变成卷积层,用于检测多个类别的目标。MultiBox方法[26],[27]从网络中生成区域提议,网络最后的全连接层同时预测多个类别不相关的边界框,并推广到OverFeat的“单边界框”方式。这些类别不可知的边界框框被用作R-CNN的提议区域[5]。与我们的全卷积方案相比,MultiBox提议网络适用于单张裁剪图像或多张大型裁剪图像(例如224×224)。MultiBox在提议区域和检测网络之间不共享特征。稍后在我们的方法上下文中会讨论OverFeat和MultiBox。与我们的工作同时进行的,DeepMask方法[28]是为学习分割提议区域而开发的。

卷积[9],[1],[29],[7],[2]的共享计算已经越来越受到人们的关注,因为它可以有效而准确地进行视觉识别。OverFeat论文[9]计算图像金字塔的卷积特征用于分类,定位和检测。共享卷积特征映射的自适应大小池化(SPP)[1]被开发用于有效的基于区域的目标检测[1],[30]和语义分割[29]。Fast R-CNN[2]能够对共享卷积特征进行端到端的检测器训练,并显示出令人信服的准确性和速度。

3.faster R-CNN

图2:Faster R-CNN是一个单一,统一的目标检测网络。RPN模块作为这个统一网络的“注意力”。

我们的目标检测系统,称为Faster R-CNN,由两个模块组成。第一个模块是提议区域的深度全卷积网络,第二个模块是使用提议区域的Fast R-CNN检测器[2]。整个系统是一个单个的,统一的目标检测网络(图2)。使用最近流行的“注意力”[31]机制的神经网络术语,RPN模块告诉Fast R-CNN模块在哪里寻找。在第3.1节中,我们介绍了区域提议网络的设计和属性。在第3.2节中,我们开发了用于训练具有共享特征模块的算法。

3.1 RPN

区域提议网络(RPN)以任意大小的图像作为输入,输出一组矩形的目标提议,每个提议都有一个目标得分。我们用全卷积网络[7]对这个过程进行建模,我们将在本节进行描述。因为我们的最终目标是与Fast R-CNN目标检测网络[2]共享计算,所以我们假设两个网络共享一组共同的卷积层。在我们的实验中,我们研究了具有5个共享卷积层的Zeiler和Fergus模型[32](ZF)和具有13个共享卷积层的Simonyan和Zisserman模型[3](VGG-16)。

为了生成区域提议,我们在最后的共享卷积层输出的卷积特征映射上滑动一个小网络。这个小网络将输入卷积特征映射的n×n空间窗口作为输入。每个滑动窗口映射到一个低维特征(ZF为256维,VGG为512维,后面是ReLU[33])。这个特征被输入到两个子全连接层——一个边界框回归层(reg)和一个边界框分类层(cls)。在本文中,我们使用n=3,注意输入图像上的有效感受野是大的(ZF和VGG分别为171和228个像素)。图3(左)显示了这个小型网络的一个位置。请注意,因为小网络以滑动窗口方式运行,所有空间位置共享全连接层。这种架构通过一个n×n卷积层,后面是两个子1×1卷积层(分别用于reg和cls)自然地实现。

图3:左:区域提议网络(RPN)。右:在PASCAL VOC 2007测试集上使用RPN提议的示例检测。我们的方法可以检测各种尺度和长宽比的目标。


3.1.1 anchors

在每个滑动窗口位置,我们同时预测多个区域提议,其中每个位置可能提议的最大数目表示为k。因此,reg层具有4k个输出,编码k个边界框的坐标,cls层输出2k个分数,估计每个提议是目标或不是目标的概率。相对于我们称之为锚点的k个参考边界框,k个提议是参数化的。锚点位于所讨论的滑动窗口的中心,并与一个尺度和长宽比相关(图3左)。默认情况下,我们使用3个尺度和3个长宽比,在每个滑动位置产生k=9个锚点。对于大小为W×H(通常约为2400)的卷积特征映射,总共有WHk个锚点。

feature map上的anchor是原图上的一个区域

平移不变的锚点

我们的方法的一个重要特性是它是平移不变的,无论是在锚点还是计算相对于锚点的区域提议的函数。如果在图像中平移目标,提议应该平移,并且同样的函数应该能够在任一位置预测提议。平移不变特性是由我们的方法保证的。作为比较,MultiBox方法[27]使用k-means生成800个锚点,这不是平移不变的。所以如果平移目标,MultiBox不保证会生成相同的提议。

平移不变特性也减小了模型的大小。MultiBox有(4+1)×800(4+1)×800维的全连接输出层,而我们的方法在k=9k=9个锚点的情况下有(4+2)×9(4+2)×9维的卷积输出层。因此,对于VGG-16,我们的输出层具有2.8×1042.8×104个参数(对于VGG-16为512×(4+2)×9512×(4+2)×9),比MultiBox输出层的6.1×1066.1×106个参数少了两个数量级(对于MultiBox [27]中的GoogleNet[34]为1536×(4+1)×8001536×(4+1)×800)。如果考虑到特征投影层,我们的提议层仍然比MultiBox少一个数量级。我们期望我们的方法在PASCAL VOC等小数据集上有更小的过拟合风险。

(4+2)是cls和loc编码后的维度

多尺度锚点作为回归参考

我们的锚点设计提出了一个新的方案来解决多尺度(和长宽比)。如图1所示,多尺度预测有两种流行的方法。第一种方法是基于图像/特征金字塔,例如DPM[8]和基于CNN的方法[9],[1],[2]中。图像在多个尺度上进行缩放,并且针对每个尺度(图1(a))计算特征映射(HOG[8]或深卷积特征[9],[1],[2])。这种方法通常是有用的,但是非常耗时。第二种方法是在特征映射上使用多尺度(和/或长宽比)的滑动窗口。例如,在DPM[8]中,使用不同的滤波器大小(例如5×7和7×5)分别对不同长宽比的模型进行训练。如果用这种方法来解决多尺度问题,可以把它看作是一个“滤波器金字塔”(图1(b))。第二种方法通常与第一种方法联合采用[8]。

3.1.2 损失函数

为了训练RPN,我们为每个锚点分配一个二值类别标签(是目标或不是目标)。我们给两种锚点分配一个正标签:(i)具有与实际边界框的重叠最高交并比(IoU)的锚点,或者(ii)具有与实际边界框的重叠超过0.7 IoU的锚点。注意,单个真实边界框可以为多个锚点分配正标签。通常第二个条件足以确定正样本;但我们仍然采用第一个条件,因为在一些极少数情况下,第二个条件可能找不到正样本。对于所有的真实边界框,如果一个锚点的IoU比率低于0.3,我们给非正面的锚点分配一个负标签。既不正面也不负面的锚点不会有助于训练目标函数。

根据这些定义,我们对目标函数Fast R-CNN[2]中的多任务损失进行最小化。我们对图像的损失函数定义为:

这两个项用Ncls和Nreg进行标准化,并由一个平衡参数λ加权。在我们目前的实现中(如在发布的代码中),方程(1)中的cls项通过小批量数据的大小(即Ncls=256)进行归一化,regreg项根据锚点位置的数量(即,Nreg∼24000)进行归一化。默认情况下,我们设置λ=10,因此clsreg项的权重大致相等。我们通过实验显示,结果对宽范围的λλ值不敏感(表9)。我们还注意到,上面的归一化不是必需的,可以简化。

表9:Faster R-CNN使用方程(1)中不同的λλ值在PASCAL VOC 2007测试集上的检测结果。网络是VGG-16。训练数据是VOC 2007训练集。使用λ=10λ=10(69.9%69.9%)的默认设置与表3中的相同。

对于边界框回归,我们采用[5]中的4个坐标参数化:

其中,x,y,w和h表示边界框的中心坐标及其宽和高。变量x,xa和x\*分别表示预测边界框,锚盒和实际边界框(类似于y,w,h)。这可以被认为是从锚盒到邻近的实际边界框的回归。

然而,我们的方法通过与之前的基于RoI(感兴趣区域)方法[1],[2]不同的方式来实现边界框回归。在[1],[2]中,对任意大小的RoI池化的特征执行边界框回归,并且回归权重由所有区域大小共享。在我们的公式中,用于回归的特征在特征映射上具有相同的空间大小(3×3)。为了说明不同的大小,学习一组k个边界框回归器。每个回归器负责一个尺度和一个长宽比,而k个回归器不共享权重。因此,由于锚点的设计,即使特征具有固定的尺度/比例,仍然可以预测各种尺寸的边界框。

3.1.3 训练RPN

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

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

3.2 RPN和Fast R-CNN共享特征

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

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

(一)交替训练。在这个解决方案中,我们首先训练RPN,并使用这些提议来训练Fast R-CNN。由Fast R-CNN微调的网络然后被用于初始化RPN,并且重复这个过程。这是本文所有实验中使用的解决方案。

(二)近似联合训练。在这个解决方案中,RPN和Fast R-CNN网络在训练期间合并成一个网络,如图2所示。在每次SGD迭代中,前向传递生成区域提议,在训练Fast R-CNN检测器将这看作是固定的、预计算的提议。反向传播像往常一样进行,其中对于共享层,组合来自RPN损失和Fast R-CNN损失的反向传播信号。这个解决方案很容易实现。但是这个解决方案忽略了关于提议边界框的坐标(也是网络响应)的导数,因此是近似的。在我们的实验中,我们实验发现这个求解器产生了相当的结果,与交替训练相比,训练时间减少了大约25−50%25−50%。这个求解器包含在我们发布的Python代码中。

(三)非近似的联合训练。如上所述,由RPN预测的边界框也是输入的函数。Fast R-CNN中的RoI池化层[2]接受卷积特征以及预测的边界框作为输入,所以理论上有效的反向传播求解器也应该包括关于边界框坐标的梯度。在上述近似联合训练中,这些梯度被忽略。在一个非近似的联合训练解决方案中,我们需要一个关于边界框坐标可微分的RoI池化层。这是一个重要的问题,可以通过[15]中提出的“RoI扭曲”层给出解决方案,这超出了本文的范围。

四步交替训练。在本文中,我们采用实用的四步训练算法,通过交替优化学习共享特征。在第一步中,我们按照3.1.3节的描述训练RPN。该网络使用ImageNet的预训练模型进行初始化,并针对区域提议任务进行了端到端的微调。在第二步中,我们使用由第一步RPN生成的提议,由Fast R-CNN训练单独的检测网络。该检测网络也由ImageNet的预训练模型进行初始化。此时两个网络不共享卷积层。在第三步中,我们使用检测器网络来初始化RPN训练,但是我们修正共享的卷积层,并且只对RPN特有的层进行微调。现在这两个网络共享卷积层。最后,保持共享卷积层的固定,我们对Fast R-CNN的独有层进行微调。因此,两个网络共享相同的卷积层并形成统一的网络。类似的交替训练可以运行更多的迭代,但是我们只观察到可以忽略的改进。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容