转载:https://zhuanlan.zhihu.com/p/58291808

论文链接:https://arxiv.org/abs/1903.00241

代码链接:https://github.com/zjhuang22/maskscoring_rcnn

今天介绍一篇CVPR2019的论文,来自华科和地平线,这篇论文从实例分割中mask 的分割质量角度出发,提出过去的经典分割框架存在的一个缺陷:用Bbox bounding box的classification confidence作为mask score,导致mask score和mask quality不配准。因此文章基于Mask R-CNN提出一个新的框架Mask Scoring R-CNN,能自动学习出mask quality,试图解决不配准的问题。

在实例分割(instance segmentation)中,比如Mask R-CNN,mask 分支的分割质量(quality)来源于检测分支的classification confidence。Mask R-CNN其实Faster R-CNN系列的延伸,其在Faster R-CNN的基础上添加一个新的分支用来预测object mask,该分支以检测分支的输出作为输入,mask的质量一定程度上依赖于检测分支。这种简单粗暴的做法取得了SOTA的性能,近年来COCO比赛的冠军或者前几名基本是Mask R-CNN及其变体,但依然有上升的空间。

更仔细的来讲,Mask R-CNN存在的问题是:bounding box的classification confidence不能代表mask的分割质量。classification confidence高可以表示检测框的置信度高(严格来讲不能表示框的定位精准),但也会存在mask分割的质量差的情况。高的分类置信度也应该同时有好的mask 结果。

回到原始的初衷,文章希望得到精准的mask质量,那么如何评价输出的mask质量呢?

是AP,或者说是instance-level的IoU。这个IoU和检测用到的IoU是一个东西,前者是predict mask和gt mask的pixel-level的Intersection-over-Union,而后者则是predict box和gt box的box-level的Intersection-over-Union。所以一个直观的方法就是用IoU来表示分割的质量,那么让网络自己学习输出分割的质量也是简单直观的做法。学习出mask的IoU,那么最后的mask score就等于maskIoU乘以classification score,mask score就同时表示分类置信度和分割的质量。

作者在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。

实验结果,在COCO 2017 test集上,相对于Mask R-CNN,mask AP有1个点多的提升。

同时作者还做了对比实验,验证不同的MaskIoU输入对性能的影响。文章列举了4种输入方式:

  1. target mask和ROI feature concat
  2. target mask和ROI feature 相乘
  3. 所有mask和ROI feature concat
  4. target mask和高分辨率的ROI feature concat

其网络结构示意图如下:

验证不同training target对性能的影响:

  1. 只学习target类别的MaskIoU,忽略其他类别
  2. 学习所有类别的MaskIoU,相应的其他类别的MaskIoU的学习目标就是0
  3. 学习出现在ROI区域的类别的MaskIoU。

可以看出,setting#1的效果最好,setting#2的效果最差。

同时作者还做了实验探索Mask Scoring R-CNN的性能上界。

对每个输出的MaskIoU,用输出的mask 和匹配的gt mask iou来代替,MaskIoU分支就输出了mask分支的真实quality,这时就得到了Mask Scoring R-CNN的性能上界。实验结果表明Mask Scoring R-CNN依然比Mask R-CNN更好,说明MaskIoU起到了alignment的效果,但很显然会比用gt mask iou 代替的效果差,说明一方面box的准确性和mask分支本身也会影响mask任务的性能,另一方面MaskIoU 分支的学习能力可以进一步提升,Mask Scoring R-CNN依然有提升的空间。

速度方面,作者在Titan V GPU上测试一张图片,对于ResNet18-FPN用时0.132s,Resnet101-DCN-FPN用时0.202s,Mask Scoring R-CNN和Mask R-CNN速度一样。

总结:

作者motivation就是想让mask的分数更合理,从而基于mask rcnn添加一个新的分支预测来得到更准确的分数,做法简单粗暴,从结果来看也有涨点。其实mask的分割质量也跟box输出结果有很大关系,这种detection-based分割方法不可避免,除非把detection结果做的非常高,不然mask也要受制于box的结果。这种做法与IoU-Net类似,都是希望直接学习最本质的metric方式来提升性能。

为了同时提升detection和mask的效果,最近的Cascade方法很受欢迎,从人脸检测领域的Cascade CNN, 到Cascade R-CNN: Delving into High Quality Object Detection,再到友商的HTC不仅在COCO中拿了冠军,同时也被CVPR2019接收,Cascade方式展现了强大实力,相信在未来会出现越来越多的Cascade,如Cascade RetinaNet,Cascade TridentNet。。。

