深度学习论文翻译 -- Rethinking Atrous Convolution for Semantic Image Segmentation

摘要:本文中,我们将进一步探讨空洞卷积,一个可以明确调整卷积核感受野和控制DCNN输出特征图的分辨率的强有力工具,并被广泛应用在图像语义分割任务。为了解决多尺度目标的分割问题,我们设计通过采用多个级联或者并行的空洞卷积模块,每一个模块中的空洞卷积采样率不一样。更进一步,我们继续讨论了之前讨论的ASPP模块,可以获取多尺度目标特征,通过与图像层级的特征(image-level features)来获取全局信息,最终得到更好的分割表现。我们给出了具体的应用细节,以及训练实验。在没有DenseCRF后处理的情况下,本文提出的DeepLab-V3在PASCAL VOC 2012上获得当前最好的分割结果。

1、Introduction

在语义分割领域应用DCNN,主要面临两方面的挑战:1、网络连续的池化和卷积滑动使得特征图分辨率太小,使得DCNN更容易学习抽象的特征表达。但是,这种局部图像变换不变性可能会阻碍空间细节的密集预测任务。为了解决这个问题,我们采用空洞卷积,非常适合图像语义分割。空洞卷积(atrous convolution),也称为膨胀卷积(dilated convolution),允许我们修改ImageNet上的预训练网络,使其适用于图像语义分割。通常将网络的最后几层池化层去掉或者上采样相关的卷积核,等价于在卷积核权重之间添加洞。借助空洞卷积,可以控制任意DCNN层的特征响应值,并且没有额外增加学习参数。2、另外一个困难是目标的多尺度性。很多方法被用于处理多尺度问题,本文中,我们考虑四种网络结构,见Fig.2。(1)Image Pyramid:将不同尺寸的原图输入到网络,然后将输出特征图进行融合;(2)Encoder-Decorder:借助编码器,在多尺度图像进行特征提取,并通过解码器恢复空间分辨率;(3)Cascaded Atrous:将空洞卷积添加到原有的网络;(4)Spatial Pyramid Pooling:使用不同采样率的空洞卷积核,并且添加池化操作。

深度学习论文翻译 -- Rethinking Atrous Convolution for Semantic Image Segmentation_第1张图片

本文中,我们再次探讨空洞卷积的应用,它可以有效增大卷积核的感受野,合并多尺度信息,应用的方式有两种:cascaded and spatial pyramid pooling。特别注意的是,我们提出的模块包含不同采样率的空洞卷积层,并且添加BN层,保证训练更容易进行。我们以级联和并行的方式实验ASPP模块。我们探讨一个实际的问题:当3x3空洞卷积的采样率太大的情况下,可能无法获取长距离的信息(due to image boundary effects),那么卷积核将退化为1x1卷积核,也就失去了原本的意义。并且提出将图像级特征合并到ASPP模块。更进一步,我们给出了详细的应用细节,以及训练模型的经验(包括处理采样率和细化标注对象)。最后,我们提出的模型DeepLabv3改善了之前的工作,准确度达到85.7%。

2、Related Work

此部分省略,后续在补充。

3、Methods

在这一部分,我们讨论空洞卷积是如何应用到语义分割领域。接下来,我们讨论空洞卷积模块的两种形式:cascade and parallel。

3.1、Atrous Convolution for Dense Feature Extraction

将DCNN修改为全卷积模式,可以有效的应用于语义分割任务。但是,重复的max-pooling and stride使得输出特征图的分辨率不断降低,通常的DCNN网络降低32倍。最近,反卷积(deconvolutional layers)被应用于恢复分割图的空间分辨率。相反的,我们采用空洞卷积,其最初用于高效的小波变换。

考虑二维的信号,对于每一个位置i,输出y和卷积核w,空洞卷积应用于输入特征图x的公式如下:

这里,空洞率r与采样输入信号的滑动相关,等价于使用上采样(produced by inserting r-1 zeros between two consecutive filter values along each spatial dimension)对x进行卷积操作。标准的卷积采样率r=1,空洞卷积可以通过采样率r来控制感受野,例如Fig.1。

深度学习论文翻译 -- Rethinking Atrous Convolution for Semantic Image Segmentation_第2张图片

