# 背景
在图像分割领域,图像输入到CNN(典型的网络比如FCN[3])中,FCN (fully convolutional network) 先像传统的CNN那样对图像做卷积再pooling,降低图像尺寸的同时增大感受野,但是由于图像分割预测是pixel-wise的输出,所以要将pooling后较小的图像尺寸upsampling到原始的图像尺寸进行预测(upsampling一般采用deconv反卷积操作?),之前的pooling操作使得每个pixel预测都能看到较大感受野信息。因此图像分割FCN中有两个关键,一个是pooling减小图像尺寸增大感受野,另一个是upsampling扩大图像尺寸。在先减小再增大尺寸的过程中,肯定有一些信息损失掉了,那么能不能设计一种新的操作,**不通过pooling也能有较大的感受野看到更多的信息呢**?
# Big idea
> Dilated convolutional layer (also called as atrous convolution in DeepLab) allows for exponential increase in field of view without decrease of spatial dimensions.
![](leanote://file/getImage?fileId=5a63fe46b013de101200000a)
- (a)图对应3x3的1-dilated conv,和普通的卷积操作一样
- (b)图对应3x3的2-dilated conv,**实际的卷积kernel size还是3x3,但是空洞为1**,也就是对于一个7x7的图像patch,只有9个红色的点和3x3的kernel发生卷积操作,其余的点略过。也可以理解为kernel的size为7x7,但是只有图中的9个点的权重不为0,其余都为0。
- 可以看到虽然kernel size只有3x3,但是这个卷积的感受野已经增大到了7x7(如果考虑到这个2-dilated conv的前一层是一个1-dilated conv的话,那么每个红点就是1-dilated的卷积输出,所以感受野为3x3,**所以1-dilated和2-dilated合起来就能达到7x7的conv**)
- (c)图是4-dilated conv操作,同理跟在两个1-dilated和2-dilated conv的后面,能达到15x15的感受野。
- 对比传统的conv操作,3层3x3的卷积加起来,stride为1的话,只能达到(kernel-1)*layer+1=7的感受野,也就是和层数layer成线性关系,**而dilated conv的感受野是指数级的增长**。
## 优点
dilated的好处是**不做pooling损失信息的情况下,加大了感受野**,让每个卷积输出都包含较大范围的信息。在图像需要全局信息或者语音文本需要较长的sequence信息依赖的问题中,都能很好的应用dilated conv,比如图像分割、语音合成WaveNet、机器翻译ByteNet中。
# Ref
https://www.zhihu.com/question/54149221