Mask R-CNN

Mask R-CNN是何凯明大神最近的新作。Mask R-CNN是一种在有效检测目标的同时输出高质量的实例分割mask。是对faster r-cnn的扩展,与bbox识别并行的增加一个预测分割mask的分支。Mask R-CNN 可以应用到人体姿势识别。并且在实例分割、目标检测、人体关键点检测三个任务都取得了现在最好的效果。

《Mask R-CNN》 效果图
《Mask R-CNN》

上图是Mask R-CNN的框架。是对faster r-cnn的扩展,与bbox识别并行的增加一个预测每一个ROI的分割mask的分支。mask分支是应用到每一个ROI上的一个小的FCN(Fully Convolutional Network),以pix2pix的方式预测分割mask。
如何正确的设计mask分支是结果好坏的关键。主要的要点有以下几点:

  1. 最重要的一点是Faster R-CNN没有设计网络输入与输出的pixel to pixel的对齐机制。特别明显的是ROIpooling对特征提取执行非常粗糙的空间量化(空间量化指什么还没搞懂)。为了改进未对齐的缺点,本文提出了quantization-free layer叫作RoIAlign,它准确的保存空间位置。尽管是很小的变化,但是作用很明显。提高相对mask准确率10%~50%。
  2. 非常必要的对mask和class prediction 去耦合。本文对每个类别独立的预测一个二值mask,不依赖分类分支的预测结果。

整个算法的细节如下:

1. LOSS fuction

多任务损失函数对于每一个ROI,L=L_cls+L_box+L_mask.其中L_cls和L_box与Faster R-CNN一样。mask分支对每一个ROI有Km^2维输出。表示分辨率为m*m的K个二值mask。K是类别数,每一类一个。对每个像素实行一个sigmoid,定义L_mask是平均二值cross-entropy loss。对于一个ROI的ground truth 是第k类,L_mask只定义在第k个mask上(其他mask输出对于损失没有贡献)。

2. Mask Representation

mask覆盖输入目标的空间位置,所以不能像类标和bbox一样通过全连接层坍塌到很短的向量。提取空间结构很自然的想到利用卷积的pixel to pixel 对应的特性。
具体的对每一个ROI预测一个mm大小的mask用FCN。这能保证mask 分支的每一层都明确的保持mm目标的空间布局,不会坍塌成缺少空间维度的向量。与前人工作使用全连接层预测mask相比,本文的FCN需要更少的参数,得到更好的效果 。pixel to pixel 的任务需要ROI特征与原始输入图像有很好对齐来保持每个像素的空间对应。这就是提出RoIAlign层的动机。

3. RoIAlign

ROIpool是对ROI提取小的特征映射(e.g. 7*7)标准的操作符。
量化导致了ROI和特征层的不对齐。这对分类任务没什么影响,但是对pixel to pixel的任务就有很大的负面影响。
为了解决这个问题,本文提出了RoIAlign层,移除ROIPool粗糙的量化,正确的对齐特征和输入。提出的改变非常简单:避免任何ROI边界或者bins的量化,即用x/16代替[x/16]。用双向性插值法输入特征在每个ROI bin的四个采样点的精确值。(这一段不能理解说的什么意思)。

4. Network Architecture

将整个网络分成两部分,1)卷积主干结构用来提取整幅图像的特征。2)网络头用来对ROI进行bbox识别和mask预测。

分别考察50层和101层Resnet和ResNeXt网络作为卷积主干结构。还探索另一种有效的主干结构,叫作FPN( Feature Pyramid Network)。更多关于FPN的结构细节请参考文章(T.-Y. Lin, P. Dollar, R. Girshick, K. He, B. Hariharan, and´S. Belongie. Feature pyramid networks for object detection.)

网络头结构如下图:

《Mask R-CNN》 网络头结构

5. Implementation Details

Training

和Faster R-CNN一样,IOU超过0.5的ROI被视为正例反之视为负例。mask loss只在正例上定义。mask target 是ROI和GT mask的交集。图像被resize到短边800。每个mini-batch 2幅图像,每幅图像采样N个ROI,正负样本比例1:3。N是64对于Resnet主干,512对于FPN主干。
160k iterations, with a learning rate of 0.02 which is decreased by 10 at the 120k iteration. We use a weight decay of 0.0001 and a momentum of 0.9. RPN anchors span 5 scales and 3 aspect ratios, following [21].

Inference

At test time, the number of proposals is 300 for the C4 backbone (as in [28]) and 1000 for FPN (as in [21]).
先在proposals上进行box识别,然后进行非最大值抑制。mask预测在得分最高的100个box上进行。mask分支对每个ROI预测K个mask,但是只取第k个,k是classification分支输出结果。
m*m的mask resize到ROI的大小,然后以阈值0.5二值化。

6. Experiments: Instance Segmentation

所有的实验采用Coco数据集。

《Mask R-CNN》 Instance segmentation mask AP on COCO test-dev

MNC [7] and FCIS [20] are the winners of the COCO 2015 and 2016
segmentation challenges, respectively. Without bells and whistles, Mask R-CNN outperforms the more complex FCIS+++, which includesmulti-scale train/test, horizontal flip test, and OHEM [29]. All entries are single-model results.

Ablation Experiments

《Mask R-CNN》 Paste_Image.png

(a)说明网络越深越好(并不是所有都对),FPN和ResneXt对结果有提升。
(b)说明对分类和mask去耦合效果好。
(c)和(d)说明对齐效果好。
(e)mask分支说明用FCN效果比MLP好。

Bounding Box Detection Results

《Mask R-CNN》 Object detection single-model results (bounding box AP), vs. state-of-the-art on test-dev.

主意第五行和第六行对比说明加入mask分支对检测任务也有提升效果。

    原文作者:flyingmoth
    原文地址: https://www.jianshu.com/p/e8e445b38f6f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