知行编程网知行编程网  2022-05-31 19:00 知行编程网 隐藏边栏 |   抢沙发  22 
文章评分 0 次,平均分 0.0

语义分割该如何走下去?

来自 | 知乎    编辑 | 深度学习这件小事
链接 | https://www.zhihu.com/question/390783647
本文仅供交流,如有侵权,请联系删除

   问题

语义分割该如何走下去?

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


请有经验的大佬指点一下,或者推荐一些论文,或者推荐一些课程?



   高质量回答


周博磊

机器学习、深度学习(Deep Learning)、人工智能 话题的优秀回答者
https://www.zhihu.com/question/390783647/answer/1226097849

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

ADE20K数据库
https://groups.csail.mit.edu/vision/datasets/ADE20K/

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

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

语义分割该如何走下去?

很多回答在抱怨语义分割到达了研究瓶颈,分刷不上去了,我倒是觉得很大程度上是没找对问题。我上面说的这些问题,比如说如何去进行小样本物体检测与分割,如何检测和分割小件物体等,都是目前语义分割和物体检测需要去克服的难题。之所以大家没有注意到这些本质问题,是因为现有的数据库把这些问题都规避掉了。比如说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%,应该是多少呢,哪位同学来分析下也许会做成一篇比刷分有意义得多的论文:)

语义分割该如何走下去?

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

Cross-view Scene Parsing
https://view-parsing-network.github.io/

语义分割该如何走下去?

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

Unified Perceptual Parsing
https://github.com/CSAILVision/unifiedparsing

语义分割该如何走下去?

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

Notes on Image Annotation
https://arxiv.org/pdf/1210.3448.pdf

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


语义分割该如何走下去?


湃森

机器学习,深度学习,计算机视觉爱好者。
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 ~ ...

...

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


立夏之光

北京大学 计算机应用技术硕士在读
https://www.zhihu.com/question/390783647/answer/1223902660


做过一年多语义分割,来回答一下这个问题。


语义分割目前遇到了很大的瓶颈


首先是研究方式的受限。目前的研究方案,大都构建在Dilated FCN[1]之上。在这一设定下,研究者在做的都是戴着镣铐跳舞。既往的研究,能做的无非如下两种选择:


1. 设计一个更有效的语义分割head;

2. 修改feature flow,现在多用NAS形式。


其次是数据集的受限。语义分割所用的数据集需要大量标注的数据,这造成了如下两个现象:


1. 少有的几个数据集刷到接近天花板。

2. 数据量少,支撑不起 training from scratch。


现象1直接导致了近些年的工作显得“没有突破”。做过语义分割的人,肯定知道提升0.5 mIoU是怎样一种难度。这是诸多研究者们现在遇到的最大难点。


现象2则是上述“研究方式的受限”的原因。除了 @张航 等大组,一般人训练不起ImageNet,所以无法 from scratch 地训练完整的网络,于是只能在head上做功夫。


最后是领域内卷。语义分割的pipeline比较简洁,适合快速入手和尝试idea。刚入手时看过一系列文章,很容易产生“这还不容易”的错觉。于是会有一些眼高手低的现象,但仍然不缺乏一批能沉下心的能手不断刷新榜单。


于是,三座大山之下,目前领域的发展便出现了 @点点点 回答中所说的同质化,令审稿人一脸懵逼。不得不说,领域确实需要新的破局点,而非蜂拥追热。


近些年的文章,也并非没有价值


三座大山之下,仍是不断有引人思考的文章出现。


  • 远有ASPP[2]和Dilated FCN[1] ,它们定义了dilated conv这一操作,而今已是深度学习的入门基础。能成为人人皆知的基础知识,可见之影响力。
  • 近有 @Yanwei Li 的Dynamic routing,打破了上述“研究方式的受限”,让人意识到还有比NAS更灵活的存在。
  • 而一系列对注意力机制的不断思考与探索[3],也让人见识到:注意力不止是注意力。