空洞卷积可以明确的控制输出特征图的密集程度。我们令output_stride为输入图与输出特征图的比例。在图像分类任务中,通常输出的最终特征图是经过32倍的分辨率降低,那么output_stride=32。如果需要加倍特征图的空间密度(eg. output_stride=16),那么需要将最后一层的池化层或者卷积层的滑动降为1。然后,对后面的网络层使用空洞卷积,r=2。那么我们可以不增加学习参数的情况下,提取更加密集的特征。

3.2、Going Deeper with Atrous Convolution

我们首先研究cascade模式的空洞卷积。具体的,我们复制最后几个ResNet模块,见Fig.3中的block4,然后以cascade的模式组织网络层。与原始的ResNet模块类似,每一个ResNet模块有三层3x3卷积层,最后一层卷积的滑动距离为2。设计这种网络结构目的是为了获取长距离的信息,比如整张图的信息可以反映在最后的小的特征图,见Fig.3(a)。但是,连续的滑动导致细节信息丢失,不利于语义分割任务。那么,我们根据期望的输出特征图的output_stride决定采样率r的大小,见Fig.3(b)所示,output_stride=16。特征图大小不变的情况下,增大rate值,使得获取长距离信息的同时,不会增加参数。

深度学习论文翻译 -- Rethinking Atrous Convolution for Semantic Image Segmentation_第3张图片

这里的模型,我们添加7个ResNet模块(block5,block6,block7 as replicas of block4),如果没有应用空洞卷积,output_stride=256。

3.2.1、Multi-grid Method

受启发于不同大小层次的网络层,我们在block4到block7使用不同的空洞率,我们定义Multi_Grid=(r1,r2,r3)为每一个卷积模块中三层空洞卷积的空洞值。最终的空洞率等于unit rate x corresponding rate,比如,当output_stride=16,Multi_Grid=(1,2,4),那么三层卷积的空洞率为2*(1,2,4)=(2,4,8)。

3.3、Atrous Spatial Pyramid Pooling

我们再次研究DeepLabv2中提出的ASPP模块,四个并行的具有不同rate值的空洞卷积层组合一起,作用在最上层的特征图上。ASPP受启发与Spatial Pyramid Pooling,实验表明,该模块非常适合处理不同尺度的目标,并且可以获取更好的精度。与DeepLab-V2不同的是,我们在ASPP中添加BN。

ASPP中不同的空洞率可以有效获取不同尺度的信息。但是,我们发现,当空洞值变得非常大的情况下,那么有效的卷积权重(eg. the weights that are applid to the valid feature region, instead of padded zeros)变得更小。如Fig.4所示,将不同空洞值的3x3卷积应用在65x65大小的特征图。在极端情况下,rate value 接近特征图大小,那么3x3卷积不在获取整张图像的信息,而是退化到1x1卷积,只有中心的权重是有效的。

深度学习论文翻译 -- Rethinking Atrous Convolution for Semantic Image Segmentation_第4张图片

为了解决上述问题,使其学习到全局信息,我们采用图像级特征(image-level features)。特别地,我们在最后一层特征图使用全局平均池化,并将图像级特征传入1x1卷积,通道为256(后面添加BN),双线性插值恢复到原始图像大小。最后,我们的ASPP模块包括:(a)1个1x1Conv + 3个3x3Conv,当output_stride=16时,rates=(6,12,18),通道为256,以及添加BN;(b)image-level features,如Fig.5所示。值得注意的是,当output_stride=8,rates需要加倍。ASPP所有分支的特征concatenated,后面添加1x1卷积+BN,最后通过1x1卷积生成最终的logits。

深度学习论文翻译 -- Rethinking Atrous Convolution for Semantic Image Segmentation_第5张图片

4、Experimental Evaluation

我们采用ImageNet上预训练的ResNet,并且添加空洞卷积,来提取密集预测特征。考虑到,output_stride是输入图像与输出特征图分辨率的比值,比如,当output_stride=8时,最后两个模块(block3 and block4)包含空洞值分别为rate=2和rate=4。

4.1、Training Protocol

这一部分,我们讨论具体的训练细节以及设置。

Learning rate policy:我们采用poly学习率调整策略,初始学习率乘以,power=0.9。

Crop Size:与之前的训练类似,训练过程中从图像中裁剪图像块。空洞卷积使用大的rate是有效的,大的crop size也是需要的;否则,卷积核处理的大部分是零填充区域。训练和测试的crop size 为513。

