空洞卷积,Dilated convolutions与感受野的理解

最近在读‘MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS’这篇论文,里面提到了DILATED CONVOLUTIONS,即空洞卷积,下面我就来介绍一下它的基本原理。

Firstly,我们应该知道普通卷积的基本操作过程,如下图所示:

空洞卷积,Dilated convolutions与感受野的理解

上图是具体的计算过程,卷积核为单个,我们接下来看普通卷积感受野的理解:

空洞卷积,Dilated convolutions与感受野的理解

上图中输入图片的大小为10x10,通过3x3的卷积核运算,得到(10-3+1)x(10-3+1)大小的future maps,在output1中每一个像素点,即图中的红色框所所对应的输入图片的区域大小为3x3,这就是第一次卷积后神经元对应的感受野大小为3x3。

空洞卷积,Dilated convolutions与感受野的理解

上图中进行了第二次卷积,output2中的神经元对应上一层的感受野为3x3,即output1中的红色区域,接下来是理解的重点啦,要想得到output2的输出大小,在原始输入图像上要用多大的卷积核进行卷积?看图就得知,为5x5大小的卷积核,得嘞,这就是output2的神经元对应输入图像的感受野大小为5x5,即第一张图的5x5红色区域。再进行更多次的卷积操作,感受野也是类似的理解。

Sendly,我们来看空洞卷积,看图说话:

空洞卷积,Dilated convolutions与感受野的理解

上图是dilated convolution等于2的情形,左图为普通卷积,右图为空洞卷积,蓝色的圆即为添加的0。

举例说明:

输入图片的大小为224x224,采用3x3的卷积核,dilated convolution等于2,即在每两个像素点间插入一个0,卷积核变为3+3-1=5大小,即5x5,接下来的卷积操作和普通卷积操作一样,得到220x220大小的输出future maps,每一个神经元对应的上一层的感受野为5x5大小的区域。

输入图片的大小为224x224,dilated convolution等于4时,即在每两个像素点间插入三个0,卷积核变为3+(3-1)x3=9大小,即9x9,接下来的卷积操作和普通卷积操作一样,得到208x208大小的输出future maps,每一个神经元对应的上一层的感受野为17x17大小的区域。

其实上述的感受野大小计算方法可以理解为一种逆运算,y = x - f + 1,y 为输出图片的大小,x 为输入图片的大小,f 为卷积核的大小,当我们知道 y 时,便可以计算 f ,f = x - y + 1。这种方法适用于以上两种卷积的感受野计算,在这里,我没有考虑padding的加入。原理应该类似。

例:

输入图片的大小为224x224,第一次采用3x3的卷积核,dilated convolution等于2,得到220x220大小的输出future maps,每一个神经元对应的上一层的感受野为5x5大小的区域,第二次卷积,得到216x216大小的输出future maps,每一个神经元对应的上一层的感受野为5x5大小的区域,而对应最初的输入图片的感受野大小为f = 224 - 216 +1 = 9,即9x9。

附小福利:https://fomoro.com/projects/project/receptive-field-calculator