【目标检测】Faster RCNN论文理解

摘要

  当前最先进的目标检测网络:
  依赖于区域建议算法来假设目标位置,例选择性搜索。
SPPnet和Fast R-CNN等技术的进步缩短了检测网络的运行时间,但暴露了候选区域计算的瓶颈。
  本文Faster RCNN:
  Faster RCNN=RPN+Fast RCNN。引入区域建议网络(RPN),它与检测网络(Fast RCNN)共享全图像卷积特性,从而实现了几乎‘免费’的区域建议。RPN是一个全卷积的网络,可以同时预测每个对象的位置边界和得分。对RPN进行端到端的训练,生成高质量的候选区域,Fast R-CNN对候选区域进行检测。 通过共享卷积特征,将RPN和Fast R-CNN合并到一个网络中——使用“注意力”机制,RPN组件告诉统一后的网络去看哪里。对于非常深的VGG-16模型,检测系统在GPU上的帧速率为5fps(包括所有步骤),同时在各种数据集上实现了最先进的目标检测精度。每张图像只有300个候选区域。

一、介绍

  当前,候选区域的生成是先进的检测系统的测试时间计算瓶颈。
  (1)当前的区域建议方法/候选区域生成方法:
  区域建议方法通常依赖于廉价的特征和经济的推断方案。选择性搜索是最流行的方法之一,它基于经过设计的底层特性贪婪地合并超像素,与高效的检测网络相比,选择性搜索要慢一个数量级,在CPU实现中,每幅图像要慢2秒。EdgeBoxes目前提供了提案质量和速度之间最好的平衡,每幅图0.2秒。然而,区域建议步骤仍然与检测网络消耗同样多的运行时间。
  (2)提升区域建议速度的方法:
  1.利用GPU:Fast RCNN利用了gpu,而使用的区域建议方法是在CPU上实现的。加速提案计算的一个明显方法是为GPU重新实现它。这可能是一个有效的工程解决方案,但重新实现错过了共享计算的重要机会。
  2.本文方法,使用深度卷积神经网络的计算区域建议,即候选区域-----(RPN网络):在这个方案的计算中,考虑到检测网络的计算几乎是免费的。为此,引入了新的区域建议网络(RPN),它与最先进的对象检测网络共享卷积层。通过在测试时共享卷积,计算建议的边际成本很小(例如,每张图像10毫秒)。
  目标检测器(如Fast RCNN)使用的卷积特征图也可以用于生成区域建议,即候选区域。在这些卷积特性图之上,添加一些额外的卷积层来构造一个RPN,这些额外的层,在一个规则网格上的每个位置,回归目标的边界框和得分。
  (3)RPN网络:
  是一种全卷积网络(FCN),可以针对生成区域建议(候选区域)的任务进行端到端训练。
在这里插入图片描述
  RPN网络的设计是为了有效地预测具有广泛的尺度和纵横比的区域提案(候选区域)。与常用的图像金字塔和过滤器金字塔不同,RPN引入了新的“锚”框(anchor box),在多个尺度和纵横比下作为参考,可以被认为是一个回归参考的金字塔(图,c),它避免了枚举多个尺度或纵横比的图像或过滤器。当使用单尺度图像进行训练和测试时,该模型表现良好,因此提高了运行速度。
  (4)RPN网络通Fast RCNN结合:
  为了将RPN网络与Fast R-CNN对象检测网络相结合,提出了一种训练方案,该方案在区域建议网络的微调和目标检测网络的微调之间交替进行,同时保持建议区域固定不变。该方案收敛速度快,产生了一统一网络,这个统一的网络在两个任务之间共享卷积特征图。
  (5)实验结果:
  在PASCAL VOC检测基准上对该方法进行了综合评估,其中使用Fast R-CNNs+RPN网络,即Faster RCNN产生的检测精度优于使用Fast R-CNNs+selective search。
  同时,该方法在测试时几乎消除了选择性搜索的所有计算负担,提案的有效运行时间只有10毫秒。即使使用昂贵的非常深层的模型,检测在GPU上仍然有5fps的帧速率(包括所有步骤),因此在速度和精度上都是一个实用的对象检测系统。
  (6)Faster RCNN的推广:
  该手稿的初步版本已出版。从那时起,RPN+Fast R-CNN的框架被采用并推广到其他方法,如3D对象检测,基于零件的检测,实例分割,图像字幕。
  在ILSVRC和COCO 2015比赛中,Fast R-CNN+RPN是在ImageNet检测、ImageNet定位、COCO检测和COCO分割等几个方面排名第一的项目的基础。RPN完全学会了从图像中提出候选区域,因此可以很容易地从更深入、更有表现力的特性中获益。结果表明,该方法不仅是一种经济实用的解决方案,而且是提高目标检测精度的有效途径。

