今天的分享者是旷视余昌黔,来自旷视研究院 Detection 组,他将向我们分享旷视研究院 Detection 组近两年持续在做的 Semantic Segmentation 相关工作,代表性成果主要有 1)GCN (CVPR2017)、2)DFN (CVPR2018)、3)BiSeNet (ECCV2018)。我们先来看一段演示 Demo:

回顾

介绍算法之前,我们先简单回顾一下语义分割(semantic segmentation)的历史。众所周知,计算机视觉有三大核心任务——分类、检测、分割,三者号称是深度学习炼丹师的“三大浪漫”。分类针对整张图片,检测针对图片的局部,语义分割则如图1所示,旨在给输入图片上的每个像素赋予一个正确的语义标签。

图 1:PASCAL VOC 2012 图片示例

传统的分割算法我们先按下不表。时间拨回到 2015 年,语义分割江湖之中,FCN 横空出世,自此 DL/NN 方法席卷了整个语义分割领域。短短几年,各个 Benchmark 的 state-of-the-art 不断刷新,成果喜人。

FCN 前期阶段,研究重点主要是解决“网络逐渐衰减的特征尺寸和需要原图尺寸的预测之间的矛盾”,换言之,就是如何解决网络不断 downsample 造成的信息损失;期间百家争鸣,百花齐放,涌现了希望保存或者恢复信息的 unpool、deconv 等方法,也出现了进行结构预测的各种花式 CRF 方法。

“大道之争”之中,碰撞出了两个最重要的设计:U-shape Structure 和 Dilation Conv,据此形成当下语义分割领域网络设计最常见的两大派系:

1)U-shape 联盟以 RefineNet、GCN、DFN 等算法为代表;

2)Dilation 联盟以 PSPNet、Deeplab 系列方法为代表;

随着 Base Model 性能不断提升,语义分割任务的主要矛盾也逐渐演变为“如何更有效地利用 context”;

这中间又是一番腥风血雨,我们今天介绍的 3 位主角也在其中贡献了一份力量。

介绍

语义分割任务同时需要 Spatial Context 和 Spatial Detail 。今天我们介绍的三种算法都将从这两方面分别提出各自对应的解决方案。整体对比如下:

图 2:GCN、DFN、BiSeNet针对Spatial Context & Spatial Detail的解决方案

Global Convolutional Network

第一位主角是 CVPR2017 算法 Global Convolutional Network(GCN),江湖人送外号“Large Kernel”。论文 Arxiv 链接请见:arxiv.org/abs/1703.0271。

-Motivation

GCN 主要将 Semantic Segmentation分解为:Classification 和 Localization两个问题。但是,这两个任务本质对特征的需求是矛盾的,Classification需要特征对多种Transformation具有不变性,而 Localization需要对 Transformation比较敏感。但是,普通的 Segmentation Model大多针对 Localization Issue设计,正如图3(b)所示,而这不利于 Classification。

图 3:A)分类网络;B)卷积分割网络,为localization设计;C)我们的全局卷积网络

所以,为了兼顾这两个Task,本文提出了两个 Principle:

1. 从 Localization 来看,我们需要全卷积网络,而且不能有全连接或者全局池化等操作丢失位置信息。

2.从 Classification 来看,我们需要让 Per-pixel Classifier 或者 Feature Map 上每个点的连接更稠密一些,也就需要更大的 Kernel Size,如图3(c) 所示。

-网络结构

根据这两条 Principle,本文提出了Global Convolutional Network(GCN)。如图4所示,这个方法整体结构正是背景介绍中提到的U-shape结构,其核心模块主要包括:GCN 和 BR。

图 4:网络结构

此处主要介绍 GCN 设计。正如图 4(b) 所示,它采用了较大 Kernel Size 的卷积核,来同时解决上述的两个 Issue;然后根据矩阵分解,利用 1×k+ k×1 和 k×1+1×k 的卷积来替代原来的 k×k 大核卷积。相对于原本的大核卷积,该设计能明显降低参数量和计算量。图 5 可视化了 Large Kernel Conv 和 普通 Conv 网络有效感受野的对比。

图 5:Large Kernel Conv 和 普通 Conv 网络效感受野的可视化对比

