BiSeNetv2:语义分割经典方法BiSeNet的升级版本

这篇具有很好参考价值的文章主要介绍了BiSeNetv2:语义分割经典方法BiSeNet的升级版本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

分享IJCV2021上发表的一篇文章BiSeNetv2,这是BiSeNet的升级版本。开源代码地址:https://github.com/open-mmlab/mmsegmentation/tree/master/configs/bisenetv2

BiSeNetv2:语义分割经典方法BiSeNet的升级版本

1.动机

语义分割是指为每个像素分配一个标签,它广泛用于场景理解、自动驾驶、人机交互、视频监控等领域中。近年来,随着卷积神经网络的发展,研究者们提出了一系列基于全卷积网络的语义分割算法,它们都达到了很好的性能。

全卷积网络的高性能往往来自于比较好的backbone,在语义分割任务中,有2种常用的backbone:

(1)使用了空洞卷积模块的backbone,在backbone中移除了部分下采样操作,使用空洞卷积增加感受野,同时保持feature map的尺寸以保留丰富的空间信息,如下图所示:

BiSeNetv2:语义分割经典方法BiSeNet的升级版本

图1

(2)使用了Encoder-Decoder的backbone,在decoder模块中,使用skip connections的方式恢复空间信息,如下图所示:

BiSeNetv2:语义分割经典方法BiSeNet的升级版本

图2

这2类backbone在设计时,没有充分考虑推理时间和计算资源的优化:

(1)空洞卷积的引入、下采样操作的移除,都会引入比较大的计算复杂度和显存消耗;

(2)encoder和decoder中的skip connections会增加显存消耗。

面对实时语义分割的需求,基于上面2种类型的backbone,一般采用以下方法降低模型对硬件资源的消耗:

  • 减小输入图片分辨率
  • 使用更少的通道

尽管这些方法能够有效地提高模型推理速度,但是牺牲了低层次特征,降低了网络的表达能力,导致模型性能下降。因此,设计一个兼顾性能和推理速度的语义分割算法是很重要的。

在语义分割任务中,空间细节信息和高级语义信息都是很重要的,如果不考虑推理速度,可以用一个深的、feature map尺寸大的网络去提取特征;而为了平衡精度和推理速度,作者提出了two-pathway的网络架构Bilateral Segmentation Network(BiSeNet V2)。在该结构中,一个分支提取空间细节信息,另一个分支提取高级语义信息。

2.BiSeNetv2

2.1 总体结构

BiSeNetv2的大体结构如下图所示:

BiSeNetv2:语义分割经典方法BiSeNet的升级版本

图3

网络主要包含3部分

  • Detail分支 特点是网络层数较少,feature map尺寸大,用于提取空间细节信息。
  • Semantic分支 特点是比较深,feature map尺寸小,感受野大,用于提取高级语义信息。
  • 特征融合模块 用于融合Detail分支和Semantic分支的特征。

2.2 Detail分支

Detail分支负责提取低级空间细节信息,该分支有如下特点:

  • 网络通道数要足够多;
  • feature map的尺寸要稍大一些;
  • 网络层数比较浅;
  • 由于feature map尺寸大、通道数多,最好不要在网络结构中使用残差连接,避免增加显存占用、降低推理速度。

Detail分支的网络结构如下图所示,该分支共3个stage,每个卷积操作后面都有BN和激活函数。每个stage中第1个卷积层的步长都是2,其余卷积层的步长是1。因此Detail分支的输出feature map尺寸是原图的1/8。该分支的网络结构设计遵循VGG的设计准则,同时避免使用残差链接。

BiSeNetv2:语义分割经典方法BiSeNet的升级版本

图4

2.3 Semantic分支

Semantic分支用于提取高级语义信息,该分支有如下特点:

  • 不需要很大的通道数,这里令Semantic分支的通道数是Detail分支的$\lambda(\lambda< 1)$倍;
  • 有很多下采样操作,以增加感受野;
  • 包含全局平均池化操作,以提取全局上下文特征。

Semantic分支的网络结构如图4所示,包含如下3部分:

(1)Stem Block

结构如下图所示:

BiSeNetv2:语义分割经典方法BiSeNet的升级版本

图5

Stem Block在2个分支中使用了2种不同的下采样操作,2个分支的输出通过concat操作进行融合。

(2)Gather-and-Expansion Layer(GE)

Gather-and-Expansion Layer在设计时借鉴了MobileNetv2中的inverted bottleneck结构,inverted bottleneck结构如图6(a)所示,虚线表示当该模块的步长为2时,残差连接不存在;当该模块的步长为1时,残差连接存在。

步长为1时,Gather-and-Expansion Layer的结构如图6(b)所示:

  • 使用 3 × 3 3 \times 3 3×3卷积进行升维;
  • 在高维度使用 3 × 3 3 \times 3 3×3的depthwise卷积进行特征提取;
  • 使用 1 × 1 1 \times 1 1×1卷积进行降维。

当步长为2时,Gather-and-Expansion Layer的结构如图6©所示:

  • 使用2个 3 × 3 3 \times 3 3×3的depthwise卷积进一步增加感受野;
  • 在shortcut中使用1个 3 × 3 3 \times 3 3×3的depthwise卷积。

BiSeNetv2:语义分割经典方法BiSeNet的升级版本

图6

(3)Context Embedding Block(CE)

结构如下图所示:

BiSeNetv2:语义分割经典方法BiSeNet的升级版本

图7

该模块使用全局平均池化和残差连接提取全局上下文特征。

2.4 特征融合模块

特征融合模块用于融合Detail分支和Semantic分支提取到的特征。由于Semantic分支中包含较多的下采样操作,该分支的输出feature map尺寸较小,因此要对Semantic分支输出的feature map进行上采样操作,使其与Detail分支输出的feature map尺寸一致。通过元素相加或者concat的方式融合2个分支的特征是不合适的,因为这忽略了2个分支输出特征的差异性。

作者提出了Bilateral Guided Layer用于融合2个分支的特征,结构如下图所示:

BiSeNetv2:语义分割经典方法BiSeNet的升级版本

图8

上图中的 ⊗ \otimes 表示元素乘法操作。该结构能够使得2个分支互相通信、互为引导。

综上,BiSeNetv2的总体结构如下图所示,紫色框内是2个分支,红色框内是融合结构,Down表示下采样操作,Up表示上采样操作, φ \varphi φ表示Sigmoid函数, ⊗ \otimes 表示元素乘法。

BiSeNetv2:语义分割经典方法BiSeNet的升级版本

图9

3.辅助训练分支

为了进一步提高模型精度,训练时,在Semantic分支的不同位置增加了若干个辅助Segmentation Head,如图9橙色框内所示,这些结构仅用于训练,在推理时会删掉它们。

辅助Segmentation Head的结构如下图所示:

BiSeNetv2:语义分割经典方法BiSeNet的升级版本

图10

在上图中,使用 C i C_i Ci控制卷积的通道数, S S S表示上采样倍数, N N N表示最终输出的feature map的通道数。

4.实验

4.1 训练

超参数 在训练时,使用kaiming normal方式进行权重初始化,使用SGD优化器,batch size=16,momentum=0.9,初始学习率为 5 e − 2 5 e^{-2} 5e2,学习率变化策略为初始学习率乘以 ( 1 − i t e r  iter  s max ⁡ ) power  \left(1-\frac{i t e r}{\text { iter } s_{\max }}\right)^{\text {power }} (1 iter smaxiter)power ,其中 power  = 0.9 {\text {power }}=0.9 power =0.9。对于Cityscapes和CamVid数据集,weight_decay=0.0005,对于COCO-Stuff数据集,weight_decay=0.0001。对于Cityscapes和CamVid、COCO-Stuff这3个数据集,训练的迭代次数分别为150K、10K、20K。

数据增强 使用了随机水平翻转、随机缩放、随机裁剪进行数据增强。随机缩放的尺度为 { 0.75 , 1 , 1.25 , 1.5 , 1.75 , 2.0 } \{0.75,1,1.25,1.5,1.75,2.0\} {0.75,1,1.25,1.5,1.75,2.0}

4.2 结果

BiSeNetv2在Cityscapes数据集上的性能如下,输入到BiSeNetv2模型中的图像尺寸为 1024 × 512 1024 \times 512 1024×512。上表中的 γ \gamma γ表示输入模型的图像尺寸对于 2048 × 1024 2048 \times 1024 2048×1024的下采样率。

BiSeNetv2:语义分割经典方法BiSeNet的升级版本

图11

BiSeNetv2在CamVid数据集上的性能如下,输入模型的图像尺寸为 960 × 720 960 \times 720 960×720。下表中的  *  \text { * }  * 表示该模型先在Cityscapes数据集上进行预训练。

BiSeNetv2:语义分割经典方法BiSeNet的升级版本

图12

BiSeNetv2在COCO-Stuff数据集上的性能如下,输入图像分辨率为为 640 × 640 640 \times 640 640×640

BiSeNetv2:语义分割经典方法BiSeNet的升级版本

图13
  • 如果你对计算机视觉领域的目标检测、跟踪、分割、轻量化神经网络、Transformer、3D视觉感知、人体姿态估计兴趣,欢迎关注公众号【CV51】一起学习交流~

  • 欢迎关注我的个人主页,这里沉淀了计算机视觉多个领域的知识:https://www.yuque.com/cv_51文章来源地址https://www.toymoban.com/news/detail-470258.html

