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 ...
随机推荐
- leetcode - [1]Reverse Words in a String
Question: Reverse Words in a String Given an input string, reverse the string word by word. For exam ...
- 事件冒泡的应用——jq on的实现
曾对jQuery中on的实现有所疑问,一直没有找到合适的实现方法,今日看<javascript高级程序设计>中的事件冒泡有了些思路. 针对于新增的DOM元素,JQ中若为其绑定事件就必须使用 ...
- POJ3169--Layout(SPFA+差分系统)
Description Like everyone else, cows like to stand close to their friends when queuing for feed. FJ ...
- POJ3320 Jessica's Reading Problem 2017-05-25 19:55 38人阅读 评论(0) 收藏
Jessica's Reading Problem Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12346 Accep ...
- Python 7步机器学习
http://python.jobbole.com/84108/ 由于我们要使用机器学习和科学计算的 packages ,这里建议安装 Anaconda.Anaconda 是一个可在 Linux , ...
- 三.int , bool , str
03.万恶之源-基本数据类型(int, bool, str) 本节主要内容: 1. python基本数据类型回顾 2. int----数字类型3. bool---布尔类型4. str--- 字符串类 ...
- 3.java面向对象编程三大特性之多态
面向对象编程的三大特性:封装.继承.多态 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对类的外部而言它的内部实现细节是隐藏的,暴露给外界的只是它的实现方法. ...
- poj 3463/hdu 1688 求次短路和最短路个数
http://poj.org/problem?id=3463 http://acm.hdu.edu.cn/showproblem.php?pid=1688 求出最短路的条数比最短路大1的次短路的条数和 ...
- CSS 基础 例子 伪元素和伪类 & 区别
一.概念 CSS 伪类 -------向某些选择器添加特殊的效果,要达到同等效果,通过类来达到效果 CSS 伪元素 -------将特殊的效果添加到某些选择器,要达到同等效果,通过添加元素达到 ...
- 批量拼脚本神器-NimbleText
工作中要给产品经理写各种脚本拉数据.修改数据.这种批量拼sql,Excel当然是最合适的.但是苦于Excel玩不转,之前一直用Visual Studio Code的多焦点编辑功能,即便如此,这在同事眼 ...