Mask R-CNN

Abstract

我们提出了一个概念简单、灵活、通用的目标实例分割框架。我们的方法有效地检测图像中的对象,同时为每个实例生成高质量的分割掩码(mask)。该方法被称为Mask R-CNN,通过添加一个分支来预测目标掩模,并与现有的用于边界框识别的分支并行,从而扩展Faster R-CNN。Mask R-CNN训练简单,只增加了一个小的开销到Faster R-CNN,运行时间为5fps。此外,Mask R-CNN很容易推广到其他任务,例如,允许我们在相同的框架中估计人类的姿势。我们展示了COCO系列挑战赛的所有三个方面的顶级结果,包括实例分割、边界框目标检测和人关键点检测。在没有bells和whistles的情况下,Mask R-CNN在每项任务上都优于所有现有的单模型参赛作品,包括COCO 2016挑战赛的获胜者。我们希望我们简单和有效的方法将作为一个坚实的基线,并有助于简化未来在实例级识别方面的研究。有关代码可在 https://github.com/facebookresearch/Detectron获取。

1、Introduction

在这里插入图片描述
视觉社区在短时间内迅速提高了目标检测和语义分割的结果。在很大程度上,这些进步是由强大的基线系统驱动的,例如Fast/Faster RCNN[12,36]和全卷积网络(FCN)[30]框架,分别用于对象检测和语义分割。这些方法在概念上是直观的,并提供了灵活性和健壮性,以及快速的训练和推理时间。在这项工作中,我们的目标是为实例分割开发一个相对可行的框架。
实例分割是一个挑战,因为它需要正确地检测图像中的所有对象,同时也精确地分割每个实例。因此,它结合了目标检测的经典计算机视觉任务中的元素,目标是对单个对象进行分类并使用边界框对每个对象进行定位,以及语义分割,目标是在不区分对象实例的情况下将每个像素分类为一组固定的类别。有鉴于此,人们可能会认为需要一种复杂的方法才能取得好的结果。然而,我们证明了一个令人惊讶的简单、灵活和快速的系统可以超越先前最先进的实例分割结果。
我们的方法称为Mask R-CNN,通过在每个感兴趣区域(RoI)上添加一个用于预测分割掩模的分支,与用于分类和边界框回归的现有分支并行,扩展了Faster R-CNN[36](图1)。掩模分支是应用于每个RoI的一个小FCN,以像素到像素的方式预测分割掩模。考虑到Faster R-CNN框架,Mask R-CNN易于实现和训练,这有助于实现多种灵活的体系结构设计。此外,mask分支只增加了很小的计算开销,实现了快速系统和快速实验。
原则上,Mask R-CNN是Faster R-CNN的直观扩展,但正确构造Mask分支对于良好的结果至关重要。最重要的是,Faster RCNN不是为网络输入和输出之间的像素对像素对齐而设计的。这在RoIPool[18,12]中最为明显,RoIPool[18,12]是处理实例的实际核心操作,它为特征提取执行粗略的空间量化。为了fix the misalignment,我们提出了一个简单的、无量化的层,称为RoIAlign,它忠实地保留精确的空间位置。尽管这是一个看似微小的变化,但RoIAlign有很大的影响:它将掩模精度提高了相对10%到50%,在更严格的localization标准下显示出更大的收益。其次,我们发现有必要将掩码和类预测解耦:我们独立地为每个类预测一个二进制掩码,类之间没有竞争,并依赖网络的RoI分类分支来预测类别。相比之下,FCN通常执行每像素多类分类,这将分割和分类结合起来,并且基于我们的实验,例如分割效果很差。
在不使用bells和whistles的情况下,Mask R-CNN在COCO实例分割任务[28]中超越了之前所有最先进的单模型结果,包括2016年竞赛冠军的重大工程项目。作为一个副产品,我们的方法在COCO目标检测任务也表现优异。在消融实验中,我们评估了多个基本实例,这使我们能够证明其鲁棒性并分析核心因素的影响。
我们的模型可以在GPU上以每帧约200毫秒的速度运行,在一台8-GPU机器上进行COCO训练需要一到两天。我们相信,快速的训练和测试速度,加上框架的灵活性和准确性,将有利于并简化实例分割的未来研究。
最后,我们通过COCO关键点数据集上的人体姿势估计任务展示了我们框架的通用性[28]。通过将每个关键点视为一个独热二元mask,只需对mask进行最小修改,即可应用R-CNN检测特定于实例的姿势。Mask R-CNN超越2016年COCO keypoint竞赛的冠军,同时以5 fps的速度运行。因此,Mask R-CNN可以被更广泛地视为一个灵活的框架,用于实例级识别,并且可以很容易地扩展到更复杂的任务。
我们发布了代码,以促进未来的研究。

