2019CVPR《Mask Scoring R-CNN》
题目:《Mask Scoring R-CNN》
CVPR 2019 Oral Paper(2017年783篇论文,获得口头报道的有215篇,oral paper很有含金量)
华中科技大学horizon.ai地平线计算机视觉技术研究中心
1.1 Abstract
让深度网络意识到自己的预测质量是一个有趣但重要的问题。在大多数实例分割的任务中,实例分类的置信度被当作mask的质量衡量指标。然而,mask的质量被量化为实例mask和它的ground truth之间的IOU,显然,mask的质量和分类的质量其实没有很强的相关性。在这篇文章中,我们研究了这个问题(如何研究,带着这个问题去思考),并且提出了Mask Scoring R-CNN, 其实包含一个网络块network block去学习预测实例mask的质量(这个网络块怎么设计的)。这个网络模块利用实例特征和相应的预测的mask去回归mask IOU。这个mask scoring策略可以解决的问题:mask score和mask quality不匹配的问题。 Mask Scoring R-CNN outperforms the state-of-art Mask R-CNN。
- 针对instance segmentation中的掩码质量不好提出解决。
- network block去学习预测实例mask的质量,这个网络模块利用实例特征和相应的预测的mask去回归mask IOU
- 性能超过了Mask-RCNN
解释mask score(通常是分类的分数)和mask quality不匹配
可以看到在Mask R-CNN中,分类得分很高,mask质量却很不尽人意。
- 第一张图片男人左侧身子mask没有覆盖,女人的腿mask缺失;
- 第二张图片猫的头mask没有覆盖;
- 第三张图像小象的mask只有一点点;
- 第四张图片红色衣服的人mask残缺。
说明mask的质量和分类的质量在mask-rcnn中并没有很好的关联。
1.2 Introduction
在实例分割中,接下来很自然的一步就是目标检测将会从粗糙的框级box-level实例识别到精确的像素级分类。本文的工作突出了一种新颖的方法对实例分割的假设进行打分。
更精确的打分将会更好地描述模型性能。原因:如果一个实例分割没有合适的打分,它很可能被看做false positive或false negative,结果就是会导致AP下降(有待好好推敲这句话)。
对于大多数实例分割的pipeline,例如Mask R-CNN, instance mask 的score是与分类的置信度是共享的,都是通过特征作用于分类器进行预测。使用分类的置信度去衡量mask的质量是不合适的,因为它只能区分proposal的语义上的类别,并不能意识到实例mask的实际质量和完整性。
不像先前的方法我们努力地去获得更准确的实例位置或分割掩码,我们的方法侧重于对masks进行评分。为了实现这个目标,我们的模型去学习每一个mask的得分,而不是使用它的分类得分。为了清楚起见,我们称学习到的得分称为mask score。
可以看到,通过本文的评分,可以更好地解释实际掩码的质量。
受到AP指标的启发,使用像素级的IOU(between the predicted mask and its ground truth mask)去描述实例分割的质量,我们提出了一个网络去直接学习IOU。
补充知识:
- AP:PR曲线下的面积
- PR曲线:横坐标是recall(正确分类占应该正确被分类的比例),纵坐标是precision(分类正确的占总样本的比例)。
- IOU:全称intersection-over-union,交/并。
我们称这个IOU为MaskIou, 在测试阶段一旦我们获得MaskIoU,mask score会重新评估通过预测MaskIoU和分类的分数。于是,mask score既能识别语义类别,又能识别实例掩码的完整性。
MaskIOU head:这是一个MaskIoU的预测网络。输入:RoIfeature;输出:mask head
总而言之,这篇文章主要的贡献如下:
- 我们提出了Mask Scoring R-CNN,第一个解决对实例分割打分的问题。我们探讨了一个提升实例分割模型性能的模型。通过考虑实例mask掩码的完整性,如果一个实例具有高分类分数但是mask却不足够好,那么实例掩码的分数将被扣分。
- 我们的MaskIoU head 是非常简单有效的。当我们使用mask score(from our MS R-CNN)而不是分类置信度,在coco上进行实验结果表明AP提升有1.5%左右,该实验效果在各种网络框架下都是一致的。
1.3 Related work
在实例分割中,前人的工作主要Mask R-CNN, MaskLab。然而这些方法都有一个潜在的缺点就是mask的质量仅仅依靠分类分数去测量的。简而言之,就是对已分类的特征进行上采样填充为原图相同的分辨率的图片。(Specifically, these methods learn an embedding for each pixel to ensure that pixels from the same instance have similar embedding.)
从mask质量的角度来说,这些方法的AP会下降的原因:一个mask,有较高的IOU(higer IoU against ground truth), 如果它有很低的mask score,很容易被视为一个低优先级,这样一来,AP就会相应的下降。(不是理解,这些方法中,mask score就是分类分数,如果分类分数很低,他的优先级就会降。于是乎,mask很好,但是分类分数较低的,我们就不会选择,导致最终的AP有下降)
似乎有点绕,我画了下面一幅沙雕图,以便理解
softmax的分类的得分分别是100,99.5,99.2,差距不大,由于在实例分割之前的方法仅仅依靠分类得分去衡量,对于这幅图会选择score为100,但是mask不好的这一类,最终就会导致AP下降。
1.4 Motivation
在当前Mask R-CNN框架下,检测的得分是由分类的得分决定的。由于背景信息混乱,分类分数很高但是mask质量很低是很有可能的。去量化分析这个问题,我们比较了mask-rcnn的实际得分和
作者使用ResNet-18 FPN主干网络(保证主干网络都一样),在COCO 2017 验证集上进行实验,下入是mask IOU随classification Score的分布。
看统计下图,我们可以看到score 和 MaskIoU有更好的相关性。
解释:看横轴,当maskIoU在0.5-0.6时,对应的mask R-CNN的score却没有在这个范围,在0.8-0.9,这说明mask不完整时,mask rcnn分类得分却可以很高;而采用MS R-CNN,MaskIoU和score是很好对应的。
在大多数实例分割的评价体系中,例如COCO,检测有high score,but low MaskIoU,是不好的。在实际应用中,mask的完整性也是很重要的。这个动机使我们想到了利用MaskIoU去校准mask score。
我们提出Mask Scoring R-CNN,就是 a Mask R-CNN with an additional MaskIoU head module that learns the Mask-IoU aligned mask score。
Mask Scoring R-CNN is conceptually simple: Mask R-
CNN with MaskloU Head, which takes the instance feature and the predicted mask together as input, and predicts the IoU between input mask and ground truth mask, as shown in Fig.3. We will present the details of our framework in the following sections.
mask score的学习任务表示为 Smask =Scls·Siou。我们直接提取相应的分类分数classification score,回归mask是本文的目标。
怎么设计的这个网络:
我们将RoIAlign层的feature与预测的mask连接起来作为MaskIoU head的输入;
使用max pooling让预测掩码与RoI feature 具有相同空间大小;
MaskIOU包含4个卷积层和3个全连接层。
如何训练
使用RPN proposals作为训练样本,训练样本要求proposal box与匹配的ground truth的IOU大于0.5。为了产生回归目标,我们得到目标类的预测掩码并将掩码二值化(使用0.5的阈值)。
然后我们将输入二值化的mask,以相应的ground truth作为回归目标,使用L2 loss进行MaskIOU回归。
L2 loss
具体假设掩码R-CNN的R-CNN阶段输出N个边框框,其中选取SoftNMS后的top-k(即k = 100)计分框。然后将前k个盒送入掩模头,生成多类掩模。这是标准的掩码R-CNN推断过程。我们也遵循这个过程,并输入top-k目标掩码来预测掩码。将预测的掩模与分类分数相乘,得到新的校准掩模分数作为最终掩模的可信度。
作者在Mask R-CNN的基础上添加了一个MaskIoU分支用于预测当前输出的mask和gt mask的IoU。MaskIoU的输入由两部分组成,一是ROIAlign得到的RoI feature map,二是mask分支输出的mask。两者concat之后经过3层卷积和2层全连接输出MaskIoU。
training过程:
box分支和mask保持不变,输出的mask先经过阈值为0.5的binarize,再计算binary mask和gt的IoU作为target,采用L2 loss作为损失函数,loss weight设为1,3个分支同时end-to-end训练。
inference过程:
检测分支输出score最高的100个框,再送入mask分支,得到mask结果,RoI feature map再和mask送入MaskIoU分支得到mask iou,与box的classification score相乘就得到最后的mask score。
在不同主干网络下的instance segmentation和检测结果