前言

paper&code:https://github.com/ZhangXiangd/semantic-segmentation

1. 问题

利用DCNN处理语义分割任务时的两个挑战

  • 连续的池化操作和步长卷积导致特征图分辨率降低(v1, v2, v3),虽然能够使DCNN学习抽象的特征,但是这种对图像局部变换的不变性阻碍了需要空间细节信息的密集预测任务的完成
  • 图像中存在多个尺度的对象(v2, v3)

2. 解决方法

  • 引入空洞卷积扩大卷积核的视场,减少下采样操作,保证特征图的分辨率
  • 解决多尺度对象问题的常用方法:
    a. 通过多尺度的输入得到不同尺度的特征图;
    b. 编码器-解码器结构。在解码过程中通过融合编码器得到的不同尺度的特征恢复空间分辨率;
    c. 在原始网络上级联额外的模块,如全连接条件随机场(v1,v2);
    d. 空洞空间池化金字塔(ASPP):通过并联不同采样率的卷积,以不同尺度捕获对象(v2)。
    deeplab-v3通过改进v2中的ASPP和探索串联不同采样率的空洞卷积来解决多尺度对象问题
    语义分割论文笔记--Deeplab-v3

3. 串联的空洞卷积结构

  • 总体结构:以ResNet作为backbone,Block(5,6,7)为Block4的复制
    语义分割论文笔记--Deeplab-v3
    语义分割论文笔记--Deeplab-v3
    由于连续的步长卷积降低了特征图的分辨率,导致空间细节信息丢失,所以采用了不同采样率的空洞卷积,保持特征图的分辨率为输入图像的1/16,同时还保证了感受野。
  • Multi-grid Method
    对于Block4-7中每个block中的三个3*3卷积,采用不同的采样率rates = rate × Multi_Grid。例如:当output_stride=16,Multi_Grid= (1,2,4)时,对于block4: rates = 2 × (1,2,4) =(2,4,8)

4. 改进ASPP

  • 作者发现当采样率变大时,有效卷积核权重的数量越小。当采样率足够大时,只有卷积核中心的权重有效,相当于1×1卷积,不能获取到全局的语义信息。为了解决这个问题,作者将v2提出的ASPP结构中的采样率为24的3×3卷积替换成了1×1卷积,并在并联结构中加入了全局平均池化,通过1*1卷积和双线性插值将全局池化后的图像级特征恢复到希望得到的尺寸。
  • 加入了BN层
    语义分割论文笔记--Deeplab-v3

5. 实验细节

  • 采样率(rate)参数设置原则:output_stride越小,输出的特征图分辨率越大,需要较大的采样率才能保证感受野。例如:output_stride=8时,采样率是output_stride=16时的2倍。

  • poly学习率衰减策略

  • 对groundtruth下采样会移除精细的标签,影响反向传播,替换为:对网络的输出上采样,再计算loss

  • 数据增强:随机缩放+随机翻转

  • 串联空洞卷积结构上的实验:
    output_stride实验:OS为8时,表现最好,内存使用量最高(因为需要存储分辨率较大的特征图)。为了权衡精度和性能,在训练时选择OS=16, 推理时OS=8。(github上的代码训练和验证时的OS均为16)
    语义分割论文笔记--Deeplab-v3
    backbone:resnet50 & resnet101,结果:网络越深表现越好
    语义分割论文笔记--Deeplab-v3
    Multi-Grid: (1,2,1)效果最好
    语义分割论文笔记--Deeplab-v3
    多尺度输入(MS)
    语义分割论文笔记--Deeplab-v3

  • ASPP结构上的实验:
    Multi-Grid & 采样率 & 全局池化
    语义分割论文笔记--Deeplab-v3
    OS & 预训练
    语义分割论文笔记--Deeplab-v3

  • 超参数实验:
    (1)采用较大的crop size;(2)训练时上采样输出结果;(3)fine-tuning BN
    语义分割论文笔记--Deeplab-v3
    batch size:
    语义分割论文笔记--Deeplab-v3

  • 算法对比实验结果:
    PASCAL VOC 2012
    语义分割论文笔记--Deeplab-v3
    Cityscapes
    语义分割论文笔记--Deeplab-v3

6. 参考资料

https://arxiv.org/pdf/1512.03385.pdf

相关文章: