《BiSeNet:Bilateral Segmentation Network for Real-time Semantic Segmentation》论文笔记

代码地址:BiSeNet

1. 概述

导读:这篇文章是Face++推出实时语义分割算法,文章指出语义分割是同时需要丰富的空间信息以及大量的感受野的。然而,现有的方法通常是在空间分辨率上取折中去获得实时分割速率,但是这也导致了分割的性能较差。这篇文章为了解决这个问题,提出了新的双边分割网络(Bilateral Segmentation Network,BiSeNet),将空间信息与感受野解耦。这个网络中首先设计了一个拥有较小stride的空间信息支路(Spatial Path,SP)去获得高分辨率的特征与保留空间信息;同时使用采用快速下采样策略的上下文支路(Context Path,CP)去获取足够的空间感受野,并且使用Attention的思路增强特征;在两个分支之上引入了新的特征融合模块来高效融合不同支路的信息。新的网络在Cityscapes、CamVid、COCO-stuff数据集上分割的速度与性能取得了较好的平衡。在Cityscapes测试数据集上获得了105FPS的速度,图像输入为204810242048*1024,获得的IoU为68.4%。秒杀一众现有分割方法。

对于分割网络实现实时化,现有的工作主要集中在如下三点:

  • 1)通过剪裁或是resize方法限制输入图像的尺寸,从而计算量得到下降,但是带来的问题是由于空间细节的丢失导致的分割边界精度降低(下面的三种情况在图1(a)中做了说明);
  • 2)剪裁网络中的channel数量,但是这样会导致空间表达能力的不足;
  • 3)ENet中提出了丢弃卷积的最后一个阶段从而得到一个轻型的网络结构。但是由于丢弃了卷积的最后一个阶段,这就导致下采样不足(感受野受限),不能有效覆盖大目标。
    《BiSeNet:Bilateral Segmentation Network for Real-time Semantic Segmentation》论文笔记

在之前的基础上通过 剪裁channel、输入图像尺寸变化、减少stage等 会带来分割性能的损失,因此为了减少网络在空间细节上的损失,提出了U型结构的分割模型,见图1中(b)所示,但是这样的模型存在两个问题:

  • 1)由于在高分辨率特征图上引入了额外的计算量从而导致网络变慢;
  • 2)U型结构是不足以弥补剪裁channel与stage带来的空间信息损失的,这样的操作只是治标不治本。

为此文章提出了BiSeNet,该网络有两个部分空间支路(SP)与上下文支路(CP),使用这两个支路去获取空间信息与感受野。对于SP支路,使用三个卷积层去获取18\frac{1}{8}的特征图,其包含了丰富的空间信息。对于CP支路,在Xception后面添加了一全局平均池化层,感受野是主干网络中最大的。其结构如图1(c)所示。为了提升网络的性能还引入了特征融合模块(Feature FUsion Module,FFM)与Attention Refinement Module(ARM)。文章的主要贡献:

  • 1)提出新的网络结构使用两条路径(SP,CP)去BiSeNet解耦空间信息与感受野。
  • 2)设计了两个模块FFM与ARM题提升网络的性能;
  • 3)在Cityscapes测试集上获得68.4%的IoU,帧率为105 FPS。

2. 网络设计

2.1 网络的整体结构

《BiSeNet:Bilateral Segmentation Network for Real-time Semantic Segmentation》论文笔记

2.2 Spatial Path

在之前的研究中对于空间信息使用了膨胀卷积、金字塔池化、膨胀金字塔池化等方法,用于获取足够的空间信息与感受野,也指出空间信息与感受野对于高精度分割是至关重要的,但很难满足同时满足两者的需求。特别是在实时分割任务中,裁剪channel与stage会破坏网络的信息。
Spatial Path:
基于此文章提出了SP分支,该分支由3个stride为2的卷积组成(卷积后面跟随BN与ReLU),获取到原始输入图像18\frac{1}{8}的特征图,如上图(a)中所展示的那样。
Context Path:
这里综合考虑网络的大感受野与计算的效率,提出了Context Path分支。这个分支使用轻量级的模型(Xception)与全局平均池化(在Xception的后面添加,综合了全局信息)去增大网络的感受野。在这个分支中轻量级模型的最后两个stage通过U型结构的形式相连。

2.3 ARM模块

其中会使用基于Attention机制的ARM模块对其中的信息进行增强。ARM模块的结构见下图:
《BiSeNet:Bilateral Segmentation Network for Real-time Semantic Segmentation》论文笔记

2.4 FFM模块

前文中提到的两个分支它们是不同层级特征的表达,是并不能简单粗暴直接加起来的,因而需要FFM模块来进行融合。这里首先将两个分支的特征进行concat,之后使用BN去平衡特征的scale,之后也是使用attention的机制实现特征的进一步融合,其结构见下图所示:
《BiSeNet:Bilateral Segmentation Network for Real-time Semantic Segmentation》论文笔记

2.5 损失函数

文章在Context Path分支上添加了辅助损失函数:
loss=1NiLi=1Nilog(epijepj)loss=\frac{1}{N}\sum_i L_i=\frac{1}{N}\sum_i -log(\frac{e^{p_i}}{\sum_j e^{p_j}})
将其与网络输出损失函数整合得到(其中,α=1\alpha=1):
L(X;W)=lp(X;W)+αi=2K(li(Xi;W))L(X;W)=l_p(X;W)+\alpha \sum_{i=2}^{K}(l_i(X_i; W))

3. 实验结果

3.1 网络的整体性能

这里主要将文章提出的算法与现有的一些方法进行对比,首先是速度上:
《BiSeNet:Bilateral Segmentation Network for Real-time Semantic Segmentation》论文笔记
分割性能上:
《BiSeNet:Bilateral Segmentation Network for Real-time Semantic Segmentation》论文笔记

3.2 消融实验

文章中使用到的基础网络对于性能的影响:
《BiSeNet:Bilateral Segmentation Network for Real-time Semantic Segmentation》论文笔记
U型结构对分割性能的影响(8s是只连接最后2个stage的特征,4s则是标准的U型全连接结构),4s结构并没有好多少,但是更慢了
《BiSeNet:Bilateral Segmentation Network for Real-time Semantic Segmentation》论文笔记
网络中的各个模块对性能的影响:
《BiSeNet:Bilateral Segmentation Network for Real-time Semantic Segmentation》论文笔记
输入图像的尺寸对分割速率的影响:
《BiSeNet:Bilateral Segmentation Network for Real-time Semantic Segmentation》论文笔记