Dilated Convolution(带洞卷积)

1 提出原因:

    传统的FCN,Segnet网络等等pooling(其中池化的意义一方面是降低计算量,另一方面是增大感受野)之后需要对其进行upsampling,以扩大图像尺寸。将图像由小变大的过程势必导致一些信息的丢失,那么就会想到是否可以不进行pooling操作,也可以增大感受野呢。本文提出的dilated convolution正是为了解决这个问题。

2 结构:
2.1 一维

  Dilated Convolution(带洞卷积)_第1张图片

(a)为k=3,stride=2 的普通卷积;(b)为k=3,stride=1的卷积;(c)为k=3,stride=1,dilation=2的空洞卷积这里虽然卷积核长度仍为3,但每隔2个点采样一次(也可以理解为长度为5但其中两个位置权重为0)

2.2 二维

Dilated Convolution(带洞卷积)_第2张图片

图2(a)为 33的普通卷积,感受野为 33
  (b)为 33+dilation=2 的空洞卷积,感受野为 77
  (c)为 33+dilation=4的空洞卷积感受野为 1515
感受野的计算公式为 Fi+1=(2i+21)x(2i+21)

卷积核的参数个数保持不变,感受野的大小随着“dilation rate”参数的增加呈指数增长

2.3应用:

简要地说明Dilated Convolution应用到MULTI -SCALE CONTEXT AGGREGATION中。

Dilated Convolution(带洞卷积)_第3张图片

Layer为层数,Convolution为卷积核大小,Dilation为l大小,Truncation为图像是否要裁剪边缘(Dilated Convolution卷积后图像会变大),Receptive field为感知区域大小,Output channels为输出特征图数量,Basic为简单网络情况,Large为复杂网络情况。 
表格中可以发现, 
1.网络中并没有Pooling层,这就是作者提出不丢失像素的计算方法。 

2.第一层对图像进行卷积,第二层对第一层输出的特征图进行卷积,如此循环到最后一层。

3.Dilation倍数从小到大,说明先使用小感知区域的卷积核获取局部特征,再用大感知区域的卷积核把特征分到更多区域中。

3 动图表示过程(动图见网址:https://www.zhihu.com/question/54149221)

Dilated Convolution(带洞卷积)_第4张图片

           Standard Convolution with a 3 x 3 kernel (and padding)

Dilated Convolution(带洞卷积)_第5张图片

Dilated Convolution with a 3 x 3 kernel and dilation rate 2

本节重点:特征图是输入图与卷积核做运算产生的,而带洞卷积是卷积核带洞,洞的部分tf自动用0填充,tf中卷积核自动初始化。eg:

def conv2d(x,w):

          return tf.nn.conv2d(x,W,strides[1,1,1,1],padding='SAME')#x表示输入的图像。W是卷积的参数比如[5,5,1,32],前两个参数代表卷积核的尺寸,第三个参数代表有多少个channel,最后一个参数代表卷积核的数量,Same代表给边界加上Padding,

Dilated Convolution(带洞卷积)_第6张图片

笔记:

4 优点及应用:

   扩展卷积在保持参数个数不变的情况下增大了卷积核的感受野,同时它可以保证输出的特征映射(feature map)的大小保持不变。一个扩张率为2的3×3卷积核,感受野与5×5的卷积核相同,但参数数量仅为9个,是5×5卷积参数数量的36%扩张卷积在图像分割、语音合成、机器翻译、目标检测中都有应用。


你可能感兴趣的:(Dilated Convolution(带洞卷积))