语义分割算法性能比较_语义分割江湖的那些事儿——从旷视说起

2023-10-26

今天的主题是 Face++ Detection 组近两年持续在做的 Semantic Segmentation相关工作,代表性成果主要有 1)GCN (CVPR2017)、2)DFN (CVPR2018)、3)BiSeNet (ECCV2018)。我们先来看一段演示 Demo:

CVPR2018 DFN算法结果展示https://www.zhihu.com/video/1070011872610164736

回顾

介绍算法之前,我们先简单回顾一下语义分割(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 。今天我们介绍的三种算法都将从这两方面分别提出各自对应的解决方案。整体对比如下:

Global Convolutional Network

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

——Motivation——

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

图2

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

  1. 从 Localization 来看,我们需要全卷积网络,而且不能有全连接或者全局池化等操作丢失位置信息。
  2. 从 Classification 来看,我们需要让 Per-pixel Classifier 或者 Feature Map 上每个点的连接更稠密一些,也就需要更大的 Kernel Size,如图 2(c) 所示。

——网络结构——

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

图3 网络结构

此处主要介绍GCN设计。正如图3(b)所示,它采用了较大 Kernel Size的卷积核,来同时解决上述的两个 Issue;然后根据矩阵分解,利用

的卷积来替代原来的
大核卷积。相对于原本的大核卷积,该设计能明显降低参数量和计算量。图4可视化了 Large Kernel Conv 和 普通 Conv网络有效感受野的对比。

图4

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

——实验——

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

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

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


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

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


可以看到 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——

——Cityscapes——

Discriminative Feature Network

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

——Motivation——

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

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

图5

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

——网络结构——

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

图6

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

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

图7

此外,本文首次在 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。

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

图8

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

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

图9

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

BiSeNet

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

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

——Motivation——

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

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

图10

总结而言,实时性语义分割算法中,加速的同时也需要重视空间信息。基于这些观察,本文提出了一种新的解决方案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)来融合两种特征,如图11所示。

图11

Spatial Path 只包含三个

的 Conv+BN+Relu,输出特征图的尺寸为原图的
。为了访存比考虑,此处并没有设计 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 结构的速度和精度的对比。

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

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

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

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

与实时性算法比较:

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

与非实时性算法比较:

可以看到,BiSeNet 是一种很有效的设计。当替换上大模型之后,精度甚至高于 PSPNet 等算法。另外,需要注意的是,为了和非实时性算法进行比较,在关注精度这部分实验 BiSeNet 使用的不同于关注速度部分的 Setting,具体细节详见论文。

BiSeNet 算法对实时性语义分割算法提出了新的思考,在提升速度的同时也需要关注空间信息。同时,该设计也是一次对 Segmentation Backbone 的思考,希望设计一个对 Segmentation 任务友好的框架,当然现在还存在许多需要改进的地方。此外,该方法不仅仅可应用于实时性语义分割算法,也可应用于其他领域,尤其是在对 Spatial Detail 和 Context 同时有需求的情况下。据笔者了解,已有研究将其应用于 Potrait Segmentation.

重要的事情

  • 我们的 DFN 和 BiSeNet 均已开源,后续将有更多的语义分割算法复现开源出来,欢迎大家 Star 和 Contribute:
