1. 磐创AI-开放猫官方网站首页
  2. Medium

两阶段目标检测指南:R-CNN、FPN、Mask R-CNN等

多级(两级)目标检测

目标检测是计算机视觉中最基本、研究最广泛的挑战之一。该任务的目标是在给定的图像中绘制对象的多个边界框,这在包括自动驾驶在内的许多领域都是非常重要的。一般来说,这些目标检测算法可以分为两类:单阶段模型和多阶段模型。在这篇文章中,我们将通过回顾该领域一些最重要的论文来深入了解多级管道用于目标检测的关键见解。

目标检测器的一个分支是基于多级模型的。在R-CNN工作的基础上,一个模型用于提取目标区域,第二个模型用于分类和进一步细化目标的定位。众所周知,这种方法相对较慢,但功能非常强大,但最近的进展,如共享特征,改进了两级检测器,使其具有与单级检测器相似的计算成本。这些工作高度依赖于以前的工作,并且大多建立在以前的管道作为基线的基础上。因此,了解两级检测器中的所有主要算法是很重要的。

关于这篇文章的论文选择主要是基于调查[8]。

R-CNN[1]

2014年的论文提出了基于CNN的两阶段检测算法的朴素版本,并在后面的论文中进行了改进和加速。如上图所示,整个管道由三个阶段组成:

区域提案可以使用多种方法生成,本文选择使用选择性搜索来与前人的工作进行比较。尽管如此,该管道仍与大多数地区提案方法兼容。这里和本演示文稿提供了选择性搜索的详细说明。here this

为了总结选择性搜索,对图像应用分割算法,并基于分割图绘制区域建议(边界框)。如下图所示,迭代地合并分割图,并从精化图中提取更大的区域建议。这里详细解释了合并和框图的工作原理。 here

第二和第三阶段一起可以被认为是一个传统的CNN,负责处理裁剪地区的提案。本文使用AlexNet的卷积部分作为第二阶段,而任何其他CNN结构都可以使用。由于区域方案的大小不同,本文采用最幼稚的方法将所有边界框扭曲并调整大小到所需的大小。

作者还使用训练好的包围盒分类器来进一步细化分割后的包围盒估计。另一个完全连接的网络被训练来输入特征地图并回归表示相对平移和对数刻度宽度/高度缩放因子的4个元组(r,c,h,w)中的边界框偏移。这项技术在消融研究中显示出与R-CNN BB一样的性能提高。

为了在推理中拒绝两个或多个边界框指向同一对象的重叠区域建议,作者提出了一种贪婪算法,如果一个区域与另一个预测更可信的区域具有较高的交集并集(IOU),则该区域将被拒绝。

