语义分割该如何走下去?

Q:请有经验的大佬指点下方向。本人研究方向是语义分割(研一),但目前学习有些迷茫,目前感觉在自己只知道一些fcn,unet,deeplab等模型,看的论文也大多是语义分割模型构建之类的,然后在自己做模型也就是(空洞卷积,编码解码结构,restnet,fuse,concat一顿组装)结果还惨不忍睹,感觉自己自从看完哪些必要的网络结构模型外,已经很久没有提升了。不知道自己应该如何提升,看的论文除了构建模型结构,还要看哪些?或者学习哪些知识?

 

 

作者:Jianping Shi
链接:https://www.zhihu.com/question/390783647/answer/1233078978
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

关注了这个帖子好几天,最初觉得一语道破各种trick的回答大快人心,道出了几年中我的心中所想,再后来随着昨天李沐团队风波的帖子,渐渐感受到的是,当技术突破趋于平缓后,行业中的众人无可奈何,于是来给大家讲讲这几年积累的不同的思路

时间线拉到五年前,那时快要phd毕业的我已经将近消极怠工快一年。。。达到毕业要求后,停下了写(那些不那么work的)paper的节奏,读了很多深度学习的论文,眼看着行业这两年突飞猛进,各大数据集精度每年上涨10%,身边各位大佬们都在做着前一年想都不敢想的事情,想着什么时间我也能真正做些work的,能有真正突破的,有用的技术

当时笔记本上立的flag

随后毕业加入了商汤。那时候的商汤还是个大研究院,我对商汤的初始工作的认知来自于MSRA,因为这边的leader和小伙伴们也都来自于MSRA。。。5月到北京跟旭东聊,因为分类、检测、关键点这些重要方向都有人在做,于是分配给了我语义分割的方向,于是在随后的好几年中,我的小组的名字,除了叫建萍组,就叫是图像视频分割组。。。看来也真是很适合回答这个问题的了。。。

15年的商汤并没有什么确定的行业方向,在这一年,我一直在复现各个方向的算法,也在做些遥感、人像分割的行业应用。16年暑假师弟恒爽来实习,一起做了PSPNet的方案,终于如愿以偿拿到了第一个世界第一,并把各个leaderboard刷高10个点,达到了一年前梦想的状态。

那时的感觉非常棒,自己想要的达到的目标终于实现了,做了一些work的方案,推动的行业的边界,把圆圈上的一个小点往前推了一点点。在此特别感谢恒爽给力的输出,也要感谢公司丰富的计算资源,训练平台组/IT组的大力支持解决各类代码隐藏bug(特指多卡BN)、集群相关问题,以及公司/mmlab里各个train model的大佬提供的base model。后来想想看,这样的成绩确实无法在一年前读PhD的时候达到,没有这么多GPU做大规模训练尝试这么多方案,也没有这么多人能够协助系统的解决大数据、大实验量遇到的问题,更没有各位train base model的大佬提供的模型,推进深度学习的边界确实是工业界更有效

语义分割该如何走下去?_第1张图片

下个问题,16年之后做了什么,也就是语义分割该如何走下去呢?当时也在想这个问题。。。其实核心原因是确实Cityscapes和ADE20K再刷10个点太难了。。。。于是,接下来的几年,绕开核心问题,主要做了几个方向

语义分割问题的各类Extension:

  • 怎么训分割小模型 : ICNet
  • 怎么做视频分割 : 刷了Davis Dataset,低延迟的视频分割算法
  • Segmentation+各类Attention : PSANet,Context Encoding for Semantic Segmentation

语义分割问题的兄弟问题们(长得像Segmentation的各类问题)

  • Instance Segmentation(题目就带Segmentation,当然算兄弟问题),刷了几年coco比赛:PANet,HTC,也算是把Detection和Instance Segmentation在coco上刷高了10个点
  • Object Detection(Instance Segmentation也就同时做了Object Detection):Libra-RCNN
  • 车道线检测(其实应该叫车道线分割问题):Spatial CNN
  • Stereo Matching(全像素预测问题):SegStereo(没错,就是Segmentation+Stereo,走A+B的方向)
  • Depth/Optical Flow(全像素预测问题,试图使用CNN来解决几何问题):GeoNet

