定义:
Mask-R-CNN是一种在Faster-R-CNN的基础上,通过添加一个并行的预测目标对象的掩膜扩展得到的用于对象实例分割的概念简单,灵活的一般性框架。它在高效的检测目标的同时为每一个对象生成一个高质量的掩膜。
作用:
Mask R-CNN是一个实例分割(Instance segmentation)算法,可以用来做“目标检测”、“目标实例分割”、“目标关键点检测”。
框架解析:
Mask-R-CNN的主要框架如下图:
算法实现步骤:
输入一张预处理后的图片到基础网络中得到对应的feature map,然后使用RPN对这张feature map 进行候选框提取,接着对提取出的ROI在RoIAlign层进行RoIAlign操作,最终对这些ROI进行分类和生成Mask。
具体实现解析:
该框架被分为两部分convolutional backbone和head。分别用于从原始图像获取目标对象的特征和对每个兴趣区域(ROI)进行边界框识别(bounding-box recognition)和掩膜预测(mask prediction).
在convolutional backbone部分,使用了ResNet-FPN 网络。利用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到预测的效果。并且预测是在每个融合后的特征层上单独进行。其中FPN网络也叫特征金字塔网络,该网络使用具有横向连接的自上而下架构,从单一尺度输入构建网内特征金字塔。
在对第一步得到的feature map进行ROI的提取和筛选时,Mask-R-CNN使用了Faster-R-CNN的RPN(区域提案网络),为什么要进行这一步操作呢?因为R-CNN网络架构为了提高学习速度和效率都是只关注候选对象区域并在每个ROI单独评估卷积网络,进行训练和预测。因此要提取出合适的ROI为下一步操作做准备。
在进行掩膜预测时,由于是像素级别的操作,因此需要我们上一步提取到的ROI特征要很好地对齐,用以保持每个像素的对应空间关系。Mask-R-CNN使用了 RoIAlign Layer.该网络层很好地解决了ROI区域对应到原始图像时产生偏移的问题,具体实现参考:http://blog.leanote.com/post/afanti/b5f4f526490b
在得到处理好的ROI区域生成的每个目标的feature map 进行边界框识别和掩膜预测。在进行边界框预测(classification and regression)时,和Faster-R-CNN一致使用的是全连接神经网络层。在进行掩膜预测时,Mask-R-CNN使用了FCNs提取掩膜的空间结构,这让每一个ROI产生的feature map保持了其m x m的空间特征