我们提出了一个概念上简单、灵活和通用的对象实例分割框架。我们的方法可以有效地检测图像中的对象,同时为每个实例生成一个高质量的分割掩模。该方法被称为MaskR-CNN,通过与现有用于边界和识别的分支并行的R-CNN。MaskR-CNN训练很简单,只比Faster R-CNN增加了一小部分开销,以5帧/秒的速度运行。此外,Mask R-CNN很容易推广到其他任务中,例如,允许我们在相同的框架下估计人体姿态。我们展示了COCO挑战套件的所有三个轨道的顶级结果,包括实例分割、边界框目标检测和个人关键点检测。在没有花哨功能的情况下,MaskR-CNN在每项任务上都优于所有现有的单模型条目,包括2016年COCO挑战的获胜者。我们希望我们的简单而有效的方法将作为一个坚实的基线,并有助于简化未来的实例级识别研究。代码已在https://github.com/ facebookresearch/Detectron.
视觉社区在短时间内快速提高了目标检测和语义分割的结果。在很大程度上,这些进步是由强大的基线系统驱动的,如分别用于目标检测和语义分割的Faster RCNN[12,36]和全卷积网络(FCN)[30]框架。这些方法在概念上是直观的,并提供了灵活性和鲁棒性,以及快速的训练和推理时间。我们在这项工作中的目标是为实例分割开发一个比较可行的框架。
实例分割是具有挑战性的,因为它需要正确地检测图像中的所有对象,同时也需要精确地分割每个实例。因此,它结合了经典的对象检测计算机视觉任务中的元素,其中目标是对单个对象进行分类,并使用边界框对每个对象进行定位,以及语义分割,其中目标是将每个像素分类为一组固定的类别,而不区分对象实例。1.有鉴于此,人们可能会认为需要一种复杂的方法来获得良好的结果。然而,我们证明了一个惊人的简单、灵活和快速的系统可以超越先前的最先进的实例分割结果。
我们的方法,称为MaskR-CNN,扩展了Faster R-CNN[36],通过添加一个分支用于预测每个感兴趣区域(RoI)上的分割掩模,与现有的用于分类和边界盒回归的分支并行(图1)。掩模分支是一个应用于每个RoI的小FCN,以像素-顶像素的方式预测分割掩模。MaskR-CNN易于实现和训练,并且囊括了Faster R-CNN框架,这促进了广泛的灵活的架构设计。此外,掩模分支只增加了一个小的计算开销,支持一个快速的系统和快速的实验。
原则上,Mask R-CNN是对Faster R-CNN的直观扩展,但正确地构建掩码分支对于良好的结果是至关重要的。最重要的是,Faster RCNN并不是为网络输入和输出之间的像素对像素对齐而设计的。这一点最明显的是RoIPool[18,12],事实上的处理实例的核心操作,如何执行特征提取的粗空间量化。为了解决这种错位,我们提出了一个简单的、无量化的层,称为RoI Align,它忠实地保留了精确的空间位置。
尽管这似乎是一个微小的变化,但RoI Align有很大的影响:它将掩模精度相对提高了相对10%到50%,在更严格的本地化指标下显示出更大的收益。其次,我们发现解耦掩模和类预测是至关重要的:我们为每个类独立预测一个二进制掩模,没有类之间的竞争,并依赖网络的RoI分类分支来预测类别。相比之下,FCN通常执行每像素的多类分类,这结合了分割和分类,并且基于我们的实验,例如分割的效果很差。
在没有花哨功能的情况下,MaskR-CNN超越了COCO实例分割任务[28]上所有最先进的单模型结果,包括2016年竞赛获胜者的大量作品。作为一个副产品,我们的方法也擅长于COCO目标检测任务。在消融实验中,我们评估了多个基本实例,这使我们能够证明其稳健性,并分析核心因素的影响。
我们的模型在GPU上可以以每帧约200 ms的速度运行,在一台8-GPU机器上训练COCO需要一到两天的时间。我们相信,快速的训练和测试速度,以及框架的灵活性和准确性,将有利于和简化未来的实例分割研究。
最后,我们通过对COCO关键点数据集[28]上的人体姿态估计任务,展示了我们的框架的通用性。通过将每个关键点视为一个热的二进制掩码,用最小的修改,Mask R-CNN可以应用于检测特定于实例的姿态。MaskR-CNN超过了2016年COCO关键点比赛的获胜者,同时以5帧/秒的速度运行。因此,MaskR-CNN可以被更广泛地看作是一个用于实例级识别的灵活框架,并且可以很容易地扩展到更复杂的任务。
R-CNN:基于区域的CNN(R-CNN)的边界框目标检测方法[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的有效性的驱动,许多实例分割的方法都是基于分段建议的。早期的方法[13,15,16,9]采用自下而上的节段[42,2]。DeepMask[33]和以下工作[34,8]学习提出候选片段,然后通过Fast R-CNN进行分类。在这些方法中,分割先于识别,识别速度慢,精度较低。同样,Dai等人[10]提出了一个复杂的多阶段级联,从边界框建议中预测分段建议,然后进行分类。相反,我们的方法是基于掩模和类标签的并行预测,这更简单、更灵活。
最近,Li等人[26]将[8]中的分割建议系统和[11]中的目标检测系统相结合,进行“全卷积实例分割”(FCIS)。[8,11,26]中常见的想法是完全卷积地预测一组位置敏感的输出通道。这些通道同时处理对象类、框和掩码,使系统速度快。但是FCIS在重叠的实例上表现出了系统的错误,并产生了虚假的边缘(图6),这表明它受到了分割实例的基本困难的挑战。
另一类实例分割的解决方案是由语义分割的成功驱动的。从每个像素的分类结果(例如,FCN输出)开始,这些方法试图将同一类别的像素切割为不同的实例。与这些方法的分割优先策略相比,MaskR-CNN是基于实例优先策略的。我们希望在未来将对这两种策略进行更深入的结合研究。
Mask R-CNN在概念上很简单:Faster R-CNN对每个候选对象有两个输出,一个类标签和一个边界框偏移量;对此,我们添加了第三个输出对象掩码的分支。因此,Mask R-CNN是一个自然和直观的想法。但是附加的掩模输出不同于类和盒子输出,需要提取更精细的对象空间布局。接下来,我们介绍了MaskR-CNN的关键元素,包括像素对像素的对齐,这是Fast/Faster R-CNN的主要缺失部分。
Faster R-CNN:我们首先简要回顾一下Faster R-CNN检测器[36]。Faster R-CNN由两个阶段组成。第一阶段,称为区域提案网络(RPN),提出了候选对象的边界框。第二阶段,本质上是FastR-CNN[12],使用RoIPool从每个候选框中提取特征,并进行分类和边界框回归。这两个阶段所使用的特性可以被共享,以便更快地进行推断。我们建议读者参考[21],以了解Faster R-CNN和其他框架之间最新、全面的比较
MaskR-CNN:MaskR-CNN采用相同的两阶段程序,具有相同的第一阶段(即RPN)。在第二阶段,与预测类和盒偏移量的同时,Mask R-CNN还为每个RoI输出一个二进制掩码。这与最近的系统相反,后者的分类依赖于掩模预测(例如[33,10,26])。我们的方法遵循了FastR-CNN[12]的精神,即并行应用边界盒分类和回归(这在很大程度上简化了原始R-CNN[13]的多阶段管道)。
形式上,在训练期间,我们将每个采样RoI上的多任务损失定义为L=Lcls+Lbox+Lmask。分类损失Lcls和边界框损失Lbox与[12]中定义的相同。掩码分支为每个RoI有一个Km二维输出,它编码K个分辨率为m×m的二进制掩码,每个K个类一个。为此,我们应用每像素s型,并将Lmask定义为平均二进制交叉熵损失。对于与地面真实类k相关联的RoI,Lmask只定义在第k个掩码上(其他掩码输出不会造成损失)。
我们对Lmask的定义允许网络为每个类生成掩码,而无需类之间的竞争;我们依赖于专用的分类分支来预测用于选择输出掩码的类标签。这可以解耦掩码和类预测。这与将FCNs[30]应用于语义分割时的常见做法不同,后者通常使用每像素的softmax和多项式交叉熵损失。在这种情况下,跨类的掩码相互竞争;在我们的例子中,对于每像素的s型和二进制损失,它们不会。实验结果表明,该公式是获得良好的实例分割结果的关键。
Mask Representation: 掩码对输入对象的空间布局进行编码。因此,不同于类标签或盒抵消不可避免地被全连接(fc)层分解为短输出向量,提取掩模的空间结构可以通过卷积提供的像素-像素对应自然地解决。
具体来说,我们使用FCN[30]预测每个RoI的m×m掩模。这允许掩模分支中的每一层维护显式的m×m对象空间布局,而不会将其折叠为缺乏空间维度的向量表示。与以往采用fc层进行掩模预测[33,34,10]的方法不同,我们的完全卷积表示需要更少的参数,而且通过实验证明,它更准确。
具体来说,我们使用FCN[30]预测每个RoI的m×m掩模。这允许掩模分支中的每一层维护显式的m×对象空间布局,而不会将其折叠为缺乏空间维度的向量表示。与以往采用fc层进行掩模预测[33,34,10]的方法不同,我们的完全卷积表示需要更少的参数,而且通过实验证明,它更准确。
RoIAlign:RoIPool[12]是从每个RoI中提取一个小的特征映射(例如,7×7)的标准操作。RoIPool首先将浮动数RoI量化为特征映射的离散粒度,然后这个量化的RoI被细分为空间箱子,空间箱子本身被量化,最后每个箱子覆盖的特征值被聚合(通常通过最大池化)量化,例如,通过计算[x/16]在连续坐标x上执行,其中16是一个特征图步幅,[·]是四舍五入;同样,量化在划分为箱子时进行量化(例如,7×7)。这些量化引入了RoI和提取的特征之间的失调。虽然这可能不会影响分类,因为分类对小的翻译是鲁棒性的,但它对预测像素准确的掩模有很大的负面影响。
为了解决这个问题,我们提出了一个RoIAlign层,它消除了RoIPool的苛刻量化,将提取的特征与输入正确对齐。我们提出的更改很简单:我们避免了RoI边界或bins的任何量化(即,我们使用x/16而不是[x/16])。我们使用双线性插值[22]来计算每个RoIbin中四个定期采样位置的输入特征的精确值,并将结果聚合(使用最大值或平均值),详见图3。我们注意到,只要不进行量化,结果对精确的采样位置或采样点不敏感。
正如我们在4.2中所示,RoI Align导致了很大的改进。我们还比较了在[10]中提出的RoI Warp操作。与RoI Align不同,RoI Warp忽略了对齐问题,并在[10]中实现为量化RoIPool一样。因此,尽管RoIWarp也采用了由[22]驱动的双线性重采样,但它的性能与RoIPool相当(更多细节见表2c),证明了对齐的关键作用。
Network Architecture: :为了演示我们的方法的通用性,我们用多个架构实例化了MaskR-CNN。为了清晰起见,我们区分了:(i)用于整个图像的特征提取的卷积主干架构,以及(ii)用于边界盒识别(分类和回归)和掩码预测的网络头,它们分别应用于每个RoI。
我们使用命名法网络深度特征来表示主干架构。我们评估了深度为50层或101层的ResNet[19]和ResNeXt[45]网络。使用ResNets[19]的Faster R-CNN的原始实现从第4阶段的最终卷积层中提取了特征,我们称之为C4。例如,这个具有ResNet-50的主干用ResNet-50-C4表示。这是[19,10,21,39]中常用的一种选择。
我们还探索了由Lin等人[27]最近提出的另一个更有效的主干,称为特征金字塔网络(FPN)。FPN使用一个带有横向连接的自顶向下架构,从单尺度输入构建一个网络内特征金字塔。使用FPN主干的Faster R-CNN根据其规模从特征金字塔的不同级别提取RoI特征,但在此之外,其他方法类似于普通的ResNet。使用ResNet-FPN骨干与Mask RCNN进行特征提取,在准确性和速度上都获得了极好的收益。有关FPN的更多细节,请向读者参考[27]。
对于网络头,我们密切遵循之前工作中提出的架构,其中我们添加了一个完全卷积掩码预测分支。具体来说,我们从ResNet[19]和FPN[27]的论文中扩展了Faster R-CNN盒头。详细信息如图4所示。ResNet-C4主干上的头部包括ResNet的第5阶段(即9层的res5‘[19]),这是计算密集型的。对于FPN,主干已经包括res5,因此允许一个更有效的头,使用更少的过滤器.
我们注意到,我们的掩模分支有一个简单的结构。更复杂的设计有潜力提高性能,但这并不是这项工作的重点。
3.1. Implementation Details
我们在现有的Fast/Faster R-CNN工作[12,36,27]之后设置超参数。虽然这些决策是在原始论文[12,36,27]中为目标检测而做出的,但我们发现我们的实例分割系统对它们具有鲁棒性。
Training: :就像在FastR-CNN中一样,如果一个IoI有IoU和一个至少为0.5的地面真值盒,则被认为是正的,否则是负的。掩模丢失Lmask仅在正RoIs上定义。掩码目标是RoI与其相关的地面真实掩模之间的交集。
我们采用以图像为中心的训练[12]。图像的调整使其比例(较短的边缘)为800像素[27]。每个小批每个GPU有2张图像,每张图像有N个采样roi,正[12]与负[12]的比例为1:3。C4主干N为64(如[12,36]),FPN N为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是单独训练的,并且不与MaskR-CNN共享特征,除非有特别说明。对于本文中的每一个条目,RPN和MaskR-CNN都有相同的主干,因此它们是可共享的。
Inference: 在测试时,C4主干的建议编号为300(如[36]),FPN的提案编号为1000(如[27])。我们在这些建议上运行盒子预测分支,然后使用非最大抑制[14]。然后将掩码分支应用于得分最高的100个检测框。尽管这不同于在训练中使用的并行计算,但它加快了推理速度并提高了准确性(由于使用了更少、更准确的roi)。
掩码分支可以预测每个RoI的K个掩码,但我们只使用第k个掩码,其中k是分类分支预测的类。然后,将m×m浮数掩模输出的大小调整为RoI大小,并在阈值为0.5时进行二值化。
请注意,由于我们只计算前100个检测框上的掩码,Mask R-CNN为其Faster R-CNN增加了一个小开销(例如,典型模型上的∼20%)。
我们对Mask R-CNN进行了全面的比较,并对COCO数据集[28]进行了全面的消融。我们报告了标准的COCO指标,包括AP(平均超过IoU阈值)、AP50、AP75和APS、APM、APL(不同尺度上的AP)。除非特别说明,AP正在使用掩模IoU进行评估。与之前的工作[5,27]一样,我们使用80k训练图像和35k val图像子集(训练35k)的并集进行训练,并报告剩余5k val图像(微型)的消融。我们还报告了测试开发[28]的结果。
4.1. Main Results
我们将MaskR-CNN与表1中最先进的实例分割方法进行了比较。我们的模型的所有实例化都优于以前最先进的模型的基线变体。这包括MNC[10]和FCIS[26],他们分别是2015年和2016年经济成本细分挑战的赢家。在没有附加功能的情况下,具有ResNet-101-FPN骨干的MaskR-CNN的性能优于FCIS+++[26],后者包括多尺度训练/测试、水平翻转测试和在线硬示例挖掘(OHEM)[38]。虽然在这项工作的范围之外,但我们希望许多这样的改进也适用于我们的工作。
Mask R-CNN输出如图2和图5所示。Mask R-CNN即使在具有挑战性的条件下也能取得良好的效果。在图6中,我们比较了MaskR-CNN基线和FCIS+++[26]。FCIS+++在重叠的实例上表现出了系统的伪影,这表明它受到了实例分割的基本困难的挑战。MaskR-CNN没有显示这样的伪影。
我们运行了一些消融来分析Mask R-CNN。结果如表2所示,接下来将进行详细讨论。
Architecture:表2a显示了具有各种骨干的MaskR-CNN。它受益于更深层次的网络(50比101)和先进的设计,包括FPN和ResNeXt。我们注意到,并不是所有的框架都会自动受益于更深层次或高级的网络(参见[21]中的基准测试)。
Multinomial vs. Independent Masks: Mask R-CNN解耦掩码和类预测:由于现有的box分支预测类标签,我们为每个类生成一个掩码,而没有类之间的竞争(通过每像素的s型和二进制损失)。在表2b中,我们将其与使用每像素的softmax和多项损失(如在FCN[30]中常用的)进行了比较。这种选择将掩模和类预测的任务结合起来,并导致掩模AP的严重损失(5.5)。这表明,一旦实例被分类为一个整体(通过盒子分支),它就足以预测一个二进制掩码,而不考虑类别,这使得模型更容易训练。
Class-Specifific vs. Class-Agnostic Masks: 我们的默认实例化预测特定于类的掩码,即每个类有一个m×m个掩码。有趣的是,带有类不可知Mask R-CNN(即,无论类别都预测单个m×m输出)几乎同样有效:它有29.7 AP,而ResNet-50-C4上的类特定对应物为30.3。这进一步强调了在我们的方法中的劳动分工,这在很大程度上解耦了分类和分割。
RoIAlign:我们提出的RoIAlign层的评估见表2c。在这个实验中,我们使用了ResNet-50-C4主干,它的步幅为16。RoIAlign比RoIPool提高了约3个百分点,其中大部分收益来自于高IoU(AP75)。RoIAlign对最大/平均池不敏感;我们在论文的其余部分使用平均值。
此外,我们还与MNC[10]中提出的同样采用双线性抽样的RoIWarp进行了比较。如3中所讨论的,RoIWarp仍然量化RoI,失去与输入的对齐。从表2c中可以看出,RoIWarp的性能与RoIPool相当,但比RoIAlign要差得多。这强调了正确的对齐是关键
我们还评估了使用ResNet-50-C5主干的RoIAlign,它有更大的步幅,为32像素。我们使用与图4(右)相同的头,因为res5头不适用。表2d显示,RoIAlign将AP提高了7.3个百分点,AP75提高了10.5个百分点(相对提高了50%)。此外,我们注意到,在RoIAlign中,使用步幅-32C5特征(30.9AP)比使用步幅-16C4特征(30.3AP,表2c)更准确。RoIAlign在很大程度上解决了长期以来使用大步幅特征进行检测和分割的挑战。
最后,RoIAlign在与FPN一起使用时显示了1.5 mask AP和0.5boxAP,具有更精细的多级步幅。对于需要更精细的对齐的关键点检测,RoIAlign即使在使用FPN时也显示出了很大的增益(表6)。
Mask Branch: 分割是一个像素到像素的任务,我们利用FCN利用掩模的空间布局。在表2e中,我们使用ResNet-50-FPN骨干,比较了多层感知器(MLP)和FCNs。使用FCNs得到的掩模AP增益为2.1。我们注意到,我们选择这个主干是为了使FCN头部的conv层没有经过预先训练,以便与MLP进行公平的比较。
我们将MaskR-CNN与表3中最先进的COCO边界框对象检测进行了比较。对于这个结果,即使训练了完整的MaskR-CNN模型,在推理中也只使用分类和框输出(忽略掩码输出)。使用ResNet-101-FPN的MaskR-CNN优于之前所有最先进模型的基本变体,包括GRMI[21]的单模型变体,COCO2016检测挑战的赢家。使用ResNeXt-101-FPN,MaskR-CNN进一步改进了结果,与[39]之前最好的单个模型条目(使用初始-ResNet-v2-TDM)相比,有3.0point的边界框AP。
作为进一步的比较,我们训练了一个版本的Mask R-CNN,但没有掩码分支,在表3中用“Faster R-CNN,RoIAlign”表示。由于RoIAlign,该模型的性能不如[27]中提出的模型。另一方面,它比MaskR-CNN低0.9点。因此,MaskR-CNN在盒子检测上的差距仅仅是由于多任务训练的好处。
最后,我们注意到MaskR-CNN在mask和boxAP之间之间有一个小的差距:例如,37.1(mask,表1)和39.8(box,表3)之间有2.7百分点的差距。这表明,我们的方法在很大程度上缩小了目标检测和更具挑战性的实例分割任务之间的差距。
Inference: 我们训练了一个ResNet-101-FPN模型,该模型在RPN和MaskR-CNN阶段之间共享特征,遵循Faster R-CNN[36]的4步训练。该型号在Nvidia Tesla M40GPU上以每张图像195 ms的速度运行(加上15 ms的CPU时间将输出调整为原始分辨率),并在统计上实现了与未共享的相同的掩码AP。我们还报告了ResNet-101-C4变体需要∼400ms,因为它有一个更重的盒头(图4),所以我们不建议在实践中使用C4变体。
虽然MaskR-CNN速度很快,但我们注意到我们的设计并没有为速度进行优化,而且[21]可以实现更好的速度/精度的权衡,例如,通过改变图像大小和提案号,这超出了本文的范围。
training:MaskR-CNN的训练速度也很快。在我们同步的8-GPU实现中,使用ResNet-50-FPN进行COCO训练需要32小时(每16个图像小批0.72秒),使用ResNet-101-FPN需要44小时。事实上,快速的原型设计可以在不到一天的时间内完成,当在火车上进行训练。我们希望这样的快速培训将消除这一领域的一个主要障碍,并鼓励更多的人对这个具有挑战性的话题进行研究。
我们的框架可以很容易地扩展到人类的姿态估计。我们将一个关键点的位置建模为一个热掩模,并采用MaskR-CNN预测K个掩模,每种关键点类型(如左肩、右肘)。这个任务有助于演示MaskR-CNN的灵活性。我们注意到,我们的系统利用了人体姿态的最小领域知识,因为实验主要是为了证明MaskR-CNN框架的通用性。我们期望领域知识(例如,建模结构[6])将是对我们的简单方法的补充。
Implementation Details:当分割系统适应关键点时,我们对它做了一些小的修改。对于一个实例的每个K个关键点,训练目标是一个one-hot m×m二进制掩模,其中只有一个像素被标记为前景。 在训练过程中,对于每个可见的地面真实关键点,我们最小化了-way softmax输出上的交叉熵损失(这鼓励单个点被检测)。我们注意到,在实例分割中,K个关键点仍然被独立处理。
我们采用ResNet-FPN变体,关键点头结构类似于图4(右)。关键点头由8个3×3 512-dconv层组成,然后是一个解波层和2×双线性升级,产生的输出分辨率为56×56。我们发现,一个相对较高的分辨率输出(相对于掩模)是需要的关键点级的定位精度。
模型在所有包含注释关键点的COCO训练35k图像上进行训练。为了减少过拟合,由于这个训练集较小,我们使用从[640,800]像素中随机采样的图像尺度进行训练;推理是在800像素的单一尺度上。我们训练90k次迭代,从0.02的学习率开始,在60k和80k次迭代中减少10次。我们使用阈值为0.5的边界框NMS。其他细节与3.1中提到的相同。
我们进一步报告了在城市景观[7]数据集上的实例分割结果。该数据集对2975训练集、500张验证集和1525张测试集图像都有很好的注释。它有20k个粗训练图像,没有实例注释,我们不使用这些注释。所有图像均为2048×1024像素。实例分割任务涉及8个对象类别,其在精细训练集上的实例数量为:
该任务上的实例分割性能可以通过coco-style的mask AP(平均超过IoU阈值)来衡量;还报告了AP50(即IoU为0.5时的mask AP)。
Implementation: 我们用Mask R-CNN模型应用ResNet-FPN-50;我们发现由于数据集大小小,101层对应的性能类似。我们使用从[800,1024]中随机采样的图像尺度(更短的边)进行训练,这减少了过拟合;推理是在1024个像素的单个尺度上。我们使用每个GPU1个图像的小批量大小(8个GPU上有8个),并对模型进行24k迭代训练,从学习速率0.01开始,在18k迭代时将其减少到0.001。在这个设置下,在一台8-GPU机器上需要4小时的训练。
Results: 表7将我们的结果与验证集和测试集的现状进行了比较。在不使用粗训练集的情况下,我们的方法在测试中达到了26.2AP,比之前的最佳条目(DIN[3])相对提高了30%以上,也优于SGN的25.0[29]的并行工作。DIN和SGN都使用精细的+粗数据。与仅使用精细数据(17.4AP)的最佳条目相比,我们实现了∼50%的改进。
对于个人和汽车类别,城市景观数据集显示了大量的类别内重叠实例(平均每张图片有6人和9辆车)。我们认为类别内重叠是实例分割的核心难点。我们的方法在这两个类别上有了巨大的改进(相对∼从21.8提高到30.5,∼从39.4提高到46.9提高了20%),尽管我们的方法没有利用粗数据。
城市景观数据集的一个主要挑战是在低数据状态下训练模型,特别是对于卡车、公共汽车和火车的类别,每个样本大约有200-500个训练样本。为了部分解决这个问题,我们进一步报告了使用COCO预培训的结果。为此,我们从预先训练过的COCO MaskR-CNN模型(随机初始化骑手)中初始化城市景观中相应的7个类别。我们对4k次迭代进行微调,其中3k次迭代时学习率降低,给定COCO模型需要∼1小时的∼训练。
COCO预训练的MaskR-CNN模型在测试中达到了32.0AP,几乎比仅精细的模型提高了6个points。这表明了训练数据的量所发挥的重要作用。这也表明,城市景观的方法可能受到其低射学习表现的影响。我们表明,使用COCO预训练是一种有效的策略
最后,我们观察到val和testAP之间的偏差,从[23,4,29]的结果中也观察到。我们发现,这种偏差主要是由卡车、公交车和火车类别引起的,仅精细模型的验证集/测试集AP分别为28.8/22.8、53.5/32.2和33.0/18.6。这表明这些类别存在领域转移,这些类别也没有训练数据。COCO预训练最有助于提高这些类别的结果;然而,38.0/30.1、57.5/40.9和41.2/30.9val/测试AP的领域转移分别持续存在。请注意,对于个人和汽车类别,我们没有看到任何这样的偏差(val/测试AP在±1分范围内)。关于城市景观的示例结果如图8所示。
作为一个通用框架,MaskR-CNN与用于检测/分割开发的互补技术兼容,包括对快速/快速的R-CNN和FCNs的改进。在本附录中,我们将描述一些改进于原始结果的技术。由于其通用性和灵活性,MaskR-CNN被COCO2017实例分割竞赛中的三个获胜团队使用作为框架,它们都显著优于之前的技术水平。
我们在表8中报告了MaskR-CNN的一些增强结果。总的来说,改进增加了mask AP 5.1个points(从36.7增加到41.8)和AP 7.7个points(从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.0Mask AP和40.5box AP。
End-to-end training:之前所有的结果均采用阶段训练,即训练RPN作为第一阶段,MaskR-CNN作为第二阶段。在[37]之后,我们评估了联合训练RPN和Mask RCNN的端到端(‘e2e’)训练。我们在[37]中采用了“近似”版本,它只通过忽略梯度w.r.t.来计算RoIAlign层中的部分梯度RoI坐标。表8显示,e2e训练使Mask AP提高了0.6,box AP提高了1.2。
ImageNet-5k pre-training: 在[45]之后,我们在ImageNet的一个5k类子集上实验使用预训练的模型(与标准的1k类子集相比)。训练前数据的5×增加改善了mask和box AP。作为参考,[40]使用了∼250×更多的图像(300M),并报告了其基线上的2-3盒AP改善。
Train-time augmentation:训练时间的规模增加进一步提高了结果。在训练过程中,我们从[640,800]个像素中随机抽取一个量表,并将迭代次数增加到260k(在200k和240k迭代时,学习率减少了10次)。列车时间增强使mask AP提高0.6,box AP提高0.8。
Model architecture: 通过将101层ResNeXt升级到152层对应的[19],我们观察到增加了0.5个mask AP和0.6个box AP的增加。这表明,一个更深层次的模型仍然可以提高COCO的结果。
利用最近提出的非局部(NL)模型[43],我们实现了40.3mask AP和45.0box AP。这个结果没有测试时间的增加,该方法在Nvidia Tesla P100 GPU上以3帧每秒的速度运行。
Test-time augmentation: 我们结合使用[400,1200]像素的尺度和100,并在它们的水平翻转。这给了我们一个41.8mask AP和47.3box AP的单模结果。
上述结果是我们提交COCO2017CO竞赛的基础(该竞赛也使用了一个集合,这里没有讨论)。据报道,实例分割任务的前三个获胜团队都是基于MaskR-CNN框架的扩展。
我们在表9中报告了关键点检测的增强结果。作为一个更新的基线,我们将训练计划扩展到130k次迭代,其中100k次迭代和120k次迭代的学习率降低了10次。这将APkp提高了大约1个点。用ResNet-101和ResNeXt-101取代ResNet-50,使APkp分别增加到66.1和67.3。
通过最近一种被称为数据蒸馏[35]的方法,我们能够利用COCO提供的额外的12万张未标记图像。简而言之,数据蒸馏是一种自我训练策略,它使用在标记数据上训练的模型来预测未标记图像上的注释,然后使用这些新的注释更新模型。MaskR-CNN为这种自我训练策略提供了一个有效的框架。通过数据蒸馏,MaskR-CNNAPkp提高了1.8个points,达到69.1个points。我们观察到,MaskR-CNN可以从额外的数据中获益,即使这些数据是未标记的。
通过使用与实例分割相同的测试时间增强,我们进一步将APkp提高到70.4。