卷积神经网络——实例分割之Mask R-CNN论文翻译

论文链接
https://arxiv.org/abs/1703.06870

相关论文翻译链接
R-CNN:https://blog.csdn.net/itlilyer/article/details/107190083
Fast R-CNN:https://blog.csdn.net/itlilyer/article/details/107764472
Faster R-CNN:https://blog.csdn.net/itlilyer/article/details/108049850

Mask R-CNN

0. 摘要

我们提出了一个概念上简单、灵活、通用的对象实例分割框架。我们的方法可以高效地检测图像中的目标,同时为每个实例生成一个高质量的分割掩码。该方法,叫做Mask R-CNN,是对Faster R-CNN的扩展,在Faster R-CNN的基础上增加了一个与边框回归分支并行的分支,该分支用来预测目标的掩码。Mask R-CNN训练起来很简单,只在Faster R-CNN基础上增加了少量开销,运行速度为5 fps。此外,Mask R-CNN可以很容易推广到其他任务,例如,允许我们使用同一个框架来实现估计人的姿势。我们展示了在COCO系列挑战中三条赛道的最好成绩,包括:实例分割、边框目标检测、人体关键点检测。在没有花里胡哨的各种招的加持下(这应该指各种数据增强和参数调优),在所有任务上都胜过所有现有的单一模型,包括2016年COCO挑战赛获奖者。我们希望我们简单且有效的方法能够作为一个坚实的基础并有助于简化实例级识别的未来研究。代码获取:https://github.com/facebookresearch/Detectron

在这里插入图片描述

1.绪论

计算机视觉社区在短时间内快速的提升了目标检测和语义分割的精度(社区力量大呀)。很大程度上这些进步是通过一些强大的基线系统驱动的,比如Fast/Faster R-CNN [12, 36]对于目标检测、全卷积网络(FCN)对于语义分割。这些方法在概念上很直观,并具有灵活性和鲁棒性,而且训练和推理速度也很快。我们这项工作的目标是为实例分割开发一个可比较的基线框架。

实例分割具有挑战性,因为它需要正确检测图像中的所有对象,同时还要精确地分割每个实例。因此,它结合了目标检测的经典计算机视觉任务中的元素和语义分割,目标检测的目的是对单个对象进行分类并使用边界框对每个对象进行定位;语义分割的目标是在不区分对象实例的情况下将每个像素分类为一组固定的类别。(如果用常用术语描述,目标检测是使用边框来实现具体物体的检测而不是mask,语义分割是在不区分实例的前提下对每个像素进行分类。因此我们说语义分割既是一种语义也是一种检测个人理解:这里应该是指语义分割只是区分每个像素是不是属于某个物体)。鉴于此,人们可能会认为需要一种复杂的方法来获得良好的结果。然而,我们证明了一个简单、灵活和快速的系统也可以超越先前最先进的实例分割的结果,这是个令人惊讶的系统。

我们的方法,叫做Mask R-CNN,在Faster R-CNN的基础上扩展了一个新的分支来预测每一个兴趣区域(RoI)的分割掩码(segmentation mask),该分支与已存在的分类和边框回归分支是并行的(图1)。mask分支是一个作用与每一个RoI的小的FCN网络,以像素为单位预测分割掩码。基于Faster R-CNN框架Mask R-CNN易于实现和训练,这样也有助于设计一个灵活度很大的架构。另外,mask分支只增加了很少了计算开销,这就使系统执行速度快和快速的进行实验成为可能。(Faster R-CNN + mask 分支-----> Mask R-CNN,mask的计算开销小)

原则上,Mask R-CNN是Faster R-CNN的直接扩展,但正确构造mask分支对于获得良好结果至关重要。最重要的是,Faster R-CNN并不是为网络输入和输出之间的像素到像素对齐而设计的。(pixel-to-pixel alignment???什么鬼?个人理解:这里像素对齐应该指的针对输入像素输出对应像素的mask,这里涉及到输入和输入的像素之间要对应)这在RoIPool[18,12]为了提取特征如何执行大粒度的空间量化中最为明显,RoIPool是处理实例的核心操作。为了解决不匹配问题,我们提出了一个简单的非量化层,称为RoIAlign,它如实地保留了精确的空间位置。尽管RoIAlign看起来只是一个小的变化,但它的作用却非常明显:它将mask精度提高了10%到50%,定位指标越严格定位越准确roialign还会有更大的收益。其次,我们发现必须将mask和类别预测解耦:我们为每一个类别都预测了一个二元的mask,这个不需要类别竞争,并且依靠网络的RoI分类分支来预测类别。(个人理解: 这里为每个框都预测了所有分类的Mask, 二元指mask里面不是0就是1, 预测的mask与类别预测的框是可以对应的,这样就可以确定具体类别了)。相比之下,FCNs通常执行每像素的多类别分类,它将分割和分类结合在一起,并且根据我们的实验,在实例分割方面效果不佳。(总结一下: 使用RoIAlign替代了RoI pool, 预测mask要与预测类别分开执行)

在没有使用任何技巧trick的前提下,Mask R-CNN已经超越了在此之前COCO上实例分割任务最好的单模型结果,包括2016年竞赛冠军的精心设计的作品。作为Mask R-CNN的副产品,我们的方法在COCO目标检测任务上表现也很出色。在消融实验中,我们评估了多个基础实例,这可以让我们证明我们方法的鲁棒性并且分析受那些核心元素的影响。(不仅分割任务做的好, 检测也很不错 : ))

我的方法在一个GPU上每帧的处理时间是200ms,使用一个单机8卡的GPU设备训练COCO使用一道两天的时间。我们相信快速的训练和测试再加上框架的灵活性和精度,将有助于实例分割的进一步研究。

