深度学习(2)-反卷积(deconvolution)

反卷积在论文中常常对应的英文有:

  • Deconvolution (怪怪的“去卷积”)
  • Upconvolution
  • Fractionally strided
    convolution
  • Backward strided
    convolution

意思是它的卷积的逆过程。它的另一个名字转置卷积(transpose convolution)更能表达它的数学过程。比如对4x4的图像进行3x3的卷积得到2x2的图像,可表示为矩阵乘法y=Cx:
深度学习(2)-反卷积(deconvolution)_第1张图片
表达将4x1的向量转化为16x1的向量。而反卷积相当于 x=CT
转置卷积与卷积是有对应关系的。

如果卷积相当于sample,而反卷积相当于unsample。比如一般padding=0,stride=1,k=3的卷积如下:
深度学习(2)-反卷积(deconvolution)_第2张图片
它对应的反卷积则为:
深度学习(2)-反卷积(deconvolution)_第3张图片

它也称为fractional stride convolution
从上图中可知,当卷积时的padding为0时(non-padded convolution),转置卷积的padding大小需要为k-1,其中k为原卷积核的大小。此时它又叫fully padded convolution。此时反卷积的规则和卷积一样。
上图是stride=1时卷积-反卷积的样子,而stride不等于1时,则反卷积有所不同:
深度学习(2)-反卷积(deconvolution)_第4张图片
整个反卷积过程是先即对输入图像以步长为s-1填充0,然后对图像进行卷积。这也是为什么反卷积又被称为fractionally strided convolutions的原因,因为被部分插入0值。
当stride不为1时,输入大小(边长)i和输入o的大小关系为:
o = s(i-1)+(k-2p)
所以从上式子看出,如果要unsample到原图像的几倍,s就设置为几。
transposed convolutions 怎么实现?一般是通过对卷积求导。直接也可以,只是由卷积矩阵C可以看出,对长为16的像素向量X来说, CTX 会存在大量无意义的0与X元素的相乘,这样非常低效。

1.转置卷积

你可能感兴趣的:(深度学习)