Abstract
- 网络中靠前的层可以通过在不同级别(rates 级别)和不同感受野下, 对输入特征的卷积或者池化来对不同尺度的上下文信息进行编码.
- 网络中靠后的层可以通过逐渐回复空间信息捕捉到清晰的物体边界.
DeepLabv3+结合以上两种特点.具体是:
- 通过添加一个简单但是很有效的解码模块去扩展DeepLabv3, 通过物体边界信息改进分割结果.
- 探索Xecption模型, 将depthwise separable convolution应用到ASPP和解码模块上.(更快,更稳定)
Introduction
- ASPP通过在不同分辨率下的池化后的特征捕捉丰富的上下文信息.
- encoder-decoder来获取清晰的物体边界
具体:
ASPP: 由于网络骨干中池化层或者带有步长的卷积层的作用, 即使将丰富的分割信息编码到最后一层的feature map中, 有关物体边界的信息仍然会丢失.用空洞卷积提取密集的feature maps可以减轻这种情况.output feature maps 是输入特征像素的1/16.
encoder-decoder:本身计算速度很快(因为没有特征被dilated).
尝试结合以上两种特点.如图1所示
总结 - 提出一种新型的encoder-decoder结构: 由DeepLabv3作为encoder模块和一个简单而有效的decoder模块组成.
- 在这个结构中, 通过空洞卷积可以任意控制encoder 特征的分辨率, 用来做精度和速度的折中.
- 对Xception模型进行调整, 并将depthwise separable convolution 用于ASPP和decoder模块,使网络更快更稳定.
- 新模型达到了state-of-art, 同时详细分析了设计的选择和模型的变换.
- 用tensorflow实现了代码
2 Related work
- Spatial pyramid pooling(PSPNet, DeepLab)
- Encoder-decoder
- Depthwise separable convolution
3 Method
3.1 Endocer-Decoder with Atrous Convolution
- Atrous convolution
- Depthwise separable convolution
- DeepLabv3 as encoder
- Proposed decoder
将空洞卷积和depth wise separable卷积结合,如图3
3.2 Modified Aligned Xception
- 基于MSRA团队的修改,进行了少量修改.考虑到快速的计算和内存的效率, 没有修改进入流网络的结构(entry flow network structure).
- 将所有的 max pooling 替换成 有stride的depthwise separable卷积, 这样能够让我们用atrous separable convolution 在任意分辨率情况下去提取特征(另外一个选择是将空洞用于池化操作).
- 在每个3x3的depthwise convolution之后都加 batch normalization 和 ReLU激活函数.
如图4
4 Experimental Evaluation
- Train protocol
initial lr: 0.007
crop size 513 x 513
fine-tuning batch normalization
output stride = 16
random scale data augmentation.
注意, 在提出的decoder模块中,同样包含了batch normalization参数.
4.1 Decoder Design Choices
- 定义
(1) DeepLabv3 feature map: DeepLabv3计算出来的最后一层特征图.
(2) [k x k; f] : 核大小为k x k, 核数为f的卷积操作. - Decoder module: 如图2
(1) 1 x 1卷积用来减少来自encoder模块的low-level特征图的通道数.
(2) 3 x 3卷积用来获得更清晰的分割结果.
(3) encoder low-level 的特征应该用来做什么(hat encoder low-level featuresshould be used).
通过两次[3x3, 256]的操作, 将DeeplabLabv3的特征图和通道减少的Conv2 feature map提取出来,并且concatenation.