论文最早版本arXiv上的发表时间是2017.06
Abstract
在本文中,我们重新回顾了空洞卷积在语义分割中的应用,这是一种显式调整滤波器感受野和控制网络特征响应分辨率的有力工具。
- 为了解决多尺度分割对象的问题,我们设计了采用级联或并行、多个不同空洞率的空洞卷积模块,以捕获多尺度上下文信息。
- 此外,扩充了先前提出的空洞卷积空间金字塔池化模块,该模块在多尺度上探测卷积特征,可以编码图像级的全局上下文特征,并能进一步提高性能。
- 我们还就实施细节进行了讨论,并分享了我们在训练系统方面的经验。
提出的DeepLab V3比我们以前的DeepLab有了很大的改进,没有经过Dense CRF的后处理,并且在Pascal VOC 2012语义图像分割基准上获得了state-of-art的性能。
1. Introduction
深层卷积神经网络(DCNNs)应用于语义分割的任务,我们考虑了面临的两个挑战:
第一个挑战:连续池化操作或卷积中的stride导致的特征分辨率降低。这使得DCNN能够学习更抽象的特征表示。然而,这种不变性可能会阻碍密集预测任务,因为不变性也导致了详细空间信息的不确定。为了克服这个问题,我们提倡使用空洞卷积。
--
第二个挑战:多尺度物体的存在。几种方法已经被提出来处理这个问题,在本文中我们主要考虑了这些工作中的四种类型,如图所示。
- 第一种:Image Pyramid,将输入图片放缩成不同比例,分别应用在DCNN上,将预测结果融合得到最终输出
- 第二种:Encoder-Decoder,将Encoder阶段的多尺度特征运用到Decoder阶段上来恢复空间分辨率
- 第三种:在原始模型的顶端叠加额外的模块,以捕捉像素间长距离信息。例如Dense CRF,或者叠加一些其他的卷积层
- 第四种:Spatial Pyramid Pooling空间金字塔池化,使用不同采样率和多种视野的卷积核,以捕捉多尺度对象
--
在本工作中:
- 我们重新讨论了在级联模块和空间金字塔池化的框架下应用空洞卷积,这使得能够有效地扩大滤波器的感受野,将多尺度的上下文结合起来。
- 特别的,我们提出的模块由具有不同采样率的空洞卷积卷积和BN层组成,对于训练十分重要。试验了级联或并行方式来部署ASPP模块。
- 讨论了一个重要问题:大采样率的3×3空洞卷积,图像边界处无法捕获远距离信息,会退化为1×1,我们建议在ASPP模块中加入图像级特征。
- 此外,我们详细介绍了实现的细节,并分享了训练模型的经验,还包括一种简单而有效的引导方法,用于处理稀有和精细注释的对象。
最后,提出的模型DeepLab V3改进了我们以前的工作,并在Pascal VOC 2012上获得了85.7%的表现,并且我们没有使用CRF后处理。
2. Related Work
多个工作已经证明了全局特性或上下文的相互作用有助于语义分割。在本文中,我们讨论了四种利用上下文信息进行语义分割的全卷积网络(FCNs),见图2。
图像金字塔(Image pyramid):同样的模型,通常使用共享权重,使用多尺度的输入。小尺寸的输入特征响对应长距离语义,大尺寸输入的相应修正细节。通过拉普拉斯金字塔对输入图像进行变换,将不同尺度的图片输入到DCNN,并将所有比例的特征图合并。有人将多尺度输入按顺序从粗到细依次应用,也有人直接将输入调整成不同的大小,并融合所有大小的特征。这类模型的主要缺点是由于GPU内存,较大/更深的DCNN不方便应用,因此通常在推理阶段应用。
--
编码器-解码器(Encoder-decoder):该模型由两部分组成:(a)编码器中,特征映射的空间维度逐渐减小,从而更容易捕获较长范围内的信息;(b)解码器中,目标细节和空间维度逐渐恢复。例如,有人反卷积来学习对低分辨率特征响应进行上采样。SegNet复用编码器中的池化索引,学习额外的卷积层来平滑特征响应;U-net将编码器中的特征层通过跳跃连接添加到相应的解码器激活层中;LRR使用了一个拉普拉斯金字塔重建网络。最近,RefineNet等证明了基于编码-解码结构的有效性。这类模型也在对象检测的领域得到了应用。
--
上下文模块(Context module):包含了额外的模块,采用级联的方式,用来编码远距离上下文信息。一种有效的方法是合并Dense CRF到DCNNs中,共同训练DCNN和CRF。
--
空间金字塔池化(Spatial pyramid pooling):空间金字塔池化可以在多个范围内捕捉上下文信息。ParseNet从不同图像等级的特征中获取上下文信息。DeepLabv V2提出了空洞卷积空间金字塔池化(ASPP),使用不同采样率的并行空洞卷积层才捕获多尺度信息。PSPNet在不同网格尺度上执行空间池化,并在多个语义分割数据集上获得出色的性能。还有其他基于LSTM的方法聚合全局信息。
--
在本工作中,我们主要探讨空洞卷积作为上下文模块和空间金字塔池化的工具。我们提出的框架是一般性的,可以适用于任何网络。具体而言,我们取ResNet最后一个block,复制多个级联起来,送入到包含多个平行空洞卷积的ASPP模块中。注意,我们的级联模式是直接应用于feature maps,而不是belief maps。我们通过实验发现使用BN层有利于模块的训练。为了进一步捕获全局上下文,我们建议像PSPNet一样在ASPP上融入图像级特征。
--
空洞卷积(Atrous convolution):基于空洞卷积的模型在语义分割中得到了积极的探索。例如,有人修改采样率来探索获取远距离信息的效果;有人在ResNet的最后两个块内采用混合空洞卷积采样率;有人进一步提出可变形的卷积,使用学习到的偏移量对输入特征进行采样,泛化空洞卷积。
3. Methods
3.1. Atrous Convolution for Dense Feature Extraction
前两篇论文都讲过空洞卷积这个了,略过,可以看以前V1、V2的笔记
3.2. Going Deeper with Atrous Convolution
首先,我们用级联的方式设计了空洞卷积模块。
具体而言,我们取ResNet中最后一个block(ResNet的block4),并将他们级联到了一起,如图3所示。
有三个3×3卷积在这些块中,除了最后一个块,其余的模块中最后的一个卷积步长为2,类似于原来的ResNet。这么做背后的动机是,引入的stride使得更深的模块更容易捕获长距离的信息。如图3(a),整个图像的特征都可以汇聚在最后一个小分辨率的特征图中。
然而,我们发现连续的stride对语义分割是有害的,会造成细节信息的丢失(如下表)。
输出步幅越长的特征映射,结果越差,结果最好的out_stride=8却需要占用较多的存储空间。
因此我们使用了不同采样率的空洞卷积。如图3(b)中,输出步幅为out_stride = 16。这样不增加参数量和计算量的同时有效的缩小了步幅。
3.2.1 Multi-grid Method
受到了采用不同大小网格层次结构的多重网格方法的启发,我们提出的模型在block4和block7中采用了不同的空洞率。
特别的,我们定义Multi_Grid =为block4到block7内三个卷积层的unit rates。卷积层的最终空洞率等于unit rate和corresponding rate的乘积。例如,当output_stride = 16 ,Multi_Grid = (1, 2, 4),三个卷积就会在block4有 rates = 2 · (1, 2, 4) = (2, 4, 8) 。
3.3. Atrous Spatial Pyramid Pooling
我们重新审视了DeepLab V2中提出的ASPP,其在特征映射的顶层并行应用了四个具有不同采样率的空洞卷积。ASPP的灵感来自于空间金字塔池化,它表明在不同尺度上采样特征是有效的。不同意上一版,DeepLab V3的ASPP中包括了BN。
--
不同采样率的ASPP能有效地捕捉多尺度信息。但是,我们发现,随着采样率的增加,滤波器的有效权重(指权重应用于特征区域,而不是填充0的部分)逐渐变小。如图4所示。
当在65×65大小的特征图上应用不同采样率的3×3卷积时。在比率值已经接近于特征映射大小的极端情况下,这时的3×3卷积核已经无法捕获整个图像上下文信息,而是退化为一个简单的1×1卷积核,因为此时只有中心点的权重才是有效的。
--
为了克服这个问题,并将全局上下文信息纳入模型,我们采用了图像级特征。具体来说,我们在模型的最后一个特征图采用全局平均池化,将重新生成的图像级别的特征提供给带256个滤波器(和BN)的1×1卷积,然后双线性插值将特征提升到所需的空间维度。
最后,我们改进后的ASPP包括:
- (a)一个1×1的卷积与三个3×3的rates=(6, 12, 18)的空洞卷积,滤波器数量都为256,包含BN层。针对output_stride=16的情况
- (b)图像级特征,如图5所示
注意,当output_stride=8时,加倍了采样率。然后将所有分支的特征图通过一个1×1卷积(有256个滤波器和BN)concatenate起来,送入最后的1×1卷积以产生最终分数。
4. Experimental Evaluation
- 采用预训练的ResNet为基础层,配合使用空洞卷积控制输出步幅。
- output_stride定义为输入图像的分辨率与最终输出分辨率的比值。例如当输出步幅为8时,原ResNet的最后两个block(block3和block4)包含的空洞卷积的采样率为r=2和r=4。
4.1. Training Protocol
Learning rate policy:
- 采用poly策略, 在初始学习率基础上乘 ,其中
--
Crop size:
- 为了大采样率的空洞卷积能够有效,需要较大的图片大小;否则,大采样率的空洞卷积权值就会主要用于padding区域。
- 在Pascal VOC 2012数据集的训练和测试中我们采用了513的裁剪尺寸。
--
Batch normalization:
- 我们在ResNet之上添加的模块都包括BN层
- 当output_stride=16时,采用batchsize=16,同时BN层的参数做参数衰减0.9997。
- 在增强的数据集上,以初始学习率0.007训练30K后,冻结BN层参数,然后采用output_stride=8,再使用初始学习率0.001在PASCAL官方的数据集上训练30K。
- 训练output_stride=16比output_stride=8要快很多,因为其中间的特征映射在空间上小四倍。但output_stride=16在特征映射上相对粗糙,快是因为牺牲了精度。
--
Upsampling logits:
- 在先前的工作上,我们是将output_stride=8的输出与Ground Truth下采样8倍做比较。
- 现在我们发现保持Ground Truth更重要,故我们是将最终的输出上采样8倍与完整的Ground Truth比较。
--
Data augmentation:
在训练阶段,随机缩放输入图像(从0.5到2.0)和随机左-右翻转
4.2. Going Deeper with Atrous Convolution
我们首先实验级联更多的空洞卷积模块。
--
ResNet50:
使用ResNet-50时,我们探究output_stride的影响。
- 当output_stride为256时,由于严重的信号抽取,性能相比其他output_stride大大的下降了。
- 当使用不同采样率的空洞卷积时,性能上升,这说明了语义分割中使用空洞卷积的必要性。
--
ResNet-50 vs. ResNet-101:
用更深的模型,并改变级联模块的数量。
- 当block增加,性能也随之增加。
- 随着添加更多的block,提升变得更小。
- 值得注意的是,ResNet-50使用block7会稍微降低性能,同时ResNet-101使用后仍然可以提升性能。
--
Multi-grid:
采用Multi-gird策略,在ResNet-101使用变体残差模块。block4和其他添加进来的block中,主分支中的三个卷积都使用空洞卷积,采样率设置Multi-gird策略。
实验观察到的:
- 应用Multi-gird策略通常比单倍数 效果要好
- 简单的提升倍数例如 是无效的
- 增加网络深度再配合Multi-gird可以提升性能。图中最好的模型即block7下
--
Inference strategy on val set:
模型训练阶段使用output_stride=16,在推理过程中应用output_stride=8以获得更精细的特征图。
- 评估时output_stride=8比output_stride=16性能提高了1.39%。
- 使用多尺度输入(scales={0.5, 0.75, 1.0, 1.25, 1.5, 1.75})和左-右翻转,进行数据增强后,进一步提高了性能。
- 最后,计算每个尺度和翻转图像的平均概率来作为最终结果。
4.3. Atrous Spatial Pyramid Pooling
DeepLab V3的ASPP模块与DeepLab V2的主要区别在于,增加了BN层,增加了图像级别的特征。
ASPP: 表5记录了ASPP模块block4使用multi-grid策略和图像级特征后的效果。
--
Inference strategy on val set:
推断期间使用output_stride = 8,采用多尺度输入和左-右翻转数据增强。
--
Comparison with DeepLabv2:
DeepLab V2使用了DenseCRF后处理,并在MS-COCO数据集上进行了预训练。而本文中级联模型中最好的模型和ASPP模型中最好的模型(这两种都没有DenseCRF后处理或MS-COCO预训练)效果都已经超过了DeepLab V2。
5. Conclusion
略
完