CVPR2019 | Mask Scoring R-CNN 论文解读
Mask Scoring R-CNN
CVPR2019 | Mask Scoring R-CNN 论文解读

作者 | 文永亮
研究方向 | 目标检测、GAN
推荐理由:
本文解读的是一篇发表于CVPR2019的paper,来自华科和地平线,文章提出了Mask Scoring R-CNN的框架是对Mask R-CNN的改进,简单地来说就是给Mask R-CNN添加一个新的分支来给mask打分从而预测出更准确的分数。
源码地址:https://github.com/zjhuang22/maskscoring_rcnn
研究动机:
Mask R-CNN其实是何恺明大神在Faster R-CNN系列的延伸,Mask R-CNN和Faster R-CNN都是 two stages的,第一阶段是RPN(Region Proposal Network),产生一些候选的目标边界框,使用RoIAlign为每一个候选区域提取特征,生成分类、bbox回归还有mask的预测,其实就是在Faster R-CNN的基础上添加一个新的分支预测mask。
但是Mask R-CNN存在着一个问题,就是在实例分割的任务中,蒙版分割质量是由检测分支的分类置信度决定。然而,mask的质量(我们这里用instance mask和ground truth之间的IoU做评判)通常与分类置信度没有太强的关联。

相信大家都知道IoU是目标窗口和原来标记窗口的交叠率,如果Mask R-CNN的分类置信度能够决定分割蒙版的质量的话,也就是说其质量与分类分数呈现相关性,但是从图二(a)中可以看出,当分类分数高于0.5时(横坐标),甚至到达1时,MaskIoU参差不齐,可以说从0.5到1的质量分数都有,从而证实了Mask R-CNN的MaskIoU与分类置信度没有太强的关联。所以作者提出的Mask Scoring R-CNN,MS R-CNN中提出的框架其实很简单,就是在原有的Mask R-CNN框架的基础上添加一个额外的分支MaskIoU head模块,这个模块用来学习MaskIoU。这个框架得到的分数如图二(b)(c)的所示,可以明显看出分类分数高的同时蒙版质量也得到了提升。
Mask Scoring R-CNN:
·Mask Scoring:
既然我们发现了Mask R-CNN的问题,那么我们现在就来解决它,首先我们考虑蒙版的分数由什么决定?
从上面的动机中我们得知,MaskIoU可以来评价蒙版的质量,因为理想的mask应该是与Ground Truth完全重合的,所以我们必须考虑MaskIoU。除此之外,一个理想的评价mask的分数,除了与GT的重合率之外,这个实例分割只属于一个类,对于其他类的分数都为0。所以学习mask的分数就分解成两个任务,就是把mask分类到正确的类中以及把建议框的MaskIoU回归到目标前景中。

有如上公式,
专注于对建议框进行分类,
聚焦于回归MaskIoU。
·MaskIoU head:
整个MS R-CNN的改进就在于这个MaskIoU Head,MaskIoU Head模块的输入由两部分组成,一是ROIAlign得到的RoI feature map,二是Mask Head分支输出的mask。Mask经过MaxPooling之后与RoI feature map进行concat,然后经过3层卷积和2层全连接层,输出的就是MaskIoU。以下是其完整的架构,如图三:

·Training:
怎么训练MaskIoU Head?只把mask分支输出的mask与GT计算IoU作为target是不够的,因为mask分支输出的mask有好有坏,所以文章中做了阈值处理,使用RPN生成的proposals与GT的IoU大于0.5的mask称为binary mask,这个binary mask与GT的MaskIoU就作为MaskIoU的target。
·Inference:
RCNN Head输出的top-k(例如top100)分数的框,经过SoftNMS后,送入Mask Head,得到mask与ROI feature map进行concat送入MaskIoU Head得到MaskIOU,然后与分类结果得到的分数相乘得到mask score。
实验结果:
实验结果这里有很多种不同的AP,
表示在不同scales时的AP,
意思是使用了不同IoU阈值。作者用的数据集是COCO 2017val集。

Table 1表明了作者提出的Mask Scoring R-CNN对不同的backbone网络并不敏感,相比Mask R-CNN基本上AP有1点左右的提升。

Table 2表明无论是否使用FPN和DCN,MaskIoU head都在AP上有提升。

Table 3是跟目前的实例分割方法在COCO 2017 test-dev上做对比。

这是MS R-CNN和Mask R-CNN对比效果,评分得到了修正。
MaskIoU head的各种选择:
文章做了下面4种输入组合:
1.target mask和ROI feature concat
2.target mask和ROI feature 相乘
3.所有mask和ROI feature concat
4.target mask和高分辨率的ROI feature concat


还有一个问题就是,我们知道RoI内可能有很多种目标类别,我们应该让MaskIoU学习所有的类别,还是学习RoI内的所有出现的类别,抑或是选取RoI内分类得分高的类呢?
由此分成了三种情况:
- 只让MaskIoU学习target类别,target类别其实就是分类得到的top-k类别,其他类别的就直接忽略掉。
- 让MaskIoU学习所有类别。
- 让MaskIoU学习所有出现在RoI中的类别,其他没出现的类别忽略。

