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

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

BiSeNetv2:语义分割经典方法BiSeNet的升级版本_第1张图片

1.动机

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

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

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

BiSeNetv2:语义分割经典方法BiSeNet的升级版本_第2张图片

图1

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

BiSeNetv2:语义分割经典方法BiSeNet的升级版本_第3张图片

图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的升级版本_第4张图片

图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的升级版本_第5张图片

图4

2.3 Semantic分支

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

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

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

(1)Stem Block

结构如下图所示:

BiSeNetv2:语义分割经典方法BiSeNet的升级版本_第6张图片

图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的升级版本_第7张图片

图6

(3)Context Embedding Block(CE)

结构如下图所示:

BiSeNetv2:语义分割经典方法BiSeNet的升级版本_第8张图片

图7

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

2.4 特征融合模块

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

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

BiSeNetv2:语义分割经典方法BiSeNet的升级版本_第9张图片

图8

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

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

BiSeNetv2:语义分割经典方法BiSeNet的升级版本_第10张图片

图9

3.辅助训练分支

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

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

BiSeNetv2:语义分割经典方法BiSeNet的升级版本_第11张图片

图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的升级版本_第12张图片

图11

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

BiSeNetv2:语义分割经典方法BiSeNet的升级版本_第13张图片

图12

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

BiSeNetv2:语义分割经典方法BiSeNet的升级版本_第14张图片

图13

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

BiSeNetv2:语义分割经典方法BiSeNet的升级版本_第15张图片

欢迎关注我的个人主页,这里沉淀了计算机视觉多个领域的知识:https://www.yuque.com/cv_51

你可能感兴趣的:(语义分割,深度学习,计算机视觉)