【阅读笔记】《Mask Scoring R-CNN》(MaskRCNN)

本文记录了博主阅读论文《Mask Scoring R-CNN》的笔记,代码。更新于2019.04.19。

Abstract

用于实例分割。

Introduction

主要贡献:

  • 文中提出的Mask Scoring R-CNN是首个解决scoring instance segmentation hypothesis问题的架构,提供了实例分割提升精度的新方向。考虑到instance mask的完整性,score of instance mask在高分类score而mask不好的情况下可以被惩罚。
  • MaskIoU head简单有效。在COCO数据库下,使用MS R-CNN可以提升AP约1.5%。

Related Work

Instance Segmentation

在这里插入图片描述
在这里插入图片描述

Detection Score Correction

在这里插入图片描述
在这里插入图片描述

Method

Motivation

在Mask R-CNN中,score of a detection(也就是实例分割)是由分类score中最大值决定的。但是由于背景混乱、遮挡等问题,很有可能分类score很高但是mask效果很差,如下图所示:
在这里插入图片描述
下图比较中使用的是Mask R-CNN with ResNet-18 FPN,COCO 2017 验证集。比较显示,classification score和MaskIoU在Mask R-CNN中没有多少相关性。
在这里插入图片描述

Mask scoring in Mask R-CNN

Mask Scoring R-CNN在概念上还是相对简单的:即带有MaskIoU Head的Mask R-CNN,其输入为实例特征和predicted mask,随后估计输入mask和真值mask之间的IoU,如下图所示。
在这里插入图片描述
Mask R-CNN: 先简单回顾一下Mask R-CNN。在Faster R-CNN之后,Mask R-CNN包括两个阶段。第一阶段是Region Proposal Network(RPN),其提供无类别的candidate object bounding boxes;第二阶段称为R-CNN阶段,其通过RoIAlign提取每个proposal的特征,并进行proposal分类、bounding box回归和mask估计。

Mask scoring: 定义smask\text s_{\text{mask}}为score of the predicted mask,其概念与predicted mask和对应的ground truth mask之间的像素级IoU等同,前文称作MaskIoU。因为一个mask只能属于一个类别,因此smask\text s_{\text{mask}}应该对于真值类别只包含正数,其他类别全是0。这就要求mask score应该在这两项任务中都表现良好:分类到正确类别,将proposal的MaskIoU回归到前景目标类别。

只用一个目标函数来训练两个任务是很难的,为了简化,论文中将mask score learning task分解成mask classification和IoU regression,用smask=sclssiou\text s_{\text {mask}}=\text s_{\text {cls}}\cdot\text s_{\text{iou}}代表所有目标类别。scls\text s_{\text {cls}}专注解决proposal属于哪个类别,siou\text s_{\text{iou}}解决MaskIoU的回归。

对于scls\text s_{\text {cls}},在R-CNN阶段已经解决了分类问题,因此可以直接用对应的classification score。回归siou\text s_{\text{iou}}是这篇论文的目标。

MaskIoU head: MaskIoU head旨在回归predicted mask和其ground truth mask之间的IoU,其输入是RoIAlign层的级联特征和predicted mask。在级联的时候,用的是尺寸为2步长为2的max pooling使得predicted mask与RoIAlign特征尺寸相同。回归时,只处理真值类别(或测试时处理估计类别)而非全部类别。MaskIoU head包括4层卷积层和3层全连接层,其中卷积层遵从Mask head,尺寸为3,通道数为256;全连接层遵循RCNN head,前两层神经元个数为1024,最后一层为类别数。

训练: 训练MaskIoU head时,用RPN proposals作为训练样本。训练样本要求proposal box和对应的ground truth box之间有大于0.5的IoU(跟训练Mask R-CNN的Mask head时相同)。为了给每个样本生成regression target,首先获取目标类别的predicted mask,再用阈值0.5将其二值化。

随后,用binary mask和对应的ground truth计算MaskIoU作为MaskIoU target。回归MaskIoU用的是l2\mathscr{l}_2损失,损失权重为1。提出的MaskIoU head整合在Mask R-CNN中,整个网络端到端训练。

推断(inference): 在推理阶段,只应用MaskIoU head校正R-CNN生成的classification score。具体来讲,假设Mask R-CNN的R-CNN阶段输出N个bounding box,选中其中应用SoftNMS之后的前k(k=100)个scoring box。之后,这k个box被送入Mask head用于生成multi-class mask。这是标准的Mask R-CNN推理过程。论文中也遵循这个过程,并送入k个target mask用于估计MaskIoU。估计得到的MaskIoU乘上classification score,得到矫正后的mask score作为最终的mask confidence。

Experiments

所有实验都在COCO数据集上完成,有80个目标类别。用115k张训练,5k张验证,20k张测试。度量:
在这里插入图片描述

Implementation Details

ResNet-18 FPN(用于对比):输入尺寸600x(<1000)
ResNEt-50/101:输入尺寸800x1333

所有算法训练18个epoch,14个epoch和17个epoch后学习率下降率为0.1。

Quantitative Results

在这里插入图片描述

Ablation Study

所有剥离实验用的都是ResNet-18 FPN结构。

The design choices of MaskIoU head input: 首先研究了设计的选择,即从mask head和RoI特征到predicted mask score map(28x28xC)的融合。下图是几种选择:
在这里插入图片描述
解释如下:

  1. Target mask concatenates RoI feature:选择目标类别的score map,进行max pool之后与RoI特征级联;
  2. Target mas multiplies RoI feature:选择目标类别的score map,进行max pool之后与RoI特征相乘;
  3. All masks concatenates RoI feature:所有C个类别的mask score map都进行max pool,之后与RoI特征级联;
  4. Target mask concatenates High-resolution RoI feature:选择目标类别的score map再与28x28的RoI特征级联。

下表为结果:
在这里插入图片描述
The choices of the training target:
在这里插入图片描述
下表为结果:
在这里插入图片描述

如何选取训练样本:
MaskIoU不超过0.5。给定阈值τ\tau,有如下结果:
在这里插入图片描述

Discussion

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Conclusion

在这里插入图片描述
更多内容,欢迎加入星球讨论。
在这里插入图片描述

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