Mask R-CNN简介
\space\space\space\space\space\space Mask R-CNN是在Faster R-CNN的基础上,加了一个分割的分支,能够在检测的同时,对各RoI中的目标物体进行分割,即实例分割(instance segmentation)。
\space\space\space\space\space\space 实例分割是一个比较有挑战性的任务,它既要检测出一幅图中所有的目标物体,又要将它们分割出来。所以实例分割是目标检测与语义分割的组合。
\space\space\space\space\space\space 由于Faster R-CNN RoI pooling层的原因,最终生成的特征图与原始候选区域并不对应,所以Mask R-CNN并不是简单的增加一个分割分支就可以的,文章设计了一个RoIAlign来解决特征图与原始候选区域对应的ground truth不对齐的问题。RoIAlign不仅大幅提高分割的准确率,而且将实例分割任务成功解耦为分类和二值分割,即对每一个RoI中的物体生成一个二值mask,对应类别由检测网络的分类分支预测。相比直接用全卷积神经网络实例分割(mask对应多类别,相当于在分割同时还要分类),这种解耦的方式效果好很多。
Mask R-CNN细节
Mask R-CNN的网络结构如下图所示。
\space\space\space\space\space\space 第一阶段和Faster R-CNN一样,用RPN产生候选区域。第二阶段,在预测每一个RoI类别和bounding box偏移量的同时,生成二值mask分割RoI。
\space\space\space\space\space\space 在训练期间,每一个RoI的loss计算式为 L = L c l s + L b o x + L m a s k L=L_{cls}+L_{box}+L_{mask} L=Lcls+Lbox+Lm