到了这里,关于BiSeNetv2:语义分割经典方法BiSeNet的升级版本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第十章:重新审视扩张卷积:一种用于弱监督和半监督语义分割的简单方法

            尽管取得了显著的进展,弱监督分割方法仍然不如完全监督方法。我们观察到性能差距主要来自于它们在从图像级别监督中学习生成高质量的密集目标定位图的能力有限。为了缓解这样的差距,我们重新审视了扩张卷积[1]并揭示了它如何以一种新颖的方式被用于有

    2024年02月15日
    浏览(51)
  • 图神经网络:(语义分割)三维网格语义分割

    文章说明: 1)参考资料:PYG的文档。文档超链。斯坦福大学的机器学习课程。课程超链。(要挂梯子)。博客原文。原文超链。(要挂梯子)。原文理论参考文献。提取码8848。 2)我在百度网盘上传这篇文章的jupyter notebook以及预训练模型。提取码8848. 3)博主水平不高,如有错误,还

    2024年02月03日
    浏览(46)
  • 【计算机视觉 | 语义分割】干货:语义分割常见算法介绍合集(一)

    U-Net 是一种语义分割架构。 它由收缩路径和扩张路径组成。 收缩路径遵循卷积网络的典型架构。 它由两个 3x3 卷积(未填充卷积)的重复应用组成,每个卷积后跟一个修正线性单元 (ReLU) 和一个步长为 2 的 2x2 最大池化操作,用于下采样。 在每个下采样步骤中,我们将特征通

    2024年04月22日
    浏览(50)
  • 图像分割综述之语义分割

    博主的研究方向为图像分割,想顶会发一篇关于全景分割的论文,语义分割和实例分割是全景分割的必经之路。所以本人先把自己最近阅读的顶会中语义分割相关的优秀论文罗列出来,方便复习巩固,对语义分割方向有一个宏观的掌握。 目录 一、论文综述 1.1 经典分割算法

    2024年02月05日
    浏览(47)
  • 【Python&语义分割】Segment Anything(SAM)模型全局语义分割代码+掩膜保存(二)

    我上篇博文分享了Segment Anything(SAM)模型的基本操作,这篇给大家分享下官方的整张图片的语义分割代码(全局),同时我还修改了一部分支持掩膜和叠加影像的保存。 1.1 概况         Meta AI 公司的 Segment Anything 模型是一项革命性的技术,该模型能够根据文本指令或图像

    2024年02月03日
    浏览(54)
  • 第一章 SegFormer(语义分割篇)——SegFormer: 简单高效的基于Transformer的语义分割设计

    原文:《SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers》 引用:Xie E, Wang W, Yu Z, et al. SegFormer: Simple and efficient design for semantic segmentation with transformers[J]. Advances in Neural Information Processing Systems, 2021, 34: 12077-12090. 原文链接: https://proceedings.neurips.cc/paper/2021/file/6

    2024年02月16日
    浏览(52)
  • 复现PointNet++(语义分割网络):Windows + PyTorch + S3DIS语义分割 + 代码

    Windows 10 GPU RTX 3090 + CUDA 11.1 + cudnn 8.9.6 Python 3.9 Torch 1.9.1 + cu111 所用的原始代码:https://github.com/yanx27/Pointnet_Pointnet2_pytorch Stanford3dDataset_v1.2_Aligned_Version 分享给有需要的人,代码质量勿喷。 对源代码进行了简化和注释。 分割结果保存成txt,或者利用 laspy 生成点云。 别问为啥在

    2024年01月21日
    浏览(44)
  • 语义分割系列26-VIT+SETR——Transformer结构如何在语义分割中大放异彩

    SETR:《Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspectivewith Transformers》 重新思考语义分割范式,使用Transformer实现语义分割。 论文链接:SETR VIT:《An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale》 首次提出使用Transformer进行图像分类。 至于为什么要在介绍

    2024年02月07日
    浏览(38)
  • 憨批的语义分割重制版11——Keras 搭建自己的HRNetV2语义分割平台

    最近学了一下HRnet,代码真的好难看懂,还只有Pytorch版本的,Keras复现很有难度,作者写的逻辑很厉害,只能慢慢攻破啦! 传统的卷积神经网络模型是自上而下不断进行特征提取的,如VGG、Mobilenet、Resnet系列等,VGG网络中存在5个步长为(2, 2)最大池化,Mobilenet网络中存在5个步

    2023年04月21日
    浏览(52)
  • 计算机视觉基础(11)——语义分割和实例分割

    在这节课,我们将学习 语义分割和实例分割 。在语义分割中,我们需要重点掌握语义分割的 概念、常用数据集、评价指标(IoU)以及经典的语义分割方法(Deeplab系列) ;在实例分割中,需要知道实力分割可以近似看为“ 目标检测+语义分割 ”,需要知道 Mask R-CNN方法的计算

    2024年01月23日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包