BiSeNet实时语义分割

论文名称:BiSeNet: Bilateral Segmentation Network for Real-time Semantic Segmentation

作者:Changqian Yu, Jingbo Wang, Chao Peng, Changxin Gao, Gang Yu, Nong Sang

期刊:ECCV 2018

代码:https://github.com/CoinCheung/BiSeNet/tree/master/old

摘要

本文设计了一个双边分割网络(BiSeNet),设计一个步幅小的空间路径,保留空间信息生成高分辨率的特征。此外采用具有快速下采样策略的上下文路径来获得足够的接收场。在两个路径的顶部,引入了一个新的功能融合模块,以有效地组合功能。

常用的加速模型方法

  1. 限制输入大小,通过裁剪或调整大小来降低复杂性,但这样会使得空间细节丢失
  2. 修剪网络通道提高推理速度,但是这种做法削弱了空间容量
  3. 放弃模型最后一个阶段,但这种方式不足以覆盖大对象从而导致判别能力较差。
  4. u型结构设计,弥补了空间细节的损失嘛但是由于高分辨率特征图上引入了额外的计算,完整的U型结构会降低模型的计算速度,除此之外,修剪或裁剪中丢失的大多数空间信息无法 通过与浅层融合就能很容易地恢复。

基于上述的方式,本文提出了双边分割网络(BiSeNet),该网络分为两部分:空间路径(Spatial Path SP)和上下文路径(Context Path CP)。这两个组件针对空间信息的丢失和接收场的缩小而设计。

对于空间路径,仅堆叠三个卷积层以获得18\frac 18的特征图,其中保留了丰富的空间细节。

对于上下文路径,在Xception的尾部附加一个全局平均池化,其中接收域是主干网络的最大值。

此外还提出了两条路径融合以及最终预测的细化,分别提出了特征融合模块(FFM)和注意力细化模块(ARM)。

下图表示了各个方法对于分割任务的实际影响:

a.表示输入图像上的裁剪或调整操作,并用修剪通道或删除阶段的轻量级模型。

b.表示U型结构

C.表示本文BiSeNet网络

黑色虚线表示破坏了空间信息的操作,红色虚线表示缩小接收场的操作,绿色块是本文提出的空间路径(Spatial Path SP)。在网络部分,每个块代表不同下采样的特征图。块的长度表示空间分辨率,而厚度表示通道数。

image-20210518145750460

本文主要贡献

  1. 提出了一种新颖的方法来将空间信保存和接收场分为两条路径。i具体来说就是提出了空间路径和上下文路径的双边分割网络。
  2. 设计了两个特定的模块,特征融合模块(FFM)和注意细化模块(ARM),进一步提高了分割的精度
  3. 在Cityscapes,CamVid和COCO-Stuff的基准上取得更好的结果,以105FPS的速度在Cityscapes测试数据中获得了68.4%的结果。

双边细分网络(Bilateral Segmentation NetWork)

网络结构图如下:

image-20210518153519005

空间路径(Spatial Path)

该模块能够保留原始输入图像的空间大小并编码富裕的空间信息。

空间路径主要由三层构成,每一层包括一个步长为2的卷积层,一个BN层和ReLU。因此,该模块提取出的特征图是原始图像的18\frac 18。由于特征图的分辨率比较大,因此可以对丰富的空间信息进行编码。如结构图(a)所示。

上下文路径(Context Path)

空间路径编码丰富的空间信息,上下文路径设计为提供足够的接收场(接收场好像就是感受野的意思)。在语义分割任务中,接收域对性能有很重要的意义。常用的方式通常是使用金字塔池化(pyramid pooling ),空洞空间池化金字塔(atrous spatial pyramid pooling)或者更大的卷积核。

上下文路径使用轻量级模型和局部平均池化提供较大的接收域,在这项工作中,像Xception这样的轻量级模型可以快速对特征图进行下采样以获得较大的接收域,该接收域对高级语义上下文信息进行那个编码。然后,在轻量级模型的尾部添加一个局部平局池化,该池化可以为具有全局上下文信息的最大接收场提供信息。

注意力优化模块(Attention Refinment Module ARM)

在上下文路径中,使用能够注意力细化模块(ARM)来细化每个阶段的功能,结构如网络图的b所示。

ARM使用全局平均池化来捕获上下文,经过一次卷积后,计算注意力向量,与原来的特征图进行乘积。该设计可以优化上下文路径中的各个阶段的输出。不需要采用任何h桑采样操作即可轻松集成全局上下文信息。

网络结构

使用预训练的Xception模型,作为上下文路径的主干,并使用三个带有步长的卷积层作为空间路径。然后将这两条路径输出的特征融合在一起,然后进行预测。该网络能够同时满足实时性和高精度。

模型的实时性的表现:

  1. 空间路径虽然有较大的空间,但是只有三个卷积层,因此,该模块不是密集型计算。
  2. 上下文路径使用了轻量型快速下采样
  3. 空间路径和上下问路径同时计算

模型在精确度上,通过空间路径编码丰富的空间信息,上下问路径提供较大的接收场,彼此互补以实现更高的性能。

特征融合模块(Feature fusion module)

这两条路径的特征表示的是不同级别的特征,因此不能简单地将这些特征进行加和。简单来说,空间路径提取的特征是低程度的,而上下问路径的输出是高程度的。为此,本文提出了一个特定的功能融合模块来融合这些特征。

首先将空间路径和上下文路径的输出特征拼接起来,接着使用BatchNormal来平衡特征尺度,再将该特征复制一部分用于池化,然后形成对应的特征向量,给特征图进行加权,最后和原本的特征图相乘。

损失函数

在本文中,使用**主要的损失函数(principal loss function)**来监督整个BiSeNet。除此之外还添加了两个特定的辅助损失函数来监督上下文输出路径,。

所有的损失损失函数都是使用Softmax loss如下公式所示:

loss=1NiLi=1Nilog(epijepj)\operatorname{loss}=\frac{1}{N} \sum_{i} L_{i}=\frac{1}{N} \sum_{i}-\log \left(\frac{e^{p_{i}}}{\sum_{j} e^{p_{j}}}\right)

p是网络的输出预测

还有下面的公式作为联合损失:

L(X;W)=lp(X;W)+αi=2Kli(Xi;W)L(X ; W)=l_{p}(X ; W)+\alpha \sum_{i=2}^{K} l_{i}\left(X_{i} ; W\right)

使用参数α\alpha来平衡主损失和辅助损失的权重,在本文中将α\alpha设置为1,联合损失的使用使得优化其更加适合地去优化模型。

lpl_p是输出拼接后的主要损失函数,XiX_i是Xception模型第i阶段的输出特征。lil_i是i阶段的辅助损失。在本文中k=3,L是joint loss function在这里只使用辅助损失。

实验结果

采用不同的主干网络:

image-20210523205948053

在一张NVIDIA Titan XP上跑的结果:

image-20210523210040929

各个组件对网络的影响

image-20210523210313016

CP是上下文路径,sp是空间路径,GP是全局平均池化,ARM是注意力优化模块,FFM是特征融合模块。