1 提出原因:
传统的FCN,Segnet网络等等pooling(其中池化的意义一方面是降低计算量,另一方面是增大感受野)之后需要对其进行upsampling,以扩大图像尺寸。将图像由小变大的过程势必导致一些信息的丢失,那么就会想到是否可以不进行pooling操作,也可以增大感受野呢。本文提出的dilated convolution正是为了解决这个问题。
2 结构:
2.1 一维
(a)为k=3,stride=2 的普通卷积;(b)为k=3,stride=1的卷积;(c)为k=3,stride=1,dilation=2的空洞卷积,这里虽然卷积核长度仍为3,但每隔2个点采样一次(也可以理解为长度为5但其中两个位置权重为0)
2.2 二维
(b)为 3∗3+dilation=2 的空洞卷积,感受野为 7∗7;
(c)为 3∗3+dilation=4的空洞卷积感受野为 15∗15
感受野的计算公式为 Fi+1=(2i+2−1)x(2i+2−1)
卷积核的参数个数保持不变,感受野的大小随着“dilation rate”参数的增加呈指数增长
2.3应用:
简要地说明Dilated Convolution应用到MULTI -SCALE CONTEXT AGGREGATION中。
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)
Standard Convolution with a 3 x 3 kernel (and padding)
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,
笔记:
4 优点及应用:
扩展卷积在保持参数个数不变的情况下增大了卷积核的感受野,同时它可以保证输出的特征映射(feature map)的大小保持不变。一个扩张率为2的3×3卷积核,感受野与5×5的卷积核相同,但参数数量仅为9个,是5×5卷积参数数量的36%。扩张卷积在图像分割、语音合成、机器翻译、目标检测中都有应用。