Mask R-CNN 解读:扩展 Faster R-CNN 用于实例分割

Title: Mask R-CNN(2018)
Link: Paper Code
Tips:

  1. 了解 Fast R-CNN 如何扩展成 Mask R-CNN(4);
  2. 理解 RoIAlign 为什么引入以及如何解决问题(4);
  3. 如何进行 Ablation Experiments,分析框架各部分的作用(4.2);
  4. 如何对模型进行拓展,从分割到关键点检测(5)。

Summary:

这是一篇跨任务的文章,说明了不同任务之间互相借鉴的可行性,也启发了我们在深钻某一领域的同时也要涉略广泛,其他任务的方法也许是解决你问题的新思路。

这篇论文提出的 Mask R-CNN 是一种很直观的想法:Faster R-CNN 用于检测,对每个候选物体都有 class 和 bounding box 两个输出,在此基础上加一个分支来预测 mask。没想到样的结合可行,比传统 FCN 的效果要好。更神奇的是,这样的模型还能继续拓展到其他任务。


Abstract

本文介绍的是一个实例分割框架 Mask R-CNN。

Mask R-CNN 是检测框架 Faster R-CNN 的扩展,它通过添加一个分支与现有的用于边界框识别的分支并行来预测对象蒙版。它可以有效地检测图像中的对象,同时为每个实例生成高质量的分割蒙版。

这个框架容易拓展到其他任务,例如用于人体姿态估计。

1. Introduction

目标检测和语义分割的快速发展分别得益于 Fast/Faster R- CNNFully Convolutional Network (FCN),本文的目标是开发一个可比较的实例分割框架。

任务——

实例分割 (instance segmentation) 是一个有挑战的任务,因为它不但要求检测出物体,还要精准分割每个实例。因此它需要结合目标检测( object detection,目标是为每个物体分类并用一个 bounding box 给物体定位)。

如何扩展——
Mask R-CNN,通过添加一个分支来预测每个关注区域(RoI)上的分割蒙版,并与现有的用于分类和边界框回归的分支并行,从而扩展了Faster R-CNN。

  • 在 Faster R-CNN 框架上改进,促进了多种灵活的体系结构设计;
  • mask 分支是一个小型 FCN,仅增加了少量计算开销,保证了训练速度。
    在这里插入图片描述

框架特点——
Faster R- CNN并非设计用于网络输入和输出之间的像素到像素对齐。为了解决为对齐的问题,我们提出了一个简单的无量化层,称为 RoIAlign,它保留了精确的空间位置。这个小改变将 mask 的精度提高了 10% 到 50%。

我们发现将遮罩与类别预测解耦至关重要:为每个类别独立预测二进制掩码,使用网络的 RoI 分类分支来预测类别。而 FCN 把分类和分割结合,执行的是每个像素的多类别分类,它在实例分割上表现较差。

比赛成绩——
Mask R-CNN在 COCO 实例分割任务上超过了所有先前的 state-of-the-art 单模型结果,包括2016年竞赛冠军的模型。

通用性——
通过在 COCO 关键点数据集上进行人体姿势估计任务来展示该框架的通用性。

2. Related Work

R-CNN——
指目标检测的三个框架 R-CNN, Fast R-CNN 和 Faster R-CNN,它们用于对象的边界框检测。

Instance Segmentation——
受R-CNN有效性的驱动,实例分割的许多方法都基于 segment proposals。这些方法先分割再识别,速度较慢且准确性较低。而本文采用并行预测 mask 和 class lable 的方式,更简单灵活。

现有的方法中已经有把分割和检测结合起来的方法 (fully convolutional instance segmentation FCIS),这个系统同时处理类别,边框和遮罩,运行很快。 但是FCIS在重叠的实例上表现出系统性错误并产生虚假的边缘。

其他的方法就是参考语义分割,把 FCN 的输出再分割成不同的实例。与这些分割先行策略相比,Mask R-CNN 采取一种实例先行的策略。 (segmentation-first strategy vs instance-first strategy)

3. Mask R-CNN

Mask R-CNN 是一种很直观的想法:Faster R-CNN 用于检测,对每个候选物体都有 class 和 bounding box 两个输出,在此基础上加一个分支来预测 mask。

  • 第三个分支与前两个分支的区别是,它要求更精细的空间布局特征;
  • Faster R-CNN 缺少对齐功能,所以 Mask R-CNN 需要添加 pixel-to-pixel alignment 功能。

首先解释框架的一系列相关概念。

Faster R-CNN——
Faster R-CNN detector 包括两个阶段(two-stage):Region Proposal Network (RPN) + Fast R-CNN,其中 PRN 用于产生候选物体的边界框,Fast R-CNN 根据前一步产生的候选物体提取特征,然后进行分类和回归。

Mask R-CNN——
Mask R-CNN 也采取了两阶段的流程,第一阶段仍然是 RPN,第二阶段除了分类与生成 bounding box 外,还同时为每个 RoI 生成一个二值遮罩

要注意 mask 分支的输出是 Km² 维的,m×m 是像素, K 是类别。classification 分支输出的类别标签用于选择 mask,这样就可以分离(decouple) class 和 mask 任务。而通常的 FCN 模型中,mask 和 class 任务相影随行。

因为网络是多任务的,所以 multi-task loss 如下:
在这里插入图片描述

Mask Representation——
如何对 mask 进行表示?

mask 对物体空间布局(spatial layout)编码,其中空间机构可以通过卷积提供的像素(pixel-to-pixel)间关系解决。

具体来说,使用 FCN 预测每个RoI的 m×m 大小的 mask,这样可保证不丢失空间信息。

另外,这种 pixel-to-pixel 的方法要求 RoI 特征对齐,保留逐像素的空间对应关系,这也引出了下面讨论的一个层 RoIAlign。

