题目:《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 和检测结果
来源: https://www.cnblogs.com/wemo/p/10505970.html