paper:Rethinking BiSeNet For Real-time Semantic Segmentation
github:https://github.com/MichaelFan01/STDC-Seg
BiSeNetV1和BiSeNetV2都采用双分支结构(spatial path 和 context path),分别用来提取空间信息和上下文信息,多分支结构计算耗时较多,且使用图像分类任务的预训练模型并不一定适合语义分割任务。STDC对BiSeNet结构做出了改变,移除了spatial分支,同时采用Short-Term Dense Concate network(STDC network)结构并引入辅助头detail head来提取低级细节信息。STDC在citiscapes测试集上mIoU为71.9%,NVIDIA GTX 1080Ti 上推理速度为250.4FPS。STDC的主要贡献如下:
(1)设计了Short-Term Dense Concate module(STDC module)提取多尺度特征;
(2)使用Detail Aggregation module使网络的浅层学习到细节信息同时不增加推理的计算量;
(3)证明了STDC网络的有效性,及其优越的性能。
目录
1、Short-Term Dense Concatenate Module
一、网络结构
1、Short-Term Dense Concatenate Module
STDC module是网络的主要模块。在图像分类任务中,常用做法是在更深的层中使用更多的通道,但是在语义分割任务中,更关注多尺度信息,浅层网络需要足够的通道来提取小感受野的细节信息,更大感受野的深层网络关注高级语义信息。因此将浅层网络通道数设置的较大使其保留更多的细节信息,深层网络的通道数设置较小来降低信息冗余。
下图为STDC module的构造,输入特征图的通道为M,输出特征图的通道为N,除了最后一个block,其他block的通道数为(i为block编号),最后一个block通道和导数第二个通道数相同。
上图中,ConvX表示Conv-BN-ReLU,STDC的参数数量为:
由上式可以看出,参数数量与N和M密切相关。
STDC模块的感受野分析如下表,当步长为2的时候,skip connection有avgpool的存在,其感受野为3x3。
2、图像分类网络结构
网络结构如下图所示:
每层具体参数如下(S表示stride,R表示重复次数,C表示通道数):
3、语义分割网络结构
STDC network语义分割网络结构如下图所示,与BiSeNetV1的区别在于:
(1)移除了spatial path,从stage 3引入细节信息;
(2)stage 3引出detail loss,网络浅层学习细节信息;
(a)Network Architecture
与BiSeNetV1非常相似,区别在于移除了Spatial path,从stage3引入spatial information。ARM和FFM模块可参考BiSeNetV1。
(b)Train Loss
由于网络移除了spatial path,使用stage 3的spatial information,所以在stage 3引出Detail Head,并设计Detail Loss使其学习到低级细节信息,因为detail loss存在数据不平衡,所以其损失函数采用bce loss和dice loss,如下式:
网络的Seg Head输出Loss使用 Online Hard Example Mining策略。
(c)Ground truth
Seg Head的Ground truth为label,Detail GT为label的边缘,对label使用不同步长的laplacian核进行滤波,使用1x1的卷积(可训练)融合3个细节图,设置阈值0.1,大于等于0.1的值设定为1,小于0.1的设置为0(源码在1x1卷积融合前,也进行一次阈值二值化的操作),得到的二值图作为detail的ground truth,detail GT的维度为[N, 1, H, W]。
二、实验结果
1、ImageNet-1K 图像分类
2、语义分割 cityscapes
可以看出,STDC在miou和FPS对比BiSeNet都有显著优势。