https://blog.csdn.net/sinat_30665603/article/details/82950374
文章参考其它网文,感谢,侵权请联系
论文翻译
摘要
我们提出了一个概念上简单,灵活和通用的目标分割框架。我们的方法有效地检测图像中的目标,同时为每个实例生成高质量的分割掩码。称为Mask R-CNN的方法通过添加一个与现有目标检测框回归并行的,用于预测目标掩码的分支来扩展Faster R-CNN。Mask R-CNN训练简单,相对于Faster R-CNN,只需增加一个较小的开销,运行速度可达5 FPS。此外,Mask R-CNN很容易推广到其他任务,例如,允许我们在同一个框架中估计人的姿势。我们在COCO挑战的所有三个项目中取得了最佳成绩,包括目标分割,目标检测和人体关键点检测。在没有使用额外技巧的情况下,Mask R-CNN优于所有现有的单一模型,包括COCO 2016挑战优胜者。我们希望我们的简单而有效的方法将成为一个促进未来目标级识别领域研究的坚实基础。我们稍后将提供代码。
简介
目标检测和语义分割的效果在短时间内得到了很大的改善。在很大程度上,这些进步是由强大的基线系统驱动的,例如,分别用于目标检测和语义分割的Fast/Faster R-CNN12和全卷积网络(FCN)3框架。这些方法在概念上是直观的,提供灵活性和鲁棒性,以及快速的训练和推理。我们在这项工作中的目标是为目标分割开发一个相对有力的框架。
目标分割是具有挑战性的,因为它需要正确检测图像中的所有目标,同时也精确地分割每个目标。因此,它结合了来自经典计算机视觉任务目标检测的元素,其目的是对目标进行分类,并使用边界框定位每个目标,以及语义分割(通常来说,目标检测来使用边界框而不是掩码来标定每一个目标检测,而语义分割以在不区分目标的情况下表示每像素的分类。然而,目标分割既是语义分割,又是另一种形式的检测。)鉴于此,人们可能认为需要一种复杂的方法才能取得良好的效果。然而,我们的研究表明,使用非常简单,灵活和快速的系统就可以超越先前的最先进的目标分割结果。
我们称之为Mask R-CNN的方法通过添加一个用于在每个感兴趣区域(RoI)上预测分割掩码的分支来扩展Faster R-CNN [34],这个分支与用于分类和目标检测框回归的分支并行执行,如下图(图1)所示(用于目标分割的Mask R-CNN框架):

