论文链接: https://arxiv.org/pdf/1703.06870.pdf
图片来源【1】
图片来源【2】
Mask RCNN是实现物体实例分割(Object Instance Segmentation)的通用框架。它在Faster RCNN的基础上增加了一个预测物体Mask的分支,所以Mask RCNN不仅可以预测输入图像物体的Class、Bounding Box,而且还可以生成每个物体的Mask。
图片来源:https://arxiv.org/pdf/1703.06870.pdf
Mask RCNN与Faster RCNN一样采用了two-stage的网络结构。首先,它首先从图像生成Region Proposals;然后,它预测物体的分类,调整Bounding Box的位置,基于Proposals生成像素级的、二值的Object Mask。
为了更好地讲解Mask RCNN,我会先回顾一下几个部分:
Faster RCNN的细节非常对,如果对Faster RCNN算法不熟悉,可以看看<一文读懂Faster RCNN>(https://zhuanlan.zhihu.com/p/31426458),这是我看过的解释得最清晰的文章。
图片来源【5】
多尺度检测在目标检测中变得越来越重要,对小目标的检测尤其如此,Feature Pyramid Network(FPN)就是一种精心设计的多尺度检测方法。如下图所示,FPN结构中包括自下而上(Bottom-up pathway),自上而下(top-down pathway)和横向连接(lateral connections)三个部分。这种结构可以将各个层级的特征进行融合,使其同时具有强语义信息和强空间信息。
Feature Pyramid Networks for Object Detection,图片来源:https://arxiv.org/pdf/1612.03144.pdf
FPN实际上是一种通用架构,可以结合各种BackBone使用,比如VGG,ResNet等。
Mask RCNN中使用了ResNet-FPN网络结构,如下图:
图片来源【4】
自下而上(Bottom-up pathway)
自上而下(top-down pathway)
自上而下是从最高层开始进行上采样,这里的上采样直接使用的是最近邻上采样。不仅简单,而且可以减少训练参数。
横向连接(lateral connections)
图片来源【1】
这种做法很合理,大尺度的ROI要从低分辨率的feature map上切,有利于检测大目标,小尺度的ROI要从高分辨率的Feature Map上切,有利于检测小目标。
图片来源【1】
图片来源:https://medium.com/@mrvturan96/mask-r-cnn-ile-glioma-segmentasyonu-5da71ebaeb18
Mask RCNN网络分为两个部分:
1.骨干网络ResNet-FPN,用于特征提取。ResNet可以是ResNet-50、ResNet-101、ResNeXt-50、ResNeXt-101;
2。头部网络,包括边界框识别(分类和回归) + mask预测。头部结构见下图:
图片来源:https://arxiv.org/pdf/1703.06870.pdf
需要注意的是,计算loss的时候,并不是每个类别的sigmoid输出都计算二值交叉熵损失,而是该像素属于哪个类,哪个类的sigmoid输出才要计算损失。在测试的时候,我们是通过分类分支预测的类别来选择相应的mask预测,这样mask预测和分类预测就彻底解耦了。
这与FCN方法是不同,FCN是对每个像素进行多类别softmax分类,然后计算交叉熵损失,很明显,这种做法是会造成类间竞争的,而每个类别使用sigmoid输出并计算二值损失,可以避免类间竞争。
实验表明,这个方法对与提升实例分割(Instance Segmentation)的效果至关重要。