前言
paper&code:https://github.com/ZhangXiangd/semantic-segmentation
1. 摘要
-
语义分割模型中常用到的结构:(a)空间池化金字塔,(b)编码-解码结构。deeplab-v3中的ASPP采用不同采样率的空洞卷积和全局池化操作编码多尺度上下文信息;编码-解码结构通过解码过程逐渐恢复空间细节信息获取清晰的目标边界。在deeplabv3+将两者的优势相结合,取得了更好的性能表现。
-
使用改进后的Xception作为backbone
-
在ASPP和decoder模块中使用深度可分离卷积,减少参数,提高速度
2. 模型总览
Encoder部分就是Deeplab-v3,只是换了backbone
Decoder部分:
-
1×1 Conv:从DCNN中选出分辨率为原图1/4的特征图(OS=4)作为Low-Level Features,由于低级特征的通道数通常比较大,而encoder输出的高级特征通道数只有256,为了避免低级特征由于较多的通道数导致网络认为其更重要,所以通过1×1卷积降低其通道数。并且通过实验证明通道数为48时mIOU最高。
-
3×3 Conv:将低级特征和encoder输出的高级特征融合后,通过3×3卷积对concat后的特征图再做一个整合,同样也是通过实验确定其配置。
-
decoder的有效性:提高了1.64%的mIOU
同时可以看到训练和评估都选择OS=16可以权衡精度和速度,比较适合我这样没卡的= =!
Backbone部分:
-
优化Xcption(在Aligned Xception的基础上)
a. middle flow重复8次改为16次
b. 将maxpool改为stride=2的深度可分离卷积
c. 每个3×3的depthwise convolution后添加BN+ReLU -
改进后的Xception性能更好
3. 实验结果
- 使用Xception作为backbone
使用深度可分离卷积能够减少至少33%的计算复杂度,同时性能几乎没有下降。 - SOTA模型对比
4. 参考资料
https://blog.csdn.net/u011974639/article/details/79518175