代码1:Detectron
代码2:Detectron.pytorch
1. 概述
论文提出了一个概念简单且灵活通用的实例分割框架Mask R-CNN。该方法可以有效检测出图像中的目标并同时对每个实例生成高质量分割mask。该方法是在Faster R-CNN的结构基础上,添加与现存边界框回归、目标分类分支平行的预测目标mask的分支(在ROI的基础上进行预测),速度为5FPS(200ms/per),论文提出的网络方法可以迁移到其它的任务中去,例如实例分割、目标检测和关键点检测,并且也取得了不错的效果。其结构如下图所示:
代码地址:链接
在mask分支中,其实它是对每个ROI运用一个小的FCN网络,使得可以逐像素预测分割结果。除此之外文章还提出了ROIAlign的ROI生成方法,使用双线性差值差算法去替换掉原始的ROI生成方法使得定位误差(源自于量化误差)减小,带来的性能提升在10%~50%范围内。下图是使用mask R-CNN进行检测与分割的结果:
在论文中提到了FCN在预测网络结果的时候是将像素进行划分,这就导致了分割与分类的耦合。在mask R-CNN中就不是这样的了,它是为每个分类去预测一个二值掩膜,是一种解耦的关系,从而避免了像素分类竞争的问题,一定程度上提升了分割的准确率。在一些重叠区域与边界上mask R-CNN的效果好于传统的全卷积神经网络,效果见下图:
2. Mask R-CNN
在Faster R-CNN网络中对于每个候选目标会有两个输出,一个是类别标签一个是预测框的偏差。在Mask R-CNN中添加了第三个分支,它生成目标的mask。但是附加的mask输出与类别和预测框输出不同,需要提取更精细的对象空间布局,其实现下面细说。
首先,再来梳理一下本文提出的Mask R-CNN结构,其也是两阶段的方法,第一阶段和Faster R-CNN的RPN结构一样的,只是在第二阶段中添加了mask分支,这个mask对每个RoI生成一个二值mask。对于这三个任务,调整原来的损失函数为:
L = L c l s + L b o x + L m a