2、Related work

R-CNN

基于区域的CNN(R-CNN)bounding-box目标检测方法[13]是关注可控数量的候选对象区域[42,20],并在每个RoI上独立评估卷积网络[25,24]。对R-CNN进行了扩展[18,12],允许使用RoIPool来关注特征图上的RoIs,从而获得更快的速度和更好的准确性。Faster R-CNN[36]通过学习区域提议网络(RPN)的注意机制来推进这个流程。Faster R-CNN对于许多后续改进是灵活和健壮的(例如,[38,27,21]),并且是目前几个基准测试中的领先框架。

Instance Segmentation

在RCNN有效性的驱动下,许多实例分割方法都是基于segment proposals的。早期的方法[13,15,16,9]采用自底向上的segments[42,2].DeepMask[33]等作品[34,8]学习提出segment candidate,然后通过Fast R-CNN进行分类。在这些方法中,先分割后识别,速度慢,准确率低。同样,Dai等人[10]提出了一个复杂的多阶段级联,该级联可以预测来自bounding-box提案的segment提案,然后进行分类。相反,我们的方法是基于masks和类标签的并行预测,这样更简单、更灵活。最近,Li et al.[26]将[8]中的segment提议系统和[11]中的对象检测系统结合起来,用于“全卷积实例分割”(FCIS)。[8,11,26]的普遍思想是完全卷积地预测一组位置敏感的输出通道。这些通道同时对对象类、框和masks进行寻址,使系统速度更快。但是FCIS在重叠的实例上显示出系统错误,并产生假边(图6),这表明它受到了分割实例的基本困难的挑战。
另一类针对实例分割的解决方案[23,4,3,29]是由语义分割的成功驱动的。从逐像素的分类结果(如FCN输出)开始,这些方法尝试将相同类别的像素切割成不同的实例。与这些方法的分割优先策略相比,Mask R-CNN基于实例优先策略。我们预计,未来将对这两种策略进行更深入的结合研究。

3、Mask R-CNN

Mask R-CNN在概念上很简单:Faster R-CNN对于每个候选对象有两个输出,一个类标签和一个bounding-box偏移量;为此,我们添加了第三个分支,输出对象掩码。因此,Mask R-CNN是一个自然和直观的想法。但是额外的掩模输出不同于类和框输出,需要提取对象更精细的空间布局。接下来,我们介绍Mask R-CNN的关键元素,包括像素对像素对齐,这是Fast/Faster R-CNN的主要缺失部分。

Faster R-CNN

我们首先简要回顾一下Faster R-CNN探测器[36]。Faster R-CNN包括两个阶段。第一阶段,称为区域提议网络(RPN),提出候选对象bounding-boxes。第二阶段实质上是Fast R-CNN[12],利用RoIPool从每个候选框中提取特征,并进行分类和边界框回归。这两个阶段所使用的特性可以共享,以实现更快的推理。我们建议读者参考[21],以获得Faster R-CNN和其他框架之间最新、全面的比较。

Mask R-CNN

Mask R-CNN采用相同的两阶段过程,第一阶段(RPN)相同。在第二阶段,与预测类和框偏移量并行,Mask R-CNN也为每个RoI输出一个二进制掩码。这与最近的系统形成对比,后者的分类依赖于mask预测(例如[33,10,26])。我们的方法遵循了Fast R-CNN[12]的精神,它并行地应用了bounding-box分类和回归(这在很大程度上简化了原始R-CNN[13]的多级管道)。
在训练过程中,我们将每个采样RoI上的多任务损失定义为 L = L c l s + L b o x + L m a s k L=L_{cls}+L_{box}+L_{mask} L=Lcls+Lbox+Lmask。分类损失 L c l s L_{cls} Lcls和bounding-box损失 L b o x L_{box} Lbox与[12]中定义相同。mask分支对每个RoI都有一个 K m 2 Km^{2} Km2维的输出,它对分辨率为 x × x x\times x x×x的K个binary masks进行编码,每个K类都有一个。为此我们应用了每一个像素的sigmoid,并将 L m a s k L_{mask} Lmask定义为平均二进制交叉熵损失。对于与ground-truth类k相关的RoI, L m a s k L_{mask} Lmask只定义在第k个mask上(其他mask输出不会造成损失)。
我们对 L m a s k L_{mask} Lmask的定义允许网络为每个类生成掩码,而不需要类之间的竞争。我们依赖于专用的分类分支来预测用于选择输出mask的类标签。这解耦了mask和类预测。这与将FCNs[30]应用于语义分割时的常见做法不同,后者通常使用逐像素softmax和多项交叉熵损失。在这种情况下,不同l类别的mask会相互竞争;在我们的例子中,对于逐像素的sigmoid和二进制损失,它们没有。实验表明,该公式是获得良好实例分割结果的关键。

Mask Representation

mask对输入目标的空间布局进行编码。因此,与通过全连接(fc)层不可避免地折叠成短输出向量的类标签或框偏移不同,通过卷积提供的像素到像素的对应关系,可以自然地提取mask的空间结构。
具体来说,我们使用FCN预测每个RoI的 m × m m \times m m×mmask。这允许mask分支中的每一层保持显式的 m × m m\times m m×m目标空间布局,而不会将其折叠为缺乏空间维度的向量表示。与以前使用fc层进行mask预测的方法不同[33,34,10],我们的全卷积表示法需要更少的参数,并且如实验所示更精确。
这种像素到像素的行为要求我们的RoI特征(它们本身是小的特征映射)能够很好地对齐,以忠实地保持显式的每像素空间对应。这促使我们开发了以下RoIAlign层,该层在mask预测中起着关键作用。

RoIAlign

在这里插入图片描述
RoIPool[12]是一种标准操作,用于从每个RoI中提取一个小的特征图(例如,7×7)。RoIPool首先将浮点数RoI量化为特征图的离散粒度,然后将量化后的RoI细分为空间单元,这些单元本身进行量化,最后将每个单元覆盖的特征值进行聚合(通常通过最大池化)。例如通过计算 [ x / 16 ] [x/16] [x/16]在连续坐标x上执行量化,其中16是特征图步长,[.]是舍入;类似的,当划分为存储单元(例如 7 × 7 7\times 7 7×7) 时,执行量化。这些量化引入了RoI和提取特征之间的不一致。虽然这可能不会影响分类,因为分类对小的平移很鲁棒,但它对预测像素级的mask有很大的负面影响。
为了解决这个问题,我们提出了一个RoIAlign层,它消除了RoIPool的苛刻量化,将提取的特征与输入正确对齐。 我们提出的更改很简单,我们避免对RoI边界或bins进行任何量化(即,我们使用x/16而不是[x/16])。我们使用双线性插值[22]来计算每个RoI bin中四个定期采样位置的输入特征的精确值,并聚合结果(使用最大值或平均值),详见图3。我们注意到,只要不进行量化,结果对精确的采样位置或采样点的数量并不敏感。
RoIAlign带来了较大的改进,如4.2节所示。我们还将其与[10]中提出的RoIWarp操作进行了比较。与RoIAlign不同,RoIWarp忽略了对齐问题,并在[10]中实现为与RoIPool一样量化RoI。因此,即使ROIWarp也采用由[22 ]驱动的双线性重采样,但它与RoIPool执行一致,如实验所示(表2C中的更多细节),证明了对齐的关键作用。

Network Architecture

在这里插入图片描述
为了证明我们方法的通用性,我们用多种架构实例化了Mask R-CNN。为清楚起见,我们区分:
(1)用于对整个图像进行特征提取的卷积主干结构。
(2)该网络用于边界框识别(分类和回归)和mask预测,分别应用于每个RoI。
我们用术语"网络深度特征"来表示主干架构。我们评估了深度为50或101层的ResNet[19]和ResNeXt[45]网络。最初使用resnet实现Faster R-CNN[19]从第四阶段的最后一个卷积层提取特征,我们称之为C4。例如,带有ResNet-50的主干由ResNet-50-C4表示。这是[19,10,21,39]中常用的选项。
我们还探索了Lin等人[27]最近提出的另一种更有效的主干网,称为特征金字塔网络(FPN)。FPN使用带有横向连接的自上而下架构,从单尺度输入构建网络内特征金字塔。带有FPN主干的Faster R-CNN根据其规模从特征金字塔的不同级别提取RoI特征,但其他方法与vanilla ResNet类似。使用ResNet FPN主干的Mask RCNN进行特征提取,在准确性和速度上都有很好的提高。有关FPN的更多详细信息,请参阅[27]。
对于网络头,我们严格遵循之前工作中提出的架构,其中添加了一个全卷积mask预测分支。具体来说,我们从ResNet[19]和FPN[27]的论文中扩展了Faste R-CNN box heads。详细信息如图4所示。ResNet-C4主干上的头部包括ResNet的第五级(即9层的“res5”[19]),这是一种计算性的。对于FPN,主干已经包括res5,因此允许使用更少过滤器的更高效的头。
我们注意到,我们的mask分支有一个简单的结构。更复杂的设计有可能提高性能,但不是这项工作的重点。