最后,我们通过在COCO-keypoint数据集上的人体姿势估计任务来展示我们框架的通用性[28]。通过将每个keypoint看做一个one-hot的二元,只需稍加修改 Mask R-CNN可以应用于检测具体实例的姿态。Mask R-CNN超过了2016年COCO keypoint 竞赛的冠军,同时处理速度达到了5fps。因此,更一般的讲Mask R-CNN可以看做是一个识别实例级别物体的灵活框架,并且可以很容易地扩展到更复杂的任务中。

我们已经发布了代码以便于以后的研究。

在这里插入图片描述

2. 相关工作

R-CNN: 基于区域的CNN网络(R-CNN)方法[13]对于边框目标检测来说就是处理有限数量的候选目标区域[42,20],然后分别对每一个RoI使用卷积网络进行评估。通过对R-CNN进行扩展[18,12],允许使用RoIPool处理特征图上的ROI,实现了更快的速度和更高的精确度。Faster R-CNN通过使用区域建议网络(RPN)学习了注意力机制,推动了该流程的进一步发展。Faster R-CNN对于许多后续改进(例如,[38,27,21])具有不错的灵活性和鲁棒性,并且是当前几个基准测试中的领先框架。(介绍了R-CNN的发展)

实例分割: 受R-CNN良好效果的影响,许多实例分割的方法都以segment proposal为基础进行。早期的方法[13,15,16,9]需要将segment proposal重新排序为自下而上的segment。DeepMask[33]及后续的作品[34,8]学着提出了分割候选,这些分割的部分会在后面使用Fast R-CNN进行分类。在这些方法中,分割先于识别执行,这样导致速度慢、精度低。类似的,Dai等人[10]提出了一个复杂的多阶段瀑布式模型(一个阶段跟一个阶段的执行),从预选框中预测分割候选,然后进行分类。相反,我们的方法是基于mask和类别标签的并行预测,这样更简单、更灵活

最近,Li等人[26]将[8]中的分割候选系统和[11]中的目标检测系统结合起来,实现了"全卷积实例分割"(FCIS)。[8,11,26]的共同思想是预测一组位置敏感的全卷积的输出通道(个人理解:输出的这一组通道应该包含了位置相关信息)。这写通道同时处理目标类型、边框和mask,通过这样使系统执行更快。但是FCIS在重叠实例有系统性的错误,并产生虚假边缘(图6),这表明它还不能够彻底解决实例分割的基本困难。(这里简单介绍了一下FCIS系统及存在的问题)

另一系列实例分割的解决方案[23,4,3,29]是受语义分割成功案例的启发。这些方法从每像素分类结果(例如FCN输出)开始,然后尝试将同一类别的像素分割成不同的实例。与这些方法的"分割优先"策略不同,Mask R-CNN基于"实例优先"策略。我们希望未来两种策略能够更好的结合在一起。

3. Mask R-CNN(核心内容,要细看)

Mask R-CNN在概念上很简单:Faster R-CNN针对每一个候选目标都有两个输出:类别标签和边界框偏移;在此基础上我们新增了第三个分支用来输出目标的mask。因此,Mask R-CNN是一个很自然而且直观的想法。但是新增的mask输出与已有的类别和框输出不同,mask输出需要目标更精确的空间位置。接下来,我们将介绍Mask R-CNN的关键元素,包括像素到像素的对齐,这是Fast/ Faster R-CNN的主要缺失部分。(Faster R-CNN + mask = Mask R-CNN)

Faster R-CNN: 我们首先简单回顾一下Faster R-CNN检测网络[36]。Faster R-CNN有两个阶段组成。第一个阶段,叫做区域建议网络(RPN),来处理目标的候选边框。第二个阶段,本质上是Fast R-CNN,使用RoIpool为每一个候选框提取特征值,然后执行分类和边框回归。两个阶段使用的特征可以共享,以便更快地进行推理。关于Faster R-CNN和其他框架的最新综合比较,我们建议读者参考[21]。

Mask R-CNN: Mask R-CNN同样使用了两阶段的方式,第一阶段与Faster R-CNN完全相同(RPN)。在第二阶段,与预测类别和边界框偏移 Mask R-CNN为每一个RoI 并行 输出了一个二元mask。这与最近的大多数系统不同,后者分类依赖mask的预测结果(例如 [33, 10, 26])。我们的方法遵循了Faster R-CNN[12]的精神,边界框的分类和回归并行实现(这样就大大简化了原始R-CNN [13]的多阶段流水线的实现方式)。

在训练期间,我们将抽样的RoI的多任务loss正式定义为L = Lcls + Lbox + Lmask。分类的loss Lcls 和边界框回归的loss Lbox与[12]中定义的一致。mask分支每一个RoI对应一个Km2维的输出,它对K个mxm的二元mask进行编码,K指K个类别。为了达到该目的,我们为每个像素都执行了sigmoid,并把Lmask定义为平均二元(也就是二分类)交叉熵损失函数(这里应该指的是sigmoid_cross_entropy_with_logits)。对于类别k的真值框对应的RoI,Lmask只定义在第k个mask上(其他输出的mask不会作用到loss上)。

我们定义的Lmask允许网络为每个类别生成mask,而不用类别之间竞争;我们依赖分类分支来预测类别用来选择输出的mask。(这里要怎么理解呢???)。这就将mask和预测类别进行了解耦。这与使用FCNs进行语义分割的常见做法不同,后者通常为每个像素使用softmax和多项式交叉损失函数(这里应该指的是softmax_cross_entropy_with_logits)。在这种情况下mask需要通过类别竞争确定所属的类别;在我们的方法中,为每个类别调用sigmoid和二元损失函数,不存在类别竞争。实验结果表明,该公式是获得良好的实例分割结果的关键。

