Mask R-CNN论文阅读

                           Mask R-CNN论文阅读

 

                               Kaiming He    Georgia Gkioxari    Piotr Dollar   Ross Girshick ´

 

                                                      Facebook AI Research (FAIR)

 

                                          论文地址:https://arxiv.org/pdf/1703.06870.pdf

 

                                     开源代码:https://github.com/matterport/Mask_RCNN

 

一.引言:了解计算机视觉领域中相关技术中,图像分割是一个重要研究和应用的方向。今天我们学习的何凯明等人

研究的Mask R-CNN算法,这是基于深度学习的分割方法,是图像实例分割方法,它给我们提供了一种通用的目标实

例分割框架,该算法能够超越之前最先进的实例分割。这个算法可以应用在无人驾驶,三维重建等方面。

语义分割与实例分割:

                                                                        语义分割                                  实例分割

 

语义分割:顾名思义,就是根据图像的语义,进行分割。

实例分割:对类的具体对象,即实例,区别对类内的不同的对象进行分割。

如上图语义分割对图像内容分为三类(人,羊,狗,);实例分割将图像不同类区分不同对象(不同实例的羊)

 

二.Mask R-CNN创新点:

  1)该算法的框架下,继承自Faster R-CNN现有的分类和边框回归并行,训练简单,相对于Faster R-CNN只增加了

很小的开销,简单、灵活。

  2)图想分割下,该算法采用在每个感兴趣区域(RoI)上添加一个分支来预测分割掩模,即通过目标检测方法框出

实例,再应用语义分割方法在不同实例区域内进行逐像素标记,这样可以直接避免语义分割的类内竞争

  3)将Faster R-CNN中的RoI Pooling改成RoI Align,实现了图像像素级别的精准对齐

  4loos函数中对Lmask的定义允许网络在不夸类别竞争的情况下,为每个类独立的预测掩模;依靠专用分类分支预测

用于选择输出掩模的类标签。这与通常将FCNs应用于像素级softmax和多项式交叉熵损失的语义分割做法不同。在这种

情况下,掩模将跨类别竞争。在方法中,掩模将不会垮类别竞争

 

三.细节描述:

  1. RoI Align

RoI Pooling与RoI Align都是一种区域聚集方式。它们的特点是能将一个个大小不同的感兴趣区域(候选框映在特征图

中上的位置)调整到固定的大小的特征图,以便于获取特征进行之后的分类和边框回归。

 

1)RoI Pooling的缺陷在于在其实现输出固定大小的特征图的过程中进行了两次粗糙量化:(1)将候选框边界量化

为整数点坐标值;(2)将量化后的边界区域平均分割成 k x k 个单元(k x k是固定大小的特征图,下图的k为7),对每一

个单元的边界进行量化。

这两次量化操作使RoI与提取的特征错位,它对预测像素级精确的掩模有很大的负面影响。

 

 

 

如图对第二次量化过程进行解释(第一次量化过程类似):第二次量化的图片是特征图上的ROI(这里是17 x 17)

RoI Pooling在生成固定大小的特征图(这里是固定的7 x 7)时,对17 x 17的ROI经行了量化(stride=17/7=2.42,

量化后使得stride从2.42到2),最后得到了14 x14的特征图,红色的部分的特征被抛弃了。

 

 

2)RoI Align使用双线性插值算法消除了对RoIPool的粗糙量化,并将提取的特征与输入精准的对齐。没有RoiPooling

的取整操作,保留了浮点数,在最后生成固定大小的特征图过程中使用双线性插值法

 

 

 

RoI Align中stride的值没有被量化,而是保存了原来的浮点数(stride=17/7=2.42)。

那么在有量化和无量化后,两者是如何进行特征提取呢?

3)对比两者特征提取过程:

RoI Pooling:经过量化后的感兴趣区域(ROI)的单元边界与输入特征图的边界重新对齐,直接对其进行最大池化(如左下图)

RoI Align:感兴趣区域(ROI)的单元边界与输入特征图的边界没有对齐,通过双线性插值算法计算每个单元的特征(如右下图)

 

 

如上图的每个ROI单元有四个采样点,采样点的特征通过双线性插值计算得到的,最有取四个点中 的最大特征值作为这个

单元的特征值。以此类推,就可以得到固定尺寸特征图

 

2.FCN (全卷积网络

 

原理:FCN将传统CNN中的全连接层换成卷积层,输出的是一张已经Label好的图片。在传统的CNN结构中,后三层是一维向量。

FCN将这3层表示为卷积层。所有的层都是卷积层,故称为全卷积网络结果:从图像级别的分类扩展到像素级别的分类可以发现,

经过多次卷积,池化以后,得到的图像越来越小,分辨率越来越低(粗略的图像)然而要做到像素级别的分类预测,就要将heatmap

恢复成原图像大小。FCN使用了上采样。

结果:从图像级别的分类扩展到像素级别的分类可以发现,经过多次卷积,池化以后,得到的图像越来越小,分辨率越来越低

(粗略的图像)然而要做到像素级别的分类预测,就要将heatmap恢复成原图像大小。FCN使用了上采样。

 

上采样:这个上采样是通过转置卷积(deconvolution)实现的如上图将特征图恢复到与原图大小相同)。

像素分类:上采样后,heatmap变为原图大小的图片。为了对每个像素进行分类预测label,这里是通过逐个像素地求其在图像该

像素位置的最大数值描述(概率)作为该像素的分,在upsample最后加上softmax,实现end to end,最后输出的图是一个概率