3.1 Implementation Details

我们根据现有的Fast/Faster R-CNN工作设置超参数[12,36,27]。虽然这些决定是在最初的论文[12,36,27]中针对目标检测做出的,但我们发现我们的实例分割系统对它们非常鲁棒。

Training

与Fast R-CNN一样,如果IoU的ground-truth框至少为0.5,则RoI被视为正,否则为负。mask损耗 L m a s k L_{mask} Lmask仅在正ROI上定义。mask目标是RoI与其关联的ground-truth mask之间的交点。
我们采用以图像为中心的训练[12]。调整图像的大小,使其比例(较短的边缘)为800像素[27]。每个小批量的每个GPU有2个图像,每个图像有N个采样ROI,正片与负片的比例为1:3[12]。N对于C4主干是64(如[12,36]所示),对于FPN是512(如[27]所示)。我们在8个GPU(因此有效的小批量大小为16)上训练160k次迭代,学习率为0.02,在120k次迭代时减少10。我们使用0.0001的权重衰减和0.9的动量。在ResNeXt[45]中,我们使用每个GPU 1个图像进行训练,迭代次数相同,初始学习率为0.01。
RPN锚横跨5个尺度和3个纵横比,如下[27]。为了便于消融,RPN单独接受训练,除非另有规定,否则不与Mask R-CNN共享特征。对于本文中的每个条目,RPN和Mask R-CNN都有相同的主干,因此它们是可共享的。

Inference

在测试时,C4主干网的提案编号为300(如[36]所示),FPN的提案编号为1000(如[27]所示)。我们在这些建议上运行box prediction分支,然后是非最大值抑制[14]。然后将mask分支应用于得分最高的100个检测框。虽然这与训练中使用的并行计算不同,但它加快了推理速度并提高了准确性(因为使用了更少、更精确的ROI)。mask分支可以预测每个RoI的K个掩模,但我们只使用第K个掩模,其中K是分类分支预测的类别。然后将m×m浮点数掩码输出调整为RoI大小,并以0.5的阈值进行二值化。
请注意,由于我们只计算前100个检测框上的mask,Mask R-CNN为其Faster R-CNN对应项增加了一小部分开销(例如,典型模型的20%)。

4、Experiments:Instance Segmentation

我们将Mask R-CNN与最新技术在COCO数据集上的全面消融进行了彻底比较[28]。我们报告了标准COCO指标,包括AP(在IoU阈值上的平均值), A P 50 , A P 75 , A P S , A P M , A P L AP_{50},AP_{75},AP_{S},AP_{M},AP_{L} AP50,AP75,APS,APM,APL(不同尺度的AP)。除非另有说明,否则AP使用mask IoU进行评估。与之前的工作[5,27]一样,我们使用80ktrain图像和35k val图像子集(trainval35k)的并集进行训练,并报告剩余5k val图像(minival)的消融情况。我们还报告了测试开发[28]的结果。

4.1 Main Results

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们将Mask R-CNN与表1中实例分割的最新方法进行了比较。我们模型的所有实例都优于以前最先进模型的基线变体。这包括分别在2015年和2016年COCO细分挑战中获胜的MNC[10]和FCIS[26]。在没有bells和whistles的情况下,带有ResNet-101-FPN主干的Mask R-CNN优于FCIS++[26],后者包括多尺度训练/测试、水平翻转测试和在线hard example mining(OHEM)[38]。虽然超出了这项工作的范围,但我们希望许多这样的改进适用于我们的工作。Mask R-CNN输出如图2和图5所示。Mask R-CNN即使在具有挑战性的条件下也能取得良好的效果。在图6中,我们比较了Mask R-CNN基线和FCIS++[26]。FCIS++在重叠的实例上显示出系统性的伪影,这表明它受到了实例分割的根本困难的挑战。Mask R-CNN没有显示这样的人工制品。
在这里插入图片描述