图像分割-Mask Scoring R-CNN的更多相关文章

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

    Mask Scoring R-CNN CVPR2019 | Mask Scoring R-CNN 论文解读 作者 | 文永亮 研究方向 | 目标检测.GAN 推荐理由: 本文解读的是一篇发表于CVPR ...

  2. 2019CVPR《Mask Scoring R-CNN》

    题目:<Mask Scoring R-CNN> CVPR 2019 Oral Paper(2017年783篇论文,获得口头报道的有215篇,oral paper很有含金量) 华中科技大学h ...

  3. 论文笔记:Mask R-CNN

    之前在一次组会上,师弟诉苦说他用 UNet 处理一个病灶分割的任务,但效果极差,我看了他的数据后发现,那些病灶区域比起整张图而言非常的小,而 UNet 采用的损失函数通常是逐像素的分类损失,如此一来, ...

  4. CVPR2019 | 超越Mask R-CNN!华科开源图像实例分割新方法MS R-CNN

    安妮 乾明 发自 凹非寺 本文转载自量子位(QbitAI) 实习生又立功了! 这一次,亮出好成绩的实习生来自地平线,是一名华中科技大学的硕士生. 他作为第一作者完成的研究Mask Scoring R- ...

  5. 行为识别(action recognition)相关资料

    转自:http://blog.csdn.net/kezunhai/article/details/50176209 ================华丽分割线=================这部分来 ...

  6. R-CNN论文翻译

    R-CNN论文翻译 Rich feature hierarchies for accurate object detection and semantic segmentation 用于精确物体定位和 ...

  7. 【计算机视觉】行为识别(action recognition)相关资料

    ================华丽分割线=================这部分来自知乎==================== 链接:http://www.zhihu.com/question/3 ...

  8. Ubuntu16.04下caffe CPU版的详细安装步骤

    一.caffe简介 Caffe,是一个兼具表达性.速度和思维模块化的深度学习框架. 由伯克利人工智能研究小组和伯克利视觉和学习中心开发. 虽然其内核是用C++编写的,但Caffe有Python和Mat ...

  9. 论文翻译——R-CNN(目标检测开山之作)

    R-CNN论文翻译 <Rich feature hierarchies for accurate object detection and semantic segmentation> 用 ...

随机推荐

  1. Linux 01 LiunxvI命令大全

    进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后 ...

  2. Window脚本学习笔记之BAT简介

    本篇文章不是直接讲技术,而是对我自己学习这些年来的一番感触和简单的介绍,其间也穿插着一些基本的知识,若是学习技术者可跳过,亦不妨碍学习其他. BAT简介 BAT是Windows的批处理脚本,即以后缀“ ...

  3. 记录一些python内置函数

    整理一些内置函数,平时用得比较少,但是时不时遇上,记录一下吧(嘻嘻(●'◡'●)) 1.help() 查看模块or函数的帮助文档 help(pandas) #模块 Help on package pa ...

  4. 手写KMeans算法

    KMeans算法是一种无监督学习,它会将相似的对象归到同一类中. 其基本思想是: 1.随机计算k个类中心作为起始点. 将数据点分配到理其最近的类中心. 3.移动类中心. 4.重复2,3直至类中心不再改 ...

  5. Lua 学习之基础篇三<Lua 字符串操作>

    Lua字符串可以使用以下三种方式表示: 单引号间的一串字符. 双引号间的一串字符. [[和]]间的一串字符. string = [["Lua"]] print("字符串 ...

  6. Java集合--Vector

    转载请注明出处:http://www.cnblogs.com/skywang12345/p/3308833.html 第1部分 Vector介绍 Vector简介 Vector 是矢量队列,它是JDK ...

  7. 第82题:删除排序链表中的重复元素II

    一. 问题描述 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例 1: 输入: 1->2->3->3->4->4->5 ...

  8. 25-SQLServer中的DMV和DMF的使用

    一.总结 1.什么事DMV和DMFDMV(Dynamic Management View):动态管理视图DMF(Dynamic Management Function):动态管理函数 二.操作步骤 1 ...

  9. Time travel HDU - 4418 (概率DP)

    对于每个点两个方向(两头只有一个方向)建一个点,然后预处理出每个点走k(1≤k≤n)k(1\le k\le n)k(1≤k≤n)到哪个点,列出方程式高斯消元就行了.记得前面bfsbfsbfs出那些点不 ...

  10. scrapy 4 学习 crawl spider

    前情提要: 一:图片懒加载(面对图片懒加载怎么办) ---用selenium设置图片加载的位置 --- 分析懒加载的属性,直接获取 二: 如何提高scrapy的爬取效率 增加并发:默认scrapy开启 ...