https://github.com/ycszen/TorchSeg​github.com
  • 欢迎各位同学加入旷视科技 Face++ Detection Team,简历可以投递给 Detection 组负责人俞刚 (yugang@megvii.com

Reference

[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)两项冠军,并受邀作现场口头报告。个人网页:

Changqian Yu​changqianyu.me
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

语义分割算法性能比较_语义分割江湖的那些事儿——从旷视说起 的相关文章

  • SSH终端工具SecureCRT 8.5.4

    SecureCRT Mac版是mac上一款非常好用的SSH终端工具 可以为计算专业人士提供高级会话管理工具 从而提高效率工作并简化重复任务 SecureCRT为组织中的每个人提供安全的远程访问 文件传输和数据隧道 SecureCRT支持SS
  • OC门(Open Collector(Open Drain))

    OC门 又称集电极开路 漏极开路 与非门门电路 Open Collector Open Drain 为什么引入OC门 实际使用中 有时需要两个或两个以上与非门的输出端连接在同一条导线上 将这些与非门上的数据 状态电平 用同一条导线输送出去
  • 微信小程序——文字水平垂直居中

    记录一下CSS设置文字水平垂直居中 目录 1 代码说明 1 1 Html 1 2 CSS 2 效果 1 代码说明 对于直接在标签里面的文字 使用flex布局控制其中的文字水平和垂直居中 1 1 Html
  • java 使用sftp从远程服务器上传下载删除文件

    目录 前言 一 所需依赖 二 工具类 三 测试 1 判断指定目录是否存在 2 创建一个文件夹 3 删除指定文件 4 把文件上传到服务器上 5 从服务器上下载文件 6 执行Linux命令 前言 有时候我们需要让从代码里远程连接服务器进行文件上
  • jquery:值的操作

    jquery中一些操作值的方法 attr 操作某一个自定义属性值 text 操作文本值 html 操作html val 操作值
  • Python编程之控制台报错:Using TensorFlow backend.

    报错信息如下 报错原因 错误产生是因为tensorflow已经有更新 旧的内容已经不适用 解决方案 更新tensorflow的版本 1 pip uninstall tensorflow 2 pip uninstall tensorflow
  • MongoDB 性能调优

    一 explain 执行计划 MongoDB 提供了一个 explain 命令让我们获知系统如何处理查询请求 利用 explain 命令 我们可以很好地观察系统如何使用索引来加快检索 同时可以针对性优化索引 gt db t5 ensureI
  • 渗透测试之Google搜索语法

    目录 intitle allintitle inurl allinurl intext allintext filetype site link index of info define 通配符 intitle 从网页标题中搜索指定的关键字
  • 2012.11.21

    昨天的程序是有问题的 应该是杆8分别带动两侧的杆1 杆2 杆7 杆9分别被动旋转 起因在于杆8 杆1 杆2随杆8被动旋转在左侧 杆7副本 铲斗副本均绕着杆8副本被动旋转
  • 【转】【系列】【硬创邦】跟hoowa学做智能路由

    原文首发雷锋网 但雷锋网居然没把这个系列文章聚合起来 网上一搜 东一篇西一篇的 看起来十足不方便 现在聚合在此 方便学习 感谢作者hoowa 硬创邦 跟hoowa学做智能路由 一 我们来动手吧 硬创邦 跟hoowa学做智能路由 二 从芯片开
  • 最新阿里P7技术体系:大厂Offer拿到手软啊!年薪超过80万!

    说起IT行业 大多数人脑海里反应出的第一个标签一定是 高薪 而说起程序员 大家更多想到的可能是 秃顶 木讷 格子衫 加班多 能赚钱 不花钱 没对象 甚至很多人还说 程序员在互联网行业里面是吃青春饭的 干到30岁就会被行业淘汰掉 去年开始的各
  • http://jingyan.baidu.com/article/db55b609aac41e4ba30a2f86.html

    http jingyan baidu com article db55b609aac41e4ba30a2f86 html
  • 如何使用Grafana+Loki+Promtail日志聚合系统针对Kubernetes集群中Pods应用日志采集搜索展示...

    关注 WeiyiGeek 公众号 设为 特别关注 每天带你玩转网络安全运维 应用开发 物联网IOT学习 原文地址 如何使用Grafana Loki Promtail日志聚合系统针对Kubernetes集群中Pods应用日志采集搜索展示 本章
  • 数学建模-二胎政策对中国人口的影响

    研一的数学建模课上的关于 二胎政策对中国人口的影响 研究中国人口 发现中国人口老龄化非常严重 如今假设不放开全面二胎 那么中国的未来真的非常令人堪忧 事实上 如今的单独二胎对人口的影响不是太多 每年添加100多万的人口 对于中国日益下降的人
  • 单边指数衰减信号的频谱

    单边指数衰减信号的频谱 定义 傅里叶变换 幅度 相位 MATLAB作图代码 结果 定义 傅里叶变换 幅度 相位 MATLAB作图代码 单边指数 衰减 信号频谱作图 clear clc 幅度谱 w 2 0 1 2 y 1 sqrt 1 w w
  • PHP Opcache 配置优化实战

    前言 起源 在很长的一段时间里 我们的web服务器在遇到大规模流量访问的时候 很容易就把 CPU 负载飙到了 100 导致响应速度过慢 用户体验卡顿 直到最近开启了Opcahe后 我们的QPS从200 300 提升了1000 响应速度也提高
  • InnoDB: Check that you do not already have another mysqld process 错误解决办法

    非正常关机之后 再次启动mysql 失败 错误信息如下 150721 15 45 27 mysqld safe Starting mysqld daemon with databases from opt mysql data 150721
  • 电脑中打开VMware虚拟机提示权限不足无法访问文件如何解决

    最近使用win10系统电脑安装VMwame14后 打开虚拟机时报错 提示 打不开 vdmk格式文件 是由于 权限不足 无法访问 解决办法 试了网上说的很多办法 最简单的处理方式是鼠标右键使用管理员权限打开虚拟机 注意以管理员身份运行 当前登
  • JVM--一文精通

    调整JVM堆内存 在确定JVM堆内存大小时 需要考虑以下因素 应用程序的内存需求 操作系统和其他应用程序所需的内存 JVM的运行参数和GC算法 根据通常的经验 可以将JVM最大堆内存设置为操作系统可用内存的约70 也就是说 在16GB的机器

随机推荐