论文地址:http://cn.arxiv.org/pdf/1703.06870v3
源码地址:https://github.com/pytorch/vision
源码地址:https://github.com/facebookresearch/Detectron
Mask R-CNN源于2018年被收录在cs.CV上的论文《Mask R-CNN》,也是何恺明团队作品,它是目前实例分割的主流算法。
Mask R-CNN指的是在检测出图片中物体的同时为每一实例产生高质量的分割掩码(segmentation mask),算法基于Faster R-CNN,在其中添加了实例掩码功能。它只增加很小的开销,速度可达5帧每秒,还延伸出关键点识别,姿势识别等应用。
Mask R-CNN实例分割基于目标检测和语义分割技术(具体算法请见论文R-CNN, Fast R-CNN, Faster R-CNN, FCN)。实例分割更进一步,Mask R-CNN需要识别图中实例包含的每一部分像素,它们可能是不连续的,这就需要识别出图中属于实例的每个区域,并将多个同类区域识别成同一实例的各个部分。作者使用简单有弹性的方法实现了这一功能。
Mask R-CNN沿用了Faster R-CNN框架,在边框类别预测和边框位置精调的同级别建立了掩码分枝,将每个RoI(感兴趣区域)送入FCN(全卷积网络),计算每个像素是否属于该实例,如下图所示:
之前的Faster R-CNN并未考虑到像素级的预测,因此使用RoIPool压缩了图像信息,论文中提出了RoIAlign替代之前的RoIPool,将掩码的准确率从10%提高到50%;另外,论文中还提出了将掩码计算和类别预测分开,避免了掩码计算时类别竞争带来的冲突。Mask R-CNN的实例分割效果在COCO数据集上超越了之前所有模型,
主要技术
Faster R-CNN
Mask R-CNN基于Faster R-CNN,Faster R-CNN分成两部分,一部分是计算备选区域RPN,另一部分是由用Fast R-CNN(请注意Fast和Faster的差别)实现的用RoIPool处理备选区域的特征,对备选区进行分类和精调边框处理。两部分共用底层模型产出的图片特征。
Mask R-CNN
Mask R-CNN的RPN部分与Faster R-CNN一致,第二部分在与分类和精调边框处理平行的位置加入了掩码计算,定义了多任务的损失函数:
计算损失函数时,只计入RoI区域的中包括的真实(ground-truth)类别的掩码。掩码部分的输出大小是K x m x m,K为类别个数,mxm为图片的分辨率,对每一个类别都计算掩码,从而避免了类间冲突;类别由分类器分枝计算。
掩码表示(Mask Representation)
掩码与图片的像素一一对应,论文使用全卷积网络FCN计算m x m大小的掩码,其中包括了空间维度信息,使用全卷积层使用参数更小,结果更加精确。
RoIAlign
之前的Faster R-CNN使用RoIPool将任意尺寸的RoI区域压缩到同等大小(如7x7),以便提取特征,这种缩小过程使用的量化(四舍五入造成错位)损失了空间信息,由于分类对少量平移具有鲁棒性,因此对分类影响不大,但会影响到精细的掩码计算。
论文提出使用RoIAlign替代RoIPool,如下图所示。
虚线框表示特征feature map,实线是备选区RoI,目标是将其压缩到2x2 bin,每个bin中有四个采样点,RoIAlign用线性插值的方法使用附近的点计算每个采样点的精确特征值,最终通过对采样点的聚合(最大池化或平均池化)计算出每个bin的特征值。这样RoI采样就不再对边缘敏感了。
网络结构
Mask R-CNN网络结构同Faster R-CNN几乎一致,只是加入了掩码计算分枝,作者实现了基于CNN最后卷积层的版本和基于特征金字塔的版本,由于二者的输出结构不同,因而其Head部分有如下差异:
以ResNet-50为例,基于COCO数据集,建立具有80个分类的模型。左侧最后一个卷积层的输出2048个通道,图片大小7x7;右边是特征金字塔输出多个256通道。使用全卷积网络进行掩码提取,其中经过了卷积、反卷积等操作。
实验
主要结果
实验基于COCO数据集,与之前模型效果对比如下表所示:
MNC和FCIS分别是2015, 2016 COCO实例分割比赛冠军,FCIS+++使用了图片缩放、反转、线上难实例(OHEM: online hard example mining)挖掘等技术。
下图展示了Mask R-CNN与FCIS的重叠区域处理差异。
消融实验
下图展示了各种消融实验的结果
从图(a)中可以看到,更深的网络效果更好,特征金字塔网络优于直接使用卷积网络;图(b)对比了结合分类和掩码同时计算的softmax和分开计算的sigmoid,二者有明显差异;图(c)对比了对RoI区域不同的特征提取方法,其中RoIWarp使用了线性插值,但未使用对齐,从对比效果可以出到对齐的重要性,图(d)使用ResNet-50-C5,stride从16变为32,差异更加明显;图(e)对比了使用全连接网络和全卷积网络的分割效果。
目标框检测
下图对比了不同模型的目标框检测效果:
其中FasterR-CNN, RoIAlign不包含掩码分枝,它展示了使用RoIAlign方法对模型的提升效果;通过它与Mask R-CNN效果的对比,又可以看到加入掩码分枝后,模型对目标框检测效果也有提升。
姿势预测
Mask R-CNN可以将每一个关键点识别为一个one hot类型的掩码,通过不同的关键点组合(如左肩、右手)判断身体的姿势,将它作为Mask R-CNN的扩展应用示例。
每个实例视为包含K个关键点,每关键点只包含一个像素,训练一个one-hot的m×m用于标记前景物体,用最小化mxm交叉熵的方法优化模型,每一个keypoint被独立处理。该方法简单而快速,效果超过2016年关键点检测的冠军。从下表中可以看到,加入关键点检测分枝并没有提升模型在其它任务中的效果,反而有所下降。
网友评论