题目:《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. centos7 jenkins安装和使用

    jenkins 安装和使用 1.先安装jdK1.8 和 maven 此步骤省略 2.进入jenkisn 官网 下载https://jenkins.io/download/ Long-term Supp ...

  2. 基于beego orm 针对oracle定制

    目前golang的ORM对oracle支持都没有mysql那样完整,一个orm要同时兼容mysql和oracle由于在sql语法上区别,会使整orm变的非常臃肿. 本项目是在beego orm上修改, ...

  3. js之create()

    语法: Object.create(proto, [propertiesObject]) 返回一个新的对象的指针 proto:对象会被作为新创建的对象的原型 [propertiesObject]:对象 ...

  4. $clog2(转)

    (转http://www.xilinx.com/support/answers/44586.html) 13.2 Verilog $clog2 function implemented imprope ...

  5. 1) Spring_HelloWorld

    1. Spring Tool Suite™ 方式一:下载对应eclipse版本的文件,离线安装 4.4.2 springsource-tool-suite-3.6.4.RELEASE-e4.4.2-u ...

  6. MapGIS Mobile开发

    1. 先将Android开发环境配置好(包括Java + Eclipse + Android SDK) 2. 加载API类库(运行MapGIS 10 AndroidSDK.exe可以加载Mobile框 ...

  7. idea 优化

    http://www.iyunv.com/thread-348537-1-1.html

  8. 基于MATLAB的均值滤波算法实现

    在图像采集和生成中会不可避免的引入噪声,图像噪声是指存在于图像数据中的不必要的或多余的干扰信息,这对我们对图像信息的提取造成干扰,所以要进行去噪声处理,常见的去除噪声的方法有均值滤波.中值滤波.高斯滤 ...

  9. 解决 multiple definition of

    总结了解决multiple definition of的方法: 问题原因:    当多个文件包含同一个头文件时,并且你的.H里面没有加上条件编译#ifndef TEST_H#define TEST_H ...

  10. 在EBS里新建一个OU的步骤

    http://blog.csdn.net/kevingao/archive/2010/09/11/5877092.aspx 在EBS里新建一个OU的步骤1. 建立OU组织,关联SOB,LE2. 系统管 ...