发现第二种情况学习所有类别的情况是最差的,甚至比原来Mask R-CNN的效果还差。而第三种学习所有正类的情况比学习target类别差的原因是学习所有正类会增加MaskIoU head的负担,所以文章选择了学习target类别的情况一。
点评:
作者认为分类置信度不能单纯的作为mask的得分,所以很简单的想法就是另外创建了一个MaskIoU分支学习MaskIoU,最后与分类分数相乘的到Mask Score。感觉与IoU-Net类似。但是这样就导致mask与检测分支相关,使mask受限于box。
CVPR2019 | Mask Scoring R-CNN 论文解读的更多相关文章
- CVPR2019论文解读:单眼提升2D检测到6D姿势和度量形状
CVPR2019论文解读:单眼提升2D检测到6D姿势和度量形状 ROI-10D: Monocular Lifting of 2D Detection to 6D Pose and Metric Sha ...
- CVPR2020论文解读:CNN合成的图片鉴别
CVPR2020论文解读:CNN合成的图片鉴别 <CNN-generated images are surprisingly easy to spot... for now> 论文链接:h ...
- 图像分割-Mask Scoring R-CNN
转载:https://zhuanlan.zhihu.com/p/58291808 论文链接:https://arxiv.org/abs/1903.00241 代码链接:https://github.c ...
- zz扔掉anchor!真正的CenterNet——Objects as Points论文解读
首发于深度学习那些事 已关注写文章 扔掉anchor!真正的CenterNet——Objects as Points论文解读 OLDPAN 不明觉厉的人工智障程序员 关注他 JustDoIT 等 ...
- 点云配准的端到端深度神经网络:ICCV2019论文解读
点云配准的端到端深度神经网络:ICCV2019论文解读 DeepVCP: An End-to-End Deep Neural Network for Point Cloud Registration ...
- CVPR2020论文解读:手绘草图卷积网络语义分割
CVPR2020论文解读:手绘草图卷积网络语义分割 Sketch GCN: Semantic Sketch Segmentation with Graph Convolutional Networks ...
- CVPR2020论文解读:3D Object Detection三维目标检测
CVPR2020论文解读:3D Object Detection三维目标检测 PV-RCNN:Point-Voxel Feature Se tAbstraction for 3D Object Det ...
- 论文解读(GraphMAE)《GraphMAE: Self-Supervised Masked Graph Autoencoders》
论文信息 论文标题:GraphMAE: Self-Supervised Masked Graph Autoencoders论文作者:Zhenyu Hou, Xiao Liu, Yukuo Cen, Y ...
- 论文解读(MGAE)《MGAE: Masked Autoencoders for Self-Supervised Learning on Graphs》
论文信息 论文标题:MGAE: Masked Autoencoders for Self-Supervised Learning on Graphs论文作者:Qiaoyu Tan, Ninghao L ...
随机推荐
- 20169207《Linux内核原理与分析》第九周作业
第九周的实验依旧和往常的一样,主要包括两部分.一是1.阅读学习教材「Linux内核设计与实现 (Linux Kernel Development)」第教材第13,14章.二是学习MOOC「Linux内 ...
- PAT甲级 1122. Hamiltonian Cycle (25)
1122. Hamiltonian Cycle (25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The ...
- 17、文件IO详解及实例
上篇文章已经讲过了文件系统的一些基本的概念,这里首先对文件IO进行详细的学习,文件IO也称为系统调用IO,是操作系统为"用户态"运行的进程和硬件交互提供的一组接口,即操作系统内核留 ...
- Hive为什么要分桶
对于每一个表(table)或者分区, Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分.Hive也是针对某一列进行桶的组织.Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记 ...
- spark图解
导语 spark 已经成为广告.报表以及推荐系统等大数据计算场景中首选系统,因效率高,易用以及通用性越来越得到大家的青睐,我自己最近半年在接触spark以及spark streaming之后,对spa ...
- 锁——Java同步的基本思想
翻译人员: 铁锚 翻译时间: 2013年11月13日 原文链接: Monitors – The Basic Idea of Java synchronization 如果你上过操作系统课程,你就知道 ...
- html,css,jquery,JavaScript
1.全选 (当点击checkall按钮时,选中所有checkbox用prop全选上)function checkAll() { $(':checkbox').prop('checked', true) ...
- IDHTTP的基本用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- 使用更改跟踪(ChangeTracking)来实现数据类型变更
在现实场景中,我们经常会遇到修改数据类型的场景,尤其是自增列从INT修改为BIGINT的情况,自增列又通常作为表的主键和聚集索引键,因此修改操作需要按以下步骤来进行 1. 停止对该表的访问(通过禁用权 ...
- Linux 安装JavaEE环境之Tomcat安装笔记
1.先用xftp将tomcat的压缩包上传到 /opt/ 2.在/usr/local/下使用命令mkdir tomcat 创建tomcat目录 将apache-tomcat-7.0.70.tar.gz ...