4.2 Ablation Experiments

在这里插入图片描述
我们进行了多次消融来分析R-CNN。结果如表2所示,下面将详细讨论。

Architecture

表2a显示了带有各种主干的R-CNN。它得益于更深层次的网络(50对101)和先进的设计,包括FPN和ResNeXt。我们注意到,并不是所有的框架都能自动受益于更深层次或更高级的网络(参见[21]中的基准测试)。

Multinomial vs. Independent Masks

Mask R-CNN将Mask和类预测解耦:由于现有的box分支预测类标签,我们为每个类生成一个mask,而不会在类之间竞争(通过每像素的sigmoid和二进制loss)。在表2b中,我们将其与使用每像素softmax和multinomial loss(如FCN[30]中常用)进行比较。这种替代方案将mask和类预测任务结合起来,导致mask AP严重损失(5.5个点)。这表明,一旦实例被分类为一个整体(通过box分支),就足以预测一个二进制mask,而不必考虑类别,这使得模型更容易训练。

Class-Specific vs. Class-Agnostic Masks

我们的默认实例化预测特定于类的mask,即每个类一个 m × m m\times m m×m掩码。有趣的是,带有类别不可知掩码的Mask R-CNN(即,预测单个m×m输出,而不考虑类别)几乎同样有效:它的mask AP为29.7,而ResNet-50-C4上的特定类别对应的mask AP为30.3。这进一步突出了我们的方法中的分工,该方法在很大程度上分离了分类和分割。

RoIAlign

表2c显示了对我们提出的RoIAlign层的评估。在这个实验中,我们使用的是ResNet50-C4主干,它的步长为16。RoIAlign比RoIPool提高AP约3个点,大部分收益来自高IoU( A P 75 AP_{75} AP75)。RoIAlign对max\average池化不敏感;我们在论文的其余部分使用average。
此外,我们还与MNC[10]中提出的采用双线性抽样的RoIWarp进行了比较。 如第3章所述,RoIWarp仍量化RoI,与输入失去一致性。如表2c所示,RoIWrap与RoIPool表现相当,比RoIAlign差很多。这突出表明,正确的对齐是关键。我们还使用了ResNet-50-C5主干网,它的步幅更大,为32像素。我们使用与图4(右)相同的头部,因为res5头部不适用。表2d显示,RoIAlign将mask AP提高了7.3个百分点,将mask A P 75 AP_{75} AP75提高了10.5个百分点(相对改善50%)。此外,我们注意到,使用RoIAlign时,使用stride-32 C5特征(30.9 AP)比使用stride-16 C4特征(30.3 AP,表2c)更准确。RoIAlign在很大程度上解决了使用大步长特征进行检测和分割的长期挑战。
最后,当与FPN一起使用时,RoIAlign显示出1.5个mask AP和0.5个box AP的增益,FPN具有更精细的多级跨步。对于需要更精细对齐的关键点检测,即使使用FPN,RoIAlign也显示出较大的增益(表6)。

Mask Breanch

分割是一个像素到像素的任务,我们使用FCN来利用mask的空间布局。在表2e中,我们使用ResNet-50-FPN主干比较了多层感知器(MLP)和FCN。使用FCNs比MLPs提供2.1的mask AP增益。我们注意到,为了与MLP进行公平比较,我们选择该主干是为了使FCN头部的conv层不经过预训练。

4.3 Bounding Box Detection Results