一个领域不一定要惊天动地才有价值,稳扎稳打的推进亦让人受益匪浅。而领域内卷,反而一定程度上提升了领域的bar

  • 君不见,NL(nonlocal) based文章别处风生水起,而本领域却被连环拒稿。
  • 君不见,seg领域arxiv层出不穷,但只有个中精妙且幸运者,才能中的广传。

许多语义分割的文章,目标不止本领域

很多人搞语义分割,是因为它是一个优良的representation learning的试兵厂。其简洁的pipeline,方便轻松地进行新模块的探索。

举自己的EMANet[4]为例,其作为一种general的模块,本人对它的期望不只是分割领域。倘若资源充足,本人何尝不想学习ResNest[5],直接做成backbone。而很多人眼中它就是个注意力,而我更看中他的低秩性质。我们后续的工作也在继续挖掘这一性质,而彻底告别注意力的外壳。

一些方法论则看似弱鸡,实则并不浅薄

这里援引下高赞回答[6]的第五条:DNN太枯燥,融入点传统视觉的方法搞成end-to-end训练“融入”一词轻描淡写,但个中奥妙却被掩藏。

深度学习时代,人们忽视了太多经典的基础。很多过去早已研究透彻的东西,被重新发明一套名词。与之相比,正确的价值观,应该是重视前人的宝贵探索,并在这个繁杂逐利的时代将之renaissance。与其重造轮子,倒不如思考下DL的局限,而经典可以为之补足什么。

Lecun大力提倡的Differentiable programming[7],恰是这一思潮的重要武器。有经验的人会告诉你,“搞成end-to-end”从来不是一蹴而就。这一功力,不易拿捏。过轻则网络难以训练,过重则丧失优异性质,完全沦为标准网络。鄙人的EMANet[4],算作这类方法里最low的范例。但是跟我讨论过的人都知道,只靠纯粹简洁E、M、R公式难以work,背后的付出多在Bases Maintenance上。

而前段时间热评的PointRend[8],又有多少人能开脑洞从rendering迁移到seg;又有多少人能这“简陋”算法高效实现且跑出高性能?而Nonlocal[9]出现之前,又有多少人思考到了self-attention和经典非局部算子的联系?

盖大智者,能思其本质;而飘飘者,啖笑其浅薄。

遇到瓶颈,正适合高追求者入局

对强者:

领域陷入瓶颈时,正是入局变革的好时机。当总结出了种种不足,恰是对其rethink的最好时候。一个领域充斥“没啥突破”的文章时,一篇高质量的文章,定能引得众人赏识。鹤立鸡群,总比强强对抗来的容易,不是么?

领域内的研究者,何尝不希望若干破局者的到来?诸多人陷入有限资源的内卷,都希望能有新的着力点。一篇高质量文章的出炉,最差的待遇也是成百上千引用者的追逐。对于有相关领域经验,且对representation learning有深入思考的同行,语义分割是你们很好的试金石。

对小白:

全监督的语义分割确实门槛略高,需要丰富的机器资源,稳扎稳打扫平trick的耐心,还需要足够开阔的思维来衍生漂亮而实用的idea,所以鄙人也不建议盲目入坑。

但是语义分割也不止标准任务, @大大拉头 @ICOZ @杨奎元-深动 等回答中列出了一系列尚有挺大空间的明路,它们也是值得探索的任务。@湃森 列出的(1-8)也是一些可行思路。

至于 @湃森 列的积木(ABCD...),不得不发论文来求毕业者,万不得已时,就参考下吧。。。

对所有:道路千万条,求真第一条。造假一时爽,同门两行泪。

参考

1. ^abYu, Fisher, Vladlen Koltun, and Thomas Funkhouser. "Dilated residual networks." Proceedings of the IEEE conference on computer vision and pattern recognition. 2017. https://arxiv.org/abs/1705.09914^Chen, Liang-Chieh, et al. 
2. "Deeplab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected crfs." IEEE transactions on pattern analysis and machine intelligence 40.4 (2017): 834-848. http://arxiv.org/abs/1606.00915
3. ^语义分割中的Attention和低秩重建https://zhuanlan.zhihu.com/p/77834369
4. ^ab[ICCV 2019 Oral] 期望最大化注意力网络 EMANet 详解 https://zhuanlan.zhihu.com/p/78018142
5. ^ResNeSt 之语义分割,ADE20K 全新 SoTA 47.6% - 知乎 https://zhuanlan.zhihu.com/p/136105870
6. ^语义分割该如何走下去?- 湃森的回答 - 知乎  http://www.zhihu.com/question/390783647/answer/1221984335
7. ^Differentiable programming-Wikipedia https://en.wikipedia.org/wiki/Differentiable_programming
8.^Kirillov, Alexander, et al. "PointRend: Image Segmentation as Rendering." arXiv preprint arXiv:1912.08193 (2019). http://xxx.itp.ac.cn/pdf/1912.08193v2 
9. ^Wang, Xiaolong, et al. "Non-local neural networks." Proceedings of the IEEE conference on computer vision and pattern recognition. 2018. https://arxiv.org/abs/1711.07971


<pre style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><p style="max-width: 100%;letter-spacing: 0.544px;white-space: normal;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;widows: 1;line-height: 1.75em;margin-left: 0px;margin-right: 0px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"></strong></p>
<pre style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><p style="max-width: 100%;letter-spacing: 0.544px;white-space: normal;color: rgb(0, 0, 0);font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;widows: 1;line-height: 1.75em;box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;letter-spacing: 0.5px;font-size: 14px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;font-size: 16px;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;letter-spacing: 0.5px;box-sizing: border-box !important;overflow-wrap: break-word !important;">—</span></strong>完<strong style="max-width: 100%;font-size: 16px;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;letter-spacing: 0.5px;font-size: 14px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;font-size: 16px;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;letter-spacing: 0.5px;box-sizing: border-box !important;overflow-wrap: break-word !important;">—</span></strong></span></strong></span></strong></p><section style="max-width: 100%;letter-spacing: 0.544px;white-space: normal;font-family: -apple-system-font, system-ui, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;widows: 1;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section powered-by="xiumi.us" style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="margin-top: 15px;margin-bottom: 25px;max-width: 100%;opacity: 0.8;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="max-width: 100%;letter-spacing: 0.544px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section powered-by="xiumi.us" style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section style="margin-top: 15px;margin-bottom: 25px;max-width: 100%;opacity: 0.8;box-sizing: border-box !important;overflow-wrap: break-word !important;"><section><p style="margin-bottom: 15px;padding-right: 0em;padding-left: 0em;max-width: 100%;color: rgb(127, 127, 127);font-size: 12px;font-family: sans-serif;line-height: 25.5938px;letter-spacing: 3px;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;color: rgb(0, 0, 0);box-sizing: border-box !important;overflow-wrap: break-word !important;"><strong style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;font-size: 16px;font-family: 微软雅黑;caret-color: red;box-sizing: border-box !important;overflow-wrap: break-word !important;">为您推荐</span></strong></span></p><p style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="font-size: 14px;">如何快速使用BERT?</span></p><p style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="font-size: 14px;">GitHub重大更新:在线开发上线,是时候卸载IDE了</span><br  /></p><p style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">有了这个神器,轻松用 Python 写个 App</span></p><p style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;">「最全」实至名归,NumPy 官方早有中文教程</span><br style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;"  /></p><p style="margin-top: 5px;margin-bottom: 5px;padding-right: 0em;padding-left: 0em;max-width: 100%;min-height: 1em;font-family: sans-serif;letter-spacing: 0px;opacity: 0.8;line-height: normal;box-sizing: border-box !important;overflow-wrap: break-word !important;"><span style="color: rgb(87, 107, 149);-webkit-tap-highlight-color: rgba(0, 0, 0, 0);cursor: pointer;max-width: 100%;font-size: 14px;box-sizing: border-box !important;overflow-wrap: break-word !important;">史上最烂的项目:苦撑12年,600多万行代码...</span></p></section></section></section></section></section></section></section></section>
语义分割该如何走下去?

本篇文章来源于: 深度学习这件小事

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享