Batch Normalization:BN层对于训练非常重要。由于使用BN需要的大的batch size,我们固定output_stride=16,batch size=16。BN的参数 deacy=0.9997。在trainaug数据集上训练30K迭代后,初始学习率为0.007,然后固定BN的参数,令output_stride=8,在PASCAL VOC 2012 (trainval set,数据量为1449)上训练,学习率调小为0.001。需要注意的是,空洞卷积可以使我们在任意阶段控制output_stride,并且不会引入额外的参数。因为中间层特征在空间上小四倍,所以output_stride=16比output_stride=8训练更快,但是牺牲了精度(output_stride=16)。

Upsampling:在之前的DeepLab版本中,当output_stride=8时,标签通常是降低8倍。我们发现使得标签保持完整很重要,因此我们上采样最终的输出特征图,因为降采样标签,使得反向传播丢失了细节的监督。

Data Augmentation数据增强的方式是随机缩放输入图片(from 0.5 to 2.0),以及随机左右翻转。

4.2、Going Deeper with Atrous Convolution

我们首先实验cascade模式的空洞卷积。

ResNet-50:在Tab.1,我们实验了不同output_stride对于ResNet-50的影响,总共有7个残差模块。如表中所示,当output_stride=256,(no atrous convolution at all),分割效果最差。当output_stride变得更大时,并且相应的应用空洞卷积,网络表现越来越好,表明对于语义分割,空洞卷积是必须的。

深度学习论文翻译 -- Rethinking Atrous Convolution for Semantic Image Segmentation_第6张图片

ResNet-50 vs. ResNet-101:我们替换更深的网络ResNet-101,改变模块的数量。如Tab.2所示,随着模块增加,精度提升,但是相差并不是很大。

深度学习论文翻译 -- Rethinking Atrous Convolution for Semantic Image Segmentation_第7张图片

Multi-Grid:我们在ResNet-101中使用Multi-Grid方法,模块的空洞值,Multi-Grid=(r1,r2,r3),从block4到block7都应用这个值。如表3中所示,我们可以看到:(a)使用multi-grid方法优于使用(r1,r2,r3)=(1,1,1)方法;(b)仅仅是加倍(r1,r2,r3)=(2,2,2)并没有太大的效果;(c)更多的模块,精度更高,最好的(r1,r2,r3)=(1,2,1);

深度学习论文翻译 -- Rethinking Atrous Convolution for Semantic Image Segmentation_第8张图片

Inference strategy on val set:提出的模型是在output_stride=16的情况下训练,但是测试的时候,output_stride=8,可以获得更为详细的结构。当采用最好的cascade模型,output_stride=16比output_stride=8高1.39%。当输入使用多个尺度情况下,效果更好,scales={0.5,0.75,1.0,1.25,1.5,1.75},以及左右翻转图片。

深度学习论文翻译 -- Rethinking Atrous Convolution for Semantic Image Segmentation_第9张图片

4.3、Atrous Spatial Pyramid Pooling

这一部分,我们实验ASPP模块,与DeepLab-v2最大的不同是添加了BN参数(并且微调了参数),以及添加图像级特征。

ASPP:在表5中,我们实验了multi-grid和image-level features对ASPP的影响。我们首先固定ASPP=(6,12,18)(i.e. employ rates=(6, 12, 18) for three parallel 3x3 convolution branches),以及更改multi-grid的值。使用Multi-Grid=(1,2,1)优于Multi-Grid=(1,1,1),当采用Multi-Grid=(1,2,4),效果进一步改善。但是当采用rate=24,精度会降低0.12%。另一方面,ASPP中添加image-level feature是很有效的。

深度学习论文翻译 -- Rethinking Atrous Convolution for Semantic Image Segmentation_第10张图片

Inference strategy on val set:参考上面的翻译。

Comparison with DeepLabv2:我们两个cascade模型(Tab.4)和ASPP模块(Tab.6)(两个模型没有在DenseCRF后处理以及MS-COCO上预训练),明显优于DeepLabv2。改善主要来自BN,以及参数微调。

深度学习论文翻译 -- Rethinking Atrous Convolution for Semantic Image Segmentation_第11张图片

