《Mask R-CNN》论文笔记

1. 概述

论文提出了一个概念简单且灵活通用的实例分割框架Mask R-CNN。该方法可以有效检测出图像中的目标并同时对每个实例生成高质量分割mask。该方法是在Faster R-CNN的结构基础上,添加与现存边界框回归、目标分类分支平行的预测目标mask的分支(在ROI的基础上进行预测),速度为5FPS(200ms/per),论文提出的网络方法可以迁移到其它的任务中去,例如实例分割、目标检测和关键点检测,并且也取得了不错的效果。其结构如下图所示:
《Mask R-CNN》论文笔记
代码地址:链接
在mask分支中,其实它是对每个ROI运用一个小的FCN网络,使得可以逐像素预测分割结果。除此之外文章还提出了ROIAlign的ROI生成方法,使用双线性差值差算法去替换掉原始的ROI生成方法使得定位误差(源自于量化误差)减小,带来的性能提升在10%~50%范围内。下图是使用mask R-CNN进行检测与分割的结果:
《Mask R-CNN》论文笔记
在论文中提到了FCN在预测网络结果的时候是将像素进行划分,这就导致了分割与分类的耦合。在mask R-CNN中就不是这样的了,它是为每个分类去预测一个二值掩膜,是一种解耦的关系,从而避免了像素分类竞争的问题,一定程度上提升了分割的准确率。在一些重叠区域与边界上mask R-CNN的效果好于传统的全卷积神经网络,效果见下图:
《Mask R-CNN》论文笔记

2. Mask R-CNN

在Faster R-CNN网络中对于每个候选目标会有两个输出,一个是类别标签一个是预测框的偏差。在Mask R-CNN中添加了第三个分支,它生成目标的mask。但是附加的mask输出与类别和预测框输出不同,需要提取更精细的对象空间布局,其实现下面细说。
首先,再来梳理一下本文提出的Mask R-CNN结构,其也是两阶段的方法,第一阶段和Faster R-CNN的RPN结构一样的,只是在第二阶段中添加了mask分支,这个mask对每个RoI生成一个二值mask。对于这三个任务,调整原来的损失函数为:
L=Lcls+Lbox+LmaskL=L_{cls}+L_{box}+L_{mask}
就是原有损失函数的基础上添加了一个mask损失。mask分支的输出是一个维度为Km2K\cdot m^2的张量,代表对于KK个类别生成分辨率为mmm*m的二值编码mask(这部分参考FCN进行理解)。为了实现上述的功能,为每个像素使用sigmoid**,定义LmaskL_{mask}是平均二元交叉熵损失函数。每个类计算计算mask损失的时候是相互独立不影响的,在输出mask的时候使用与当前分支平行的分类分支挑选出输出的mask。由于每个类别之间是相互分离的,通过选择网络中的分类分支来对应选取需要的mask,避免了在FCN中像素的多分类竞争。

2.1 mask的表达

这里的mask表达并不是和目标类别标签和坐标偏移相同,是一种在卷积上逐像素对应的关系。文中指出这是通过在分辨率为mmm*m的RoI上使用FCN网络实现的。为了保证分割的精度,文中对RoI的提取的过程进行改进,提出RoIAlign。

2.2 RoIAlign

文中提出这个原因是原始的RoI Pooling存在两次量化误差,这会随着基础网络中的缩小倍数而被放大(例如,原Faster R-CNN网络存在16倍的缩小关系),造成坐标的不对应,这样可能不会对分类结果产生影响,尽管这样会增加对于一些幅度不大变换的鲁棒性,但是对于逐像素预测任务来说这个误差就无法接受了。
《Mask R-CNN》论文笔记
在文中针对该问题提出的解决办法是将两次量化取整过程使用双线性变换取代,这样量化误差就可以消除,进而提升分类的精度,这部分在之前的博客文章中也有提及,这里就不多阐述。

2.3 网络结构

这个主要包含两个部分,一个是提供特征图的基础卷积网络部分;另外一个是基于RoI网络的头部结构(分类、预测框回归和mask)
1)特征抽取,文中使用过了多种网络框架作为其基础网络,例如ResNet、ResNetX、ResNet-50-C4,最后使用的是ResNet-FPN。
2)使用不同的特征抽取网络,网络的顶部结构略有所不同,其结构见下图所示
《Mask R-CNN》论文笔记

3. 实验结果

文中首先将mask R-CNN方法与当前的实例分割方法进行对比,其得到的结果见下表:
《Mask R-CNN》论文笔记
从表中可以看到改进的ResNet加上FPN的网络结构具有更好的性能。

3.1 Multinomial vs. Independent Masks

这里对比是将FCN网络的Softmax与这篇文章的Sigmoid进行对比,其实也就是论文中提出的为每个分类构建一个mask预测,还是像FCN一样进行一个像素多分类预测。其得到的结果为:
《Mask R-CNN》论文笔记

3.2 ROIAlign

论文中将文章中提出的ROI优化方法与之前方法进行对比得到的结果为:
《Mask R-CNN》论文笔记

3.3 目标检测

使用论文中方法的目标检测分支与Faster R-CNN网络进行对比,得到的结果如下:
《Mask R-CNN》论文笔记
这里还特意在mask R-CNN的基础上去掉mask分支,得到结果在上表的第5行,论文说结果比mask R-CNN差是因为多任务训练的原因。