Mask R-CNN是一个小巧灵活的通用实例级分割框架,对图像进行目标检测,还可对每一个目标给出一个高质量的分割结果。它在Faster R-CNN基础之上进行扩展,并行地在bounding box recognition分支上添加一个用于预测目标掩模(object mask)的新分支。具有扩展性强、结构简单、准确度高、容易理解,是图像实例级分割的优秀模型。

论文:Mask R-CNN

论文想解决什么问题

Mask R-CNN针对的是实例分割任务,也就是不仅要知道图里有什么目标,还要把每个目标单独分开,并给出像素级掩模。相比语义分割,这个任务同时要求检测能力和精细分割能力。

核心创新

  • 在Faster R-CNN的检测框架上,额外增加一个并行的mask分支。
  • 提出RoIAlign,避免RoIPool量化带来的像素错位问题。
  • 将mask预测和类别预测适当解耦,使每个RoI能够输出更干净的像素级结果。

结构理解

Mask R-CNN整体还是两阶段思路。第一阶段先找候选目标区域,第二阶段对每个RoI同时做三件事:分类、边框回归、掩模预测。
其中最关键的改进其实是RoIAlign,因为实例分割比目标检测更怕空间位置偏差,RoI对齐一旦不准,mask边界就会明显变差。

实验结果怎么看

论文在COCO实例分割、检测和关键点任务上都取得了很强结果,而且作者特别强调,这个框架非常通用,不需要特别复杂的技巧就能得到高质量表现。
这也是Mask R-CNN后来成为实例分割入门必学模型的原因。

简单理解与局限

我对Mask R-CNN的理解是:它把“检测”和“像素级分割”优雅地统一到了同一个框架里。
它的局限也比较明确,两阶段方法通常速度不如更激进的一阶段方案,结构也更复杂,但如果目标是高质量实例分割,它依然是非常经典、非常稳的基线。