【阅读笔记】《Rethinking Atrous Convolution for Semantic Image Segmentation》(DeepLab v3)
本文记录了博主阅读论文《Rethinking Atrous Convolution for Semantic Image Segmentation》(DeepLab v3)的笔记,更新于2019.04.11。
文章目录
Abstract
本文回顾了用于调节感受野并控制深度神经网络在分割任务上特征图分辨率的空洞卷积(atrous convolution或dilated convolution)。本文中提出的DeepLabv3明显提升了之前版本的DeepLab,且无需DenseCRF后处理。达到了PASCAL VOC2012语义分割下的state-of-art结果。
Introduction
用深度神经网络(Deep Convolutional Neural Networks,DCNNs)解决语义分割问题有两个主要挑战。首先是由于连续池化(pooling)或跨步(striding)导致的特征图分辨率下降,虽然这些操作使得DCNNs学习更抽象的特征表达,但是这种对于局部图像变换的不变性也影响了稠密估计任务(需要细节化的空间信息)。为了克服这个困难,他们提出了空洞卷积,该方法在图像分割领域的有效性也已经被证明。
第二个困难来源于不同尺寸的目标。下图是总结的4类用于解决这个问题的方法:
Related Work
全局信息在语义分割中正确分类像素的问题上的有效性已经被证明了(33, 76, 73 ,48 ,27, 89)。这里讨论四种类型的全卷积网络(FCNs)。
Image pyramid: 相同模型,通常权重共享,应用于不同尺度的输入上。这种类型模型的主要缺点是,由于GPU内存的限制,其对于更大或更深的DCNNs(比如类似32,91,86)不能很好地缩放。
Encoder-decoder: 这类模型包括两部分。第一部分是编码器,此时特征图的空间尺寸逐步减小,使得深层编码器输出更容易捕获远程信息(long range information);第二部分是解码器,在这一部分,目标细节和空间维度逐步恢复。这类模型在分割和识别任务中都有应用。
Context module: 这类模型串联排布,从而编码远程信息。
Spatial pyramid pooling: 这个模型应用空间金字塔池化(spatial pyramid pooling,28,49)获取几个范围内的上下文信息。ParseNet提取图像级特征用于描述全局上下文信息。DeepLabv2提出了空洞空间金字塔卷积(atrous spatial pyramid pooling, ASPP),用不同比率的空洞卷积层提取不同尺度下的信息。
这篇论文中主要考察空洞卷积作为一个context module和spatial pyramid pooling工具的表现。
Atrous convolution:
Methods
Atrous Convolution for Dense Feature Extraction
以全连接卷积形式展开的深度卷积神经网络(Deep Convolutional Neural Networks, DCNNs)已经被证明在语义分割任务上的有效性。但是,max-pooling和striding使得其特征图在空间尺寸上(分辨率)成比例缩小(比如现在比较流行的32倍)。除了可以用反卷积(deconvolutional layers/ transpose convolution)恢复空间分辨率以外,本文中提倡使用空洞卷积。这个概念最早用于“algorithme a trous”框架下的小波变换(undecimated wavelet transform)。
考察二维信号(two-dimensioanl signals),对于输出位置和滤波器,空洞卷积被应用在输入特征图上:
下图是空洞卷积说明:
Going Deeper with Atrous Convolution
上图中(a)是没有使用空洞卷积的结构,这种行为在语义分割领域是比较有害的,因为会丢失细节信息。具体可以见下表。
Multi-grid Method
Atrous Spatial Pyramid Pooling
与ASPP不同,这里应用了batch normalization。
不同空洞率(atrous rate)的ASPP虽然可以捕获不同尺度下的信息,但是论文作者发现当采样率增大时,有效滤波器权重也变小(应用到有效特征区域而不是padded zeros上)。这种情况的影响如下图所示:
比如,一个65x65的特征图,在不同比率下进行空洞卷积。当rate value接近特征图尺寸时,一个3x3的卷积核就会退化成1x1的卷积核,因为只有中间的值是有效的。为了应对这种情况,对模型最后一层的特征图应用global average pooling。
Experimental Evaluation
Training Protocol
Going Deeper with Atrous Convolution
ResNet-50: Table 1中考察了输出步长(output strid)对于mIoU的影响,可见,步长小的表现更好。
ResNet-50 vs. ResNet-101:
Multi-grid:
结论:multi-grid method总体而言比原始的(1,1,1)卷积效果好;单纯加倍效果一般;以multi-grid形式加深提高表现。
Inference strategy on val set:
模型训练的时候用的OS=16,验证的时候用OS=8来保留更多信息。
Atrous Spatial Pyramid Pooling
ASPP:
Inference strategy on val set:
Comparison with DeepLabv2:
无论是级联模型还是ASPP模型的最好结果(Table4和Table6)都比DeepLabv2的77.69%要好,且前者没有使用DenseCRF或COCO预训练模型。这种提升主要由于加入并调整了batch normalization parameters,且有了更好的编码多尺度上下文的方法。
Appendix:
附件中显示了更多实验结果,比如超参数的影响和Cityscapes下的表现。
下图是一些直观结果和Failure mode,比如沙发和椅子、桌子和椅子、罕见目标。
Conclusion
Appendix
A. Effect of hyper-parameters
新训练协议: 如正文中所说的,本文将DeepLabv1和v2中的训练协议主要做了如下改动:a)larger crop size,b)upsampling logits during training,c)fine-tuning batch normalization。
如下表所示:
改变batch size:
Output stride:
B. Asynchronous training
K80 GPU训练3.65天。