二、相关工作

  (1)对象建议生成方法:
  有大量关于对象建议生成方法的文献。广泛使用的对象建议方法包括基于超像素分组的方法(如选择性搜索、CPMC]、MCG)和基于滑动窗口的方法(如windows中的对象性、EdgeBoxes)。对象建议方法是独立于目标检测器的外部模块。(如选择性搜索对象检测器、RCN、Fast R-CNN)。
  (2)目标检测网络:
  用于对象检测的深度网络。
  R-CNN方法端到端训练CNN,将建议区域(候选区域)分类为对象类别或背景,R-CNN主要作为分类器,不预测对象边界(除了通过边界盒回归进行细化,它的准确性取决于区域建议模块的性能。一些论文已经提出了使用深度网络来预测对象边界框的方法。

三、Faster RCNN

  Faster R-CNN,由两个模块组成:
  第一个模块是提出区域建议的的深度全卷积网络(RPN)
  第二个模块是使用区域建议的FastR-CNN检测器。
  整个系统使用最近流行的带有“注意力”机制的神经网络术语,RPN模块告诉快速R-CNN模块去看哪里。

3.1 RPN—区域建议网络

  区域建议网络(RPN):
  以任意大小的图像特征图作为输入,输出一系列矩形的对象建议(候选区域),每个建议(候选区域)都有一个分数与之对应。用一个全卷积网络对这个过程进行建模,最终目标是与Fast R-CNN目标检测网络共享计算。
  RPN网络的工作流程:
  在最后一个共享卷积层的卷积特征图上滑动一个小网络(微型网络以滑动窗口的方式运行),这个小网络将输入卷积特征图的一个n×n空间窗口作为输入。每个滑动窗口被映射到一个低维的特征,这个特性被输入到两个同级的全连接的层:一个box-regression层(reg)和一个box-classification层(cls)。
          在这里插入图片描述
  在本文中使用n = 3,注意3*3的特征区域对应输入图像的有效感受野很大(ZF和VGG分别为171和228像素)。图显示了这个迷你网络的一个位置。
  注意:
  微型网络以滑动窗口的方式运行,因此全连接层在特征图的所有空间位置共享。这个架构很自然地通过一个n×n的卷积层实现,然后是两个同级的1×1卷积层(分别用于reg和cls)。

3.1.1 Anchor

  在每个微型网络所在的滑动窗口的位置,同时预测多个区域建议(每个位置预测k个):
  ①reg层有4k个输出值:表示k个框的坐标
  ②cls层有2k个输出值,表示每个区域建议是目标或非目标的概率分数。

   k个区域建议是相对于k个参考框参数化的,参考框称之为锚(anchor box)。锚点位于所讨论的滑动窗口的中心,并与比例和宽高比相关联。默认情况下,使用3个尺度和3个高宽比,在每个滑动位置产生k = 9个锚点(anchor box)。对于大小为W×H的卷积特征图,总共有WHk个锚点
  平移不变性:
  该方法的一个重要特性是平移不变性,无论是锚点,还是计算相对于锚点的区域建议的函数。
  作为比较,MultiBox方法使用k-means生成800个锚点,这些锚点不是平移不变量。因此,MultiBox不能保证在翻转对象时生成相同的建议。
  平移不变性也减少了模型的大小。MultiBox具有(4 + 1)×800维全连接输出层,而我们的方法在k = 9个锚点的情况下具有(4 + 2)×9维卷积输出层。因此,我们的输出层有2.8×104个参数(512×(4 + 2)×9 for VGG-16),比MultiBox的输出层少两个数量级。
  多尺度anchor box作为回归参考:
在这里插入图片描述
  锚点设计提出了一种解决多尺度和高宽比问题的新方案。
  多尺度预测当前两种流行的方法:
  ①第一种方法是基于图像/特征金字塔,例DPM。图像在多个尺度上调整大小,并为每个尺度计算特征图(HOG或深度卷积特征)(图(a))。这种方法通常很有用,但是很耗时。
  ②第二种方法是在特征图上使用多尺度(和/或高宽比)的滑动窗口。例如在DPM中,使用不同的滤波器尺寸(如5×7和7×5)分别训练不同高宽比的模型。这种方法用于处理多个尺度,它可以被认为是一个“过滤器的金字塔”(图(b))。第二种方式通常与第一种方式共同采用。
  基于锚(anchor box)的方法:
  建立一个金字塔的anchor box,这是更有效的成本效益。这种方法参照多尺度和纵横比的anchor box对边界框进行分类和回归。只依赖单一尺度的图像和特征图,并使用单一尺度的过滤器。
  这种基于锚点的多尺度设计,可以简单地使用单尺度图像上计算的卷积特征,正如Fast R-CNN检测器所做的那样。多尺度锚点的设计是实现特征共享的关键,而不需要额外的寻址尺度成本。

3.1.2 损失函数

  对于训练RPN网络,为每个锚(anchor box)分配一个二进制类标签(对象或非对象)。
  给anchor box 分配标签:
  正标签:
  (i)与真值框具有最高IoU重叠的锚anchor box。
  (ii)与真值框IOU重叠大于0.7的任何锚。
  注意:
  单个真值框可以为多个锚点(anchor box)分配积极的标签。
  通常,第二个条件足以确定正样本;但我们仍然采用第一种情况,因为在少数情况下,第二种情况可能找不到正样本。
  负标签:
  如果锚框(anchor box)与真值框的IoU比率低于0.3,我们将锚分配一个负标签。既不积极也不消极的锚对训练目标没有帮助。
  多任务损失目标函数:
  一张图像的损失函数定义为:
                  在这里插入图片描述
  i是一个mini batch中anchor box的索引,pi是第i个锚框是对象的预测概率。如果锚的标签是正,则ground-truth标签pi∗= 1,如果锚的标签是负,则是Pi* = 0。ti是一个向量,表示预测的边界框的4个参数化坐标,以及ti*与一个正锚点关联的真值框的坐标。
  ①分类损失:Lcls是包含两个类(目标,非目标)的log损失。
  ②回归损失:
                  在这里插入图片描述
  其中R是健壮的损失函数(平滑L1)。术语pi∗Lreg意味着回归损失只在正的锚框上被激活(p∗i= 1),否则就被禁用(p∗i= 0)。
  ③Ncls和、Nreg和加权平衡参数λ:
  公式中的cls项是mini batch的大小(即, Ncls= 256),而reg项锚点位置的数量(即Nreg∼2400)。默认设置λ= 10,因此cls和reg权重大致相等。
  边界框回归:
  采用以下4个坐标的参数化:
                  在这里插入图片描述
  其中x, y, w, h表示框的中心坐标及框的宽度和高度。变量x、xa和x∗用来表示预测的边界框、锚框和真值框(y、w、h也相同)。可以看作从锚到附近真值框的边界回归。
  ;边界框回归—》FastRCNN同FasterRCNN的对比:
  ①以前的基于ROI的FastRCNN方法实现的边界盒回归,对任意大小的ROI通过ROI pooling汇集特性,然后执行边界框回归,回归权重由所有大小的候选区域(感兴趣区域)共享。
  ②FasterRCNN用于回归的特征在特征图上具有相同的空间尺寸(3×3)。学习一组(k个)边界框的回归量,每个回归量负责一个尺度和一个高宽比,而k个回归变量不共享权重。同样,由于锚点的设计,可以预测各种尺寸的边界框,即使这些特征的尺寸/比例是固定的。

3.1.3 训练RPN

  RPN可以通过反向传播和随机梯度下降(SGD)进行端到端的训练。我们遵循来自的“以图像为中心”的采样策略来训练这个网络。
  训练时数据:
  每个小批都来自一个包含许多正面和负面示例锚的图像。如果直接对所有锚的损失函数进行优化,这将偏向于负样本,因为负样本占主导地位。相反,要在一张图像中随机抽取256个锚点来计算一个小批量的损失函数,其中抽样的正锚点和负锚点的比例高达1:1。如果一个图像中有少于128个正性样本,用负性样本填充这个小批。
  训练时配置:
  随机初始化所有的新层(RPN网络包含的层),权重取样自0均值标准差为0.01的高斯分布。所有其他层(即,共享的卷积层)通过为ImageNet分类预训练的模型来初始化。对ZF网络的所有层进行调优,并对VGG网进行conv3-1及后续层进行调优。在PASCAL VOC数据集上对60k个小批使用0.001的学习率,对下一个20k个小批使用0.0001的学习率。使用0.9的动量和0.0005的权重衰减。

3.2 RPN和Fast RCNN共享卷积特征

  目前为止,描述了如何训练一个用于区域建议生成的网络(RPN),没有描述如何利用这些生成的区域建议进行对象检测。
  检测网络采用Fast R-CNN,如何将RPN和Fast R-CNN组成统一的网络,该网络具有共享的卷积层:
  独立训练的RPN和Fast R-CNN都将以不同的方式更新它们的卷积层。因此,需要开发一种技术,允许在两个网络中共享卷积层,而不是学习两个独立的网络。
  三种共享特征网络的训练方法:
              在这里插入图片描述
  (1)交替训练:在这个解决方案中,首先训练RPN,并使用建议来训练Fast R-CNN。然后使用Fast R-CNN调优的网络初始化RPN,并迭代这个过程。这也是本文使用的解决方案。
  (2)近似联合训练:在这个解决方案中,RPN和Fast R-CNN网络在训练过程中合并成一个网络,如图所示。在每个SGD迭代中,前向传播生成区域建议,这些区域建议用来训练Fast R-CNN检测器。反向传播照常进行,共享层将来自RPN的损失和Fast R-CNN损失合并在一起。这个解决方案很容易实现,但是这个解忽略了w.r.t的导数,即提案的坐标,也是网络的响应,所以称这种方案是近似的。在实验中,通过经验发现该方法与交替训练相比,可以产生接近的结果,但是减少了大约25-50%的训练时间。
  (3)非近似联合训练:如上所述,RPN预测的边界框也是输入的函数。Fast R-CNN中的RoI pooling层接受卷积特性和预测的边界框作为输入,因此一个理论上有效的反向传播求解器也应该包括边界框坐标w.r.t的梯度。近似联合训练中忽略这些梯度。在非近似联合训练解决方案中,需要一个RoI汇集层,它是可微分的w.r.t.方框坐标。
  四步交替训练:
  在本文中,采用一种实用的四步训练算法,通过交替优化来学习共享特征。
  第一步:训练RPN。使用imagenet预训练的模型初始化此网络,并对区域建议任务进行端到端调优。
  第二步:使用step-1 RPN生成的proposal,通过Fast R-CNN训练一个单独的检测网络。这个检测网络也由imagenet预训练的模型初始化。在这一点上,两个网络并不共享卷积层。
  第三步:使用检测器网络初始化RPN训练,但是固定共享的卷积层,只微调RPN特有的层。现在这两个网络共享卷积层
  第四步:保持共享卷积层固定不变,微调Fast R-CNN的独特层。因此,这两个网络共享相同的卷积层并形成一个统一的网络

3.3 实现细节

  在单一尺度的图像上训练和测试区域建议和目标检测网络。重新调整图像尺度,使其短边为s = 600像素。多尺度提取特征(使用图像金字塔)或许可以提高精度,但不能表现出良好的速度-精度平衡。在重新缩放后的图像上,ZF和VGG网在最后一个卷积层上的总步幅为16像素,因此在调整大小(∼500×375)之前,典型的PASCAL图像上约为∼10像素。即使如此大的步幅也能带来好的结果,尽管小的步幅可以进一步提高准确性。
  锚点:
  使用了三种尺寸,分别为盒子面积128128、256256和512*512像素,以及三种长宽比的1:1、1:2和2:1。这些超参数不是为特定数据集精心选择的,在下一节消除实验中进行介绍。如前所述,我们的解决方案不需要图像金字塔或过滤器金字塔来预测多个尺度的区域,节省了大量的运行时间。
  跨图像边界的锚框:
  需要小心处理。在训练过程中,忽略了所有的跨界锚点,以免造成损失。对于一个典型的1000×600图像,总共大约有20000(≈60×40×9)个锚点。忽略跨界锚点后,每幅图像约有6000个用于训练的锚点。如果训练中不忽略跨界离群值,就会引入大量难以纠正的目标误差项,训练也不收敛。在测试期间,仍然对整个图像应用RPN。这可能会生成跨边界的建议框,我们将其剪切到图像边界。
  非极大值抑制:
  一些RPN建议区域彼此高度重叠。为了减少冗余,采用非最大抑制(NMS),将NMS的IoU阈值设置为0.7,这样每个图像就只剩下大约2000个建议区域。NMS不会损害最终的检测精度,但会大大减少提案的数量。在NMS之后,使用排名前n的建议区域进行检测。我们使用2000个RPN建议来训练Fast R-CNN,但是在测试时评估不同数量的建议。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值