再往后,机缘巧合负责了公司的自动驾驶方向,有了更多的业务压力,也在实际过程中确认了哪些才是真实场景中的核心问题,又去推动其他的一些方向

怎么能够更高效的利用数据

  • Domain Adaptation(怎么更好的把各类不同源的数据用起来):Penalizing Top Performers: Conservative Loss for Semantic Segmentation Adaptation、IBN-Net
  • 利用GAN生成数据来扩充训练集:Generative Adversarial Frontal View to Bird View Synthesis、Towards Instance-level Image-to-Image Translation

Lidar感知方向(L4的自动驾驶使用点云比摄像头现阶段更可靠)

  • Lidar检测:PV-RCNN
  • Lidar MOT:mmMOT

做了这么久的Segmentation,总结下语义分割本身的问题,Segmentation给出像素级的输出,在学术界看,这是最自然的图像表达形式,但是在实际应用中却并不好用。其核心原因是Segmentation没有结构化的输出,没有办法让下游应用更有效的接入,不像Detection、Keypoint、Tracking等的应用本身就是下游需要的输入形式。所以语义分割可以表示一切,却也需要碰到每个问题都需要design一套后处理来接入。如果我们需要更结构化的输出表示,那么或多或绕会绕回到Bbox, Keypoint, 3D Bbox等形式。显然的,Instance Segmentation也有类似问题,所以这个问题定义本身更像是学术界制造的产物,不如Detection好用,大多数情况没必要预测mask。

但是语义分割的好处,首先,可以将分割问题看做其他问题的backbone的优化,所以分割所做的各种module,可以直接加到其他方案中(形成所谓A+B的套路方法),反之亦然。其次,同语义分割类似的像素级应用,把最后一层softmax换成回归,你将收获一大批其他同类型问题(同理可以套用A+B到C等的相关套路)。

但是很遗憾的是,在实际业务的应用中,因为有着各种算力限制、芯片支持方案限制,大部分的学术界Paper的方案都不太work,或者是算力换取的性能提升不够。深度学习的精髓越来越变成了如何快速、准确的获取训练数据。在此,工业界的研发与学术界的论文开始走上了不同的岔路,怎么更好的定义问题(怎么教标注员标数据),怎么更高效的标注数据(怎么标便宜)变得更为重要

当然,打了这么多比赛,也总结出了打比赛的套路,假如某个领域在一个比赛周期内一年的时间中,能够持续的将核心指标每年提升10%,那么这个行业是飞速成长的,技术更新换代很快,能带来的业界的机会也非常多,想象力也非常大(但不去做你怎么知道做不到呢?)。反之,整个行业技术在缓慢改进阶段,之前快速进步时遗留的各种问题都会暴露出来,技术的突破带来的改进会越来越少,能够体系化作战,真正解决实际问题反而变成更重要的方向。

再拓展下,当精度提升2%个点对项目推进、业务发展没有本质帮助时,会慢慢发现,团队管理、战略方向选择等,本身变成了更重要的事项。然而,他们大多也可以通过像做Research一样,走着如下的套路:定义问题、文献调研、复现SOTA、分析实验、总结与提出新方案(毕竟前人已经写过很多管理学、战略分析、精益运营的文献,还开了很多的课程)

