参考
论文题目:Mask R-CNN
论文链接:论文下载
论文代码:Facebook代码链接;Tensorflow版本代码链接; Keras and TensorFlow版本代码链接;MxNet版本代码链接
定义
将图像中的每个像素与其所属的目标实例进行关联,并为每个像素分配一个特定的标签,以实现像素级别的目标定位和分割。
与目标检测任务不同,目标检测只关注目标的位置和边界框,而实例分割需要在像素级别对目标进行分割,即将每个像素分配到相应的目标实例中。
Mark R-CNN
是在 Faster R-CNN 框架的基础上进行扩展而来。
Mask R-CNN 的核心思想是在 Faster R-CNN 的基础上添加一个分支,用于预测每个目标实例的像素级掩膜 (mask)。这使得 Mask R-CNN 不仅可以准确地检测目标的位置和类别,还可以对每个目标实例进行精确的像素级分割。
结构
Mask R-CNN 的主要特点和组成部分如下:
-
区域建议网络(Region Proposal Network, RPN):与 Faster R-CNN 相同,Mask R-CNN 使用 RPN 来生成候选区域。RPN 在输入图像上滑动窗口,并为每个窗口位置生成候选框(anchors),并预测每个候选框是否包含目标。
-
区域特征提取:Mask R-CNN 使用共享的卷积网络(如 ResNet)来提取候选区域的特征表示。这些特征被用于分类目标类别和回归目标边界框。
-
目标分类和边界框回归:Mask R-CNN 在 Faster R-CNN 的基础上添加了目标分类和边界框回归分支,用于对每个候选区域进行目标分类和位置调整。
-
实例分割分支:Mask R-CNN 的关键创新是添加了一个分支来预测每个目标实例的像素级掩膜。这个分支是在每个候选区域上应用全卷积网络,生成一个二进制掩膜来表示目标的精确分割。
思路
具体来说,对于每个候选区域,Mask R-CNN 的实例分割分支会在目标检测局域上再次应用一系列卷积操作来生成目标实例的像素级掩膜。这个过程通常被称为掩膜生成子网络(Mask Head)。
一般而言,Mask Head 的设计类似于全卷积网络,它会在目标检测局域上对特征图进行进一步处理。具体的步骤如下:
-
基于ROIAlign的空间金字塔池化(Spatial Pyramid Pooling, SPP):首先,通过ROIAlign操作将每个候选区域对齐为固定大小的特征图块。然后,对每个特征图块应用空间金字塔池化,生成固定大小的特征向量。
-
一系列的卷积和上采样操作:使用一系列卷积层对特征向量进行进一步处理,以提取和整合更丰富的语义信息。通常,这些卷积层采用具有小卷积核的窄卷积,以减少参数量和计算复杂度。
-
最终的卷积层:在最后一个卷积层上使用适当的激活函数(如Sigmoid)来生成目标实例的二进制掩膜。每个像素点的输出值表示该像素属于目标的概率。
Mask R-CNN训练阶段使用的Mask样例
训练阶段的标答