掩码分支是作用于每个RoI的小FCN,以像素到像素的方式预测分割掩码。Mask R-CNN易于实现和训练,它是基于Faster R-CNN这种灵活的框架的。此外,掩码分支只增加了很小的计算开销。
原理上,Mask R-CNN是Faster R-CNN的直接扩展,而要获得良好的结果,正确构建掩码分支至关重要。最重要的是,Faster R-CNN不是为网络输入和输出之间的像素到像素对齐而设计的。在《how RoIPool》 4 1中提到,实际上,应用到目标上的核心操作执行的是粗略的空间量化特征提取。为了修正错位,我们提出了一个简单的,量化无关的层,称为RoIAlign,可以保留精确的空间位置。尽管是一个看似很小的变化,RoIAlign起到了很大的作用:它可以将掩码准确度提高10%至50%,在更严格的位置度量下显示出更大的收益。其次,我们发现解耦掩码和分类至关重要:我们为每个类独立地预测二进制掩码,这样不会跨类别竞争,并且依赖于网络的RoI分类分支来预测类别。相比之下,FCN通常执行每像素多类分类,分割和分类同时进行,基于我们的实验,对于目标分割效果不佳。
Mask R-CNN超越了COCO实例分割任务[28]上所有先前最先进的单一模型结果,其中包括COCO 2016挑战优胜者。作为副产品,我们的方法也优于COCO对象检测任务。在消融实验中,我们评估多个基本实例,这使我们能够证明其鲁棒性并分析核心因素的影响。
我们的模型可以在GPU上以200毫秒每帧的速度运行,使用一台有8个GPU的机器,在COCO上训练需要一到两天的时间。我们相信,快速的训练和测试速度,以及框架的灵活性和准确性将促进未来目标分割的研究。
最后,我们通过COCO关键点数据集上的人体姿态估计任务来展示我们框架的通用性5。通过将每个关键点视为one-hot二进制掩码,只需要很少的修改,Mask R-CNN可以应用于人体关键点检测。不需要额外的技巧,Mask R-CNN超过了COCO 2016人体关键点检测比赛的冠军,同时运行速度可达5 FPS。因此,Mask R-CNN可以被更广泛地看作是用于目标级识别的灵活框架,并且可以容易地扩展到更复杂的任务。
相关工作
**R-CNN:**R-CNN方法6是通过找到一定数量的候选区域7 8,并独立地在每个RoI上执行卷积9 10来进行目标检测的。 基于R-CNN的改进4 1,使用RoIPool在特征图上选取RoI,实现了更快的速度和更好的准确性。Faster R-CNN2通过使用RPN学习注意机制来产生候选框。还有后续的对Faster R-CNN灵活性和鲁棒性的改进(例如11 1213)。这是目前在几个基准测试中领先的框架。
目标分割:在R- CNN的有效性的推动下,目标分割的许多方法都是基于segment proposals的。先前的方法6 14 15 16依赖自下而上的分割7 17。 DeepMask18和19 20通过学习提出分割候选,然后使用Fast R-CNN分类。在这些方法中,分割先于识别,这样做既慢又不太准确。同样,Dai等人21提出了一个复杂的多级联级联,从候选框中预测候选分割,然后进行分类。相反,我们的方法并行进行掩码和类标签的预测,更简单也更灵活。
最近,Li等人22将20中的分割候选系统与23中的目标检测系统进行了“全卷积目标分割”(FCIS)的融合。 在20 2322中的共同想法是用全卷积得到一组位置敏感的输出通道候选。这些通道同时处理目标分类,目标检测和掩码,这使系统速度变得更快。但FCIS在重叠实例上出现系统错误,并产生虚假边缘(图5)。
Mask R-CNN
Mask R-CNN在概念上是简单的:Faster R-CNN为每个候选目标输出类标签和边框偏移量。为此,我们添加了一个输出目标掩码的第三个分支。因此,Mask R-CNN是一种自然而直观的点子。但是,附加的掩码输出与类和框输出不同,需要提取对象的更精细的空间布局。接下来,我们介绍Mask R-CNN的关键特点,包括像素到像素对齐,这是Fast/Faster R-CNN的主要缺失。
Faster R-CNN:我们首先简要回顾一下Faster R-CNN检测器2。Faster R-CNN由两个阶段组成。称为区域提议网络(RPN)的第一阶段提出候选目标边界框。第二阶段,本质上是Fast R-CNN 1,使用RoIPool从每个候选框中提取特征,并进行分类和边界回归。两个阶段使用的特征可以共享,以便更快的推理。可以参考13,了解Faster R-CNN和其他框架之间的最新综合比较。
**Mask R-CNN:**Mask R-CNN采用相同的两个阶段,具有相同的第一阶段(即RPN)。在第二阶段,与预测类和框偏移量并行,Mask R-CNN还为每个RoI输出二进制掩码。这与最近的其它系统相反,其分类取依赖于掩码预测(例如18 21 22)。我们的方法遵循Fast R-CNN [12],预测类和框偏移量并行(这在很大程度上简化了R-CNN的多级流水线6)。
在训练期间,我们将在每个采样后的RoI上的多任务损失函数定义为L=Lcls+Lbox+Lmask。分类损失LclsLcls和检测框损失LboxLbox与1中定义的相同。掩码分支对于每个RoI的输出维度为Km2,即K个分辨率为m×m的二进制掩码,每个类别一个,K表示类别数量。我们为每个像素应用Sigmoid,并将Lmask定义为平均二进制交叉熵损失。对于真实类别为k的RoI,仅在第kk个掩码上计算Lmask(其他掩码输出不计入损失)。
我们对Lmask的定义允许网络为每个类独立地预测二进制掩码,这样不会跨类别竞争。我们依靠专用分类分支预测用于选择输出掩码的类标签。这将解耦掩码和类预测。这与通常将FCN 3应用于像素级Softmax和多重交叉熵损失的语义分段的做法不同。在这种情况下,掩码将在不同类别之间竞争。而我们的方法,使用了其它方法没有的像素级的Sigmod和二进制损失。我们通过实验发现,这种方法是改善目标分割效果的关键。
掩码表示:掩码表示输入目标的空间布局。因此,与通过全连接(fc)层不可避免地缩成短输出向量的类标签或框偏移不同,提取掩码的空间结构可以通过由卷积提供的像素到像素对应自然地被解决。
具体来说,我们使用FCN3来为每个RoI预测一个m×mm×m的掩码。这允许掩码分支中的每个层显式的保持m×mm×m的对象空间布局,而不会将其缩成缺少空间维度的向量表示。与以前使用fc层掩码预测的的方法不同181921,我们的全卷积表示需要更少的参数,并且如实验所证明的更准确。
这种像素到像素的行为需要RoI特征,它们本身就是小特征图。为了更好地对齐,以准确地保留显式的像素空间对应关系,我们开发出在掩模预测中发挥关键作用的以下RoIAlign层。
**RoIAlign:**RoIPool1是从每个RoI提取小特征图(例如,7×7)的标准操作。 RoIPool首先将浮点数表示的RoI缩放到与特征图匹配的粒度,然后将缩放后的RoI分块,最后汇总每个块覆盖的区域的特征值(通常使用最大池化)。例如,对在连续坐标系上的xx计算[x/16],其中16是特征图步幅,[⋅][⋅]表示四舍五入。同样地,当对RoI分块时(例如7×7)时也执行同样的计算。这样的计算使RoI与提取的特征错位。虽然这可能不会影响分类,因为分类对小幅度的变换具有一定的鲁棒性,但它对预测像素级精确的掩码有很大的负面影响。
为了解决这个问题,我们提出了一个RoIAlign层,可以去除RoIPool的错位,将提取的特征与输入准确对齐。我们提出的改变很简单:我们避免避免计算过程中的四舍五入(比如,我们使用x/16代替[x/16])。我们选取分块中的4个常规的位置,使用双线性插值24来计算每个位置的精确值,并将结果汇总(使用最大或平均池化)。(我们抽取四个常规位置,以便我们可以使用最大或平均池化。事实上,在每个分块中心取一个值(没有池化)几乎同样有效。我们也可以为每个块采样超过四个位置,我们发现这些位置的收益递减。)
如我们在消融实验中所示,RoIAlign的改进效果明显。我们还比较了21中提出的RoIWarp操作。与RoIAlign不同,RoIWarp忽略了对齐问题,并在21的实现中,有像RoIPool那样的四舍五入计算。因此,即使RoIWarp也采用24提到的双线性重采样,如实验所示(更多细节见表格2c),它与RoIPool效果差不多。这表明了对齐起到了关键的作用。
网络架构:为了证明我们的方法的普适性,我们构造了多种不同结构的Mask R-CNN。详细来说就是,我们使用不同的:(i)用于整个图像上的特征提取的下层卷积网络,以及(ii)用于检测框识别(分类和回归)和掩码预测的上层网络。
我们使用”网络-深度-特征输出层”的方式命名底下层卷积网络。我们评估了深度为50或101层的ResNet25和ResNeXt26网络。使用ResNet25的Faster R-CNN从第四阶段的最终卷积层提取特征,我们称之为C4。例如,使用ResNet-50的下层网络由ResNet-50-C4表示。这是25211327中常用的选择。
我们还探讨了Lin等人12最近提出的另一种更有效的下层网络,称为特征金字塔网络(FPN)。 FPN使用具有横旁路连接的自顶向下架构,以从单尺度输入构建网络中的特征金字塔。使用FPN的Faster R-CNN根据其尺度提取不同级别的金字塔的RoI特征,不过其它部分和平常的ResNet类似。使用ResNet-FPN进行特征提取的Mask R-CNN可以在精度和速度方面获得极大的提升。有关FPN的更多细节,参见12。
对于上层网络,我们基本遵循了以前论文中提出的架构,我们添加了一个全卷积的掩码预测分支。具体来说,我们扩展了 ResNet25和FPN12中提出的Faster R-CNN的上层网络。详细信息如下图(图3)所示:(上层网络架构:我们扩展了两种现有的Faster R-CNN上层网络架构25 12,分别添加了一个掩码分支。图中数字表示分辨率和通道数,箭头表示卷积、反卷积或全连接层(可以通过上下文推断,卷积减小维度,反卷积增加维度。)所有的卷积都是3×33×3的,除了输出层,是1×11×1的。反卷积是2×22×2的,步进为2,,我们在隐藏层中使用ReLU28。左图中,“res5”表示ResNet的第五阶段,简单起见,我们修改了第一个卷积操作,使用7×77×7,步长为1的RoI代替14×1414×14,步长为2的RoI25。右图中的“×4×4”表示堆叠的4个连续的卷积。)

ResNet-C4的上层网络包括ResNet的第五阶段(即9层的“res5”25),这是计算密集型的。对于FPN,下层网已经包含了res5,因此可以使上层网络包含更少的卷积核而变的更高效。
我们注意到我们的掩码分支是一个非常简单的结构。也许更复杂的设计有可能提高性能,但不是这项工作的重点。
网友评论