论文地址 :BiSeNet: Bilateral Segmentation Network for Real-time Semantic Segmentation
1. 摘要
语义分割任务不仅需要丰富的空间位置信息,还需要尺寸客观的感受野,但是现有的方法为了提速往往采取损失空间分辨率的方法,这导致了精度的严重下降。论文中提出了一种新的双向分割网络BiSeNet。首先,设计了一个带有小步长的空间路径来保留空间位置信息生成高分辨率的特征图;同时设计了一个带有快速下采样册率的语义路径来获取客观的感受野。在这两个模块之上引入一个新的特征融合模块将二者的特征图进行融合,实现速度和精度的平衡。
BiSeNet模型在Cityscapes上取得了68.4%的平均IOU和105FPS的速度[Titan XP]。
2. 介绍
语义分割应用广泛,实时语义分割也具有良好的应用前景。目前实时语义分割的方法主要有如下图所示以下三种:
- 通过裁剪和尺寸变化严格规定输入图像的尺寸 ⇒ \Rightarrow ⇒ 数据上和视觉效果上可见的精度减少
- 改变网络的通道数来加速推理过程 ⇒ \Rightarrow ⇒ 预测位置的能力的衰弱
- 丢弃最后阶段的几层来获得一个较小的框架
⇒
\Rightarrow
⇒ 模型的感受野减小导致模型分类能力不足
为了解决上面三种方案中空间细节上的损失,提出U-shape 结构,如下图所示,这种结构融合主干网络的层次特征并逐步增加分辨率且填充一些细节,但这只是一种缓解手段而不能解决,因为U-shape Structure存在两个问题: - 完整的U-shape 结构会导致计算速度的减慢
- 在裁剪过程中损失的位置信息较难恢复
基于对这些问题的研究,提出BiSeNet,如下图所示,其包含两部分,两个部分分别处理位置信息的丢失和感受野的缩减: - Spatial Path(SP):使用三个卷积层来获取特征图(output_stride=8)
- Context Path(CP):附加一个全局平均池化层在Xception的尾部,这里的感受野是整个主干网络中最大的
为了在不损失速度的同时获得更好的精度,论文还提将两个路径融合的模块FFM和精细画最后最终预测结果的模块ARM,这两个模块有助于提升精度。
综上,论文的主要贡献在于: - BiSeNet with SP and CP
- Feature Fusion Module 和 Attention Refinement Module ⇒ \Rightarrow ⇒ 较小的速度损失获得较大的精度提升
- impressive results on Cityscapes,etc.
3.双向分割网络
详细解释带有SP和CP的BiSeNet,然后分别对SP和CP的有效性进行说明,最后使用FFM融合两个paths的输出和整个网络的结构(网络结构如下图所示)。
3.1 Spatial Path
提出SP基于很多考虑,一方面位置信息和感受野两个对于分割结果非常关键的因素不能两全,另一方面实时语义分割方法多数采取使用较小的输入图像尺寸导致大部分位置信息的丢失。由此提出SP模块,该模块保留空间尺寸并且编码了丰富的位置信息。SP包含三层,每一个卷积层的步长都为2且后面跟着BN层和ReLU激活层。最终SP的output_stride=8,之中尺寸的特征图包含了丰富的位置信息。
3.2 Context Path
提出CP基于这样的观察,即大的感受野对于语义信息非常关键,现有的金字塔池化,空洞空间金字塔池化和大内核方法计算代价过高,从而导致速度较慢,因此提出Context Path方法。CP轻量级模型和全局平均池化操作来获取较大的感受野。
首先使用轻量级的模型比如Xception来编码高层语义信息,之后加一层全局平均池化来获取最大的感受野,最后将全局池化的结果上采样并于轻量级模型的输出特征相融合。在轻量级模型中,应用U-shape结构来融合这两个阶段的特征,结构如下图所示:
另外还有一个模块Attention Refinement Module(ARM)来调整各个阶段的特征,结构如下图所示,ARM应用全局平均池化来获取全局语义信息然后计算一个attention vector来知到特征学习。这个结构能够精细画Context Path中各个阶段的结果。它可以不用上采样就集成全局语义信息,计算代价较小。
3.3 网络架构
使用Xception作为Context Path的主干网络,三层带有卷积步长的卷积层作为Spatial Path,然后将两条路径的输出融合。在速度较快的情况下取得良好的精度。
分开来看,尽管SP每一层的计算代价都很大,但是只有三层,计算量也可以接受;CP层使用轻量级模型实现快速下采样,而且这两条路径同时计算提高了精度。
最终在FFM前得到的两条路径的输出特征尺寸不同,因此不能简单的相加。富含位置信息的SP特征和富含语义信息的CP特征二者在不同的层次,因此需要FFM来融合:对于给定的不同特征输入,首先将二者concatenate,然后利用BN来调整特征的尺度,接着对Concat结果进行池化得到一个特征向量并计算一个权重向量,权重向量可以调整特征的权重,从而带来特征的选区和结合,结构如下图所示:
对于损失函数,模型中使用principal loss function来监督模型的训练,并且使用额外的两个辅助损失函数来监督Context Path的训练,所有的损失函数都是Softmax函数。最终使用
α
\alpha
α来控制principa loss和辅助loss的权重[文中取1],如下所示:
(辅助损失函数)
l
o
s
s
=
1
N
∑
i
L
i
=
1
N
∑
i
−
l
o
g
(
e
p
i
∑
j
e
p
j
)
loss=\frac{1}{N}\sum_{i}{L_i}=\frac{1}{N}\sum_{i}{-log(\frac{e^{p_i}}{\sum_{j}{e^{p_j}}})} \tag{辅助损失函数}
loss=N1i∑Li=N1i∑−log(∑jepjepi)(辅助损失函数)
其中p是网络输出。
(损失函数)
L
(
X
;
W
)
=
l
p
(
X
;
W
)
+
α
∑
i
=
2
K
l
i
(
X
i
;
W
)
L(X;W)=l_p(X;W)+\alpha \sum_{i=2}^{K}l_i(X_i;W) \tag{损失函数}
L(X;W)=lp(X;W)+αi=2∑Kli(Xi;W)(损失函数)
其中,
l
p
l_p
lp是主损失函数的concat输出,
X
i
X_i
Xi是Xception第i阶段的输出,
l
i
l_i
li是不同阶段的辅助损失函数。K取3,L即联合损失函数。
4. 实验
4.1实现细节
三层卷积作为SP,Xception39作为CP的主干网络,使用FFM结合两个路径的结果得到最终预测结果。SP的输出和最终的预测都是原始图像的
1
8
\frac{1}{8}
81.
使用小批量随机梯度减少算法进行训练,batchsize=16,动量0.9,权重衰减
1
e
−
4
1e^{-4}
1e−4,使用poly learing rate
进行数据增广,包括mean subtraction,随机水平翻转和随机尺度。最终将其裁剪至于训练的尺寸相当。
4.2 各种烧蚀实验
略
欢迎扫描二维码关注微信公众号 深度学习与数学 [每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾]