DeepLab系列之V3

  1. DeepLab系列之V1
  2. DeepLab系列之V2
  3. DeepLab系列之V3
  4. DeepLab系列之V3+

  • 论文地址:DeepLabv3: Rethinking Atrous Convolution for Semantic Image Segmentation
  • 论文代码: github-Tensorflow

概述

  1. DCNNs中语义分割存在三个挑战:
  • 连续下采用和重复池化,导致最后特征图分辨率低
  • 图像中存在多尺度的物体
    注:当前版本没有使用CFR
  1. 作者把解决多尺度物体问题的方法分成四类:


    DeepLab系列之V3_第1张图片
  • 把输入图片缩放成不同尺度,经过同一个网络,最终融合多尺度下的物体信息
  • 使用编解码结构,在decoder时融合encoder网络不同阶段的特征
  • 在原网络最后层增加额外的context模块,比如DenseCRF,或者串联几个不同感受野的卷积模块
  • 在原网络最后层添加并行结构—空间金字塔池化,获取不同尺度的物体信息
  1. 作者的处理方案:
  • 使用空洞卷积,防止分辨率过低情况
  • 串联不同膨胀率的空洞卷积或者并行不同膨胀率的空洞卷积(v2的ASPP),来获取更多上下文信息
  1. 优势
  • 当时在PASCAL VOC 2012 test上效果最好,并且没有使用DenseCRF
  1. 本文主要工作
  • 探索更深结构下的空洞卷积探索(串行结构)
  • 优化atrous spatial pyramid pooling—ASPP(并行结构)

膨胀卷积

v1、v2中已详细说明,略....

更深结构下的空洞卷积

  1. 串联结构
    把resnet最后一个block,下图中的Block4拷贝几份串联起来:


    DeepLab系列之V3_第2张图片

    每个block的最后一个卷积stride都为2(除了最后一个block),连续的下采样保证获取更大范围的特征,但是这样不利于语义分割。
    使用不同膨胀率的空洞卷积保证了分辨率和大的感受野,如上图b所示。

  2. multi-grid
    作者考虑了multi-grid方法,即每个block中的三个卷积有各自unit rate,例如Multi Grid = (1, 2, 4),block的dilate rate=2,则block中每个卷积的实际膨胀率=2* (1, 2, 4)=(2,4,8)

优化Atrous Spatial Pyramid Pooling

作者通过实验发现,膨胀率越大,卷积核中的有效权重越少,当膨胀率足够大时,只有卷积核最中间的权重有效,即退化成了1x1卷积核,并不能获取到全局的context信息。3x3的卷积核中有效权重与膨胀率的对应如下:

DeepLab系列之V3_第3张图片

为了解决这个问题,作者在最后一个特征上使用了 全局平均池化(global everage pooling)(包含1x1卷积核,输出256个通道,正则化,通过bilinear上采样还原到对应尺度)
修改后的ASPP结构如下:
DeepLab系列之V3_第4张图片

所有的分支都包含256个通道和正则化,最终concat到一起,1x1卷积将通道数为256。

实验

  1. 训练策略
  • Learning rate policy:
    poly,学习率下降方式如下:


  • Crop size:
    513,保证更大的膨胀率有效
  • Batch normalization:
    先在增强数据集上output stride = 16(输入图像与输出特征大小的比例),batch size=16,BN参数衰减为0.9997,训练30k个iter。
    之后在官方PASCAL VOC 2012的trainval集上冻结BN参数, output stride = 8,batch size=8,训练30k个iter。
  • Upsampling logits:
    v1、v2中都是下采样的真值来计算loss,这里上采样最后的输出结果。
  • Data augmentation:
    输入图片随机缩放(0.5-2.0),随机左右翻转
  1. 串行结构下的结果
  • block串联个数不同,在resnet50和resnet101下的mIOU:


    DeepLab系列之V3_第5张图片
  • ResNet-101,output stride = 16下不同multi-grid的mIOU:


    DeepLab系列之V3_第6张图片
  • 消融实验:


    DeepLab系列之V3_第7张图片
  1. ASPP结构下的结果
  • output stride = 16,不同multi-grid和膨胀率的结果:


    DeepLab系列之V3_第8张图片
  • 消融实验:


    DeepLab系列之V3_第9张图片

经验track

  1. 如何在MS COCO上预训练?
    trainval_minus_minival挑选包含PASCAL分类并且目标区域像素个数大于1000的图片,大概有60k的图片用于训练,除了PASCAL分类区域,其它都看成背景。从上述实验结果中发现提升了3个百分点。
  2. 对于有些类准确率比较低,怎么办?
    针对包含namely bicycle、chair、table、potted- plant、and sofa分类的图片,在训练集中增加它们比列。通过BN策略和这里的策略,达到85.7%IOU,再次提升3个百分点。
  3. Cityscapes上的小策略:
    cropsize 769 iters 90k
  • output stride = 16时:77.23%
  • output stride = 8时:77.82%
  • 多尺度输入(0.75,1,1.25):79.30%
  • 事先在trainval coarse上预训练,scales = {0.75, 1, 1.25, 1.5, 1.75, 2} ,output stride = 4,output stride = 8,最终结果:81.3%

你可能感兴趣的:(DeepLab系列之V3)