可以看到,Large Kernel Conv 的有效感受野显著增大。

-实验

文中为了验证 Large Kernel Conv 的有效性,对比了不同 Size的 Kernel,可以看到 Kernel Size=15 时比 Base Network 整整高了 5.5% mean IoU。

图 6

此外,文中还对 Large Kernel Conv 进行了一系列讨论。

● GCN 的有效是否得益于更多的参数?

在 GCN 中,随着 Kernel Size 的增加,网络参数也随之增长,那么网络性能的提升是否得益于使用了更多的参数?为了证明提升来自于设计的有效性而不是增加了复杂度,文中设计了不同 Kernel Size 的 GCN 和普通 Conv 的对比实验。

图 7

通过实验结果可知,随着 Kernel Size 的增加,普通 Conv 的参数量远大于GCN,但是 GCN 的性能却持续地优于普通 Conv。

● GCN使用 Large Kernel Size 增大了感受野,是否可以通过堆叠多个 Small Kernel Size的 Conv 来替代?文章为此设计了实验对比两者的结果。

图 8

可以看到 GCN 依然优于普通 Conv 的堆叠,尤其是在较大 Kernel Size 的情况下。笔者认为这是一个很有价值的实验,可以启发我们去思考关于网络感受野的问题。我们以往认为,通过堆叠多个小核 Conv 可以达到和大核 Conv  一样的感受野,同时计算量还更少。最常见的应用比如 VGG-Net。但是,实际上并非如此。

随着网络深度的提升,理论上网络的感受野大多可以直接覆盖全图,但是实际有效感受野却远小于此。笔者的理解是对同一个 Feature Map 进行卷积,边缘区域进行计算的次数会小于中心区域,所以随着 Conv 的不断堆叠,实际上会导致边缘感受野的衰减,即有效感受野会远小于理论感受野。

最后文中给出了在 PASCAL VOC 2012 和 Cityscapes 上完整的 Training Strategy,这在当时还是很良心的,之前的一些 Paper 对此都语焉不详。具体详细的 Training 过程请参考原文。

最终 GCN 在 PASCAL VOC 2012 和 Cityscapes 上都取得了不错的结果。

-PASCAL VOC 2012

图 9

-Cityscapes

图 10

Discriminative Feature Network

接下来出场的是 CVPR2018 算法 Discriminative Feature Network(DFN)。论文Arxiv链接请见:https://arxiv.org/abs/1804.09337。详细解读请见:CVPR 2018 | 旷视Face++提出用于语义分割的判别特征网络DFN。

-Motivation

本文总结了现有语义分割方法仍然有待解决的两类 Challenge(如图 11所示):

● Intra-class Inconsistency(具有相同的语义标签,不同的表观特征的区域

● Inter-class Indistinction(具有不同的语义标签,相似的表观特征的区域)

图 11

所以,本文从宏观角度出发重新思考语义分割任务,提出应该将同一类的 Pixel 考虑成一个整体,也就需要增强类内一致性,增大类间区分性。总结而言,我们需要更具有判别力的特征。

-网络结构

本文提出的DFN主要包括两部分:Smooth Network 和 Border Network,如图 12 所示。

图 12

Smooth Network 主要解决类内不一致性问题。文中认为类内不一致性问题主要来自Context 的缺乏。进而,我们需要引入 Multi-scale Context 和 Global Context;但是,不同 Stage 的特征虽然带来了 Multi-scale Context,与此同时也带来了不同的判别能力;因此,我们需要对这些具有不同判别力的特征进行筛选,这就诞生了其中核心的设计——Channel Attention Block(CAB)。

CAB 利用相邻 Stage 的特征计算 Channel Attention 然后对 Low-stage 的特征进行筛选,如图13 所示。因为文中认为,High-stage 的特征语义信息更强,更具有判别力。

图 13

此外,本文首次在 U-shape 结构中采用 Global Average Pooling,这个设计非常有效。ParseNet 首次在语义分割中使用 Global Average Pooling 提取 Global Context,而之后的 PSPNet,Deeplab V3 将其在 Dilation 阵营发扬光大。而本文将其应用 U-shape 的High-stage,并命名为“V-shape”。我们尝试将其迁移到 Detection 中的 FPN 结构,结果证明同样有效。

Border Network 主要解决类间低区分性的问题。文中认为具有相似表观特征的不同区域很容易被网络混淆,尤其是相邻之时。所以,需要增大特征之间的区分性。为此文章显式地引入了 Semantic Boundary 来引导特征学习。因为 Low-stage 主要关注一些细节边缘区域,而随着语义的增强,High-stage 的特征才是更多关注语义边界,所以 Border Network 采用了“反 U-shape”结构。

-实验

文中进行了丰富的消融实验和可视化分析。

首先是对 Smooth Network 各部分的消融实验分析。可以看到 Smooth Network 非常有效,在PASCAL VOC 2012 Validation Set上可以达到 Single Scale 79.54% mean IoU。

图 14

而通过可视化输出,可以看到 Smooth Network 确实可以将类内区域变得更加一致,如图15所示。

图 15

同时,文中还对 Smooth Network 和 Border Network 进行了消融实验分析。

通过可视化Border Network的输出,可以看到 Border Network 确实可以很好地关注到 Semantic Boundary 区域,如图16所示。

图 16

最终,DFN 在 PASCAL VOC 2012 和 Cityscapes 上性能都达到了当时的 state-of-the-art。

图 17

BiSeNet

最后出场的主角是 ECCV 2018 算法 Bilateral Segmentation Network(BiSeNet)。前面两个算法主要关注 Accuracy,探索 mean IoU 的极限;而 BiSeNet 关注于做出一个既快又好的实时语义分割算法。最终该算法在 Cityscapes 上能取得 68.4% mean IoU 105 FPS (NVIDIA Titan XP)的好成绩。当然,我们希望这篇工作能抛砖引玉,尝试探讨到底什么架构才更适合 Segmentation 任务,什么框架才能很好地同时获得充足的 Context 和丰富的空间信息?论文 Arxiv 链接请见:arxiv.org/abs/1808.0089。

详细解读请见:ECCV 2018 | 旷视提出双向网络BiSeNet:实现实时语义分割。

-Motivation

本文对之前的实时性语义分割算法进行了总结,发现当前主要有三种加速方法:1) 通过 Crop 或者 Resize 限制输入图片进而减少计算量;2) 减少网络通道数,尤其是 Early Stage;3) 还有像 ENet 类似的方法直接丢掉最后一个 Stage,如图18(a)所示。

这些提速的方法会丢失很多 Spatial Details 或者牺牲 Spatial Capacity,从而导致精度大幅下降。为了弥补空间信息的丢失,有些算法会采用 U-shape 的方式恢复空间信息。但是,U-shape 会降低速度,同时很多丢失的信息并不能简单地通过融合浅层特征来恢复,如图 18(b) 所示。

图 18

总结而言,实时性语义分割算法中,加速的同时也需要重视空间信息。基于这些观察,本文提出了一种新的解决方案 Bilateral Segmentation Network(BiSeNet)。

-网络结构

BiSeNet 区别于 U-shape 和 Dilation 结构,尝试一种新的方法同时保持 Spatial Context 和 Spatial Detail 。所以,我们设计了 Spatial Path和Context Path 两部分。顾名思义,Spatial Path 使用较多的 Channel、较浅的网络来保留丰富的空间信息生成高分辨率特征;Context Path 使用较少的 Channel、较深的网络快速 downsample来获取充足的 Context。基于这两路网络的输出,文中还设计了一个 Feature Fusion Module(FFM)来融合两种特征,如图19所示。

图 19

Spatial Path 只包含三个  的 Conv+BN+Relu,输出特征图的尺寸为原图 1/8。为了访存比考虑,此处并没有设计 Residual 结构。

Context Path 可以替换成任意的轻量网络,比如 Xception,ShuffleNet 系列,MobileNet 系列。本文主要采用 Xception39 和 ResNet-18 进行实验。可以看到,为了准确率考虑,Context Path 这边使用了类似 U-shape 结构的设计。不过,不同于普通的 U-shape,此处只结合了最后两个 Stage,这样设计的原因主要是考虑速度。此外,和 DFN 类似,Context Path 依然在最后使用了 Global Average Pooling 来直接获取 Global Context。

最后,文章中提到因为两路网络关注的信息不同,属于 Different Level 的特征,所以文中设计了一个 FFM 结构来有效融合两路特征。

-实验

本文从精度和速度两个维度,进行了丰富的分析实验。

首先文中分析了 Context Path 这边使用不同变体的 U-shape 结构的速度和精度的对比。

图 20

此处,U-shape-8s 就是文中所展示的结构,U-shape-4s 则是普通的 U-shape 设计,即融合了更多 stage 特征。可以看到,U-shape-4s 的速度会明显慢于 U-shape-8s.

文中还对 BiSeNet 的各个部分进行了消融分析实验。

图 21

文中还给出了 BiSeNet 的 GFLOPS、参数量等信息,以及在不同硬件平台不同分辨率下的速度对比。

图 22

文中给出了 BiSeNet 分别与实时性算法和非实时性算法比较的结果。

与实时性算法比较:

图 23

虽然 BiSeNet 是实时性算法,但是它的精度甚至比一些非实时性算法还高。

与非实时性算法比较:

图 24

可以看到,BiSeNet 是一种很有效的设计。当替换上大模型之后,精度甚至高于 PSPNet 等算法。另外,需要注意的是,为了和非实时性算法进行比较,在关注精度这部分实验 BiSeNet 使用的不同于关注速度部分的 Setting,具体细节详见论文。BiSeNet 算法对实时性语义分割算法提出了新的思考,在提升速度的同时也需要关注空间信息。同时,该设计也是一次对 Segmentation Backbone 的思考,希望设计一个对 Segmentation 任务友好的框架,当然现在还存在许多需要改进的地方。此外,该方法不仅仅可应用于实时性语义分割算法,也可应用于其他领域,尤其是在对 Spatial Detail 和 Context 同时有需求的情况下。据笔者了解,已有研究将其应用于 Potrait Segmentation。

重要的事情

  • 我们的 DFN 和 BiSeNet 均已开源,后续将有更多的语义分割算法复现开源出来,欢迎大家 Star 和 Contribute:https://github.com/ycszen/TorchSeg。

-参考文献

[1] Peng, C., Zhang, X., Yu, G., Luo, G., & Sun, J. (2017). Large kernel matters—improve semantic segmentation by global convolutional network. In Computer Vision and Pattern Recognition (CVPR), 2017 IEEE Conference on(pp. 1743-1751). IEEE.

[2] Yu, C., Wang, J., Peng, C., Gao, C., Yu, G., & Sang, N. (2018). Learning a Discriminative Feature Network for Semantic Segmentation.arXiv preprint arXiv:1804.09337.

[3] Yu, C., Wang, J., Peng, C., Gao, C., Yu, G., & Sang, N. (2018, September). Bisenet: Bilateral segmentation network for real-time semantic segmentation. InEuropean Conference on Computer Vision(pp. 334-349). Springer, Cham.

[4] Long, J., Shelhamer, E., & Darrell, T. (2015). Fully convolutional networks for semantic segmentation. InProceedings of the IEEE conference on computer vision and pattern recognition(pp. 3431-3440).

[5] Ronneberger, O., Fischer, P., & Brox, T. (2015, October). U-net: Convolutional networks for biomedical image segmentation. InInternational Conference on Medical image computing and computer-assisted intervention(pp. 234-241). Springer, Cham.

-解读者介绍

余昌黔,华中科技大学人工智能与自动化学院在读博士,旷视研究院算法实习生,语义分割算法DFN、BiSeNet 第一作者,研究方向涵盖语义分割、全景分割、快速分割、视频分割等,并在上述方向有着长期深入的研究;2018 年,参加计算机视觉顶会 ECCV 挑战赛 COCO+Mapillary,分获全景分割(Panoptic Segmentation)两项冠军,并受邀作现场口头报告。

-END-

你的每一个“在看”,我都当成了喜欢

