目标检测、语义分割与实例分割:
实例分割是一种在像素层面识别目标轮廓的任务,相比其他相关任务,实例分割是较难解决的计算机视觉任务之一:

分类:这张图像中有一个气球。
语义分割:这些全是气球像素。
目标检测:这张图像中的这些位置上有 7 个气球。
实例分割:这些位置上有 7 个气球,并且这些像素分别属于每个气球。
1 总结架构与主要思想
总体架构
Mask-RCNN 大体框架还是 Faster-RCNN 的框架,可以说在基础特征网络之后又加入了全连接的分割子网,由原来的两个任务(分类+回归)变为了三个任务(分类+回归+分割)。Mask R-CNN 是一个两阶段的框架,第一个阶段扫描图像并生成提议(proposals,即有可能包含一个目标的区域),第二阶段分类提议并生成边界框和掩码。其中黑色部分为原来的 Faster-RCNN,红色部分为在 Faster网络上的修改,总体流程如下:
1)输入图像;
2)将整张图片输入CNN,进行特征提取;
3)用FPN生成建议窗口(proposals),每张图片生成N个建议窗口;
4)把建议窗口映射到CNN的最后一层卷积feature map上;
5)通过RoI Align层使每个RoI生成固定尺寸的feature map;
6)最后利用全连接分类,边框,mask进行回归。
另一系统图:
首先对图片做检测,找出图像中的ROI,对每一个ROI使用ROIAlign进行像素校正,然后对每一个ROI使用设计的FCN框架进行预测不同的实例所属分类,最终得到图像实例分割结果。
1)使用ResNet101网络
2)将 Roi Pooling 层替换成了 RoiAlign;
3)添加并列的 Mask 层;
4)由RPN网络转变成FPN网络
主要改进点:
1. 基础网络的增强,ResNeXt-101+FPN的组合可以说是现在特征学习的王牌了;
2. 分割 loss 的改进,由原来的 FCIS 的 基于单像素softmax的多项式交叉熵变为了基于单像素sigmod二值交叉熵。softmax会产生FCIS的 ROI inside map与ROI outside map的竞争。但文章作者确实写到了类间的竞争, 二值交叉熵会使得每一类的 mask 不相互竞争,而不是和其他类别的 mask 比较 ;
3. ROIAlign解决Misalignment 的问题,说白了就是对 feature map 的插值。直接的ROIPooling的那种量化操作会使得得到的mask与实际物体位置有一个微小偏移,个人感觉这个没什么 insight,就是工程上更好的实现方式。
说明:这么好的效果是由多个阶段的优化实现的,大头的提升还是由数据和基础网络的提升:多任务训练带来的好处其实可以看作是更多的数据带来的好处;FPN 的特征金字塔,ResNeXt更强大的特征表达能力都是基础网络。
其中:
残差网络ResNet参见:残差网络resnet详解
RPN网络参见:目标检测--FPN解析
Mask-RCNN 的几个特点(来自于 Paper 的 Abstract):
1)在边框识别的基础上添加分支网络,用于语义Mask 识别;
2)训练简单,相对于 Faster 仅增加一个小的 Overhead,可以跑到 5FPS;
3)可以方便的扩展到其他任务,比如人的姿态估计等;
4)不借助 Trick,在每个任务上,效果优于目前所有的 single-model entries,包括 COCO 2016 的Winners。
2 ROI Align
ROI Align 很好地解决了ROI Pooling操作中两次量化造成的区域不匹配(mis-alignment)的问题。实验显示,在检测测任务中将 ROI Pooling 替换为 ROI Align 可以提升检测模型的准确性。
2.1 ROI Pooling
在faster rcnn中,anchors经过proposal layer升级为proposal,需要经过ROI Pooling进行size的归一化后才能进入全连接网络,也就是说ROI Pooling的主要作用是将proposal调整到统一大小。步骤如下:
- 将proposal映射到feature map对应位置
- 将映射后的区域划分为相同大小的sections
- 对每个sections进行max pooling/avg pooling操作
举例说明:
考虑一个8*8大小的feature map,经过一个ROI Pooling,以及输出大小为2*2.
1)输入的固定大小的feature map (图一)
2)region proposal 投影之后位置(左上角,右下角坐标):(0,4)?,(4,4)(图二)
3)将其划分为(2*2)个sections(因为输出大小为2*2),我们可以得到(图三) ,不整除时错位对齐(Fast RCNN)
4)对每个section做max pooling,可以得到(图四)