RoIAlign——
RoIPool 用来每个 RoI 提取特征,它首先需要对浮点数表示的 RoI 进行离散化操作(比如 [x/16]),这些量化操作在 RoI 和提取的特征之间引入了未对齐的问题。为了解决这个粗糙的对齐问题,本文引入了 RoIAlign layer。

RoIAlign 的做法:避免量化操作(用 x/16 替代 [x/16]),使用双线性插值法(bilinear interpolation) 来计算每个RoI bin 中四个定期采样位置的输入要素的准确值,并将结果通过取最大值/平均值汇总。

RoIAlign 对性能提升起到很大作用。

Network Architecture——
为了证明我们方法的通用性,我们使用多种架构实例化了Mask R-CNN。

4. Experiments: Instance Segmentation

4.1. Main Results

在这里插入图片描述
Mask R-CNN 与 state of the art 的比较,结果如表 1 所示,可以看出,我们模型的所有实例化都优于先前 state-of-the-art 模型的 baseline 变体。

4.2. Ablation Experiments

这部分实验用于验证框架中一些重要成分的作用:
Architecture
从下图可以看出,框架性能的提升源于更深的网络和先进的设计(FPN和ResNeXt),但并非所有框架都会自动受益于更深层次的网络。
在这里插入图片描述
Multinomial vs. Independent Masks
Mask R-CNN 把 mask 和 class 的预测任务分开(decouple)了,loss 为 per-pixel sigmoid 和 binary loss。而传统的用于语义分割的 FCN 方法将 mask 和 class 的预测任务结合(couple), loss 为 per-pixel softmax 和 multinomial loss。

看下面的结果也可以看出,Mask R-CNN 的 sigmoid 性能更好,这表明,一旦实例被分类为一个整体,就足以预测二进制掩码(binary mask)而无需考虑类别,这使得模型更易于训练。
在这里插入图片描述
RoIAlign
接下来评估 RoIAlign 层的功能。

与 RoIPool 相比,RoIAlign 将 AP 提升了约 3%,RoIWarp 的性能与 RoIPool相当,并且比 RoIAlign 差很多。
在这里插入图片描述
Mask Branch
分割是一个像素到像素的任务,我们通过 FCN 利用蒙版的空间布局。通过比较 FCN 和普通的 MLP,可以看出 FCN 比 MLP 的 mask AP 高 2.1。
在这里插入图片描述

4.3. Bounding Box Detection Results

我们将 Mask R-CNN 与 COCO 数据集的 state-of-the-art 边界框对象检测方法进行了比较,结果在表 3。

使用 ResNet-101-FPN 的 Mask R-CNN 表现优于所有以前的 state-of- the-art 模型,包括 COCO 2016 检测挑战赛冠军的 G-RMI 的单模型变体。 使用 ResNeXt-101-FPN,Mask R-CNN 可以进一步改善结果,与以前最好的单模型(Inception-ResNet-v2-TDM)相比,AP 可以提升 3%。

为进一步比较,我们训练了一个没有 mask 分支的 Mask R-CNN, 由于RoIAlign,该模型的性能优于Faster R-CNN w FPN 。 另一方面,它的 AP 比Mask R-CNN 低 0.9%。 这说明,Mask R-CNN在Bounding Box Detection 上的提升仅归因于多任务训练。
在这里插入图片描述

4.4. Timing

Inference
我们训练了一个 ResNet-101-FPN 模型,该模型在 RPN 和 Mask R-CNN 阶段之间共享特征,并遵循Faster R-CNN 的 4 步训练。 该模型在Nvidia Tesla M40 GPU上以每张图像195ms的速度运行。

尽管 Mask R-CNN 速度很快,但我们注意到我们的设计并未针对速度进行优化,因此可以实现更好的速度/精度权衡。
在这里插入图片描述

5. Mask R-CNN for Human Pose Estimation

Mask R-CNN 用于人体姿态估计。方法:将关键点的位置建模为 one-hot mask,并采用 Mask R-CNN 预测 K 个Mask。

Implementation Details
把分割系统用于关键点时改动很小。对于实例的 K 个关键点中的每个关键点,我们的训练目标是将one-hot m×m binary mask 中的单个像素标记为前景。(也就是 m×m 大小的 mask 中只找关键点一个点)

在训练过程中,对于每个可见的 ground-truth 关键点,我们将 m² -way softmax 输出上的交叉熵损失最小化。

Main Results and Ablations
在 COCO 数据集上的关键点检测结果如表 4 所示:

Mask R-CNN 的结果(62.7 AP)比使用多阶段处理流水线的 COCO 2016 关键点检测获胜者高0.9,而且我们的方法更加简单快捷。

在这里插入图片描述
此外,文章还提出了一个能同时预测边界框,分割片段和关键点的联合模型(多任务:目标检测+实例分割+关键点检测),从表 4 可以看出,添加分割分支(针对人员类别)可将 AP 提高到 63.1。

有关最小化的多任务学习的更多信息,请参见表5。将 mask 分支添加到 Faster R-CNN 或仅关键点的版本中,可以持续改善这些任务。 但是,添加关键点分支会稍微减少 box/mask 的 AP,这表明尽管关键点检测受益于多任务训练,但反过来并不能帮助其他任务。 尽管如此,共同学习三个任务可以使一个统一的系统有效地同时预测所有输出。
在这里插入图片描述
表 6 展示的是 RoIAlign 在关键点检测中的效果,可以看出,与 RoIPool 相比,RoIAlign 可以显著改善性能,AP 增加了 4.4 。
在这里插入图片描述
在这里插入图片描述

原创文章 46 获赞 36 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_38673554/article/details/105674582