估计,对应像素点的值越大,其像素为该类的结果也越大。

FCN 在Mask中的使用:取7 X 7的ROI作为FCN的输入,接入Faster R-CNN。进行对每一个ROI预测掩模,掩模分支中的每个层

显示的保持m × m的对象空间布局,而不会将其缩成缺少空间维度的向量表示。

 

四.算法框架:

1)Mask R-CNN效果图:

如图可知:该算法最终结果不仅有效的检测了图像上的目标,而且同时实现了为每一个实例生成高质量的分割掩模,应用到了

目标检测和目标分割。

 

2)算法框架:基于对算法的要求,既能够实现目标检测又能实现目标分割,该团队提出了基于原始的Fasster-R-CNN算法,

在该框架上面增加了FCN来产生对应的MASK分支,即Faster R-CNN + FCN,这个分支与现有的分类和边框回归并行。该

框架概念简单,灵活,速度快。

                                               Mask R-CNN算法框架

 

3)Faster R-CNN算法框架:

              

 

 

4)对比:整个Mask R-CNN算法的思路就是在原始Faster R-CNN算法的基础上面增加了FCN来产生对应的MASK分支,

即Faster R-CNN + FCN;其次在主干网络上使用了表达能力更强的残差网络--特征表达ResNet-FPN主干架构;另外在

Faster R-CNN中的用于调整成固定的大小的特征图RoI Pooling,改成了RoI Align,消除了对RoIPool的粗糙量化,并将提

取的特征与输入精准的对齐,对分割实现起到了很大的作用

 

 

5)Mask R-CNN算法步骤:

(1)我们输入一张图片,通过主干网络(Resnet-FPN)提取图像特征,生成特征图。

(2)将得到的卷积特征传入RPN, 得到区域候选框的特征信息。

(3)对候选框中提取出的特征与特征图传入RoIAlign层,提取出了感兴趣区域(ROI)。

(4)之后使用FCN从每一个RoI预测一个m × m的掩模和proposal feature map计算proposal 类别,同时进行bbox

回归获得检验框的最终精确的位置。

 

五.Loss Function

 

 

Lcls与Lbox是与Faster R-CNN一样的,而分割误差Lmask是对于每一个ROI,mask分支定义一个K*m*2维的矩阵表示

K个不同的分类对于每一个m*m的区域,对于每一个类都有一个。对于每一个像素,都是用sigmod函数进行求相对熵,

得到平均相对熵误差Lmask。对于每一个ROI,如果检测得到ROI属于哪一个分类,就只使用哪一个分支的相对熵误差

作为误差值进行计算。(举例说明:分类有3类(猫,狗,人),检测得到当前ROI属于“人”这一类,那么所使用的Lmask

为“人”这一分支的mask。)这样的定义使得我们的网络不需要去区分每一个像素属于哪一类,只需要去区别在这个类当中

的不同分别小类。最后可以通过与阈值0.5作比较输出二值mask。这样避免了类间的竞争,这种方法是改善实例分割结果

的关键。而Lmask对于每一个像素使用二值的sigmoid交叉熵损失

 

参考theano的文档,二值的交叉熵定义如下: 这里的o就是sigmoid输出

Lmask(Cls_k) = Sigmoid (Cls_k),平均二值交叉熵 (average binary cross-entropy)Loss,通过逐像素的 Sigmoid 计算得到。

Mask分支:该分支 ROI 分类器选择的正区域为输入,作用于每个感兴趣区域(RoI)的小全卷积神经网络(FCN) ,并生成它们的掩码。 FCN下,为每一个RoI预测一个m × m的掩模,像素到像素方式预测分割掩模其生成的掩码是低分辨率的:28x28 像素。但它们是由浮点数表示的软掩码,相对于二进制掩码有更多的细节。掩码的小尺寸属性有助于保持掩码分支网络的轻量性。

 

六.主干网络结构:

 

 

灰色部分是 原来的 RCNN 结合 ResNet or FPN 的网络,下面并行mask层。

Mask R-CNN在这两种框架下表现都不错

 

七.算法对比:

1.主要结果上:将Mask R-CNN与其他最先见的实例分割方法进行比较,如下表:(COCO test-dev上的实例分割掩模AP。

MNC和FCIS分别是COCO 2015和2016分割挑战的获胜者。Mask R-CNN优于更复杂的,包含更多尺度训练和测试、水平

翻转测试的FCIS+++[20]和OHEM,所有条目都是单模型的结果。)

模型的所有实例都胜过了先前最先进的模型,这包括MNC和FCIS,分别是COCO 2015和2016年的分割挑战获胜者。

没有额外的技巧,拥有ResNet-101-FPN的主干的Mask R-CNN比FCIS+++,包括多尺度的列车/测试、水平翻转测试和

在线硬示例挖掘效果还好。此外,这些模型中的改进也同样可以应用到Mask R-CNN中来

2.边框检测结果上:在COCO数据集上将Mask R-CNN与其它最先进的边框检测方法进行比较,如下表

Mask R-CNN使用ResNeXt-101-FPN优于所有先前最先进的模型的基本变体,包括单模型的G- RMI ;Mask R-CNN在

其掩模和边框的AP之间的差距很小表明我们的方法在很大程度上弥补了目标检测与更具挑战性的实例分割任务之间的差距。

3.其他:在人体姿态估计上该算法也取得十分显著的进步

 

  • 成果

Mask R-CNN可以完成的任务有实例分割、边框目标检测、人体关键点检测以及人体姿态识别

                                                             目标检测与实例分割

                                                                人体姿态识别

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值