在这里插入图片描述
我们将Mask R-CNN与表3中最先进的COCO bounding-box目标检测进行了比较。对于这个结果,即使训练了完整的Mask R-CNN模型,在推理时也只使用分类和box输出(忽略mask 输出)。使用ResNet-101FPN的Mask R-CNN的性能优于所有之前最先进模型的基本变体,包括2016年COCO检测挑战赛的获胜者GRMI[21]的单一模型变体。使用ResNeXt-101-FPN,Mask R-CNN进一步改善了结果,与[39]中之前最好的单一模型条目(使用Inception-ResNet-v2-TDM)相比,差距为3.0分。
作为进一步的比较,我们训练了一个版本的Mask R-CNN,但没有Mask分支,在表3中用“Faster R-CNN,RoIAlign”表示。该模型的性能优于[27]中给出的模型,这是因为RoIAlign。另一方面,它比Mask R-CNN低0.9分。因此,Mask R-CNN在box detection方面的差距完全是由于多任务训练的好处。
最后,我们注意到,Mask R-CNN在其Mask和box AP之间有一个很小的差距:例如,37.1(Mask,表1)和39.8(box,表3)之间有2.7个点。这表明我们的方法在很大程度上缩小了目标检测和更具挑战性的实例分割任务之间的差距。

4.4 Timing

Inference

我们训练了一个ResNet-101-FPN模型,该模型在RPN和Mask R-CNN阶段之间共享功能,然后对Faster R-CNN进行了4步训练[36]。该型号在Nvidia Tesla M40 GPU上以每幅195ms的速度运行(加上15ms的CPU时间,将输出调整为原始分辨率),并在统计上实现与非共享模式相同的mask AP。我们还报告说,ResNet-101-C4变种∼400ms,因为它有一个更重的box头部(图4),所以我们不建议在实践中使用C4变体。
尽管Mask R-CNN速度很快,但我们注意到,我们的设计并没有针对速度进行优化,可以实现更好的速度/精度权衡[21],例如,通过改变图像大小和提案编号,这超出了本文的范围。

Training

Mask R-CNN的训练速度也很快。在COCO trainval35k上使用ResNet-50-FPN进行的训练在我们的同步8-GPU实现中需要32小时(每16image小批量0.72秒),使用ResNet-101-FPN需要44小时。事实上,在训练集上训练时,快速原型制作可以在不到一天的时间内完成。我们希望这样的快速训练将消除这一领域的一个主要障碍,并鼓励更多的人对这一具有挑战性的课题进行研究。

5、Mask R-CNN for Human Pose Estimation

我们的框架可以很容易地扩展到人体姿势估计。我们将一个关键点的位置建模为一个独热掩模,并采用Mask R-CNN预测K个掩模,每K个关键点类型(如左肩、右肘)一个mask。这项任务有助于展示Mask R-CNN的灵活性。
我们注意到,我们的系统利用了人体姿势的最小领域知识,因为实验主要是为了证明Mask R-CNN框架的通用性。我们希望领域知识(例如建模结构[6])将补充我们的简单方法。

Implementation Details

我们在为关键点调整分割系统时对其进行了微小的修改。对于一个实例的K个关键点中的每一个,训练目标是一个one-hot m × m m\times m m×m二进制mask,其中只有一个像素被标记为前景。在训练期间,对于每个可见的ground-truth关键点,我们在 m 2 m^{2} m2方式softmax输出(鼓励检测单个点)上最小化交叉熵损失。我们注意到,在实例分割中,K个关键点仍然是独立处理的。
我们采用了ResNet FPN变体,keypoint头部结构与图4(右)中的结构类似。 keypoint head由八个 3 × 3 3\times 3 3×3 512-d conv层组成,然后是一个deconv层和2×双线性放大,产生56×56的输出分辨率。我们发现,关键点级别的定位精度需要相对较高的分辨率输出(与mask相比)。
模型在所有COCO trainval35k图像上进行训练,这些图像包含带注释的关键点。为了减少过度拟合,由于该训练集较小,我们使用从[640,800]像素随机采样的图像比例进行训练;推理是在800像素的单一尺度上进行的。我们训练90k次迭代,从0.02的学习率开始,在60k和80k次迭代时减少10次。我们使用阈值为0.5的边界框NMS。其他细节与3.1节相同。

Main Results and Ablations

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

