Mask Scoring R-CNN

  • Mask评分R-CNN
  • CVPR 2019 oral
  • paper

这篇论文中,作者提出了一种对Mask评分的新的方法,用于解决Mask RCNN中没有针对Mask进行评分从而影响实例分割的准确性这一问题。在Mask R-CNN模型中,在实例分割任务里,虽然输出结果是一个Mask,但打分却是和边界框目标检测(bounding-box object detection)共用的评分,都是针对目标区域分类的置信度算出来的分数。这个分数与实际的Mask结果可能并不一致,可能需要一个针对Mask的打分算法,来评价目标识别中的Mask预测质量。如下图所示,由于背景杂波、遮挡等问题,分类分数可能较高,但Mask质量较低,实际上,这样的分类分数对Mask进行打分会降低评价结果。

[深度学习] Mask Scoring R-CNN论文阅读

MaskIoU

为了重新定义这一问题,作者提出了一个MaskIoU的概念,就是实例分割利用预测Mask与Groud Truth Mask之间的像素级IoU来描述实例分割质量,提出了一种直接学习IoU的网络,这个IoU被称作MaskIoU。

在提出MaskIoU这一概念后,作者就对现有的Mask RCNN框架中的Mask评分与MaskIoU之间的实际情况做了对比实验。作者使用Mask R-CNN和ResNet-18 FPN对COCO 2017验证数据集进行实验,实验结果如下图(a)所示。图(b)是文章提出的Mask Scoring RCNN的结果,对比a和b可以发现,在实际的Mask RCNN中,其实现有分类分数与MaskIoU的相关性并不好。

[深度学习] Mask Scoring R-CNN论文阅读

在大多数如COCO这种实例分割中,真实的MaskIoU低,而框架给的分数高是非常不好的。在许多实际应用中,确定检测结果哪种情况可信以及哪种情况不可用非常重要。这促使作者根据MaskIoU为每一个预测模型设计一个Mask Score学习方法。在不丧失通用性的情况下,作者研究了Mask R-CNN框架,并提出了Mask Score R-CNN (MS R-CNN),这是一个带有MaskIoU模块的MaskR-CNN,该模块用于学习Mask评分。我们框架的预测Mask得分如上图 (b)所示。

Mask scoring

我们将Smask定义为预测Mask的评分。理想的Smask应该等于MaskIoU。理想的Smask也应该只对Ground Truth对应的类别有正的值,对其他类为零,因为Mask只会属于一个类。这要求Mask Score在两项任务上都能很好地工作:1)将Mask分类到正确的类别,2)对前面的对象类别的Mask进行回归。仅仅使用一个目标函数来训练这两个任务是很困难的。为了简化,我们可以将mask score学习任务分解为mask分类和IoU回归,记为Smask=Scls*SIoU,Scls侧重于对候选进行分类,SIoU侧重于回归MaskIoU。这Scls已经在R-CNN阶段的分类任务中完成。所以我们可以直接取相应的分类分数。回归SIoU是本文的研究目标,下文将对此进行讨论。

Mask scoring in Mask R-CNN

Mask Scoring R-CNN概念简单:Mask RCNN带MaskIoU分支,将实例特征与预测Mask一起作为输入,预测MaskIoU,如图3所示。框架如下图所示。

[深度学习] Mask Scoring R-CNN论文阅读

我们首先简要回顾一下Mask R-CNN。在Faster R-CNN之后,Mask R-CNN由两个阶段组成。第一阶段是区域建议网络(RPN)。它提出了候选对象边界框,而先不考虑对象类别。第二阶段称为R-CNN阶段,对每个候选对象边界框使用RoIAlign提取特征,并进行候选对象分类、边界Box回归和Mask预测。

MaskIoU 部分:

MaskIoU 部分的目的是将MaskIoU进行回归。我们将RoIAlign层的Feature与预测的Mask连接起来作为MaskIoU 部分的输入。在拼接时,我们使用kernel size为2,步长为2的max pooling layer使得预测的Mask具有与RoI相同的尺寸。对于Ground Truth的类别,我们只选择返回MaskIoU,而不是所有的类。我们的MaskIoU 部分由4个卷积层和3个全连接层组成。对于4个卷积层,我们按照MaskIoU head,将所有卷积层的核大小和滤波器个数分别设置为3和256。对于3个完全连接(FC)层,我们遵循RCNN的设计,将前两个FC层的输出设置为1024,最后一个FC层的输出设置为类的数量。

训练

对于MaskIoU 部分的训练,我们使用RPN结果作为训练样本。训练样本在提议box和匹配的Ground Truth Box之间需要有一个IoU大于0.5,与Mask R-CNN的Mask 部分的训练样本相同。为了生成每个训练样本的回归目标,我们首先得到目标类的预测Mask,并使用0.5的阈值对预测Mask进行二值化,然后利用二进制Mask与其匹配的Ground Truth之间的Mask作为目标Mask。将提出的MaskIoU 部分集成到Mask R-CNN中,对整个网络进行端到端训练。

实验

作者在ResNet-18/50/101等不同的backbone网和faster R-CNN/FPN/DCN+FPN等不同的框架上验证了结果,证明了文章方法的有效性。结果如表1、表2所示。文章使用APm报告实例分割结果,APb报告检测结果。如表1所示,与Mask R-CNN相比,我们的Mask R-CNN对backbone网不敏感,能够在所有骨干网上实现稳定的改善:Mask Scoring R-CNN能够得到显著的改善(约1.5 AP)。特别是对于APm@0.75,我们的方法可以将基线提高2个点左右。表2表明,本文的的Mask R-CNN对不同的框架具有鲁棒性,包括Faster R-CNN/FPN/DCN+FPN。此外,本文的Mask R-CNN不影响边框检测性能;实际上,它也略微提高了边界框检测性能。

[深度学习] Mask Scoring R-CNN论文阅读
[深度学习] Mask Scoring R-CNN论文阅读

融合研究:MaskIoU部分输入的设计选择

本文研究MaskIoU 部分的输入,实际就是研究从mask 部分的输出和RoI特征的融合方法。图4所示为几种设计方案,说明如下:

  • (a) 目标Mask拼接RoI特征:取目标类的mask score map,通过max-pooled ,与RoI特征拼接。
  • (b) 目标Mask乘以RoI特征:取目标类的mask score map,通过max-pooled ,与RoI特征相乘。
  • © 所有Mask连接RoI特性:所有C个分类的mask score map,通过max-pooled,与RoI特征拼接。
  • (d) 目标Mask连接高分辨率RoI特征:目标类的mask score map连接和28×28 RoI特征。
  • (e) 直接使用目标Mask
  • (f) 直接使用RoI特性

[深度学习] Mask Scoring R-CNN论文阅读
结果如下表所示。我们可以看到mask 部分的性能对不同的融合mask预测结果和RoI特征的方法是鲁棒的。在各种设计中都可以观察到性能的提高。由于将目标分数图和RoI特性连接起来可以得到最好的结果,所以我们将其作为默认选择。

[深度学习] Mask Scoring R-CNN论文阅读

总结

文章的主要贡献如下

  1. 提出了Mask Score R-CNN,这是第一个解决实例分割评分问题的框架。为提高实例分割模型的性能开辟了新的方向。
  2. 文章的MaskIoU 分支非常简单有效。在具有挑战性的COCO基准测试上的实验结果显示,当使用来自Mask Score R-CNN的Mask Score而不是仅仅使用分类置信度时,AP在不同的主干网络上持续提高约1.5%。

相关文章: