文章目录
摘要
实例分割的很多框架中,实例的分类置信度常被当做“mask质量”的衡量指标
mask的质量常被量化为 : 实例mask和真实mask的 IoU,而与分类置信度没有很大的关联
本文提出了 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. 引言
深度网络极大的推动了计算机视觉的发展,使得分类[22,16,35]、目标检测[12,17,32,27,33,34]和语义分割[28,4,37,18]等很多任务都得到了很大的发展。
从计算机视觉中深度学习的发展可以看出,深度网络的能力正逐步从图像水平预测[22]发展到区域/边界框级预测[12]、像素级预测[28]和实例/Mask预测[15]。
所以,更好的预测性能不仅仅要求更多的带详细标签的数据,也需要更多能够精细预测的网络。
本文主要落脚点在实例分割问题,实例分割是目标检测的下一步,也就是从粗边界框尺度——精细像素尺度分类的问题。
也就是说,本文提出了一种对 实例分割假设 进行score的新方法,这对实例分割的评价很重要。
其原因是,很多评估方法是根据假设得分来确定的,故更精细的得分有助于更好的评估模型性能。
例如,P-R曲线和AP经常被用来评估在COCO上的实例分割效果
如果一个实例分割的假设函数没有被合适的给定得分,则它可能被错误的划分为假正类或假负类,拉低AP值。
然而,很多实例分割方法,如 Mask R-CNN [15]和 MaskLab [3] 中,实例 mask 的得分是和边界框尺度的分类置信度共用的,而分类置信度是分类器根据候选特征来预测得到的。
使用分类置信度作为衡量 mask 质量的方式是不合适的,因为它仅仅能够区分候选区域的物体属于哪个语义类别,并没有对实例质量和实例mask完整性的衡量能力。
分类置信度和 mask 质量的偏差如 Fig.1 所示,其中实例分割的假设函数得到了准确的边界框尺度的定位结果,和高的分类得分,但是其对应的 mask 确不准确
显而易见,利用这种方法对对 masks 进行scoring会降低评价结果。
之前的方法都是为了获得更加准确的实例定位或分割 mask,本文的方法主要侧重于对masks的 scoring。
为了达到该目标,本文模型对每个 mask 都会学到一个 score,而不是使用其分类 score 来代替,清晰起见,将其称为 mask score。
受 AP 评估方法的启发,实例分割利用预测 mask 和 真实 mask 之间的像素级 IoU来描述实例分割的质量,本文提出了一个网络,可以直接学习IoU,且称为 MaskIoU。
一旦在测试阶段得到了预测 MaskIoU,则通过将 预测的 MaskIoU 和分类得分相乘 来重新评估 mask 得分。所以,mask 得分同时考虑语义类别和实例 mask的完整性。
学习 MaskIoU和候选区域分类、mask预测是不同的,它需要将预测 mask和目标特征进行比较。
在 Mask R-CNN框架中,我们实现了一个名为 MaskIoU head 的 MaskIoU 预测网络。该网络将mask head 和RoI 特征都作为输入,使用简单的回归损失进行训练。
将该模型命名为 “ 带 MaskIoU head 的 Mask R-CNN ” —— Mask Scoring R-CNN (MS R-CNN)
后续将通过大量的实验证明,MS R-CNN 在很多数据集上取得的很好的效果,我们将其归因于 Mask 质量和 Score 的结合。
总之,本文的贡献如下:
1、提出了 Mask Scoring R-CNN,该框架是第一个解决实例分割假设评分问题的框架。为提高实例分割模型性能提供了一个新的方向。即考虑到实例 mask 的完整性,当分类得分很高但 mask 不够好的时候,实例 mask 的得分可以被惩罚。
2、MaskIoU head 非常有效,在具有挑战性的COCO数据集上实验结果显示, 当使用本文的MS R-CNN 时,使用不同的主干网络都可以使 AP 得到约 1.5%的提高。
2. 相关工作
2.1 实例分割
目前的实例分割方法可以被大体分为两类:
-
基于检测:
利用最先进的检测器,如Faster R-CNN、R-FCN等来获得每个实例的取样,之后预测其mask。
[31]中提出了 DeepMask,对滑窗的中心目标进行分割和分类
[6]中提出了对实例敏感(instance-sensitive)的FCNs 来生成 对位置敏感(position-sensitive)的maps,并将其综合起来获得最终的masks。
FCIS[23]将 position-sensitive maps 和内在/外在得分综合起来来获得实例分割的结果。
[15]中提出了 Mask R-CNN,通过将实例水平的语义分割分支添加到 Faster R-CNN的顶部来获得。
[3]中在Mask R-CNN的基础上,提出了MaskLab,使用position-sensitive的得分来获得更好的结果。
然而,这些网络具有一个共同的缺点,mask 质量是仅仅由分类得分来衡量的,不是很有效。
-
基于分割:
基于检测的方法首先对每个像素点进行分类,然后将其归类,来得到实例分割的结果。
[24] 中使用特定的聚类方法来对像素进行聚类
[20,21] 中,在聚类过程中添加了边界检测信息
[1] 中预测像素级别的能量值,并且使用流性方法来聚类
最近的工作中,[30,11,14,10] 使用度量学习方法来学习其合成方式。
但是这些方法对每个像素进行合成的学习,来确定来自同一实例的像素点都进行相同的合成。 之后,根据学习到的合成方式进行聚类。
这些方法都没有特定的衡量实例mask质量的标准,它们使用像素级的分类得分均值作为代替标准。
这些方法都没有考虑到将 mask score 和 mask quality 进行结合
由于 mask score 的不可靠性,一个具有高IoU的mask 假设函数,如果其mask score较低,则可能排到后面,导致AP降低。
2.2 检测得分校正
针对校正检测框的分类得分问题,已经有了许多不同的方法,与本文的目标是相同的。
[36] 中,提出了 Fitneess NMS,利用检测到的边界框和真实边界框的之间的IoU来校正检测分数,其将边界框IoU的预测当做一个分类任务。
本文与之不同,本文将预测 mask IoU 的问题当做一个回个任务
[19] 中,提出了 IoU-Net,直接回归 边界框的 IoU,并用预测得到的 IoU 用于NMS和边界框细化两个任务。
[5] 中,作者讨论了假阳性样本,并使用一个单独的网络来对这些样本进行校正。
SoftNMS[2]方法使用两个边界框之间的重叠率来校正低得分的框
[29] 中提出了 Relaxed Softmax 方法来预测标准softmax中的温度尺度因子值,来用于safety-critical 行人检测。
不同于上述方法,本文主要关注b-box级别的检测,本文方法是用于实例分割的。
MaskIoU head 中对实例mask进行了进一步处理,且最终的mask score可以反映实例分割假设的真实质量,为提高实例分割性能提供了一个新的方向。
3. 方法
3.1 动机
当前的 Mask R-CNN框架中,检测的得分是由分类得分的最大值决定的。
由于背景、光照等干扰,可能会导致分类得分很高到mask quality 较低,如图1所示。
为了定量的分析该问题,我们将Mask R-CNN 预测的 mask score 和真实IoU(MaskIoU)进行了比较。
具体来讲,使用了Mask R-CNN和ResNet-18 FPN对COCO 2017验证数据集进行实验。
利用SoftNMS进行检测假设函数的选择,保留 MaskIoU和分类得分都大于0.5的。
MaskIoU 和分类得分的分布如图2(a)所示
每个MaskIoU在间隔内的平均分类得分如图3©的蓝色所示
图说明分类得分和 MaskIoU 在 Mask R-CNN 中并没有很大的关联
一般的实例分割评估方法中,认为 MaskIoU 较低且得分较高检测假设函数是有害的。
在很多实际应用中,确定什么时候检测结果是可信,什么时候是不可信的是很重要的
这就 motivates 我们对每个检测假设都要学习到一个校正 mask score
不失一般性,我们研究了Mask R-CNN框架,并提出了Mask Score R-CNN (MS R-CNN),这是一个带有附加MaskIoU模块的MaskR-CNN,该模块学习MaskIoU aligned mask score
我们框架的预测Mask得分如图2 (b)所示,橙色直方图如图2 ©所示。
3.2 Mask scoring in Mask R-CNN
Mask Scoring R-CNN的结构并不复杂:具有 MaskIoU head 的 Mask R-CNN,如图3所示
MaskIoU head 输入: 实例特征+预测的mask
MaskIoU head 输出: 输入 mask 和真实 mask 的 IoU
Mask R-CNN:
Mask R-CNN由两级组成,第一级是RPN,提议候选区域,第二级是R-CNN级,其对每个候选区域使用 RoIAlign,且对候选区域进行分类、b-box回归和mask预测
Mask scoring:
s m a s k s_{mask} smask :预测的 mask 的得分
理想 s m a s k s_{mask} smask :预测的mask和与其匹配的真实mask的像素级的IoU,称为 MaskIoU。对真实类别是正值,其余类别是0,因为一个mask仅仅属于一个类别。
这需要mask score在两个方面做的较好:
- 将mask分类到正确的类别
- 回归前景目标类别的候选框 MaskIoU
使用单个的目标函数难以同时解决两个问题,为了简化,我们将 mask score 学习的任务分解成两个任务:mask 分类 + IoU 回归
对所有的目标类别都有: s m a s k = s c l s ⋅ s i o u s_{mask}=s_{cls}\cdot s_{iou} smask=scls⋅siou
- s c l s : s_{cls}: scls:主要对候选区域分类,这个过程是在R-CNN阶段的分类任务完成的,所以可以直接拿对应的分类得分来用
- s i o u : s_{iou}: siou:主要对MaskIoU回归,这也是本文的主要目的,下面将详细介绍。
MaskIoU head:
MaskIoU head 主要对预测 mask 和真实 mask的IoU进行回归
MaskIoU head的输入:RoIAlign 层的输出特征+预测的 mask
对两者进行联合时,使用最大池化来保证预测mask和RoI特征大小相同,池化核大小为2,移动步长为2。
本文只对真实类别的 MaskIoU进行回归,而非对全部类别都进行回归。
MaskIoU head的组成:4个卷积层+3个全连接层
对卷积层,和Mask head一样,将所有的卷积核大小设置为3,数量设置为256
对全连接层,和 RCNN head一样,前两个FC输出为1024,最后一个FC输出为总类别个数。
Training:
训练 MaskIoU head,我们将 PRN proposal 作为训练样本
训练样本的IoU(提议框和与其match的真实框的IoU)要大于0.5,这个要求和 Mask head 与 Mask R-CNN的要求相同。
为了给每个训练样本都生成回归目标,首先获得目标类别的预测mask,并利用0.5对其进行二值化。
之后,使用二值mask和其匹配的真实mask的MaskIoU作为MaskIoU 的目标值
使用L2损失对MaskIoU进行回归,损失权重设置为1,
本文提出的MaskIoU head将集成到 Mask R-CNN结构中去,整个网络进行端到端的训练。
Inference:
推断阶段中,本文使用 MaskIoU head来校正从 R-CNN 产生的分类得分
Mask R-CNN的过程:
假设 Mask R-CNN的 R-CNN 阶段输出 N 个b-box,且利用softNMS 后选择前 top-k 个作为保留。之后,将这top-k个b-box输入 Mask分支产生预测的mask
本文过程:
1)R-CNN分支输出N个预测的边界框,利用SoftNMS对其进行选择,保留得分前top-k的框
2)将前top-k的框输入 R-CNN的Mask 分支,得到预测mask
3)将RoI feature map 和mask送入MaskIoU,得到预测的mask IoU
4)将预测的mask IoU和分类置信得分相乘得到 mask score
4. 实验
所有实验均在COCO数据集[26]上进行,对象类别80个。
遵循COCO 2017设置,使用115k图像训练分割进行训练,5k验证分割进行验证,20k测试开发分割进行测试。
使用COCO评估指标AP(平均超过IoU阈值)报告结果,包括AP@0.5、AP@0.75和APS、APM、APL(不同规模的AP)。
AP@0.5(或AP@0.75)表示使用IoU阈值0.5(或0.75)来确定在评估中预测的边框或Mask是否为正。
除非特别说明,AP使用mask IoU进行评估。
4.1 实验细节
本文使用再现的Mask R-CNN进行所有实验。我们使用基于ResNet-18的FPN网络进行消融研究,使用基于Faster RCNN/FPN/DCN+FPN[9]的ResNet-18/50/101与其他基线结果进行比较。
对于resnet - 18fpn,输入图像将大小调整为短轴为600px,长为最大1000px,以便训练和测试。
与标准FPN[25]不同,ResNet-18中RPN方案和feature extractor只使用C4, C5。对于ResNet-50/101,输入图像的短轴调整为800px,长轴调整为1333px,用于训练和测试。
ResNet-50/101的其余配置遵循检测器[13]。我们对所有网络进行18次训练,在14次和17次训练后,学习率降低0.1倍。
使用动量0.9同步SGD进行参数更新。在测试中,我们使用SoftNMS并保留每个图像的top-100得分的检测结果。
4.2 定量结果分析
本文在ResNet-18/50/101等不同的backbone网络和Faster R-CNN/FPN/DCN+FPN [9]等不同的框架上展示实验结果。如表1、表2所示。
使用APm来表示实例分割结果,APb表示检测结果。
如表1所示,与Mask R-CNN相比,Mask R-CNN对backbone不敏感,能够在所有backbone网上实现稳定的效果:Mask R-CNN能够得到显著的改善(约1.5 AP)。特别是对于AP@0.75,本文方法可以将基线提高2个点左右。
表2表明,Mask R-CNN对不同的框架具有鲁棒性,包括 Faster R-CNN/FPN/DCN+FPN 。
此外,Mask R-CNN不影响边框检测性能,且它实际上略微提高了边界框检测性能。test-dev的结果如表3所示,仅展示了实例分割结果。
4.3 消融学习
此处将本文方法在COCO 2017上进行验证,实验ResNet-18 FPN进行所有消融学习实验
MaskIoU head 的输入的选择:
首先研究了MaskIoU head的输入不同为网络带来的影响。其输入是将由 mask head和RoI feature产生的mask score map(28x28xC)融合而来。
图4展示了不同的设计方法:
(1)目标mask和RoI feature的拼接:取目标类别的得分map,与RoI feature进行max-pooled,并拼接。
(2)目标mask和RoI feature相乘:取目标类别的得分map,与RoI feature进行max-pooled,并相乘。
(3)所有mask和RoI feature相乘:所有的C个类别的mask得分map,与RoI feature进行max-pooled,并拼接。
(4)目标mask和高分辨率RoI feature拼接:取目标类别的得分map,与28x28大小的RoI feature进行相乘。
结果如表4所示,从中可知,MaskIoU head对不同方式的融合都是较为稳定的
从表中可知拼接取得的效果更好,故本文使用拼接方式进行融合。
训练目标的选择:
与之前提到的相同,本文将mask score 学习任务分解成 mask 分类和 MaskIoU 的回归。
但是有如下问题:
- 可以直接学习到mask score吗?
- 一个RoI可能包含不同类别的目标,需要对所有类别都学习 MaskIoU吗?
- 如何设定 MaskIoU head的训练目标仍然需要探索
下面是针对训练目标的一些可选方式:
(1)学习目标类别的MaskIoU,同时忽略提议中的其他类别,这也是被默认的训练目标,同时也是本段所有实验的方式。
(2)学习所有类别的MaskIoU,如果某个类别没有出现在 RoI中,其 目标 MaskIoU被设置为0,该设定方式仅仅使用回归来预测MaskIoU,这需要回归器知道哪些不相关的类不在其中。
(3)对所有正类学习MaskIoU,其中正类意味着出现在RoI区域中的类别。提取区域中的其他类别被忽略。该设置方式被用来观察是否用RoI 区域中其他类别可以使结果更好。
表5给出了上述不同训练目标所获得的结果。
通过对比设置1和设置2,我们可以发现训练所有类别的MaskIoU会显著降低新能(回归仅基于MaskIoU预测),这也证实了我们的观点——使用单一目标函数进行训练分类和回归是困难的。
setting #3比 setting #1 的结果低,这样的结果是由于对所有正例 MaskIoU 的回归会使得 MaskIoU head的负担加重,所以本文选择回归目标类别的 MaskIoU。
如何设定训练集:
由于本文提出的MaskIoU head是 Mask R-CNN 结构的最顶部分,所以MaskIoU head的所有训练样本都是边界框水平的IoU大于0.5的,然鹅,其MaskIoU不能超过0.5。
给定一个阈值 τ \tau τ,本文将 MaskIoU 比 τ \tau τ 大的样本作为训练MaskIoU head的样本,表6展示了结果。结果表明使用所有实例的训练效果最好。
4.4 讨论
本节讨论中的所有结果都源于 COCO 2017 验证集
backbone:
- 较弱的 backbone ResNet-18 FPN
- 较强的backbone ResNet-101 DCN+FPN
预测的 MaskIoU 的质量:
本文使用真实 MaskIoU 和预测 MaskIoU 的相关系数来度量 预测 MaskIoU的质量
回到测试过程,本文使用经过softNMS利用分类得分选择后的top-100得分的边界框,将预测边界框输入 Mask head,并且得到预测 mask,之后使用预测 mask和RoI feature作为MaskIoU head的输入。
MaskIoU head的输出和分类得分经过融合后得到最终的mask score
在COCO 2017验证数据集中,我们为每张图像保留100张预测MaskIoU,从所有5000张图像中收集50万个预测。
图5中绘制了每个预测及其对应真值
可以看到,MaskIoU的预测与它们的ground truth有很好的相关性,尤其是对于MaskIoU较高的预测。
以ResNet-18 FPN 和 ResNet-101 DCN+FPN作为backbone时,预测和真实的相关系数在0.74左右。
这表明,预测的质量对backbone网的变化不敏感。这一结论也与表1一致。
由于之前没有对MaskIoU进行预测的方法,我们参考了之前[19]对IoU边界框进行预测的工作。[19]得到的相关系数为0.617,低于我们的相关系数。
MS R-CNN 的上界(upper bound):
作者使用真实的MaskIoU和预测的MaskIoU之间的相关系数来衡量预测mask的质量
下图展示了预测值和真值的关系,可知其有较好的相关性,且MaskIoU值越高,相关性越大
如何探索性能上界:利用真实的mask代替预测的mask,则mask质量的差别就仅仅来自于边界框的准确性和MaskIoU的预测结果,
对于每个预测的mask,我们可以发现,其与真实mask可以匹配,之后,当真实 MaskIoU >0 时,我们使用真实 MaskIoU 来代替预测 MaskIoU,结果见表7。
结果表明, MS R-CNN 比 Mask R-CNN的表现都好。
与MS R-CNN的理想预测结果相比,MS R-CNN的实际应用效果仍有较大的提升空间,backbone 为 ResNet-18 FPN 时,可以将 AP 提升约2.2%,当backbone为ResNet-101 DCN+FPN 时,可以将AP提升约2.6%。
模型大小和运行时间:
MaskIoU head可实现0.39G的FLOPs, Mask head可实现0.53G的FLOPs。
我们使用一个TITAN V GPU来测试速度(秒/图像)。对于ResNet-18 FPN, Mask R-CNN和MS R-CNN的速度都在0.132左右。
ResNet-101 DCN+FPN Mask R-CNN和MS R-CNN的速度都在0.202左右。Mask Score R-CNN中mask head的计算成本可以忽略不计。
5. 总结
本文研究了实例分割中mask得分问题,并提出了 MS R-CNN
通过给 Mask R-CNN 添加 MaskIoU head,对mask的得分和 MaskIoU结合起来进行预测,不同于以往的实例分割框架。
MaskIoU head 计算高效且易于实现
在 COCO 基准上,大量的实验表明 MS R-CNN 都可以获得优于 Mask R-CNN的效果。
该结构同样可以用于其他实例分割网络,来获得更加可靠的mask 得分
本文希望本文所提出的高效方式为实例分割任务提供一个基准,并为后续的探索提供帮助。