由于图像的域被改变为翘曲窗口的图像,因此分类器模型进一步针对翘曲图像和新标签进行训练。在训练分类器时,对于地面真理(GT)盒的IOU>0.5IOU的区域被认为是该类,并且被训练以输出GT盒的类。当盒子与任何GT盒子没有明显重叠时,或者当每个盒子的区域IOU<0.5IOU时,分类器必须将区域分类到背景类中。为了解决潜在的类不平衡问题,选择了32个阳性区域和96个背景区域,以形成大小为128的小批量。 当IOU>0.5的区域被认为是整体重叠时,0.3

  • 提出了两阶段目标检测的基线流水线:生成区域建议并对其进行分类。
  • 使用选择性搜索生成区域建议
  • 分类网络调整区域建议的大小,并预测类别概率(包括背景)和边界框细化。
  • SPP-NET[2]

    本文建议使用空间金字塔池(SPP)层,其设计用于任何图像大小,而无需将其调整为固定大小,这可能导致信息丢失和图像失真。卷积,在CNN中被描述为特征提取器,并不是约束固定的输入大小,而是输入大小的约束是因为完全连接的分类层。

    因此,作者提出了一种特殊的池层,它可以转换不同大小的要素,并将它们提供给完全连接的层,以消除网络的固定大小限制,如上图所述。

    基本上,SPP层以与图像大小成比例的不同比例最大限度地合并输出。SPP层使用大小与图像大小成比例的空间箱,允许将任何形状图像映射到单个大小。每个空间面元最大限度地汇集其区域内的值,通过这个过程可以保留空间信息。这在下图中进行了描述。每个过滤都被处理了不同大小的池,这些池覆盖了图像的一部分,并将结果连接在一起。256是功能映射中的过滤器数量。

    虽然SPP层不是由作者提出的,但他们最先考虑在CNN中使用SPP层。SPP具有以下属性:

    本文的重点是图像分类,并给出了目标检测的结果作为泛化性能的证明,但在应用于目标检测时具有一些与R-CNN算法不同的有趣特性。

    上图描述了SPP-Net的目标检测流水线。对整个图像执行一次CNN,并且基于通过选择性搜索检测到的区域来裁剪CNN的输出特征。在每种作物上应用SPP,并根据SPP层的输出预测类别。这样,卷积层仅应用于图像一次,并且仅应用与检测到的区域的数量相对应的较轻的FC层。

    卷积特征检测器是关于图像分类任务的预训练,而不是关于目标检测的进一步训练。基于地面真实窗口分别训练分类器FC层。本文介绍了用两种方法对图像进行预处理来实现尺度不变性。在微调FC网络时,R-CNN的许多技术也被应用。

    这篇论文的贡献确实令人惊叹,因为它将训练和推理时间减少了数量级,同时还提高了性能,而不必调整和扭曲图像。然而,我怀疑在图像分类上训练的特征地图是否真的包含关于裁剪图像的空间信息。当使用深度神经网络时,这可能是一个很大的问题,因为接收器的大小会很大,因此可能会限制SPP-Net管道使用更深的特征提取器。可以使用一些其他损失来微调对象检测数据集上的特征提取器。

    摘要

    • 提出应用空间金字塔池来输出任意输入大小的定长特征。
    • 改进了要处理的训练/推理过程,以将每个区域(每个图像约2,000个区域)的一个正向过程减少到整个图像上的一个正向过程。

    快速R-CNN[3]

    以往的目标检测算法,即R-CNN,通常将定位和分类阶段分开学习,这使得训练成本较高。此外,这些算法在测试时非常慢,不利于实时应用。FAST R-CNN联合学习检测对象的空间位置并对其进行分类。

    R-CNN很慢,因为每个对象建议都要进行前向传递。虽然SPP-Nets确实解决了这个问题,并在测试时将R-CNN加速了100倍,但训练是一个多阶段的过程,需要许多步骤的密集计算,与R-CNN相比只加速了3倍。此外,固定的卷积层对网络的精度造成了限制。

    上图说明了Fast R-CNN管道。CNN处理图像,并在对象提案上裁剪特征地图。然后,感兴趣区域(ROI)汇聚层提取定长向量,该定长向量然后通过全连通网络进行处理,以预测类别概率并细化边界框。

    ROI池化层是SPP层的特例,具有一个金字塔级别。h×w ROI窗口被划分成大小为每个h/H×w/W的H×W网格,在每个网格单元上应用最大合并。输出始终是H×W形状的矢量。Fast R-CNN工艺与SPP-NET管道非常相似,只是稍有修改。

    以前在SPP-Net中,通过卷积层的反向传播是低效的,因为感受场可能跨越整个图像,这是非常大的。FAST R-CNN通过将来自一幅图像的多个ROI样本作为小批量同时训练来解决这个问题。这些功能可以在培训期间共享,从而加快了培训速度并省去了缓存功能。这个技巧叫做分层抽样。此外,Fast R-CNN通过多任务损失联合优化分类器和包围盒回归器,而不是单独训练。

    对R-CNN算法也做了一些额外的改进。例如,Fast R-CNN使用稳健的L1损失而不是L2损失进行回归。在超参数中也有修改。本文还结合了R-CNN和SPP-Net技术。文中给出了详细的解释。FAST R-CNN能够达到S.O.T.A的准确率,同时在训练和测试中都快了几个数量级。

    摘要

    • 将SPP修改为ROI池
    • 通过对一幅图像中的多个补丁进行采样实现高效训练->卷积层上只有一次前向/后向传递。
    • ->通过反向传播实现了卷积特征提取器的培训

    更快的R-CNN[4]

    指出目标提出阶段是实时目标检测的计算瓶颈。作为一种解决方案,更快的R-CNN实现了与特征提取器网络共享卷积层的区域提案网络(RPN),从而为计算对象提案引入了边际成本。该管道与Fast R-CNN一致,但目标提案是通过内部培训的RPN进行的,如下图所示。

    RPN模型接收由特征提取器计算的特征地图,并通过在特征地图上滑动小CNN来输出对象建议列表。在每个滑动窗口位置,网络预测k个参考框(锚)的对象建议,每个对象建议由4个坐标和估计对象概率的分数组成。RPN模型如下图所示。

    RPN模型与Fast R-CNN分类管道分开训练。快速R-CNN模型的训练类似于原始程序,包括以图像为中心的采样策略。一个不同之处在于ROI大小可以确定,而不是任意大小。因此,取而代之的是训练k个包围盒回归器,每个包围盒回归器负责提炼相应的锚类型,从而受益于锚设计。

    在训练RPN模型时,基于具有地面真实边界框的IOU,为每个锚分配一个二进制标签。标签可以是正的、负的或中性的,这取决于带有真实情况框的借条。RPN模型根据得分和坐标估计进行训练。本文讨论了通过梯度下降法联合训练两种模型的三种方法。本文采用交替训练的方法对网络进行训练,首先训练RPN,然后利用在训练过程中计算出的建议来训练Fast R-CNN。

    摘要

    • 提出了RPN来训练包围盒提议过程,而不是缓慢的选择性搜索。
    • RPN模型预测对象在锚点上的概率、位置。
    • 将各种训练方法与原始的基于区域的检测网络进行比较,以有效地训练RPN模型。

    要素金字塔网络(FPN)[5]

    特征化图像金字塔(图a)提供了多尺度特征表示,通过支持尺度不变性,可以方便地进行目标检测。该模型必须能够检测图像中对象的所有尺度,并且改变金字塔的层可以很容易地抵消对象的尺度变化。但它显然需要相当长的时间来计算多个级别的特征,并且不用于诸如Fast/Fast R-CNN这样的管道(图b)。

    卷积神经网络固有地计算多尺度特征表示,因为每层分层计算不同分辨率的特征映射。然而,以往利用CNN的层次性构造特征图像金字塔计算量较小的工作(图c)是不完整的。CNN中间特征映射的问题是特征根据网络的深度自然地表达不同的语义。为了充分利用CNN进行多尺度特征表达,重要的是图层在所有尺度上都具有较强的语义。

    建议的FPN(图d)描述为

    FPN是一种类似U-Net的架构,旨在为高分辨率功能提供丰富的语义。自下而上的路径(RED)是前馈CNN。每个分辨率都表示为一个阶段,并且为每个阶段定义了一个棱锥体级别。自上而下路径(蓝色)通过对更高金字塔级别的语义更强的特征地图进行上采样来生成更高分辨率的特征。直观地说,更多的操作可以增强任意比例尺的要素地图的语义,提供丰富的多比例尺要素。使用通过横向连接投影的自下而上路径的特征进一步增强了这些特征。

    FPN流水线为生成具有丰富语义内容的多尺度特征地图提供了一种通用的解决方案。当应用于更快的R-CNN目标检测流水线时,FPN结构被应用于生成包围盒建议的RPN网络和基于区域的快速R-CNN分类器骨干网中。RPN采用FPN代替主干网,并以FPN输出代替单一的特征映射。在应用锚点时,我们在金字塔输入的不同级别上应用每个比例的锚点。例如,要素地图{P2,P3,P4,P5,P6}的每个锚点大小分别为{32²,64²,128²,256²,512²}。更快的R-CNN检测网络被应用于根据边界框的大小确定的特征地图列表之一。

    摘要

    • 提出了一种新的计算语义丰富的多尺度特征表示的FPN网络结构。
    • 使用CNN的中间层作为多尺度特征和图像金字塔,并使用这些特征训练RPN和骨干网络。

    掩码R-CNN[6]


    MASK R-CNN被用来解决一个稍有不同的实例分割问题。简而言之,这个问题是目标检测和语义分割的结合。如上所述,该任务的目标是生成划分对象的像素边界。

    MASK R-CNN基于更快的R-CNN管道,但每个对象提案有三个输出,而不是两个。附加分支预测分割图像中每个类的对象的K(#个类)个二进制对象掩码。使用分类分支的结果选择要绘制的最终实例分割图。这称为去耦掩码和类别预测。

    使用全卷积网络(FCN)从每个感兴趣区域绘制m×m掩模。与绘制边界框不同,生成像素级蒙版需要像素级空间信息。因此,在生成遮罩分段时,该函数在折叠特征之前会进行分支,如下图所示。

    ROI是小的特征地图,通过将特征地图严格地分成箱的ROI池操作来计算。这就是说,这在ROI和提取的特征之间引入了不对准,这在分类中被忽略,但是可能会损害像素级别的掩码,这可能会受到小平移的很大影响。提出了RoIAlign层,平滑了RoIPool的硬切片。RoIAlgin层基本上是大贴图到小贴图的双线性插值。结果显示性能有了很大提高,作者提出了更多证据表明问题出在不一致的比对上。

    为了训练掩码分支,在原始分类和边界盒回归损失函数中增加了损失项L_MASK。掩码损失项被计算为具有第k类的基本真值分割图和第k个掩码之间的交叉熵损失。

    本文不仅实现了高性能的实例分割,而且在规则包围盒目标检测和姿态估计等任务中也取得了令人惊讶的结果。上表显示了边界框对象检测的结果,其中Mask R-CNN的性能优于更快的R-CNN。更快的R-CNN,RoIAlgin显示了训练期间不使用面罩丢失时的结果。实验结果表明,目标检测流水线在使用掩模预测目标进行训练时,学习到的特征更具泛化能力,更丰富。

    摘要

    • 通过引入掩码分支,提出了一种基于快速R-CNN的实例分割通用框架。
    • 通过解决切片中的未对齐问题修复RoIPooling图层。
    • 简单但令人惊叹的论文:)

    级联R-CNN[7]


    如果IOU高于阈值u,则补丁被认为是类的示例,或者被认为是背景类。当在使用松散的IOU阈值(如u=0.5)进行的数据集上训练时,边界框预测会变得嘈杂。但是,提高IOU阈值并不能解决问题,因为用于训练/推理的最佳IOU不匹配。它还将极大地减少正样本的数量,引入不平衡数据的问题,这在右图上红色图形的低性能中得到了说明。区分“封闭但不正确”的边界框很重要,但在以前的工作中没有进行研究。

    这些曲线图显示了三个在IOU阈值u=0.5、0.6、0.7上训练的检测器。如左图所示,每个型号在不同的IOU范围内性能最佳。本文对为什么单个分类器很难统一地执行整体IOU级别提供了更多的理由。基于单个检测器对于单个质量水平是最优的假设,Cascade R-CNN训练了一系列具有不断增加的IOU阈值的检测器。

    在更快的R-CNN(图a)中,RPN网络提供用于精炼盒子和分类的ROI。在Cascade R-CNN中,头序列被提供前一个头的边界框估计,而不是RPN的ROI,解释为迭代地改进边界框估计(图b,d)。从理论上讲,下一个头的输出应该会逐渐改善边界框位置,但是训练具有小IOU阈值的边界框精化器不会在某个值上改善IOU(上面的c图)。因此,Cascade R-CNN被设计为不同专业回归变量的级联(图d)。因此,更深的阶段能够逐步改善到更高的IOU阈值,如下面的IOU直方图所述。

    摘要

    • 指出IOU阈值在目标检测中的影响,以及简单修改阈值存在的问题。
    • 已观察到不同型号在不同IOU范围内的性能最佳。
    • 级联边界框回归器,以确保高置信度边界框输出,而不会引入其他问题。

    结论

    综述了多阶段目标检测的主要方法。这些算法的进展速度确实令人惊叹。琐碎的R-CNN算法速度慢,效率低。先进算法的许多关键见解都基于共享特征(例如SPP-NET、Fast R-CNN、Mask R-CNN),并允许对管道中先前固定的组件(例如Fast R-CNN、Fast R-CNN、Cascade R-CNN)进行梯度训练,以有效地学习更丰富的特征。目标检测是计算机视觉中的一个重要领域,多级目标检测是目标检测的主流方法。

    最近在多级目标检测方面的一项工作是检测器,它通过提出递归特征金字塔来改进网络的主干。虽然最近对目标检测的关注已经转移到基于变压器的方法上,但这些关于多级目标检测的论文总体上为深度学习提供了很好的见解。在这篇文章中介绍的论文的选择主要是基于[8]。[8]

    参考文献

    [1]Girshick,R.,Donahue,J.,Darrell,T.和Malik,J.(2014)。丰富的特征层次结构,可实现精确的对象检测和语义分割。发表于IEEE计算机视觉和模式识别会议论文集(pp.580-587)。

    [2]何凯,张霞,任山,孙军(2015)。用于视觉识别的深卷积网络中的空间金字塔汇集。IEEE模式分析和机器智能学报,第37期(9),1904-1916年。

    [3]格希克,R.(2015)。快速R-CNN。发表于IEEE国际计算机视觉会议论文集(1440-1448页)。

    [4]任山,何凯,格希克,R.,孙军(2015)。更快的R-CNN:使用区域建议网络实现实时目标检测。神经信息处理系统进展,28,91-99。

    [5]林天勇、多拉尔、P.、格希克、何凯、哈里哈兰、B.和贝朗吉,S.(2017)。用于目标检测的特征金字塔网络。发表于IEEE计算机视觉和模式识别会议论文集(第2117-2125页)。

    [6]He,K.,Gkioxari,G.,Dolár,P.,&Girshick,R.(2017)。掩护R-CNN。载于IEEE国际计算机视觉会议论文集(第2961-2969页)。

    [7][7]Cai,Z.和Vasconselos,N.(2018年)。CASCADE R-CNN:深入研究高质量目标检测。发表于IEEE计算机视觉和模式识别会议论文集(第6154-6162页)。

    [8][8]焦力,张峰,刘峰,杨松,李立,冯振中,曲锐(2019)。基于深度学习的目标检测研究综述。IEEEAccess,7,128837-128868。

    原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/29/%e4%b8%a4%e9%98%b6%e6%ae%b5%e7%9b%ae%e6%a0%87%e6%a3%80%e6%b5%8b%e6%8c%87%e5%8d%97%ef%bc%9ar-cnn%e3%80%81fpn%e3%80%81mask-r-cnn%e7%ad%89/

    联系我们

    400-800-8888

    在线咨询:点击这里给我发消息

    邮件:admin@example.com

    工作时间:周一至周五,9:30-18:30,节假日休息