Mask表述: Mask对输入目标的空间布局进行了编码。因此与类别标签和边框偏移不同,后者是通过全连接层(fc)压缩成一个比较短的输出向量;而提取mask的空间结构可以通过卷积提供的像素到像素的对应关系,很自然的得到了解决。

具体地说,我们使用FCN为每个RoI[30]预测一个m×m的mask。这就允许mask分支中的每一层都可以一个清晰的mxm的目标空间布局的矩阵,而不需要将其折叠为一个缺少了空间维度的向量。以前的方法会使用fc层进行mask的预测[33, 34, 10],我们的方法与此不同我们的全卷积所需的参数更少,实验证明精度也更高。(个人理解: 一个vector只能表示一维的数据,是一条线; 而mxm就包含了一个面的信息,有宽和高)

这种像素到像素的行为要求我们的RoI特征(它们本身就是小的特征映射)能够很好地对齐,以如实地保持每像素之间明确的空间对应关系。这促使我们开发了下面的roalign层,它在mask预测中起着关键作用。
在这里插入图片描述
RoIAlign: RoIPool是从每个RoI提取一个小特征图(例如 7x7)的标准操作。RoIPool首先将浮点型的RoI进行量化, 得到特征图上的一些离散的数值,然后将这个量化过的RoI分割为多个空间单元,这些空间单元也是经过量化的,最后将每个单元覆盖的特征值进行聚合(通常使用max pooling)。例如,在一个连续坐标x上执行量化,要计算[x/16],这里16是特征图的缩放步长(strid),[·]是取近似值;同样,在划分小单元的时候执行相同的量化操作(例如,7x7)。这些量化操作导致了RoI和提取特征之间的不匹配问题。这对分类可能没有影响,分类对小的移动有较好的鲁棒性,但是对预测像素级别精度的mask有很大的负面影响。(个人理解: 这里执行的量化操作是将RoI的x,y坐标进行量化,也就是除以步长,这样可以对应到特征图上的对应特征值,如果不能够整除的话要对结果取整,这样就会与真实值出现一个偏差,例如:原始图片大小800x800,RoI大小625x625,stride为32,这样特征图为25x25, RoI为625/32=19.53,取整为19;这是第一次量化,然后进行第二次量化时如果不能整除还会出现新的偏差,导致预测的RoI与RoIPool的结果不对应,这就是misalignments问题,后面单独写一篇文章介绍RoIPool和RoIAlign。文章终于补上了:https://blog.csdn.net/itlilyer/article/details/108666073)

为了解决这一问题,我们提出了一个roalign层,该层去掉了RoIPool的简单粗暴的量化操作,能够将提取的特征与输入正确地对齐。我们提议的改变很简单:我们避免了RoI边界或区域的任何量化(即,我们使用x/16而不是[x/16])。我们使用双线性插值[22]来计算每个RoI bin中四个固定采样位置的输入特征的精确值,然后对结果进行聚合操作(使用max或average),如图3所示。我们注意到,只要不进行量化,结果对采样的准确位置或采样的数量并不敏感。(个人理解:RoIAlign使用双线性插值来计算原来不存在的点的特征值,不需要取整操作这样RoI就不会出现偏移)

如4.2章节说描述的,RoAlign带来了很大的提升。我们同样与[10]中提出的RoIWarp的处理方式进行了对比。与RoIAlign不同,RoIWarp忽略了像素不对齐的问题,[10]中对RoI的量化实现与RoIPool类似。因此,尽管RoIWarp也采用了[22]的双线性重采样,但其性能与实验所示的RoIPool不相上下(详见表2c),说明了对齐的关键作用。

网络架构: 为了证明我们方法的通用性,我们创建了多种架构的Mask R-CNN实例。为了区分清楚,我们以下面几方面作为区分:(i)用来给整张图片提取特征的backbone卷积网络架构;(ii)用来做边界框识别(分类和回归)和为每个RoI预测mask的head网络。我们使用网络深度特征这一术语来表示backbone网络架构。我们评估了深度为50层或101层的ResNet[19]和ResNeXt[45]网络。最初使用ResNets实现的Faster R-CNN[19]从第4阶段的最后一个卷积层(我们称之为C4)提取特征。例如,带有ResNet-50的backbone网络用ResNet-50-C4表示。这是[19,10,21,39]中常用的选择。

我们还探讨了Lin等人最近提出的另一种更有效的骨干网(backbone)[27],称为特征金字塔网络(FPN)。FPN采用自上而下的横向连接结构,从单个比例输入构建网络内的特征金字塔。Faster R-CNN使用FPN网络从不同层级的特征金字塔根据该层的尺度提取RoI特征,但是除此之外该方法的其他方面类似于普通的ResNet。将ResNet-FPN作为backbone进行特征提取,给Mask R-CNN的精度和速度上都有很大的提升。有关FPN的更多详细信息,请参阅[27]。

对于网络的head部分,我们严格遵循了前面介绍的架构——在Faster R-CNN的基础上添加一个全卷积的mask预测分支。具体来说,我们根据ResNet[19]和FPN[27]的论文内容扩展了Faster R-CNN的box head部分。详细信息如图4所示。ResNet-C4主干上的头部包括ResNet的第5阶段(即9层的“res5”[19]),这是计算密集型的。对于FPN,主干网已经包括res5,因此允许使用更少过滤器的更有效的head。

我们注意到我们的mask分支的结构非常简单。更复杂的设计可能提高性能,但不是本文的重点。
在这里插入图片描述

3.1 实现细节

我们根据现有的Fast/Faster R-CNN 网络来设置超参[12,36,27]。虽然这些设置在论文中[12,36,27]是为目标检测而选择的,我们发现我们的实例分割系统对这些有很好的鲁棒性。

训练: 与Faster R-CNN中一样,如果RoI与真值框的IoU大于等于0.5则认为是正样本,否则是负样本。mask的loss值Lmask只对正样本有效,也就是只计算正样本。mask的目标(也就是label)是RoI与对应真值框mask的交集。

我们采用以图像为中心的训练[12]。对图像进行缩放,使短边的尺度变为800像素[27]。每个GPU上的mini-batch包含2个图片,每个图像采样N个RoI,正样本和负样本比例为1:3[12]。对于C4的骨干网络,N取64(如[12,36]),而对于FPN(如[27])N取512。我们在8个gpu(这样的话mini-batch就是2x8=16)上训练160k次迭代,学习率为0.02,在120k次迭代中降低了10%。我们使用0.0001的权重衰减和0.9的momentum。使用ResNeXt[45]的时候,每个GPU一次只处理一个图像,然后训练相同的迭代次数,初始学习率为0.01。

RPN的锚点一共有5个尺度和3中纵横比,遵循[27]。为了便于消融实验,对RPN网络进行单独的训练,除非特别说明不会与Mask R-CNN共享特征值。本文中的所有章节,RPN和Mask R-CNN使用相同的backbone,因此他们是可以共享权重的。

推理: 在测试时,使用C4骨干网络的候选框数量是300(如[36]中描述),FPN候选框数量为1000(如[27]中所讲)。我们将这些候选框传给框预测分支,紧跟着一个非极大值抑制[14]。然后将得分最高的100个检测框传给mask分支。虽然这与训练中使用的并行计算不同,但是这样可以提高推理的速度和精度(因为使用了更少但是更准确的RoI)。mask分支为每个RoI预测K个mask,但是我们只使用第k个mask,这里的k是分类分支预测出的RoI的类别。(也就是说只取该RoI预测类别的mask结果)输出的mxm的float类型的mask被缩放到RoI的大小,并且以0.5的阈值设置其中的0、1值。

请注意,由于我们只计算前100个检测框的mask,因此Mask R-CNN在Faster R-CNN的对应项基础上增加了一个小开销(例如,在典型模型上为∼20%)。

在这里插入图片描述在这里插入图片描述

4. 实验:实例分割

我们通过在COCO数据集上[28]的全面消融实验将Mask R-CNN和目前性能最好的网络进行了彻底的比较。我们发布了标准的COCO指标,包括:AP (一个阈值范围内的IoU的平均), AP50 ,AP75, and APS, APM, APL(不同尺度的AP)。除非特别说明,AP使用mask IoU来评估。按照前面的描述[5,27],我们使用80K的训练图片与val数据集(trainval 35K)的35K张图片子集进行联合训练,并发布了在剩余5K张图片上(minival)上的消融实验情况。我们同样发布了在test-dev[28]上的结果。

4.1 主要结果

在表1中,我们将Mask R-CNN与当前性能最好的实例分割方法进行了比较。我们模型的所有实例表现都优于先前最先进模型各种变体。这包括MNC[10]和FCIS[26],它们分别是2015年和2016年COCO分割挑战赛的冠军。在不使用任何提升精度技巧的前提下,Mask R-CNN比使用了包括多尺度训练/测试、水平翻转测试、在线困难样本挖掘(OHEM) [38]等各项技术的FCIS+++ [26]表现还要好。虽然超出了本文的范围,我们希望许多像这样的提升方式可以应用到我们的方法上。

Mask R-CNN输出如图2和图5所示。即使在很严苛的条件下Mask R-CNN同样可以取得很好的结果。在图6中,我们比较了Mask R-CNN基线和FCIS++[26]。FCIS+++在重叠实例上表现出系统性的缺点——分割出假物体,说明它仍然受困与实例分割的根本困难。Mask R-CNN没有显示这样的假物体。
在这里插入图片描述在这里插入图片描述

4.2 消融实验

我们进行了多次消融实验来分析Mask R-CNN。结果如表2所示,并在下面详细讨论。

架构: 表2a中展示了使用不同骨干网(backbone)的Mask R-CNN。它得益于更多层次的网络(50 vs 101)和先进的网络设计包括FPN和ResNeXt。

独立与非独立mask: Mask R-CNN将mask和类别预测进行了解耦:就像已有的预测类别标签的分支,我们为每个类别生成一个mask,不存在类别之间的竞争(通过为每一个像素执行sigmoid和一个二分类loss)。在表2b中,我们与在每个像素上使用softmax和多项式loss进行比较(就像FCN[30]中常常用到的)。(这里要理解sigmoid和softmax的区别,在另一篇博客中有介绍: https://blog.csdn.net/itlilyer/article/details/107028833)这个新方法将mask任务和预测类别的任务结合在一起,结果导致mask AP下降了很多(5.5个百分点)。 这就说明一旦一个实例作为整体预测出了类别(通过预测分支),这就足以预测一个二元的mask,而不同关注具体的类别,这使模型更容易训练。

已知类别mask VS 未知类别mask: 我们默认情况下预测特定类的掩码,即每个类一个m×m的mask。有趣的是,Mask R-CNN使用未知类别的mask(即,预测一个mxm的输出而且不关注类别)也得到了接近的结果:在ResNet-50-C4上取得29.7的mask AP vs 30.3(对应的指定类别的mask)。这进一步强调了我们方法中分工协作的优势,主要指的是分类和分割的解耦。

RoIAlign: 表2c展示了对我们提出的RoIAlign层的评估。该实验中我们使用ResNet-50-C4作为backbone,stride取16。RoIAlign在RoIpool的基础上将AP提高了大约3个百分点,其中在较大IoU时取得了大部分的增益(AP75)。RoIAlign对使用max/average pool并不敏感;在后面的文章中我们使用average pool。

另外,我们还与RoIWarp(在MNC[10]中提出,同样使用了双线性采样)进行了比较。就像第三章节讨论的,RoIWarp仍然会对RoI进行量化,导致输入和输出对应不上的问题。就像表2c中展示的,RoIWarp与RoIPool的性能不相上下,比RoIAlign差了很多。这进一步说明能够使输入输出正确的对其才是关键。

我们还评估了用ResNet-50-C5作为backbone时RoIAlign的表现,使用了更大的stride(32像素)。我们使用了图4(右)相同的头部,因为res5头部不适用。表2d显示,RoIAlign将mask AP提高了7.3个百分点,mask AP75提高了10.5个百分点(相对提升了50%)。此外,我们注意到,对于RoIAlign,使用stride=32 C5的特征值(30.9 AP)比使用stride=16 C4的特征值(30.3 AP,表2c)更准确。RoIAlign很大程度上解决了长期以来使用大步长特征进行检测和分割的难题。

最后,RoIAlign使用FPN的时候可以获得mask AP 1.5个百分点的提升,box AP 0.5个百分点的提升,FPN有更精细的多级别stride。对于更精准对齐的关键点检测,RoIAlign使用FPN也获得了很大的提升(表6)。

Mask 分支: 分割是像素到像素的任务,我们使用FCN来达到记录mask空间布局的目的。在表2e中,我们比较多层感知器(MLP)和FCN(使用ResNet-50-FPN作为backbone)。使用FCNs比MLP使mask AP提高了2.1个百分点。我们注意到,我们选择这个骨干网,这样FCN头部的卷积层没有经过预训练,以便与MLP进行公平的比较。

4.3 边界框检测结果

在表3中我们将Mask R-CNN与目前性能最好的边界框目标检测系统进行了比较。对于这个结果,尽管训练了一个完整的Mask R-CNN模型,但是在推理时只使用分类和边框输出(mask输出被忽略)。使用ResNet-101-FPN的Mask R-CNN的性能优于所有先前最先进模型的基本变体,包括GRMI的单一模型变体[21],COCO 2016检测挑战赛的获胜者。使用ResNeXt-101-FPN的Mask R-CNN模型性能得到了进一步提升,比[39]中最好的单一模型(使用Inception-ResNet-v2-TDM)box的AP提升了3.0个百分点。

为了做进一步的比较,我们训练了一个没有mask分支的Mask R-CNN模型,在表3中记为“Faster R-CNN, RoIAlign”。由于RoIAlign,该模型的性能优于[27]中的模型。另一方面,它比Mask R-CNN低0.9个百分点。因此,Mask R-CNN边框检测的差距完全得益于多任务训练。

最后,我们发现Mask R-CNN的mask和box AP有一个小差距:例如,(表1中mask)37.1和(表3中box)39.8差了2.7个百分点。这说明我们的方法大大的缩短了目标检测和更具有挑战的实例分割任务的差距。
总结一下就是, Mask R-CNN不光mask预测的好,box做的也很好

4.4 性能

推理: 我们按照Faster R-CNN的4步训练方法[36],训练了一个ResNet-101-FPN模型,该模型在RPN和Mask R-CNN阶段之间共享特征。该模型在Nvidia Tesla M40 GPU上以195ms的速度运行(加上15ms的CPU时间将输出调整为原始分辨率),并且在统计上达到了与非共享模型相同的mask AP。我们还说明了,ResNet-101-C4的模型变体需要大约400ms,因为它有一个更复杂的的box head(图4),因此我们不建议在实践中使用C4变体。

虽然Mask R-CNN执行速度很快,我们注意到我们的设计并不是为了提升速度而是要达到更好的速度/精度的平衡[21],例如,通过改变图像大小和候选框数量,这超出了本文的范围。

训练: Mask R-CNN训练速度也很快。使用COCO trainval35k的数据集训练ResNet-50-FPN的模型,使用并行的8-GPU花费了32小时( 0.72s/minibatch,minibatch=16张图片),训练ResNet-101-FPN花费了44个小时。实际上,快速版本模型在train数据集上不到一天就可以训练完成。我们希望这种快速的训练方法可以消除该领域的一个主要障碍,并鼓励更多的人对这一具有挑战性的课题进行研究。
在这里插入图片描述在这里插入图片描述

5. 将Mask R-CNN用于人体姿态估计

我们的框架可以很容易地扩展到人体姿态估计。我们将一个关键点(keypoint)的位置建模为一个one-hot mask,并采用Mask R-CNN来预测K个掩模,每个K个关键点类型(如左肩、右肘)各一个。这个任务有助于展示掩模R-CNN的灵活性。

我们注意到我们的系统利用了人体姿态很少的领域知识,因为实验主要是为了证明Mask R-CNN框架的通用性。我们期望领域知识(例如建模结构[6])能够与我们的简单方法互补。

实现细节: (这是重点) 我们对分割系统做了一些小的修改,使系统可以实现关键点预测。对于每个实例的K个关键点,每个关键点的训练目标都是一个one-hot的m×m二元mask,其中只有一个像素被标记为前景。在训练过程中,对于每个可见的真值关键点,我们在m2路的softmax输出上最小化交叉熵损失(这鼓励检测单个点)。我们注意到在实例分割中,K个关键点仍然是独立处理的。

我们采用ResNet FPN的模型变体,keypoint head架构类似于图4(右图)。keypoint head由八个3×3 512-d的卷积层组成,接着是一个解卷层和2×双线性上采样,输出分辨率为56×56。我们发现对于关键点的定位精度,需要一个相对较高的分辨率输出(与mask相比)。

模型使用整个COCO trainval35k图像进行训练,这些图像包含有keypoint的标签。为了减少过度拟合,因为这个训练集比较小,我们使用从[640,800]像素随机抽样的图像尺度进行训练;推理是在800像素的单一尺度上进行的。我们训练90k次迭代,使用0.02的学习率开始训练,在60k和80k个迭代时将其减少10%。我们使用阈值为0.5的边界框NMS。其他细节与§3.1相同。

主要成果和消融实验: 我们评估了人体关键点AP(APkp),使用ResNet-50-FPN作为backbone进行实验;其他backbone请参见附录。表4展示了我们的结果(62.7 APkp)比COCO 2016 关键点检测的冠军[6]高了0.9个百分点,他们使用了一个多阶段的流水线(见表4的标题)。我们的方法更加的简单和快速。

更重要的是,我们的模型是一种统一的模型,它可以以5 fps的速度运行时同时预测边框、分割和关键点。添加一个分割分支(只针对人的类别)将test-dev上的APkp提高到63.1(表4)。关于minival多任务学习的更多内容见表5。将mask分支添加到只有框分支(即Faster R-CNN,包含分类和框回归)或只有keypoint版本的模型上都可以使这些任务得到提升。但是添加keypoint 分支使box/mask AP都稍微的下降了一些,这表明虽然关键点检测可以从多任务训练中获益,但它并不能反过来帮助其他任务。然而,同时训练这三个任务可以得到一个统一系统,能够同时有效地预测所有输出(图7)。

我们还研究了roalign对keypoint检测的影响(表6)。尽管这种ResNet-50-FPN主干具有更小的跨距(例如,在最小的级别上是4个像素),但RoIAlign仍然显示出比RoIPool更好的性能,APkp提高了4.4个点。这是因为关键点检测对定位精度更为敏感。这再次表明对齐对于像素级的定位是必不可少的,包括mask和keypoint。

鉴于Mask R-CNN在提取对象边界框、mask和keypoint方面的有效性,我们希望它能成为其他实例级任务的有效框架。
在这里插入图片描述

附录A:城市景观实验

我们进一步发布了Cityscapes[7]数据集的实例分割结果。这个数据集有2975张训练图片、500张验证图片和1525个测试图片,图片都有对应的精准标注。它有20k个粗略的训练图像,没有实例注释,我们没有使用。所有图像均为2048×1024像素。实例分割任务涉及8个对象类别,其在精准标注训练集中的实例数为:在这里插入图片描述
此任务的实例分割性能由COCO风格的mask AP(IoU阈值上的平均值)来衡量;AP50(即IoU为0.5时的mask AP)也会发布。

实现: 我们将我们的Mask R-CNN模型使用ResNet-FPN-50作为骨干网;我们发现101层的骨干网对应的模型由于数据集大小较小表现出的性能与50层接近。我们使用从[800, 1024]随机抽样的图像尺度(短边)进行训练,这减少了过度拟合;推断是在1024像素的单一尺度上进行的。我们使用每个GPU 的mini-batchsize取1(8个GPU batchsize就是8)并训练了24k个迭代,从0.01的学习率开始,在18k次迭代时将其降低到0.001。在此设置下,在单个8-GPU机器上需要训练大约4个小时。

结果: 表7将我们在val和test数据集上的结果与新年最好的模型进行了比较。在不使用粗训练集的情况下,我们的方法在测试中AP达到了26.2,比之前的最佳实例(DIN[3])的相对提高了30%以上,也优于同期SGN的25.0[29]。DIN和SGN都使用精准标注数据+粗数据。与仅使用精准标注数据的最佳实例(17.4ap)相比,我们达到了大约50%的提升。

对于个人和汽车类别,Cityscapes数据集显示了大量类别内重叠的实例(每个图像平均6个人和9辆车)。我们认为类别内重叠是实例分割的核心难点。我们的方法显示,与其他最佳模型实例相比,这两个类别有了巨大的改进(从21.8到30.5,人的相对提高了40%,汽车从39.4提高到46.9),即使我们的方法没有利用粗略的数据。

Cityscapes数据集的一个主要挑战是在缺少数据情况下训练模型,尤其是针对卡车、公共汽车和火车这三类,每个类别都有大约200-500个训练样本。为了部分解决这个问题,我们进一步发布了使用COCO预培训的结果。为此,我们从一个预先训练好的COCO-Mask R-CNN模型(骑手进行随机初始化)初始化城市景观中相应的7个类别。我们对这个模型进行了4K个迭代的微调,在第3k个迭代时学习率降低,训练指定的COCO模型需要大约1小时。

COCO预训练的Mask R-CNN模型在测试中达到了32.0 AP,几乎比精细的同类产品提高了6个百分点。这说明了训练数据量的重要性。研究还表明,城市景观的方法可能会受到low shot训练的影响。我们证明在这个数据集上使用COCO预训练是一种有效的策略。

最后,我们观察到val和test数据集 AP之间存在偏差,这也从[23,4,29]的结果中观察到。我们发现,这种偏差主要是由卡车、公共汽车和火车类别造成的,仅使用精准数据集训练的模型的val/test AP分别为28.8/22.8、53.5/32.2和33.0/18.6。这表明在这些类别上有一个领域的转变,这些类别也几乎没有训练数据。COCO预训练最有助于改善这些类别的结果;然而,领域转移持续存在, val/test AP分别为38.0/30.1、57.5/40.9和41.2/30.9。注意,对于人员和车辆类别,我们没有看到任何此类偏差(val/test AP在±1百分点内)。

城市景观的示例结果如图8所示。
在这里插入图片描述

附录B: 在COCO数据集上增强后的结果

作为一个通用框架,Mask R-CNN与用于检测/分割的补充技术兼容,包括对Fast/Faster R-CNN和FCNs的改进。在本附录中,我们描述了一些对我们的原始结果有一定提升的技术。由于其通用性和灵活性,Mask R-CNN被COCO 2017实例分割大赛的三个获奖团队用作框架,其表现都大大超过了之前的水平。

实例分割与目标检测

我们在表8中展示了一些Mask R-CNN增强后的结果。总的来说,这些改进提高了Mask AP 5.1个百分点(从36.7%提高到41.8%)和box AP 7.7个百分点(从39.6%提高到47.3%)。每一个模型的改进都一致地提高了mask-R-CNN框架的mask-AP和box-AP。接下来我们将详细介绍做了哪些改进。这些结果以及未来的更新可以通过我们发布的代码(在https://github.com/facebooksresearch/Detectron)进行重现,可作为未来研究的更高的标准基线。

更新的基线: 我们从一个更新的基线开始,使用一组不同的超参数。我们将训练延长到180k次迭代,在120k次和160k次迭代中学习率降低10个点。我们还将NMS阈值更改为0.5(从默认值0.3)。更新后的基线maks AP为37.0和box AP 40.5。

端到端训练: 所有先前的结果都采用阶段性训练,即第一阶段训练RPN,第二阶段训练Mask R-CNN。在[37]之后,我们评估了端到端(e2e)训练,将RPN和Mask R-CNN联合起来一起训练。我们采用[37]中的“近似”版本,它只计算RoIAlign层中的部分梯度,忽略w.r.t.RoI坐标的梯度。表8显示e2e训练将mask AP提高了0.6,box AP提高1.2。

ImageNet-5k预训练: 在[45]之后,我们用ImageNet的5k类别的子集(与标准的1k类子集不同)对模型进行了预训练。这5倍的预训练数据是mask和box的AP提升了1个点。作为参考,[40]使用了大约250倍的图像(300M),在他们基线的基础上有AP 有 2-3个百分点的提升。

增加训练迭代次数: 训练时增加训练的迭代次数可以进一步提高结果。在训练过程中,我们从[640, 800]像素随机抽样,并将迭代次数增加到260k(在200k和240k迭代时,学习率降低了10个点)。训练迭代次数的增加使mask AP提高0.6,box AP提高0.8。

模型结构: 通过将101层的ResNeXt升级到152层[19],我们发现mask AP提升了0.5和box AP 提升了0.6。这表明更深层次的模型仍然可以改善COCO的结果。

利用最近提出的非局部(NL)模型[43],mask AP达到了40.3和box AP达到了45.0。这个结果没有增加测试时间,并且该方法在Nvidia Tesla P100 GPU上以3fps的速度运行。

测试时数据增强: 我们从[400,1200]范围以步长100取图像的尺度,并进行水平翻转来评估模型的结果。这使我们达到了41.8的 mask AP和47.3 的box AP的单模型结果。

以上结果是我们提交给COCO 2017竞赛的基础。据报道,前三个在实例分割任务中获胜的团队都是基于Mask R-CNN框架的扩展。

关键点检测
我们在表9中展示了关键点检测的增强结果。作为一个更新的基线,我们将训练扩展到130k次迭代,其中100k次和120k次迭代的学习率降低了10个百分点。这使APkp提高了大约1个点。用ResNet-101和ResNeXt-101替换ResNet-50,AP-kp分别提高到66.1和67.3。

通过最近的一种称为数据蒸馏的方法[35],我们能够利用COCO提供的额外120k个未标记图像。简言之,数据蒸馏是一种自训练策略,它使用基于标记数据的模型来预测未标记图像上的标签,然后使用这些新注释更新模型。maskr-CNN为这种自我训练策略提供了一个有效的框架。通过数据蒸馏,Mask R-CNN APkp提高了1.8个百分点,达到69.1。我们观察到Mask R-CNN可以从额外的数据中获益,即使这些数据是未标记的。

通过使用与实例分割相同的测试时数据增强,我们进一步将APkp提高到70.4。

致谢: 我们要感谢Ilija Radosavovic对代码发布和增强结果的贡献,以及Caffe2团队对工程支持的贡献。

参考文献

[1] M. Andriluka, L. Pishchulin, P. Gehler, and B. Schiele. 2D human pose estimation: New benchmark and state of the art analysis. In CVPR, 2014. 8
[2] P. Arbeláez, J. Pont-Tuset, J. T. Barron, F. Marques, and J. Malik. Multiscale combinatorial grouping. In CVPR, 2014. 2
[3] A. Arnab and P. H. Torr. Pixelwise instance segmentation with a dynamically instantiated network. In CVPR, 2017. 3, 9
[4] M. Bai and R. Urtasun. Deep watershed transform for instance segmentation. In CVPR, 2017. 3, 9
[5] S. Bell, C. L. Zitnick, K. Bala, and R. Girshick. Inside-outside net: Detecting objects in context with skip pooling and recurrent neural networks. In CVPR, 2016. 5
[6] Z. Cao, T. Simon, S.-E. Wei, and Y. Sheikh. Realtime multi-person 2d pose estimation using part affinity fields. In CVPR, 2017. 7, 8
[7] M. Cordts, M. Omran, S. Ramos, T. Rehfeld, M. Enzweiler, R. Benenson, U. Franke, S. Roth, and B. Schiele. The Cityscapes dataset for semantic urban scene understanding. In CVPR, 2016. 9
[8] J. Dai, K. He, Y. Li, S. Ren, and J. Sun. Instance-sensitive fully convolutional networks. In ECCV, 2016. 2
[9] J. Dai, K. He, and J. Sun. Convolutional feature masking for joint object and stuff segmentation. In CVPR, 2015. 2
[10] J. Dai, K. He, and J. Sun. Instance-aware semantic segmentation via multi-task network cascades. In CVPR, 2016. 2, 3,
4, 5, 6
[11] J. Dai, Y. Li, K. He, and J. Sun. R-FCN: Object detection via region-based fully convolutional networks. In NIPS, 2016. 2
[12] R. Girshick. Fast R-CNN. In ICCV, 2015. 1, 2, 3, 4, 6
[13] R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic
segmentation. In CVPR, 2014. 2, 3
[14] R. Girshick, F. Iandola, T. Darrell, and J. Malik. Deformable part models are convolutional neural networks. In CVPR,
2015. 4
[15] B. Hariharan, P. Arbeláez, R. Girshick, and J. Malik. Simultaneous detection and segmentation. In ECCV. 2014. 2
[16] B. Hariharan, P. Arbeláez, R. Girshick, and J. Malik. Hyper-columns for object segmentation and fine-grained localiza-
tion. In CVPR, 2015. 2
[17] Z. Hayder, X. He, and M. Salzmann. Shape-aware instance segmentation. In CVPR, 2017. 9
[18] K. He, X. Zhang, S. Ren, and J. Sun. Spatial pyramid pooling in deep convolutional networks for visual recognition. In
ECCV. 2014. 1, 2
[19] K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In CVPR, 2016. 2, 4, 7, 10
[20] J. Hosang, R. Benenson, P. Dollár, and B. Schiele. What makes for effective detection proposals? PAMI, 2015. 2
[21] J. Huang, V. Rathod, C. Sun, M. Zhu, A. Korattikara, A. Fathi, I. Fischer, Z. Wojna, Y. Song, S. Guadarrama, et al. Speed/accuracy trade-offs for modern convolutional object detectors. In CVPR, 2017. 2, 3, 4, 6, 7
[22] M. Jaderberg, K. Simonyan, A. Zisserman, and K. Kavukcuoglu. Spatial transformer networks. In NIPS, 2015. 4
[23] A. Kirillov, E. Levinkov, B. Andres, B. Savchynskyy, and C. Rother. Instancecut: from edges to instances with multi-cut. In CVPR, 2017. 3, 9
[24] A. Krizhevsky, I. Sutskever, and G. Hinton. ImageNet classification with deep convolutional neural networks. In NIPS, 2012. 2
[25] Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E.Howard, W. Hubbard, and L. D. Jackel. Backpropagation applied to handwritten zip code recognition. Neural computation, 1989. 2
[26] Y. Li, H. Qi, J. Dai, X. Ji, and Y. Wei. Fully convolutional instance-aware semantic segmentation. In CVPR, 2017. 2, 3, 5, 6
[27] T.-Y. Lin, P. Dollár, R. Girshick, K. He, B. Hariharan, and S. Belongie. Feature pyramid networks for object detection. In CVPR, 2017. 2, 4, 5, 7
[28] T.-Y. Lin, M. Maire, S. Belongie, J. Hays, P. Perona, D. Ramanan, P. Dollár, and C. L. Zitnick. Microsoft COCO: Common objects in context. In ECCV, 2014. 2, 5
[29] S. Liu, J. Jia, S. Fidler, and R. Urtasun. SGN: Sequential grouping networks for instance segmentation. In ICCV, 2017. 3, 9
[30] J. Long, E. Shelhamer, and T. Darrell. Fully convolutional networks for semantic segmentation. In CVPR, 2015. 1, 3, 6
[31] V. Nair and G. E. Hinton. Rectified linear units improve restricted boltzmann machines. In ICML, 2010. 4
[32] G. Papandreou, T. Zhu, N. Kanazawa, A. Toshev, J. Tompson, C. Bregler, and K. Murphy. Towards accurate multi-person pose estimation in the wild. In CVPR, 2017. 8
[33] P. O. Pinheiro, R. Collobert, and P. Dollar. Learning to segment object candidates. In NIPS, 2015. 2, 3
[34] P. O. Pinheiro, T.-Y. Lin, R. Collobert, and P. Dollár. Learning to refine object segments. In ECCV, 2016. 2, 3
[35] I. Radosavovic, P. Dollár, R. Girshick, G. Gkioxari, and K. He. Data distillation: Towards omni-supervised learning. arXiv:1712.04440, 2017. 10
[36] S. Ren, K. He, R. Girshick, and J. Sun. Faster R-CNN: Towards real-time object detection with region proposal networks. In NIPS, 2015. 1, 2, 3, 4, 7
[37] S. Ren, K. He, R. Girshick, and J. Sun. Faster R-CNN: Towards real-time object detection with region proposal networks. In TPAMI, 2017. 10
[38] A. Shrivastava, A. Gupta, and R. Girshick. Training region-based object detectors with online hard example mining. In CVPR, 2016. 2, 5
[39] A. Shrivastava, R. Sukthankar, J. Malik, and A. Gupta. Beyond skip connections: Top-down modulation for object detection. arXiv:1612.06851, 2016. 4, 7
[40] C. Sun, A. Shrivastava, S. Singh, and A. Gupta. Revisiting unreasonable effectiveness of data in deep learning era. In ICCV, 2017. 10
[41] C. Szegedy, S. Ioffe, and V. Vanhoucke. Inception-v4, inception-resnet and the impact of residual connections on learning. In ICLR Workshop, 2016. 7
[42] J. R. Uijlings, K. E. van de Sande, T. Gevers, and A. W. Smeulders. Selective search for object recognition. IJCV, 2013. 2
[43] X. Wang, R. Girshick, A. Gupta, and K. He. Non-local neural networks. arXiv:1711.07971, 2017. 10
[44] S.-E. Wei, V. Ramakrishna, T. Kanade, and Y. Sheikh. Convolutional pose machines. In CVPR, 2016. 8
[45] S. Xie, R. Girshick, P. Dollár, Z. Tu, and K. He. Aggregated residual transformations for deep neural networks. In CVPR,
2017. 4, 10

猜你喜欢

转载自blog.csdn.net/itlilyer/article/details/108441734