ECCV2020(Instance Segmentation):BMask R-CNN-论文解读《Boundary-preserving Mask R-CNN》
文章目录
原文地址
https://arxiv.org/pdf/1703.06870v3.pdf
论文阅读方法
初识(Abstract & Introduction & Conclusion)
目前实例分割普遍为基于目标检测(为instance-level的分割提供box-level信息),例如Mask R-CNN就是在Faster RCNN上新增一条mask分支。但这些方法往往都忽略了目标的边界和形状信息,所以得到的mask是粗糙、模糊的,并且定位也不精确。
实例分割中mask的预测依赖于全卷积网络执行像素级分类,它平等地对待proposal内的每个像素,忽略了目标形状及边界信息。然而在边界附近的像素点是很难分类的,仅依赖像素级的分类器很难获得精准的结果。下图为实例分割示例:
为了解决这个问题,作者引入了实例边界信息来增强mask预测,构建了一个简单而有效的模型:Boundary-preserving Mask R-CNN(BMask R-CNN),这个网络结合了instance-level mask预测和边界预测。
实例边界其实是mask的一种对偶表示,可以引导mask预测网络的输出与groundtruth对齐。下图为引入边界信息后示例:
核心idea很简单:在Mask R-CNN的基础上,将原生的mask分支代替为boundary-perserving mask分支(包含两个子网络共同学习物体的mask和boundary)。但边界信息是很难学习的,① 直接从标注中提取出的边界存在噪声(标注并非十分精确);② 相比于mask分类,boundary的训练像素要少很多。为了解决这两个问题,boundary loss结合了binary cross-entropy loss和dice loss。
本文主要的共享有以下几点:
- BMask R-CNN是第一个在Mask R-CNN中引入边界信息来提高定位精度的网络;
- BMask R-CNN简单有效,相比于Mask R-CNN性能提高了不少,特别是在AP75这些高精度的指标上提升不少;
- 对BMask R-CNN进行了消融研究,有助于理解其工作原理。
相知(Body)
2. Related Work
这部分不过于赘述,有兴趣可以参见原文,只简单介绍一下。
Instance Segmentation
实例分割的方法主要分为两类:Detection-based和Segmentation-based。
Detection-based方法应用目标检测器来生成区域proposals,然后在RoI Pooling/Align层之后进行mask预测。这一类方法有FCIS、MNC、BAIS、Mask R-CNN以及基于Mask R-CNN改进的一系列方法。
**Segmentation-based方法首先对整幅图像进行像素级分割,然后将同一个目标的像素组合在一起。**包括InstanceCut、SGN等方法。
Boundary, Edge and Segmentation
全卷积网络在边缘检测任务上也取得不错的成就,例如HED、CASENet等;在语义分割领域中DeepLabV1,V2用CRF来捕获空间细节信息来修正物体边界,也出现了一些引入边界/边缘来进行语义分割的方法;同时也出现了一些在实例分割中应用边界信息修正结果的网络。
与这些方法不一样,本文的BMask R-CNN是需要明确预测出instance-level边界的,与语义分割相比,实例分割中的边界与mask具有对偶关系。
3. Boundary-preserving Mask R-CNN
3.1 Motivation
下图为以ResNet-50-FPN作为backbone的Mask R-CNN预测结果与groundtruth对比(第一行为groundtruth,第二行为预测结果),可以看到mask非常粗糙并且不精确,因此很容易想到引入边界信息来改善定位准确度。
3.2 Boundary-preserving Mask Head
如上图所示,BMask R-CNN在Mask R-CNN的基础上将mask分支修改为Boundary-perserving分支,整个网络由两条分支构成,一条用于bounding-box的分类与偏移量回归(Box Head
),一条用于Mask与Boundary的预测(Boundary-preserving Mask Head
)。
与Mask R-CNN一致,仍为两阶段(two-stage)方法
阶段①:FPN捕获多尺度特征(RPN生成proposals,检测网络获取feature map);
阶段②:RPN生成proposals后,
box head
利用proposal提取RoI特征进行分类与回归;Bounding-preserving mask head
执行RoIAlign获取RoI特征预测boundary与mask。
物体的boundary和mask之间关系很密切,可以相互转换(对偶关系)。mask子网提取的特征可以为boundary的学习提供高级语义信息;在得到boundary后,Boundary特征中蕴含的形状与位置信息又可以反过来促进mask预测得更精准。
RoI Feature Extraction
Rm 和Rb 分别代表用于mask预测和boundary预测的RoI特征
Rm:根据proposal的尺寸(由RPN生成
)选取不同级别的特征(FPN提供4个级别的特征(P2~P5,具有不同分辨率)
),经过RoIAlign得到的RoI特征作为Rm ;
Rb:直接从FPN提供的P2-level(分辨率最高,包含最多空间细节
)特征图,经过RoIAlign获取得到的RoI特征作为Rm
上图可以看到,经过RoIAlign之后,Rb 的分辨率大于Rm (Rb需保持空间特征);Rb经过3x3的卷积进行下采样得到Rb^(与Rm分辨率相同);Rm 经过4个连续的3x3卷积得到Fm;
BMask R-CNN中的特征融合机制如下,包含两个部分:
① Mask → Boundary (M2B) Fusion: Fm中包含着丰富的高级语义(eg. pixel-wise目标分类信息),这有助于物体边界的预测,以下公式用作融合:
其中,F表示最后得到的边界特征,f操作表示1x1卷积+ReLU
② Boundary → Mask (B2M) Fusion:得到的边界特征又能反过来丰富mask特征以及促进mask预测得更精确,模块与①中一致。
Predictor:Predictor由2x2转置卷积 + 1x1卷积构成,从而得到最终输出。其与Mask R-CNN一致,得到的mask和boundary都是image-specific (也就是意味着会为每个类别生成1个mask + boundary)
3.3 Learning and Optimization
与mask预测一样,将Boundary预测视为pixel-level的分类问题
Boundary Groundtruths: 使用Laplacian检测器(边缘检测)来捕捉binary mask groundtruth中的边界,然后转化为binary map来作为边界的groundtruth。
Laplacian是一种基于二阶梯度的边缘检测方法,能生成细长的边界
Boundary Loss:使用dice loss和binary cross-entropy loss来优化边界学习任务,Loss如下所示:
其中,Dice loss如下所示:
其中,i表示第i个像素,ε为平滑项,避免分母为0(ε=1)。
Dice loss可以衡量prediction与groundtruth之间的重叠程度,并且其对像素数量是不敏感的,所以能在一定程度上缓解类别不平衡问题(其实就是计算prediction和groundtruth之间IoU,并以此来衡量loss).
Multi-Task Learning:多任务学习所需的Loss如下:
其中Lb为式(2),其他的几个部分与Mask R-CNN一致。
4. Experiments
实验部分同样不多赘述,只简单过一下,有兴趣可以参见原文相应段落。这些实验结果都是在没有使用任何tricks的条件下达到的效果,这样在同等条件的比较下,BMask R-CNN取得了不错的结果。
学到了,直接把自己的baseline和别人的baseline来对比,这样就可以少做很多调参工作了(不用multi-scale train/test, horizontal flip test, and OHEM这些tricks)。
Implementation Details
ResNet-50-FPN作为Backbone,使用Image-Net预训练模型,最短边800(最长不超过1333)。
4GPUs, mini-batch=16, 9000 iterations, SGD(lr=0.02,6000iter后x0.1,8000次后x0.01)
上表为在COCO数据集上与Mask R-CNN的对比结果
上表为在COCO数据集上与SOTA模型的对比结果
上图为展示了BMask R-CNN与Mask R-CNN在不同IoU阈值下的AP曲线
上表为Mask R-CNN在COCO数据集上进行的消融实验
上表为探索Boundary分支对mask影响的结果
上表与上图探索了FPN的不同层级特征提取与分辨率大小对Boundary-preserving Mask Head的影响
上表为特征融合模块的消融实验结果
上表与上图为Loss Function的探索结果
上表介绍了BMask R-CNN相比于Mask R-CNN增加了多少计算开销
上表为在CityScapes数据集的实验结果,与各大SOTA进行对比
5. Discussions
Coarse boundary annotation vs. precise boundary prediction
由于mask的标注工作量大,所以COCO数据集中的mask标注其实上是非常粗糙的,这限制了BMask R-CNN的性能。尽管如此,在引入了Boundary监督之后,BMask RCNN仍能输出较为精准的结果并减少实例间的重叠程度。
下图为示例,图左为Annotation,右图为Prediction。
c Sobel mask head
除了使用额外的boundary分支来预测边界,本文实验了直接在mask后接Sobel
操作来预测boundary,结构如下图所示,它能在Mask R-CNN的基础上提高了0.8AP(但比我们本文主要提出的方法效果差,低了0.7AP),结构如下图所示:
Sobel是用于图像梯度检测的一种方法,可求得x和y方向的梯度,并以此来进行梯度检测:https://blog.****.net/qq_36560894/article/details/107767281
Qualitative Results
上图为Mask R-CNN与BMask R-CNN的方法对比
上图为原始边界和mask结果,可以看到BMask R-CNN得到的结果更加清晰并且边界很光滑。此外,使用预测得到的边界去修正mask也可以带来一些性能上的提升,但是这很容易受到噪声的干扰。
回顾(Review)
Boundary-preserving Mask R-CNN
在Mask R-CNN
的基础上引入Boundary预测分支,从而引导mask的预测更加精确与光滑。我个人觉得,本文的主要特点是使用了相互融合的思想:在boundary分支中引入mask支路的高级语义特征,在mask分支融入boundary支路的边界与形状特征。
代码
先贴上一份官方代码(click me),有空再复现一下。
以上为个人的浅见,水平有限,如有不对,望大佬们指点。
未经本人同意,请勿转载,谢谢。