Kaiming He Georgia Gkioxari Piotr Dollar Ross Girshick
Facebook AI Research(FAIR)
摘要
Mask R-CNN检测图像中物体的同时给每个实例产生高质量的分割mask,它是在Faster R-CNN的基础上增加一个预测物体mask的分支,与已有的边界框识别分支是平行的。Mask R-CNN训练容易,在Faster R-CNN的基础上只增加了很小的开销,运行速度为5fps。除此之外,Mask R-CNN很容易运用到其他任务上,比如,可以运用到预测人体姿势。
简介
实例分割需要正确的检测出图片中所有物体,同时精确的分割每个实例,因此它联合了物体检测和语义分割任务。物体检测的目标是给每一个物体分类并用边界框定位,语义分割的目标是将每个像素分类为一组固定的类别,而不区分对象实例。
1、实例分割与语义分割的区别:
图中的c和d图,c图是对a图进行语义分割的结果,d图是对a图进行实例分割的结果。两者最大的区别就是图中的"cube对象",在语义分割中给了它们相同的颜色,而在实例分割中却给了不同的颜色。即实例分割需要在语义分割的基础上对同类物体进行更精细的分割。实例分割相对于语义分割更具有挑战性。
2、Mask R-CNN架构
Mask R-CNN在Faster R-CNN的基础上,对于每一个RoI增加一个预测分割mask的分支,与已有的分类和边界框回归分支平行,如上图所示。mask分支是应用于每个ROI的小FCN,以像素到像素的方式预测mask。原则上,Mask R-CNN是Faster R-CNN的直观扩展,但正确构建mask分支对于结果至关重要。Faster R-CNN并非设计用于网络输入和输出之间的像素到像素对齐,为了解决错位问题,提出了简单、量化无关的层,称为RoIAlign,它能很好的保留精确的空间位置信息。尽管看似微小的变化,但RoIAlign的影响很大。第一:它将mask精度提高了10%到50%。第二:我们发现解耦mask和类预测是必不可少的,我们独立地预测每个类的二进制掩码,这样不会跨类别竞争,并依赖于网络的RoI分类分支来预测类别。相比之下,FCN通常执行每像素多分类,分割和分类同时进行,基于我们的实验,实例分割效果不好。
相关工作
R-CNN:R-CNN方法是通过找到可控数量的候选区域,并独立的在每个RoI上执行卷积网络来进行物体检测。基于R-CNN改进,使用RoIPool在特征图选取RoI,取得了更快的速度和精度。Faster R-CNN通过使用RPN学习注意机制来产生候选框。
实例分割:在R-CNN的推动下,实例分割的许多方法都是基于分割候选区的。先前的方法依赖自下而上的分割。Deepmask和后来的工作都是先提取分割候选区,然后用Fast R-CNN进行分类。在这些方法中,分割是先于识别,这样做既慢准确率又不高。Dai等人提出了一个复杂的多层级联,从边界框候选区预测分割候选区,然后进行分类。相反,我们的方法是平行地进行类标签和mask预测,更简单也更灵活。
Mask R-CNN
Faster R-CNN:Faster R-CNN由两个阶段组成,第一阶段是利用候选区提取网络(RPN)提取候选边界框,第二阶段利用RoIPool从候选框中提取特征,并进行分类和边界框回归操作。在整个过程中特征是共享的。
Mask R-CNN:Mask R-CNN同样采用两阶段程序。第一阶段完全一样(使用RPN),第二阶段平行的预测类别和边界框,同时给每个RoI输出一个二元mask。与大多数的现有系统不同,他们的分类依赖于mask预测,而Mask R-CNN平行进行边界框分类和回归。训练阶段,每个RoI的损失函数由三部分组成:分类损失 L c l s L_{cls} Lcls、边界框损失 L b o x L_{box} Lbox和 L m a s k L_{mask} Lmask。 L c l s L_{cls} Lcls和 L b o x L_{box} Lbox与Faster R-CNN中定义完全一样, L m a s k L_{mask} Lmask是一个针对像素级的sigmoid函数,将其第定义为二元交叉熵损失,对于每一个与k类相关的RoI, L m a s k L_{mask} Lmask只定义在第k个mask上。由于 L m a s k L_{mask} Lmask是二元交叉熵损失,只与某一个类有关,所以不会在类之间产生竞争。由负责分类的分支预测类标签,负责产生mask的分支产生mask,解耦了mask和类别预测。
Mask Representation:mask编码了输入物体的空间布局。提取mask的空间布局可以通过卷积层像素到像素的对应解决。我们使用FCN来为每个RoI预测一个mask。这允许掩码分支中的每个层显式的保持的对象空间布局,而不会将其缩成缺少空间维度的向量表示。与以前使用fc层掩码预测的的方法不同 ,我们的全卷积表示需要更少的参数,并且如实验所证明的更准确。这种像素到像素的行为需要RoI特征,它们本身就是小特征图。为了更好地对齐,以准确地保留显式的像素空间对应关系,我们开发出在mask预测中发挥关键作用RoIAlign层。
RoIAlign:RoIPool是从每个RoI提取小特征图的标准操作。 RoIPool首先将浮点数表示的RoI缩放到与特征图匹配的粒度,然后将缩放后的RoI分块,最后汇总每个块覆盖的区域的特征值(通常使用最大池化)。例如,在连续坐标系上,x的值等于[x/16],其中16是特征图步幅,[]表示四舍五入取整。同样地,当对RoI分块时也执行同样的操作。这样的计算使RoI与提取的特征错位。虽然这可能不会影响分类,因为分类对小幅度的变换具有一定的鲁棒性,但它对预测精确到像素级mask有很大影响。
为了解决这个问题,我们提出了一个RoIAlign层,可以去除RoIPool的错位,将提取的特征与输入准确对齐。我们提出的改变很简单:我们避免避免计算过程中的四舍五入(比如,我们使用x/16代替[x/16])。我们选取分块中的4个常规的位置,使用双线性插值来计算每个位置的精确值,并将结果汇总(使用最大或平均池化)。
RoIAlign的改进效果明显。我们还比较了RoIWarp操作。与RoIAlign不同,RoIWarp忽略了对齐问题,并在的实现中有像RoIPool那样的四舍五入取整。因此,即使RoIWarp也采用提到的双线性重采样,但它与RoIPool效果差不多。这表明了对齐起到了关键的作用。
Network Architecture:
Mask R-CNN可以完成的任务