Appendix:我们显示了更多的实验结果,以及超参数的影响和Cityscapes的实验结果。

Qualitative Result:我们给出了图片测试结果,如Fig.6,我们的模型可以得到非常好的分割结果。

深度学习论文翻译 -- Rethinking Atrous Convolution for Semantic Image Segmentation_第12张图片

Pretrained on COCO:为了和其它模型进行对比,我们将最好的ASPP应用在MS-COCO数据集上。在该数据集上,我们选择标注区域大于1000个像素,并且包含了PASCAL VOC 2012中类,大概60k的训练集。PASCAL中没有定义的类中,设置 为背景类。当在MS-COCO上训练后,我们的模型精度提高到82.7%(测试的output_stride=8,multi-scale输入)以及图像翻转。我们使用更小的学习率=0.0001,训练方式如Sec.4.1描述。

Test set result and an effective bootstrapping method:相比于augmented dataset,PASCAL提供更高的标注质量。我们进一步在PASCAL VOC 2012上微调模型。特别的,训练时,output_stride=8(so that annotation details are kept)and BN参数被冻结。而且,我们复制多个很难分类的图片,而不是在难以分类的像素上探索。比如,我们复制包含很难分类的图片(namely bicyle,chair,table,pottedplant,and sofa)放在训练集中。如图7中所示,简单的增强方法对于分割自行车很有效。最后,我们的DeepLabv3获得85.7%的精度,没有DenseCRF的后处理。见Tab.7.

深度学习论文翻译 -- Rethinking Atrous Convolution for Semantic Image Segmentation_第13张图片

深度学习论文翻译 -- Rethinking Atrous Convolution for Semantic Image Segmentation_第14张图片

Model Pretained on JFT-300M:有启发于【79】,我们进一步研究在JFT-300M数据集上预训练的ResNet-101,精度达到86.9%。

5、Conclusion

我们的DeepLabv3系统利用空洞卷积,以及上采样卷积核提取密度图像特征,并且获取长距离的信息。特别的,可以处理多尺度目标的信息,我们提出的cascade空洞卷积逐渐的加倍空洞值,而且ASPP中添加image-level features ,以及不同的rates值。实验表明,我们提出的模型效果很好。

A. Effect of hyper-parameters

这一部分我们与论文中的训练设置保持一致,然后对比超参数的影响。

New training protocol:正如论文正文中提到的,我们更改如下:(1)larger crop size;(2)upsampling logits during training;(3)fine-tuning batch normalization。这里我们定量的评价了他们的影响,见Tab8,当采用新的设置,DeepLabv3获得了77.21%的准确度。当训练的时候没有微调BN参数,精度降低到75.95%。如果没有进行预测上采样(或者标签进行了下采样),精度降低到76.01%。更进一步,如果采用更小的输入图片,比如DeepLabv2中的321,精度降到67.22%,表明小的图片影响边界也就影响了精度,特别是采用更大的rate值。

深度学习论文翻译 -- Rethinking Atrous Convolution for Semantic Image Segmentation_第15张图片

Varying Batch Size:由于训练DeepLabv3,微调BN参数很重要,我们进一步实验不同的batch size的影响,见表9,更大的值,精度更好。

深度学习论文翻译 -- Rethinking Atrous Convolution for Semantic Image Segmentation_第16张图片

Output Stride:output_stride决定输出特征图的分辨率,反过来影响训练的最大batch size的选择。在Tab.10中,我们给出了训练和测试过程中不同output_stride值的影响。我们首先固定测试集output_stride=16,修改训练的output_stride值,并且尽可能使用更大的batch size(we are able to fit batch size 6, 16, 24 for training ouput_stride equal to 8, 16, and 32, respectively)。由于微调BN参数的时候没有使用太大的batch size, Tab.10的第一行中,training output_stride=8,仅仅获得74.45%的准确度。当training output_stride=32时,可以使用大的batch size,但是丢失了图像细节。当training output_stride=16时,得到好的结果。表10中,测试的training output_stride=8时,所有的设置都有精度提升,除了training output_stride=32,主要原因是特征图丢失了太多细节信息,所以即使测试时,使用output_stride=32,也不能恢复细节。

深度学习论文翻译 -- Rethinking Atrous Convolution for Semantic Image Segmentation_第17张图片

 

你可能感兴趣的:(深度学习论文翻译)