继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

字节跳动实习生提出实例分割新方法:性能超过何恺明Mask R-CNN

量子位
关注TA
已关注
手记 279
粉丝 5268
获赞 364

框架更简单,但实现了比Mask R-CNN还好的性能。

这是字节跳动实习生提出的实例分割新方法,名为SOLO。

核心在于通过引入“实例类别”的概念,把实例分割问题转化为分类问题。

与Mask R-CNN相比,架构更加简单,是一种单阶段实例分割的方法:

http://img.mukewang.com/5e06fea1000102bd10040426.jpg

但在性能上却强得多。

COCO数据集上的实验结果显示,SOLO的效果普遍超过此前的单阶段实例分割主流方法,在一些指标上还超过了增强版的Mask R-CNN。

这一论文发布之后,也引起了业内人士的关注,并赢得了不少点赞。

有人评价称:“这是一篇非常好的工作,不仅实现了single stage,精度也非常高……这些position variance的特性,一定会在物体检测与实体分割带来新的突破。本文则是一个非常好的尝试。”

也有人评价称:“我接触到的(我接触到的可能并不多)真正意义上的效果比较不错的实例分割单阶段方法。”

总之,新颖简洁的框架,称得上突破性的工作。他们具体如何实现的?我们下面一一解读。

突破在哪?

以往的实例分割方法主要分为两种,即自上而下和自下而上的范例。

但是这两种方法,要么严重依赖精确的边界框检测,要么依赖每个像素的嵌入学习和分组处理。

那么,是否存在一种方法,可以绕过这些条条框框来做实例分割呢?

http://img4.mukewang.com/5e06fea100019a3b10800211.jpg

这项研究其实是类比了语义分割的方法。

语义分割就是一个逐像素的语义类别分类任务。

那么实例分割就可以类比为,逐像素的实例类别分类

也就是预测每个像素所在的物体的实例类别。

而在图片中,物体的位置形状就是用来区分实例的属性。

因此,根据量化中心位置和对象大小,就可以简单粗暴的做实例分割。

方法故取名为SOLO: Segmenting Objects by Locations

先来看下SOLO的惊人效果。

SOLO使用随机梯度下降(SGD)进行训练,在8个GPU上使用同步的SGD,每个小批(mini-batch)处理总共有16张图片(每个GPU 2张)。

实验所采用的是COCO数据集。

http://img1.mukewang.com/5e06fea200018f0810800510.jpg

无论与两阶段模型还是单阶段模型相比,SOLO方法都取得了最好的实验效果。

http://img1.mukewang.com/5e06fea20001a0ef10800521.jpg

上图便展示了SOLO的效果。

每一列上方的图片是实例分割的结果,可以看出图片中对象分割出来的效果还是非常精确的。

每一列的下方是对应的掩码激活图(mask activation map)。

http://img3.mukewang.com/5e06fea30001909b10300366.jpg

http://img1.mukewang.com/5e06fea30001e29710160372.jpg

上图展示了SOLO方法在实例轮廓检测的效果。

每张图中,不同实例的轮廓用不同的颜色来标记。

这也证明了,SOLO不仅能够用来做实例分割,在实例轮廓检测任务中,效果也是不错的。

什么原理?

SOLO方法的核心思想就是:

将实例分割问题重新定义为类别感知预测问题实例感知掩码生成问题

具体而言,就是将输入系统的图像统一划分为S x S的网格。

如果对象的中心落入网格单元,那么这个网格单元就负责预测语义类别以及分割该对象实例。

http://img1.mukewang.com/5e06fea40001983410800372.jpg

上图便是SOLO的框架流程图。

不难看出,重点在于语义类别(Semantic category)和实例掩码(Instance mask)这两个步骤。

语义类别过程中,对于每个网格,SOLO都会预测C维输出,用来表示语义类的概率。

其中,C是类的数量。

这些概率取决于网格单元,如果将输入图像划分为S×S网格,则输出空间将为S×S×C。

值得注意的是,这里假设S×S网格的每个单元必须属于一个单独的实例,也就是只属于一个语义类别。

推理期间,C维输出指示每个对象实例的类概率。

在语义类别预测的同时,SOLO还并行地生成相应的实例掩码

对于一个输入图像I,如果将其划分为S×S网格,则总共最多有S2个预测掩码。

具体来说,实例掩码输出的维数是HI×WI×S2

第k个通道负责对网格(i, j)上的实例进行分割,其中,k=i·S+j。

因此,在语义类别和与类无关的掩码之间,就建立了一对一的对应关系。

在字节跳动实习时完成的工作

这一研究成果共有5位作者,分别来自字节跳动人工智能实验室和阿德莱德大学。

http://img3.mukewang.com/5e06fea40001692210800309.jpg

一作名为王鑫龙,2018年毕业于同济大学,是阿德莱德大学在读博士生,师从沈春华教授(通讯作者)。

http://img4.mukewang.com/5e06fea40001c49c10800625.jpg

2019年4月,进入字节跳动实习,完成了这一研究。此前也曾在旷视和腾讯优图实验室实习2018年至今,一共有3篇论文被CVPR、AAAI等顶会收录。

研究共同一作是字节跳动研究科学家孔涛。博士毕业于清华大学,师从孙富春教授。

过去3年在CVPR、AAAI、ECCV等顶级会议和杂志上署名发表论文近10篇。

其他两位作者,也都来自字节跳动人工智能实验室。

One more thing

关于SOLO的名字,因为与YOLO很像,也引起了不少讨论。

论文一作王鑫龙在知乎上进行了回应:

虽然我们不是受YOLO启发,但确实有致敬的意思。

并分享了Joseph Redmon在YOLOv3里的一句话:

Boxes are stupid anyway though, I’m probably a true believer in masks except I can’t get YOLO to learn them.



打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP