Mask Scoring R-CNN 论文学习

论文地址:https://arxiv.org/abs/1903.00241?context=cs
代码地址:[https:// github.com/zjhuang22/maskscoring_rcnn](https:// github.com/zjhuang22/maskscoring_rcnn)

Abstract

让神经网络意识到自己预测的质量是一个有趣但重要的问题。在实例分割任务中,大多数实例分割框架都采用实例分类的置信度作为mask质量分数 。但是,被量化为 mask 实例与其 ground truth 之间的 IoU 的 mask 质量通常和分类分数相关性不强。在本文中,我们研究了这个问题,提出了 Mask Scoring R-CNN,它含有一个网络模块来学习预测实例mask的质量。该网络将实例特征和相应的预测mask结合起来,对 mask IoU 进行回归。Mask scoring 策略校正 mask 质量和 mask score 之间的偏差,通过在 COCO AP 评估过程中优先考虑更准确的 mask 预测,提高实例分割性能。通过在 COCO数据集上的广泛评估, Mask Scoring R-CNN 为不同的模型带来了一致而显著的收益,优于最先进的 Mask R-CNN。作者希望这个简单有效的方法可以为改进实例分割提供一个新的方向。

1. Introduction

深度网络极大地推进了计算机视觉的发展,在分类、目标检测、语义分割等任务上都去得了一系列的突破。从CV领域深度学习的发展可以看出,深度网络的能力正逐步从图像级预测发展到区域/边框级预测、像素级预测、实例/mask预测。细粒度预测的能力不仅仅需要更精细的标签,也需要更多巧妙的网络结构设计。

本文主要研究了实例分割问题,这是目标检测从粗糙的边框级实例识别到精准的像素级分类的自然演进。具体点,这篇论文提出了一种对实例分割假设进行评分的新方法,这对于实例分割的评价是十分重要的。究其原因,大部分的评价指标都是根据假设分数来定义的,更准确的分数有助于更好的表现模型的性能。例如,precision-recall curve 和 average precision(AP)经常用在实例分割数据集COCO。如果一个实例分割假设的分数不准确,它可能会被错误地认为是 false positive 或 false negative,导致 AP 降低

然而,在大多数实例分割方法中,如 Mask R-CNN 和 MaskLab,实例mask的分数就是边框的分类置信度,由分类器在候选边框特征上预测得到。使用分类置信度来衡量 mask 质量是不合适的,因为它只用于区分候选边框的语义类别,而不知道实例mask的实际质量和完整性。分类置信度与mask质量的偏差如图1所示,其中实例分割假设得到准确的边框级定位结果和较高的分类置信度,但是对应的mask却不准确。显然,使用这样的分类分数对 mask 进行评分会降低评价的结果。

和之前的方法不同,它们目的是获取更准确的实例定位或分割mask,本文的方法更加侧重于对 mask 进行评分。因此,该模型对每个 mask 学习一个分数,而不是用它的分类分数。为了清晰起见,我们称之为“mask score”

受实例分割中 AP 指标的启发,它利用预测 mask 和 ground truth mask 之间的像素级的 IoU来表示实例分割的质量,作者提出了一种直接学习 IoU 的方法。本文中,这个 IoU 表示为 MaskIoU。当我们在测试阶段时得到了预测的 MaskIoU,就可以将 MaskIoU和分类分数相乘,重新评估 mask 分数。因此,mask 分数同时考虑了语义类别和实例 mask 的完整性

学习 MaskIoU不同于候选框分类或 mask 预测,它需要将预测的mask和物体特征进行比较。在 Mask R-CNN框架中,作者实现了一个名为 MaskIoU head 的 mask 预测网络。它以 mask head 的输出和 RoI 特征作为输入,使用简单的回归损失训练。作者将这个带有 MaskIoU head 的 Mask R-CNN 模型称作为 Mask Score R-CNN(MS R-CNN)。作者使用 MS R-CNN做了大量实验,结果表明,该方法实现了 mask 质量和mask 分数之间的一致性,可以带来显著的性能提升。

总之,本文的主要贡献如下:

  1. 提出了 Mask Score R-CNN,这是第一个解决实例分割假设评分问题的框架。为提高实例分割模型的性能开辟了新的方向。考虑到实例 mask 的完整性,如果实例 mask 的分类分数较高,而 mask 没那么好,则可以对实例mask的分数进行惩罚
  2. MaskIoU head非常简单有效。在COCO基准测试上的结果表明,当使用来自 MS R-CNN的 mask分数,而不是仅仅使用分类置信度时,AP 在不同的主干网络上可以提高约1.5%

2. Related Work

2.1 实例分割

目前实例分割的方法大致可以分为两类。一种是基于检测的方法,另一种是基于分割的方法。基于检测的方法利用 state of the art 的检测器,如速度更快的 R-CNN,R-FCN,获取每个实例的区域,然后预测每个区域的 mask。Pinheiro等人提出了 DeepMask,以滑动窗口的方式对中心对象进行分割和分类。Dai等人提出了实例敏感的FCNs来生成位敏图,并将它们组装起来获得最终的 mask。FCIS 使用具有内/外分数的位敏图来生成实例分割结果。He等人提出了一个基于 Faster R-CNN 的 Mask R-CNN,通过添加实例级别语义分割分支。Chen 等人在 Mask R-CNN 基础上提出了 MaskLab,利用位敏得分来获得更好的结果。然而,这些方法的一个潜在缺陷就是mask质量仅由分类分数而来,从而导致了上述问题。

基于分割的方法首先对每个像素的类别标签进行预测,然后将其分组形成实例分割结果。Liang等人使用光谱聚类对像素进行聚类。其它的工作则在聚类过程中添加边界检测信息。Bai等人预测像素级的能量值,使用分水岭算法进行分组。最近,有一些研究使用度量学习来学习embedding。具体来说,这些方法学习每个像素的 embedding,以确保相同实例的像素具有类似的 embedding。然后对于学到的 embedding 进行聚类,获得最终的实例标签。由于这些方法没有直接的分数来衡量实例mask的质量,它们不得不使用平均像素级的分类分数作为替代。

上述两类方法都没有考虑 mask 分数和mask质量之间的对齐。由于mask分数不可靠,如果一个mask假设和 groundtruth 的IoU较高,而 mask score较低,则该mask 假设的优先级就比较低。这样,最终的AP会降低。

2.2 Detection Score Correction

针对检测框的分类分数校正的方法有几种,其目标与本文方法类似。Tychsen-Smith等人提出了 Fitness NMS,利用检测到的边框和groundtruth之间的 IoU 来校正检测分数。它将边框预测作为分类任务。本文方法与它不同之处在于,作者将 MaskIoU估计作为一项回归任务。Jiang等人提出了 IoU-Net,直接回归出边框的 IoU,将预测的 IoU 用于 NMS 和边框细化。Cheng等人对 false positive 样本进行了讨论,并使用了一个单独的网络对这些样本的分数进行校正。SoftNMS使用两个边框之间的重叠来纠正低分值的边框。Neumann等人在标准的 softmax 中提出了 Relaxed Softmax 来预测 temperature scaling factor 值,用于安全关键行人检测。

与这些侧重于边框级别检测的方法不同,本文方法是为实例分割设计的。在 MaskIoU head 中对实例mask进行了进一步处理,使得网络可以感知实例 mask 的完整性,最终的 mask 分数能够反映出实例分割假设的实际质量。这对提高实例分割性能提供了一个新的方向。

3. Method

3.1 Motivation

在当前的 Mask R-CNN 方法中,检测(即实例分割)的分数由分类得分中最大的元素决定。由于背景遮挡等问题,分类分数可能较高,但 mask 质量较低,如图1所示。为了定量分析这个问题,我们将 Mask R-CNN 的 mask 分数,和预测的 mask与 ground truth mask 之间的 IoU 进行了比较(MaskIoU)。具体地说,作者使用 Mask R-CNN 和 ResNet-18 FPN 在 COCO2017 验证数据集上进行实验。然后在 SoftNMS 时选取 MaskIoU 和分类分数大于 0.5 的检测假设。MaskIoU 和分类分数之间的分布如图2(a)所示,每个 MaskIoU 区间的平均分类分数如图2©所示,蓝色直方图。这说明在 Mask R-CNN中,分类分数和 MaskIoU 相关性并不高

在大多数实例分割评估协议中,如COCO,检测假设的 MaskIoU 较低而分类较高是有问题的。在许多实际应用中,我们需要确定检测结果何时可信,何时不可信。这促使我们根据 MaskIoU 对每个检测假设学习一个校正的 mask 分数。在不丢失通用性的前提下,作者研究了 Mask R-CNN 框架,提出了 Mask Score R-CNN(MS-RCNN),它带有一个附加的 MaskIoU head 模块,该模块学习如何将 MaskIoU和 mask 分数对齐起来。本文方法预测的 mask 分数如图2(b)所示,以及图2©中的橙色直方图。

3.2 Mask Scoring in Mask R-CNN

Mask Scoring R-CNN 概念简单:加上 MaskIoU head 的 Mask R-CNN,将实例特征和预测的 mask一起作为输入,预测输入 mask 与 ground truth mask 之间的 IoU,如图3所示。作者将在下面的章节中介绍该框架的详细内容。

Mask R-CNN:我们首先回顾一下 Mask R-CNN。基于 Faster R-CNN, Mask R-CNN 由两个阶段组成。第一个阶段是RPN,提出候选物体边框,不用考虑物体的类别。第二个阶段称作R-CNN阶段,对每个候选框使用 RoIAlign提取特征,并进行候选框的分类、边框回归和 mask预测。

Mask Scoring:作者将SmaskS_{mask}定义为预测 mask 的分数。理想的SmaskS_{mask}等于预测mask和ground truth mask之间的像素级的 IoU,之前称为 MaskIoU。理想的SmaskS_{mask}也应该只对 ground truth 类别有正值,对其它的类为0,因为mask只属于一个类别。这要求 mask 分数能够妥善地解决两个任务:将 mask 分类到正确的类别,以及对前景物体类别候选框的 MaskIoU进行回归。

仅仅使用一个目标函数来训练这两个任务很困难。为了简化,我们可以将 mask 分数学习任务分解为 mask 分类和 IoU回归,对于所有类别,记为Smask=SclsSiouS_{mask} = S_{cls} \cdot S_{iou}SclsS_{cls}侧重于对候选框进行分类,SiouS_{iou}侧重于回归 MaskIoU。

对于Scls,SclsS_{cls}, S_{cls}的目标是对候选框属于哪一类进行分类,这已经在R-CNN阶段的分类任务中完成了。所以我们可以直接取相应的分类分数。对SiouS_{iou}回归是本文的研究目的,下文将展开讨论。

MaskIoU Head:它的目的是对预测 mask 和 ground truth mask 之间的IoU进行回归。我们将 RoIAlign 层的特征与预测的 mask 连接起来作为 MaskIoU head 的输入。在拼接时,我们使用 kernel size 为2,stride为2的 max pooling 层,使得预测 mask 具有和 RoI相同的空间大小。我们只对 ground truth 类别回归 MaskIoU(测试时,我们选择预测的类别),而非所有的类别。该 MaskIoU head 包含了4个卷积层,3个全连接层。在4个卷积层中,我们依据 Mask head 的设置,kernel size 设为3,滤波器个数设为256个。对于3个全连接层,我们遵循 R-CNN head,前2个FC层的输出个数为1024,最后一层的输出个数为类别的个数。

Training:对于 MaskIoU head 的训练,我们将RPN候选框作为训练样本。训练样本的候选框和 ground truth 边框之间的 IoU必须大于0.5,这和 Mask R-CNN 中的 mask head 是一样的。为了生成每个训练样本的回归目标,我们首先得到目标类的预测 mask,并使用0.5的阈值来对预测mask进行二值化。

然后我们利用 binary mask 和 ground truth 之间的 MaskIoU 作为目标。使用 l2l_2损失来回归 MaskIoU,损失权重设为1。MaskIoU head 整合入 Mask R-CNN,整个网络可以做到端到端地训练。

Inference:在推理时,我们只使用 MaskIoU head 对R-CNN生成的分类分数进行校正。具体地说,假设 R-CNN 阶段输出 NN个边框,然后在SoftNMS之后,选择其中 topktop-k得分的边框。然后将这topktop-k个边框输入进 Mask head,产生多类别 masks。这就是标准的 Mask R-CNN 的推理操作。我们也遵循了这个步骤,将 topktop-k个目标 masks 输入进去,预测 MaskIoU。然后将这个 MaskIoU乘上分类分数,便得到新的、校正后的 mask 分数,作为最终的 mask 置信度。

4. Experiments

Pls read paper for more details.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章