在这里插入图片描述
我们评估了人体关键点AP( A P k p AP^{kp} APkp),并用ResNet-50-FPN主干网进行了实验;更多的主干将在附录中研究。表4显示,我们的结果(62.7 A P k p AP^{kp} APkp)比COCO 2016 关键点优胜者[6]高0.9个点,后者使用多阶段处理管道(见表4的标题)。我们的方法相当简单和快速。更重要的是,我们有一个统一的模型,可以在以5 fps的速度同时运行预测框、段和关键点。在test-dev上添加一个段分支(针对人员类别)将 A P k p AP^{kp} APkp提高到63.1(表4)。minival上多任务学习的更多内容见表5。仅将mask分支添加到框中(即Faster R-CNN)或仅添加关键点版本会持续改进这些任务。然而,添加keypoint分支会略微减少box/mask AP,这表明虽然keypoint检测可以从多任务训练中获益,但它不会反过来帮助其他任务。然而,联合学习这三项任务可以使一个统一的系统同时有效地预测所有输出(图7)。
我们还研究了RoIAlign对关键点检测的影响(表6)。尽管此ResNet-50-FPN主干具有更精细的步幅(例如,最精细级别上有4个像素),但RoIAlign仍比RoIPool有显著改善,并将 A P k p AP^{kp} APkp提高了4.4个点。这是因为关键点检测对定位精度更敏感。这再次表明对齐对于像素级的定位至关重要,包括mask和关键点。
鉴于Mask R-CNN在提取对象边界框、掩码和关键点方面的有效性,我们希望它能成为其他实例级任务的有效框架。

Appendix A: Experiments on Cityscapes

我们进一步报告了Cityscapes[7]数据集上的实例分割结果。该数据集对2975个序列、500个val和1525个测试图像有很好的注释。它有20k个没有实例注释的粗略训练图像,我们不使用。所有图像均为2048×1024像素。实例分割任务涉及8个对象类别,它们在fine训练集中的实例数为:
在这里插入图片描述
该任务的实例分割性能由COCO风格的mask AP(IoU阈值上的平均值)来衡量;还报告了 A P 50 AP_{50} AP50(即在IoU为0.5时屏蔽AP)。

Implementation

我们将我们的Mask R-CNN模型应用于ResNet-FPN-50主干网;我们发现,由于数据集的大小较小,101层的对应项也具有类似的性能。我们使用从[800,1024]中随机抽取的图像比例(短边)进行训练,这减少了过度拟合;推理是在1024像素的单一尺度上进行的。我们使用每个GPU 1个图像的最小批量(8个GPU上8个图像),并训练模型进行24k迭代,从学习率0.01开始,在18k迭代时将其减少到0.001。需要∼在此设置下,在单个8-GPU机器上进行4小时的训练。

Results

在这里插入图片描述
表7将我们的结果与val和测试集的最新水平进行了比较。在不使用粗训练集的情况下,我们的方法在测试中实现了26.2 AP,比之前的最佳输入(DIN[3])相对提高了30%以上,也优于SGN的25.0[29]的并行工作。DIN和SGN都使用精细+粗略数据。与仅使用精细数据的最佳输入(17.4 AP)相比,我们实现了∼50%的改善。对于人员和车辆类别,Cityscapes数据集显示了大量类别内重叠实例(平均每张图像6人和9辆车)。我们认为,类别内重叠是实例分割的一个核心困难。我们的方法显示,与其他最佳条目(相对)相比,这两个类别有了巨大的改进∼人从21.8提高到30.5,提高40%∼将car从39.4提高到46.9),提高了20%,尽管我们的方法没有利用粗略的数据。
Cityscapes数据集的一个主要挑战是在低数据状态下训练模型,尤其是对于卡车、公共汽车和火车类别,每个类别都有大约200-500个训练样本。为了部分解决这个问题,我们进一步报告了COCO预训练的结果。为此,我们从预先训练的COCO Mask R-CNN模型(rider随机初始化)中初始化城市景观中相应的7个类别。我们针对4k迭代对该模型进行了微调,在3k迭代中学习率降低,这需要∼为COCO模型提供1小时的训练。
COCO预先训练的Mask R-CNN模型在测试中达到32.0 AP,几乎比仅使用精细的对应模型提高了6个点。这表明了训练数据量所起的重要作用。它还表明,城市景观上的方法可能会受到其低水平学习的影响。我们表明,在这个数据集上使用COCO预训练是一种有效的策略。
最后,我们观察到val和test AP之间存在偏差,这也是从[23,4,29]的结果中观察到的。我们发现,这种偏差主要是由卡车、公共汽车和火车类别引起的,仅精细模型的val/testAP分别为28.8/22.8、53.5/32.2和33.0/18.6。这表明这些类别的领域发生了变化,它们也几乎没有训练数据。COCO预训练最有助于提高这些类别的成绩;然而,domain shift仍然存在,分别为38.0/30.1、57.5/40.9和41.2/30.9 val/test AP。请注意,对于人员和车辆类别,我们没有看到任何此类偏差(val/test AP在±1分以内)。
城市景观的示例结果如图8所示。
在这里插入图片描述

Appendix B: Enhanced Results on COCO

作为一个通用框架,Mask R-CNN与为检测/分割而开发的补充技术兼容,包括对Faster R-CNN和FCN的改进。在这个附录中,我们描述了一些比我们最初的结果更好的技术。由于其通用性和灵活性,Mask R-CNN被COCO 2017实例细分比赛的三个获奖团队用作框架,这三个团队的表现都显著优于之前的技术水平。

Instance Segmentation and Object Detection

在这里插入图片描述
我们在表8中报告了Mask R-CNN的一些增强结果。总的来说,这些改进提高了mask AP 5.1分(从36.7分提高到41.8分)和box AP 7.7分(从39.6分提高到47.3分)。每一个模型的改进都持续地增加了mask AP和box AP,显示出mask R-CNN框架的良好泛化。接下来我们将详细介绍这些改进。这些结果以及未来的更新可以在https://github.com/facebookresearch/Detectron中获得,可以作为未来研究的更高基线。
Updated baseline:我们从一组不同的超参数的更新基线开始。我们将训练时间延长到180k次,在120k和160k次迭代时,学习率降低了10倍。我们还将NMS阈值更改为0.5(默认值为0.3)。更新后的基线有37.0的mask AP和40.5的box AP。
End-to-end training:之前的所有结果都使用了阶段性训练,即训练RPN作为第一阶段,面罩R-CNN作为第二阶段。[37]之后,我们评估了端到端(e2e)培训,该训练联合训练RPN和Mask RCNN。我们采用了[37]中的“近似”版本,通过忽略梯度w.r.t.RoI坐标,只计算RoIAlign层中的部分梯度。表8显示,e2e训练将mask AP提高了0.6,将box AP提高了1.2。
ImageNet-5k pre-training: [45]之后,我们对在ImageNet的5k类子集上预先训练的模型进行了实验(与标准1k类子集形成对比)。训练前数据增加了5倍,这改善了mask和box 1 AP。作为参考,[40]使用∼250×更多图像(300米),并报告基线上有2-3 box AP改善。
Train-time augmentation:训练时间的规模扩大进一步改善了结果。在训练期间,我们从[640,800]像素中随机抽取一个刻度,并将迭代次数增加到260k(在200k和240k迭代时,学习率降低了10)。训练时间增加使mask AP提高了0.6,box AP提高了0.8。
Model architecture: 通过将101层重新升级到其152层对应物[19],我们观察到增加了0.5mask AP和0.6 box AP。这表明,更深层次的模型仍然可以改善COCO的结果。
使用最近提出的非局部(NL)模型[43],我们实现了40.3mask AP和45.0box AP。该结果没有增加测试时间,并且该方法在测试时在Nvidia Tesla P100 GPU上以3fps的速度运行。
Test-time augmentation: 我们将模型结果与[400,1200]像素的比例、100的步长以及水平翻转相结合。这为我们提供了41.8 maskAP和47.3 box AP的单一模型结果。
以上结果是我们提交给COCO 2017竞赛的基础(也使用了一个ensemble,这里没有讨论)。据报道,实例分割任务的前三个获胜团队都基于Mask R-CNN框架的扩展。

Keypoint Detection

在这里插入图片描述
我们在表9中报告了关键点检测的增强结果。作为更新的基线,我们将训练计划扩展到130k次迭代,其中在100k和120k次迭代时,学习率降低了10。这将使 A P k p AP^{kp} APkp提高约1个百分点。用ResNet-101和ResNeXt-101替换ResNet-50, A P k p AP^{kp} APkp分别增加到66.1和67.3。
通过最近一种称为数据蒸馏的方法[35],我们能够利用COCO提供的额外120k未标记图像。简言之,数据提取是一种自我训练策略,它使用在标记数据上训练的模型来预测未标记图像上的注释,然后用这些新注释更新模型。Mask R-CNN为这种自我训练策略提供了一个有效的框架。通过数据蒸馏,Mask R-CNN A P k p AP^{kp} APkp提高了1.8个点,达到69.1。我们观察到,Mask R-CNN可以从额外的数据中获益,即使这些数据没有标记。
通过使用与实例分割相同的测试时间增强,我们进一步将 A P k p AP^{kp} APkp提高到70.4。

·

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值