语义分割算法性能比较_语义分割江湖那些事儿相关推荐

  1. 语义分割算法性能比较_AAAI 2020 | 商汤:新视频语义分割和光流联合学习算法

    作者 | 商汤科技 编辑 | 贾伟 本文介绍商汤科技在AAAI 2020 上的论文<Every Frame Counts: Joint Learning of VideoSegmentation ...

  2. 基于深度学习的场景分割算法研究综述

    基于深度学习的场景分割算法研究综述 人工智能技术与咨询 来自<计算机研究与发展> ,作者张 蕊等 摘 要 场景分割的目标是判断场景图像中每个像素的类别.场景分割是计算机视觉领域重要的基本问 ...

  3. EfficientPS:目前排名第一的高效高精度全景分割算法

    向大家推荐一个近期出现的全景分割算法 EfficientPS,在全景分割的 4 大数据集Cityscapes,.KITTI.Mapillary Vistas.IDD中测评精度全部位于榜首,且其语义分割 ...

  4. 翻译英文文献----利用MAP-MRF模型改进三维网格分割算法

    利用MAP-MRF模型改进三维网格分割算法 摘要:本文提出了一种改进三维网格分割算法性能的新方法.我们的方法以一个三维网格对象和一个分割算法作为输入.我们的方法使用马尔可夫随机场(MRF)估计,对于每 ...

  5. VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法]

    VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法] VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法] - tingya的专栏 - 博客频道 - CSDN.NET VI ...

  6. matlab迭代分水岭分割,matlab分水岭分割算法

    single [-1, 1] double 17-17 17-17 Normalized Difference Vegetation Index NDVI with Threshold Applied ...

  7. 视频物体分割算法:如何提升复杂场景的分割精度?

    在此文章中,阿里巴巴资深算法专家为我们介绍了视频物体分割的三个研究方向,然后结合阿里文娱摩酷实验室的探索,分享了他们在视频领域的最新应用. 视频物体分割(Video Object Segmentati ...

  8. AI笔记: 计算机视觉之图像分割:局部阈值法分割、分水岭算法、基于边缘轮廓的分割

    图像分割方法的分类和发展 1 )分类 2 )发展 图像分割是计算机视觉中非常重要的研究子领域 从计算机视觉和图像处理最开始发展的时候,图像分割方法就一直是探索的方法之一 经过长时间的发展,图像分割已经 ...

  9. 传统的点云分割方法及PCL中的分割模块

    参考:https://www.cnblogs.com/li-yao7758258/p/10908980.html 三维点云分割是将同属性的点云物体分割出来,以便于单独对该点云物体处理,但是由于点云数据 ...

最新文章

  1. C#中使用Path、Directory、Split、Substring实现对文件路径和文件名的常用操作实例
  2. 速看,三分钟带你了解IP协议!
  3. 微服务网关的设计与实现
  4. vue和java bean_Java:JavaBean和BeanUtils
  5. BAT批处理文件语法(转)
  6. Jug 并行处理框架
  7. Windows 95 输入法编辑器
  8. 华为员工:表面光鲜 工作十年买不起房
  9. 系统同步网络时间服务器不可用,电脑时间同步出错 RPC服务器不可用解决方案...
  10. 中国数据中心改造市场趋势报告、技术动态创新及市场预测
  11. 注塑模具设计需要注意哪些要点?
  12. html如何设置hr 标签的线条粗细,设置hr标签的粗细
  13. Android 自定义歌词滚动
  14. python 使用七牛云cdn
  15. Java架构师成长之路
  16. ACM—TC 联合招新赛1题解
  17. Google Earth Engine(GEE)——逐月降水数据下载和直方图表展示
  18. fs.default.name和fs.defaultFS
  19. 《全球数字经济白皮书》发布:产业数字化是数字经济发展的主引擎
  20. 工作电子邮箱怎么注册,电子邮箱格式怎么写?

热门文章

  1. 哈密顿系统_Matlab
  2. java学到能看懂代码_一篇文章能够看懂基础源代码之JAVA篇
  3. pl sql mysql 版本_老版本PL/SQL Developer操作数据库导致ORA-00600[17113]
  4. print函数的学习与总结
  5. R语言利用igraph和networkD3包快速入门做出炫酷的社交网络图等几类图。
  6. 计算机大赛鼓励语录,致2019年的自己 鼓励自己的经典语句
  7. 配流01—DIAL算法(经典)
  8. 阿里程序员不小心把服务器CPU打到100%,淡定展示教科书排查过程
  9. 用C语言开发NES游戏(CC65)15、音乐
  10. 收藏从未结束,学习从未开始