今天介绍的这篇论文是旷世的一篇实时语义分割网络,发表在ECCV2018。
论文链接:BiSeNet: Bilateral Segmentation Network for Real-time Semantic Segmentation
一、介绍
实时语义分割主要有以下三种加速模型的主要方式(如图a所示):
1)通过resize或crop限制输入尺寸,来降低计算复杂度。
这种方式虽然简单有效,但是会造成spatial details(空间细节)的丢失,尤其会破坏边界附近的预测。
2)减少通道数量来提高前向速度。
这种方式弱化了spatial capacity(空间容量)。
3)放弃模型的最后stage,以追求一个非常紧凑的框架。如ENet。
这种方式对于大目标来说感受野不够大,会导致判别能力较差。
以上三种方式都是通过牺牲精度来提高速度,很难在工程上付诸实践。
为了弥补spatial details的丢失,很多人采用U型结构(如图b所示)。
这种结构的缺点在于:
1)U-shape结构在高分辨率特征图上引入额外的计算,会降低模型速度。
2)被pruning或cropping丢失掉的spatial information,无法通过引入浅层修复。
二、BiSenet:
整个结构分三部分:1、Spatial Path 2、Context Path 3、Feature Fusion Module
1、Spatial Path:这个分支很简单,就是卷积+bn+relu,下采样8倍。
2、Context Path:先使用Xception快速下采样,尾部接一个全局pooling(下面哪个白色小方块),然后类似u型结构容和特征,只上采样两次,这里用到ARM,用于refine特征。之后上采样(双线性插值)到spatial path分路特征相同大小。
3、Feature Fusion Module:对细节特征和语义特征进行拼接,之后是一个类似senet的结构对信息进行整合。
损失:共有三部分损失,一部分是主loss,另外两部分相当于加了一个在context path的中间监督,三部分loss构成整个loss,比重1:1:1。