Introduction
语义分割中的神经网络有两种:空间金字塔池模块SPP和编解码encoder-decoder结构
SPP:是为了捕捉丰富的上下文信息,通过多种感受野池化不同分辨率的特征
Encoder-decoder:逐步重构空间信息来捕捉物体的边缘
结构进化:deeplabv3 + encoder-decoder --> deeplabv3+
contributions
- 提出了一种新颖的Encoder-Decoder结构,采用了DeepLabv3作为Encoder模块和一个简单而有效的Decoder模块。
- 通过atrous卷积任意控制提取的Encoder特征的分辨率,以平衡精度和运行时间,这是现有的Encoder-Decoder模型不可能做到的。
- 将Xception模型用于分割任务,并将深度可分离卷积应用于ASPP模块和解码器模块。
- 模型在PASCAL VOC 2012和城市景观数据集上获得了最先进的性能。提供详细的设计选择和模型变体的分析。
- 代码开源。
Related Work
SPP:空间金字塔池化。收集多尺度信息。
空间金字塔池化(Spatial Pyramid Pooling)_Lois_llw的博客-优快云博客
Encoder-decoder:编码器-解码器。编码器-解码器网络包含逐步减少特征映射并捕获更高语义信息的编码器模块和逐步恢复空间信息的解码器模块。
Depthwise separable convolution: 深度可分离卷积。在保持性能前提下,有效降低了计算量和参数量。分组卷积与深度可分离卷积_Lois_llw的博客-优快云博客
Methods
网络结构:
Encoder-Decoder with Atrous Convolution:空洞卷积(Atrous convolution)_Lois_llw的博客-优快云博客
Depthwise separable convolution:在保持性能前提下,有效降低了计算量和参数量。
分组卷积与深度可分离卷积_Lois_llw的博客-优快云博客
DeepLabv3 as encoder:
DeepLabv3采用atrous卷积提取深度卷积神经网络在任意分辨率下计算的特征。
令outputstride等于输入图像分辨率和输出分辨率的比值。
图像分类任务,最终的feature map通常比输入图像分辨率小32倍,因此outputstride=32。
语义分割任务,令outputstride=16or8,通过移除最后1or2个blocks并应用空洞卷积(rate=2or4)来密集提取特征。
在此Encoder-Decoder结构中,使用原始DeepLabv3中logits之前的最后一个feature map作为encoder输出。注意encoder输出特征图包含256个通道和丰富的语义信息。此外,可以通过应用atrous卷积提取任意分辨率的特征,这取决于计算预算。
Proposed decoder:
【】:encoder 输出的特征图的output_stride=16,经过双线性上采样4倍得到
。
的output_stride=4
【】:取 encoder 的中间层(具有相同分辨率,output_stride=4),经过 1x1 卷积降通道(原因:要和
保持相同的 channels,保持相同占比,利于模型学习),此时输出的特征图记为
。
【】:将
和
做 concat,在经过一个 3x3 卷积细化 feature,最终再双线性上采样4倍得到预测的结果output_stride=16,是精度和速度的最好的平衡;当output_stride=8 时,需要付出额外的计算代价。
改进 Aligned Xception:
Xception模型用于图像分类任务,Aligned Xception用于物体检测任务,对Xception做了一些变化使其可用于语义分割任务。
- 更多的层,为了计算量和内存,不对Entry flow网络结构进行修改。
- 所有池化层替换为depthwise separable conv,以便采用 atrous separable conv以任意分辨率提取特征。
- 类似于MobileNet,在每个3×3后添加额外的BN和ReLU。