作者:周博磊
链接:https://www.zhihu.com/question/51704852/answer/127120264
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

图1. 这张图清楚说明了image classification, object detection, semantic segmentation, instance segmentation之间的关系. 摘自COCO dataset (https://arxiv.org/pdf/1405.0312.pdf)

Semantic segmentation的目的是在一张图里分割聚类出不同物体的pixel. 目前的主流框架都是基于Fully Convolutional Neural Networks (FCN,详情见https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn.pdf).FCN区别于物体识别网络诸如AlexNet最主要的差别是pixel-wise prediction,就是每个像素点都有个probability, 而AlexNet是一张图一个prediction.AlexNet或者VGG通过一个小的trick(caffe/net_surgery.ipynb at master · BVLC/caffe · GitHub)就可以转变成FCN. 这里有个八卦是当年FCN得到CVPR'15 best paper honorable mention的时候, Yann LeCun等人出来吐槽这个'FCN'的概念早就有了,AlexNet里面的fully connected layer (FC)本身就是个误导,因为FC layer可以看成是1x1的convolution, 本来就可以输入任意大小的图片.

Semantic segmentation的其他典型代表还有诸SegNet, Dilated Convolution Net, deconvolutionNet
等.这里又有两个八卦,比如SegNet相关的几篇论文连续投了两年多到现在都还没中(作者要哭晕在厕所里了),以及关于deconvolution, dilated convolution, atrous convolution这几个概念的争论(这里有篇分析我觉得不错Dilated Convolutions and Kronecker Factored Convolutions).在我个人使用过程中,相对于FCN等带skip connection结构的网络,我更喜欢类似于Dilated Net这种桶状结构的网络,原因是带skip connection的网络由于需要normalize不同layer之间的activation, 比较难训练. Liu Wei有一篇专门分析这个layer之间normalization trick的论文(http://www.cs.unc.edu/~wliu/papers/parsenet.pdf).

切入正题,semantic segmentation把图片里人所在的区域分割出来了,但是本身并没有告诉这里面有多少个人,以及每个人分别的区域.这里就跟instance segmentation联系了起来,如何把每个人的区域都分别分割出来,是比semantic segmentation要难不少的问题.基于semantic segmentation来做instance segmentation的论文,大家可以看看Jifeng Dai最近的几篇论文:https://arxiv.org/pdf/1512.04412v1.pdfhttps://arxiv.org/pdf/1603.08678v1.pdf. 大致做法是在dense feature map上面整合个instance region proposal/score map/RoI, 然后再分割.

这里instance segmentation本身又是跟object detection是紧密相关的.最近Facebook放出来的DeepMask和SharpMask(GitHub - facebookresearch/deepmask: Torch implementation of DeepMask and SharpMask), 很明确地点出了两者关系. 我之前跟Piotr Dollar也讨论过这个问题, 他自己觉得: semantic segmentation is a bad direction, we should focus on object detection. 我不赞同他的观点,但觉得还是挺有道理:) 这里可以想象, 如果object proposal和object detection能做得非常好, instance segmentation本身这个问题就能比较好的解决. COCO detection challenge (COCO - Common Objects in Context) 里面一个track, 就是要求predict segmentation mask rather than bbox, 可惜今年只有两个队参加(你参加的话再差都是第三哟:p) .

总结一下, instance segmentation其实是semantic segmentation和object detection殊途同归的一个结合点, 是个挺重要的研究问题. 我非常期待后面能同时结合semantic segmentation和object detection两者优势的instance segmentation算法和网络结构.

<img data-rawheight="390" data-rawwidth="938" src="https://pic4.zhimg.com/v2-f23301d443033658ec027fbc8da8264b_b.jpg" class="origin_image zh-lightbox-thumb" width="938" data-original="https://pic4.zhimg.com/v2-f23301d443033658ec027fbc8da8264b_r.jpg">图2. Scene Parsing (图2. Scene Parsing (MIT Scene Parsing Challenge 2016) from ADE20K dataset (ADE20K dataset). 每张图的每个物体以及物体的物体都有清楚的标注.

最后,我个人觉得之所以大家猛搞semantic segmentation而忽略instance segmentation的一个原因是没有好的数据集. pascal dataset里面一张图片里的instance数量非常少, 而且物体种类也只有20种. 这里自荐下我自己的工作, 我们组最近搞了个Scene parsing dataset and challenge (MIT Scene Parsing Challenge 2016). 这里scene parsing跟semantic segmentation最大的不同是我们包含了150类概念类别(包括离散物体类别诸如person, car, table, 也包含了很多stuff类别, 如floor, ceiling, wall) , 图片里面每个pixel都需要被predict. 分割floor, ceiling, wall这些类对于robot navigation等应用也是非常重要,但是他们并没有instance segmentation的概念. 今年我们的scene parsing challenge采用semantic segmentation的框架进行, 大家提出了不少新颖的模型, 也挺受欢迎 . 我们明年的scene parsing challenge (ICCV'17) 将设立instance segmentation track, 希望能推动instance segmentation 的进步.

再然后,其实semantic segmentation可以用到很多地方,比如说我们lab之前的一个PhD把这个用在medical imaging中癌症细胞的检测和分割(https://people.csail.mit.edu/khosla/papers/arxiv2016_Wang.pdf),拿了奖,还开了自己的startup :)

semantic segmentation 和instance segmentation的更多相关文章

  1. 论文阅读笔记二十二:End-to-End Instance Segmentation with Recurrent Attention(CVPR2017)

    论文源址:https://arxiv.org/abs/1605.09410 tensorflow 代码:https://github.com/renmengye/rec-attend-public 摘 ...

  2. Instance Segmentation入门总结

    前一阵子好忙啊,好久没更新了.最近正好挖了新坑,来更新下.因为之前是做检测的,而目前课题顺道偏到了instance segmentation,这篇文章简单梳理一下从检测.分割结果到instance s ...

  3. Instance Segmentation with Mask R-CNN and TensorFlow

    Back in November, we open-sourced our implementation of Mask R-CNN, and since then it’s been forked ...

  4. 论文笔记:Dynamic Multimodal Instance Segmentation Guided by Natural Language Queries

    Dynamic Multimodal Instance Segmentation Guided by Natural Language Queries 2018-09-18 09:58:50 Pape ...

  5. Rank & Sort Loss for Object Detection and Instance Segmentation 论文解读(含核心源码详解)

    第一印象 Rank & Sort Loss for Object Detection and Instance Segmentation 这篇文章算是我读的 detection 文章里面比较难 ...

  6. Fully Convolutional Networks for Semantic Segmentation 译文

    Fully Convolutional Networks for Semantic Segmentation 译文 Abstract   Convolutional networks are powe ...

  7. 图像分割:Semantic/Instance/Panoramic Segmentation

    一. 背景介绍 语义分割(Semantic Segmentation):对一张图片上的所有像素点进行分类,同一物体的不同实例不需要单独分割出来. 实例分割(Instance Segmentation) ...

  8. VR论文调研

    IEEE VR 2018 1.Avatars and Virtual Humans--人物和虚拟人物 2.Augmented Reality--增强现实 3.Body and Mind--人体和思想( ...

  9. 论文笔记:A Review on Deep Learning Techniques Applied to Semantic Segmentation

    A Review on Deep Learning Techniques Applied to Semantic Segmentation 2018-02-22  10:38:12   1. Intr ...

随机推荐

  1. BZOJ2006[NOI2010]超级钢琴——堆+主席树

    题目描述 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的 音乐. 这架超级钢琴可以弹奏出n个音符,编号为1至n.第i个音符的美妙度为Ai,其中 ...

  2. BZOJ1367 BOI2004Sequence(左偏树)

    首先考虑把bi和ai同时减i,问题变为非严格递增.显然如果a是一个递减序列,b序列所有数都取其中位数最优.于是划分原序列使得每一部分递减,然后考虑合并相邻两段.如果前一段的中位数<=后一段的中位 ...

  3. POJ - 1062(昂贵的聘礼)(有限制的spfa最短路)

    题意:...中文题... 昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 54350   Accepted: 16 ...

  4. day9 集合操作

    去重 s = set(python_1) # 用set会变成集合,集合自带去重能力 print(s) python_1 = list(s) # 在用list还原成列表.但是会打乱顺序 print(py ...

  5. 【POI 每日题解 #4】 [POI2008]MAF-Mafia

    [POI2008]MAF-Mafia 很容易看出是拓扑 但不容易想出来怎么做[可能是我太菜 首先 入度为零的人是肯定死不了的 接着 我们分成环和链分析 对于一个链 最多的情况就是顺着一个个开枪 最后剩 ...

  6. 软Raid5制作

    以raid5为例: 1.添加4块磁盘要求:容量.转速.接口一样的硬盘. 2.创建分区并修改ID[root@localhost ~]# fdisk /dev/sdb[root@localhost ~]# ...

  7. wordcloud词云

    借鉴别人的一个小例子,快速生成词云的代码: from wordcloud import WordCloud f = open(u'txt/AliceEN.txt','r').read() wordcl ...

  8. volatile的实现原理与应用

    Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令. vola ...

  9. ECMAScript 6 -- let和const命令

    ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. for (let i = 0; i ; i++) {console.log(i);} ...

  10. Python文件和异常

    程序和运行时数据是在内存中驻留的,涉及到数据交换的地方,通常是磁盘.网络等,因此需要IO接口. IO编程中,Stream(流)是一个很重要的概念,可以把流想象成一个水管,数据就是水管里的水,但是只能单 ...