题目:《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和检测结果

2019CVPR《Mask Scoring R-CNN》的更多相关文章

  1. 《数据挖掘:R语言实战》

    <数据挖掘:R语言实战> 基本信息 作者: 黄文    王正林 丛书名: 大数据时代的R语言 出版社:电子工业出版社 ISBN:9787121231223 上架时间:2014-6-6 出版 ...

  2. 《R实战》读书笔记一

    你仅仅要想处理数据,<R实战>这本书就能够助你一臂之力. <R实战>的目标是让你认识R,而且可以对数据进行操作.可视化和理解.该书包含4部分16个章节8个附录. 第一部分:入门 ...

  3. 《深入理解Java虚拟机》第2版挖的坑终于在第3版中被R大填平了

    这是why技术的第34篇原创文章 本周还是在家办公的一周,上面的图就是我在家的工位,和上周<Dubbo Cluster集群那点你不知道的事>这篇文章里面的第一张图片比起来,升级了显示器支撑 ...

  4. 论文《Piexel Recurrent Nerual Network》总结

    论文<Piexel Recurrent Nerual Network>总结 论文:<Pixel Recurrent Nerual Network> 时间:2016 作者:Aar ...

  5. 《利用python进行数据分析》读书笔记 --第一、二章 准备与例子

    http://www.cnblogs.com/batteryhp/p/4868348.html 第一章 准备工作 今天开始码这本书--<利用python进行数据分析>.R和python都得 ...

  6. 数据分析---《Python for Data Analysis》学习笔记【03】

    <Python for Data Analysis>一书由Wes Mckinney所著,中文译名是<利用Python进行数据分析>.这里记录一下学习过程,其中有些方法和书中不同 ...

  7. 搭建《深入Linux内核架构》的Linux环境

    作者 彭东林 pengdonglin137@163.com 软件 Host: Ubuntu14.04 64 Qemu 2.8.0 Linux 2.6.24 busybox 1.24.2 gcc 4.4 ...

  8. 使用jieba和wordcloud进行中文分词并生成《悲伤逆流成河》词云

    因为词云有利于体现文本信息,所以我就将那天无聊时爬取的<悲伤逆流成河>的评论处理了一下,生成了词云. 关于爬取影评的爬虫大概长这个样子(实际上是没有爬完的): #!/usr/bin/env ...

  9. Python 分析电影《南方车站的聚会》

    <南方车站的聚会>由刁亦男执导,主要演员包括:胡歌.桂纶镁.廖凡.万茜等,该片于 2019 年 5 月 18 在戛纳电影节首映,2019 年 12 月 6 日在中国正式上映.故事灵感来自真 ...

随机推荐

  1. struts2用到的jar有那些

    struts2.0 lib/antlr-2.7.6.jarlib/struts2-core-2.0.14.jarlib/struts2-spring-plugin-2.0.14.jarlib/free ...

  2. 【Linux】SVN的安装和配置

    SVN SVN:SVN是Subversion的简称,是一种开放代码的版本控制系统,相比较RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制器服务已从CVS迁移到Su ...

  3. String [] args是干什么的

         我相信应该有不少人都疑惑,main后面的这个String [] args是干什么的呢?今天,巩固就为你们解密.      这是干什么的呢?先给大家一个简单定义(本人比较讨厌上来就举例子,因为 ...

  4. [转载红鱼儿]Delphi XE7 update1进步太大了

    写以下的文字是怀着无比兴奋的心情写的,急于同朋友们分享XE7的进步! 1.更新的bug列表并不全 通过bug修正列表及发布的消息,可以看到up1修正了很多bug,正如我所说,有些bug并没有写到发布的 ...

  5. Windows环境下的安装gcc

    Windows具有良好的界面和丰富的工具,所以目前linux开发的流程是,windows下完成编码工作,linux上实现编译工作. 为了提高工作效率,有必要在windows环境下搭建一套gcc,gdb ...

  6. struts2从浅至深(五)上传与下载

    1.编写上传页面 2.编写动作方法 import java.io.File;import java.io.IOException; import javax.servlet.ServletContex ...

  7. (KMP Next的运用) Period II -- fzu -- 1901

    http://acm.fzu.edu.cn/problem.php?pid=1901 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=703 ...

  8. Linux操作系统文件系统基础知识详解

    一 .Linux文件结构 文件结构是文件存放在磁盘等存贮设备上的组织方法.主要体现在对文件和目录的组织上. 目录提供了管理文件的一个方便而有效的途径. Linux使用标准的目录结构,在安装的时候,安装 ...

  9. Linux 用 sftp scp命令 互传文件

    sftp它类似于 ftp, 但它进行加密传输,比FTP有更高的安全性. sftp 是SSH服务的子程序 常用命令 pwd 查看当前工作目录 ls 查看远程当前目录下的所以文件或者目录信息 lls 查看 ...

  10. java web 中的WEB-INF文件夹

    WEB-INF下的东西是禁止直接访问的.如果这个页面是你的,要想让人访问最好不要放在这个目录下.如果一定放在那里.你可以使用:request.getRequestDispatcher("/W ...