Deeplab v3+论文学习
简介
空间金字塔池化或者encoder-decoder结构被广泛应用于语义分割网络。之前的网络可以通过池化操作和filter实现融合多尺度的上下文信息,而之后的网络可以提取锐利的物体边缘,在deeplab v3+中,结合了二者的优点,并且借鉴了Xception模型,将深度可分离卷积核空洞空间金字塔池化应用到我们的模型中,实现了更快更好的encoder-decoder网络。
Deeplab v3+ 主要的特性:
- 空间金字塔池化(SPP)
- Encoder-Decoder
- 深度可分离卷积(Depthwise separable convolution)
- 膨胀卷积/空洞卷积(Dilated/Atrous)
空间金字塔池化
SPP的创新,主要解决了输入大小固定的问题,输出大小是固定的,并且融合了不同分辨率的数据,包含了丰富的上下文信息,并且对deformation具有鲁棒性。
Deeplab v3+将SPP和空洞卷积相结合,构造了Encoder-Decoder网络。
比较详细的介绍SPP的文章是凯明大神在2015年的论文《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》,这篇文章详细介绍了关于SPP的实现原理和效果。
膨胀卷积
Dilated/Atrous Convolution 或者是 Convolution with holes 从字面上就很好理解,是在标准的 convolution map 里注入空洞,以此来增加 reception field。相比原来的正常convolution,dilated convolution 多了一个 hyper-parameter 称之为 dilation rate 指的是kernel的间隔数量(e.g. 正常的 convolution 是 dilatation rate 1)。
作者:刘诗昆
链接:https://www.zhihu.com/question/54149221/answer/323880412
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
膨胀卷积的优点在于感受野增大了,但是参数量没有改变,而且不损失pixel信息。
(a)是3x3的rate=1普通卷积,(b)是rate=2的膨胀卷积,可以看到,在7x7的图像上,深色区域代表经过卷积计算,颜色越深计算过的次数越多,这样感受野就增大到7x7了。同理,图(c)中,是rate=4的膨胀卷积,拥有15x15的感受野。
论文链接:MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS
深度可分离卷积(组卷积 Group Conv)
优点是降低了参数量和计算复杂度,效果还不错
这里有几个概念:
- depthwise convolution是在每个通道上独自的进行卷积,通道独立计算
- pointwise convolution是利用1x1卷积核组合前面depthwise convolution得到的特征,构成通道之间联系
- atrous depthwise conv在depthwise的基础上加入了膨胀卷积
深度可分离卷积在保证性能的同时减少了计算量。
网络结构
Encoder部分沿用了Deeplab v3的结构基础上做了一些调整:
- 输入尺寸与输出尺寸比(output stride = 16),最后一个stage的膨胀率rate为2
- ASPP有四个不同的rate,额外一个全局平均池化
Decoder部分:
- 先把encoder的结果上采样4倍,然后与resnet中下采样前的Conv2特征concat一起,再进行3x3的卷积(作用是学习更多特征使得边缘更清晰,原因是经过双线性插值上采样后的层没有需要学习的参数),最后上采样4倍得到最终结果。
- 融合低层次信息前,先进行1x1的卷积,目的是降通道(例如有512个通道,而encoder结果只有256个通道),减少参数量
主干网络
基于Xception的结构,做了一些修改:
- 更深的Xception结构,并不修改entry flow network结构
- 所有的max pooling结构被stride=2的深度可分离卷积代替
-
每个3x3的depthwise convolution都跟BN和Relu