0%

deconv\dilated conv

反卷积

之前一直以为反卷积和空洞卷积是一回事,后来才发现是两个事情,反卷积是为了能够将小图片生成大图片,空洞卷积是为了扩大感受野。

反卷积多用于图像生成中,例如从特征生成图片,GAN,图像分割等等中,常与conv相对应,也有其他名称,比如: Transposed Convolution, Fractional Strided Convolution。

首先定义符号:

  • 假设本文提到的图形和卷积核都是一维的线或者二维的正方形,$x$和$y$轴方向的padding和stride相同
  • $i,o,k,p,s,i’,o’,k’,p’,s’$分别表示卷积/反卷积输入图片的大小input size, 输出图片的大小 output size,卷积/反卷积的核大小kernel size,padding,stride.

动图演示
https://github.com/TJJTJJTJJ/conv_arithmetic

详细解析

卷积的公式如下:

反卷积对应的是直接在原图上填充0

其中涉及到的数学公式非常简单,因为卷积和反卷积都可以对应到一个矩阵相乘上,可以简单地理解成卷积的卷积核矩阵和反卷积的卷积核矩阵互为转置,当然,我们知道,这只是在大小上可以这么理解,其中的数值是不一样的,除非是正交矩阵。

根据动图演示的动态图可以看出:

  1. 反卷积的No padding的演示效果就是卷积的full padding,在padding效果上,反卷积和卷积总是以互补的形式出现。
  2. 从stride的效果上来看,conv的stride好理解,deconv的stride实际上是在输入图片内加入0
  3. out_padding就是为了应对odd情况,这种情况下,out_padding指得是在padding和stride填充之后,为了能得到预期大小的图片,在输入图片最外面单侧填充0.

空洞卷积

扩张卷积的计算公式与上面不一样

扩张卷积扩张的是卷积,在卷积核内部和外部同时填充0.主要是为了扩大感受野,应用在目标分割等上面.

扩张卷积

感受野示意图

感受野的计算公式
(a) 普通卷积,1-dilated convolution,卷积核的感受野为$3 \times 3 = 9$。
(b) 扩张卷积,2-dilated convolution,卷积核的感受野为$7 \times 7 = 49$。
(c) 扩张卷积,4-dilated convolution,卷积核的感受野为$15 \times 15 = 225$。