文章选自matterport,作者:Waleed Abdulla,机器之心编译,原文链接点此跳转。
上年 11 月,matterport 开源了 Mask R-CNN 实现,它在 GitHub 已fork1400 次,被用于很多项目,同时也获得了完善。作者将在本文中解释 Mask R-CNN 的工作原理,并介绍了颜色填充器的应用案例和实现过程。代码(包括作者构建的数据集和已训练的模型):https://github.com/matterport/Mask_RCNN/tree/master/samples/balloon
什么是实例分割?
实例分割是一种在像素层面识别目标轮廓的任务,相比其他相关任务,实例分割是较难解决的计算机视觉任务之一:
分类:这张图像中有一个气球。语义分割:这些全是气球像素。目标检测:这张图像中的这些位置上有 7 个气球。实例分割:这些位置上有 7 个气球,并且这些像素分别属于每个气球。
Mask R-CNN
Mask R-CNN 是一个两阶段的框架,第一个阶段扫描图像并生成提议(proposals,即有可能包含一个目标的区域),第二阶段分类提议并生成边界框和掩码。Mask R-CNN 扩展自 Faster R-CNN,由同一作者在去年提出。Faster R-CNN 是一个流行的目标检测框架,Mask R-CNN 将其扩展为实例分割框架。
Mask R-CNN 的主要构建模块:
1. 主干架构
主干网络的简化图示
这是一个标准的卷积神经网络(通常来说是 ResNet50 和ResNet101),作为特征提取器。底层检测的是低级特征(边缘和角等),较高层检测的是更高级的特征(汽车、人、天空等)。
经过主干网络的前向传播,图像从 1024x1024x3(RGB)的张量被转换成形状为 32x32x2048 的特征图。该特征图将作为下一个阶段的输入。
代码提示:主干网络在 resnet_graph() 函数中。代码支持 ResNet50 和ResNet101。
特征金字塔网络(FPN)
来源:Feature Pyramid Networks for Object Detection
上述的主干网络还可以进一步提升。由Mask R-CNN 的同一作者引入的特征金字塔网