【DeepLabV3】Rethinking Atrous Convolution for Semantic Image Segmentation

【DeepLabV3】Rethinking Atrous Convolution for Semantic Image Segmentation_第1张图片

文章目录

    • 概述
    • 细节
      • Challenge
      • Our Work
    • result

概述

以下主要来自其官方PPT

  • 文中提出两个语义分割的challenges
    • 1、连续池化和下采样会让后面特征的分辨率下降,这对于做精细的分割是不利的。
    • 2、多尺度目标的存在。
  • 相对于V1、V2的改变
    • V3所提出的框架可以应用到任意的网络中,应该指的是主干网络。
    • 最后的ResNet block被重用多次,被安排进行级联操作。
    • 在ASPP中加入了Batch normalization。
    • CRF没有被用到。
  • Contribution
    • 本文重新讨论了空洞卷积在cascaded modules and spatical pyramid pooling(Parallel)结构中的应用问题。
    • 讨论了一个重要的问题:对3x3的空洞卷积进行各种rate的尝试,甚至是很极端的情况(在极端的rate情况下,空洞卷积就失去了获取更多上下文信息的能力,转而就退化为1x1卷积功能)。
    • 阐述了一些训练的经验和实验细节。
  • Result
    • Pascal VOC 2012 test 85.7%

细节

Challenge

上面已经阐述过了有两个问题,以下讨论四种利用上下文信息的方法来进行语义分割:
【DeepLabV3】Rethinking Atrous Convolution for Semantic Image Segmentation_第2张图片

  • Image pyramid:将图片缩放成不同比例,各种经过DCNN后融合输出。
  • Encoder-Decoder:利用Encoder阶段的多尺度特征,运用到Decoder阶段上恢复空间分辨率,这样做法有FCN、SegNet、Unet等网络。
  • Context module:在原始模块后增加模块,如DenseCRF,对像素间的关联进行分析。
  • Spatial pyramid pooling:使用spp在不同的范围内获取上下文信息。如,在ParseNet中就使用了Image-level feature,可以获取全局的上下文信息。DeepLabV2使用ASPP,利用不同的rate来获取多种scale的信息。

Our Work

论文使用atrous convolution作为context module来做SPP:对ResNet的最后一个block进行重复使用,并把这些重复的排列为一个级联的结构(cascade)。在训练时候使用Batch Normalization。
Details

  • cascade module:使用atrous convolution & 不使用atrous convolution
    • 复制了几个最后的block(block4),并在其后连接为级联的结构。block5-7是对block4的复制。(主要,这里都只是利用残差的block,block中是残差结构)
    • 每个block中有三个卷积
    • 除了在最后一个block中,其余的block中的最后一个卷积都是stride=2
【DeepLabV3】Rethinking Atrous Convolution for Semantic Image Segmentation_第3张图片

【DeepLabV3】Rethinking Atrous Convolution for Semantic Image Segmentation_第4张图片

  • parallel module
    • 在ASPP中加入Batch Normalization 。
    • 随着采样的rate变得更大,有效的过滤器权重变得更小。
    • 在模型的最后要一个feature map进行Global average pooling (这个应该指的是下图中1x1卷积的部分,在进行GAP之后,再利用1x1卷积来改变通道数量)。
    • 如下图,ASPP最终包含了一个1x1卷积和3个3x3卷积,3x3的卷积的rate分别是{6, 12, 18},都是256通道数,且,经过Batch Normalization。【注意,如果output_stride=8,需要将rate double】(在最后的用来产生预测的1x1 conv之前),加上concat+1x1 conv后,仍然是256 channels,再加上一个Batch Normalization
      【DeepLabV3】Rethinking Atrous Convolution for Semantic Image Segmentation_第5张图片

result

训练设置

Training Protocal Param
数据集 PASCAL VOC 2012
裁剪尺寸 513x513
学习率策略 poly => ( 1 − i t e r / m a x _ i t e r ) p o w e r (1-{iter}/{max\_iter})^{power} (1iter/max_iter)power p o w e r = 0.9 power=0.9 power=0.9
BN策略 当output_stride=16时,采用batch_size=16,同时BN层的参数在训练时参数衰减decay=0.9997,在增强的数据集上,以初始学习率lr=0.007训练,30k迭代后,BN层参数不再变化。 再采用output_stride=8时,再使用初始学习率0.001训练30k。训练output_stide=16要比8快许多。
上采样策略 由原来的ground truth下采样8倍和预测比较计算=>预测上采样8倍和ground truth比较。
  • Cascade experiment
    这是在级联模式下对ResNet主干的比较:
【DeepLabV3】Rethinking Atrous Convolution for Semantic Image Segmentation_第6张图片
这个就是对一个block中的三个卷积进行rate的设置,按照一般不加空洞卷积的就是(1, 1, 1),加上空洞卷积的,不进行这种rate设置的,我们就是默认从第一个block开始是(2, 2, 2),后面的block一直double,如(4, 4, 4)。这里就是所有block全部用Multi-Grid里设置的值。
【DeepLabV3】Rethinking Atrous Convolution for Semantic Image Segmentation_第7张图片

这个就是总结了上面的最好情况,选用block7+MG(1, 2, 1):

【DeepLabV3】Rethinking Atrous Convolution for Semantic Image Segmentation_第8张图片
  • Parallel experiment
【DeepLabV3】Rethinking Atrous Convolution for Semantic Image Segmentation_第9张图片

跟其他方法的对比(其中的JFT表示,模型在ImageNet和JFT-300M数据集上进行了预训练):

【DeepLabV3】Rethinking Atrous Convolution for Semantic Image Segmentation_第10张图片
## conclusion V3将重点放在Atrous Convolution上,同时在ASPP模块中加入BN,可以更好的捕捉上下文信息。 最后放一张图:

【DeepLabV3】Rethinking Atrous Convolution for Semantic Image Segmentation_第11张图片

你可能感兴趣的:(论文阅读,Machine,Learning)