于是,语义分割这个问题本身并不完全重要,学会做Research的思路,并能够在新遇到的、更重要的问题上举一反三更重要。毕竟孙正义的第一桶金也是通过A+B的idea获得的(https://new.qq.com/omn/20180326/20180326A1OM24.html)

语义分割该如何走下去?_第2张图片

 

编辑于 05-20

 

 

======================================

 

作者:周博磊
链接:https://www.zhihu.com/question/390783647/answer/1226097849
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

作为ADE20K数据库的作者来回答一下。首先感谢各位做语义分割的同学对ADE20K数据库的厚爱,准确度节节攀升。

我还依稀记得当年我跟@赵行 两人在Stata的黑屋子里揣摩如何从所有1000多个标定出的物体列表中选取出做语义分割的物体。也是摸着石头过河,当时按照像素量排序出来前150个物体,占有了两万张图片里大概92%的像素,索性就确定下来了。

其实整个ADE20K数据库还有其他很有用的信息,杂志论文里面也有一些分析,感兴趣的同学可以认真去读读。有两点值得一提,第一点是我们在场景图片标定的时候是采用的Open Vocabulary的方式。就是说我们并没有事先定义需要标定的物体列表,而是让标定者标定给定的场景图片里面的所有物体,当遇到某个新的不在标定列表的物体的时候,建立一个词条,再进行标定。这样就能保证穷举标定场景里面可能遇到的所有物体,最后两万张图里收集到了超过1000多个物体种类。当然,这也会带来很多技术问题,比如说大量的小样本的物体,所有标定物体呈现power law分布,以及某些物体像素数量极少(如钥匙等等),注意下图所有标定物体的分布图,纵轴是log-scale。这也导致了我开头说的排序选取物体的问题,选取的150个物体占了92%的像素,换句话说,大概有900多个物体在场景中只占有不到8%的像素!

语义分割该如何走下去?_第3张图片

很多回答在抱怨语义分割到达了研究瓶颈,分刷不上去了,我倒是觉得很大程度上是没找对问题。我上面说的这些问题,比如说如何去进行小样本物体检测与分割,如何检测和分割小件物体等,都是目前语义分割和物体检测需要去克服的难题。之所以大家没有注意到这些本质问题,是因为现有的数据库把这些问题都规避掉了。比如说COCO数据库,人为定出80类物体,手工平衡标定样本的数量,里面还有很多诸如baseball pat这种我们一辈子见不到几次的物体。自然场景中物体的分布本来就是power law的,我们需要去直面这些few-shot learning的问题。

说得有点远了,拉回来。我们在建立ADE20K数据库中另外值得一提的是,测试annotation consistency的小实验。我们让这个数据库的唯一标定者Adela(身份揭秘拉到回答最后面)事隔半年过后,再对随机选出的61张图进行重复标定,然后对比两次标定的一致度。我们得到的是82%,这还是同一个标定者标定出来的结果,可以想象如果是不同标定者标定同一张图的,其不一致程度会更高。在杂志论文的3.3章节里我们也分析了出现的误差,比如说标定差异度,以及物体的不同命名等等,下图是两次标定的差异比较。这里引出的一个有趣的推论是,人对ADE20K数据库上场景的分割至多能达到80%多的像素准确度,那这很可能也就是语义分割算法能达到的upper bound,并不是大家想象的100%,是不是有点出乎意料?这个annotation consistency问题和算法能达到的upper bound的问题在很多数据库上都被忽视了,比如说COCO数据库。物体检测算法在COCO数据库上的upper bound显然不是100%,应该是多少呢,哪位同学来分析下也许会做成一篇比刷分有意义得多的论文:)

语义分割该如何走下去?_第4张图片

语义分割问题本身我也带同学做过一些新的尝试。比如说跟Bowen Pan同学一起做的从第一视角输入分割顶部语义图的Cross-view Scene Parsing

语义分割该如何走下去?_第5张图片

以及跟Tete Xiao

@Jason Hsiao

一起做的从单张图片分割出多层次语义概念的Unified Perceptual Parsing. 这些都是语义分割方向一些新的有趣尝试。

语义分割该如何走下去?_第6张图片

最后来揭秘一个八卦,ADE20K为啥叫ADE20K。20K是指图片数量,那为什么叫ADE呢?大家注意到作者名单里面有位叫Adela Barriuso的,对,ADE就是Adela的缩写。ADE20K数据库是由Adela女士一个人孜孜不倦花了>8年的时间非常精细地标定出来(咋舌的精细程度大家可以去对比下COCO数据库的标定)。另外Adela还跟Antonio一起写了一篇挺有趣的分享整个标定过程的arXiv paper: Notes on Image Annotation.

至于Adela出于什么样的动机去标定这么个数据库,嗯,致敬伟大的母爱。

语义分割该如何走下去?_第7张图片

 

编辑于 05-17

 

 

==============================================

 

作者:湃森
链接:https://www.zhihu.com/question/390783647/answer/1221984335
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

说句泼冷水的话,对大多数研究从业人员来说语义分割目前已经达到瓶颈期了。

顶会顶刊paper看来看去真没啥突破:

(1)手动设计网络结构 -> NAS搜索;

(2)固定感受野 -> 引入空间注意力做感受野自动调节;

(3)效果提升不上去 -> 换个思路做实时分割来对比结果;

(4)自监督太热门 -> 引入弱监督 (GAN, 知识蒸馏, ...) + trick = 差不多的score;

(5)DNN太枯燥,融入点传统视觉的方法搞成end-to-end训练;

(6)CNN太单调,配合GCN搞点悬念;

(7)嫌2D太low逼,转3D点云分割;

觉得太懒?积木堆起:A+B,A+B+C,A+B+C+D,...

积木总结:

A-注意力机制:SE ~ Non-local ~ CcNet ~ GC-Net ~ Gate ~ CBAM ~ Dual Attention ~ Spatial Attention ~ Channel Attention ~ ... 【只要你能熟练的掌握加法、乘法、并行、串行四大法则,外加知道一点基本矩阵运算规则(如:HW * WH = HH)和sigmoid/softmax操作,那么你就能随意的生成很多种注意力机制】

B-卷积结构:Residual block ~ Bottle-neck block ~ Split-Attention block ~ Depthwise separable convolution ~ Recurrent convolution ~ Group convolution ~ Dilated convolution ~ Octave convolution ~ Ghost convolution ~ ...【直接替换掉原始卷积块就完事了】

C-多尺度模块:ASPP ~ PPM ~ DCM ~ DenseASPP ~ FPA ~ OCNet ~ MPM... 【好好把ASPP和PPM这两个模块理解一下,搞多/减少几条分支,并联改成串联或者串并联结合,每个分支搞点加权,再结合点注意力或者替换卷积又可以组装上百种新结构出来了】

D-损失函数:Focal loss ~ Dice loss ~ BCE loss ~ Wetight loss ~ Boundary loss ~ Lovász-Softmax loss ~ TopK loss ~ Hausdorff distance(HD) loss ~ Sensitivity-Specificity (SS) loss ~ Distance penalized CE loss ~ Colour-aware Loss...

E-池化结构:Max pooling ~ Average pooling ~ Random pooling ~ Strip Pooling ~ Mixed Pooling ~...

F-归一化模块:Batch Normalization ~Layer Normalization ~ Instance Normalization ~ Group Normalization ~ Switchable Normalization ~ Filter Response Normalization...

G-学习衰减策略:StepLR ~ MultiStepLR ~ ExponentialLR ~ CosineAnnealingLR ~ ReduceLROnPlateau ~...

H-优化算法:BGD ~ SGD ~ Adam ~ RMSProp ~ Lookahead ~...

I-数据增强:水平翻转、垂直翻转、旋转、平移、缩放、裁剪、擦除、反射变换 ~ 亮度、对比度、饱和度、色彩抖动、对比度变换 ~ 锐化、直方图均衡、Gamma增强、PCA白化、高斯噪声、GAN ~ Mixup

J-骨干网络:LeNet ~ ResNet ~ DenseNet ~ VGGNet ~ GoogLeNet ~ Res2Net ~ ResNeXt ~ InceptionNet ~ SqueezeNet ~ ShuffleNet ~ SENet ~ DPNet ~ MobileNet ~NasNet ~ DetNet ~ EfficientNet ~ ...

...

语义分割从入门到放弃...

你可能感兴趣的:(人工智能)