刚刚开始学习图像超分辨率的时候,我找了几篇这方面的论文,其中就有超分的开山之作:

刚开始我以为这篇文章通过反卷积来将图像的分辨率调高的,但是阅读了文章后发现我错的离谱。

所以我找了一篇关于反卷积的文章来学习。

实际上通过反卷积操作并不能还原出卷积之前的图片,只能还原出卷积之前图片的尺寸。
反卷积(转置卷积)通常用在以下几个方面:

1.CNN可视化,通过反卷积将卷积得到的feature map还原到像素空间,来观察feature map对哪些pattern相应最大,即可视化哪些特征是卷积操作提取出来的;
2.FCN全卷积网络中,由于要对图像进行像素级的分割,需要将图像尺寸还原到原来的大小,类似upsampling的操作,所以需要采用反卷积;
3.GAN对抗式生成网络中,由于需要从输入图像到生成图像,自然需要将提取的特征图还原到和原图同样尺寸的大小,即也需要反卷积操作。

盗图1:

(1) i = 2, o = 4, k = 3, no_padding, s = 1

深度学习反卷积 反卷积操作_神经网络

盗图2:

(2) i = 5, o = 5, k = 3, same_padding, s = 1

深度学习反卷积 反卷积操作_深度学习_02

盗图3:

(3) i = 7, o = 5, k = 3, full_padding, s = 1

深度学习反卷积 反卷积操作_转置_03

盗图4:

(4) i = 2, o = 5, k = 3, no_padding, s = 2

深度学习反卷积 反卷积操作_转置_04

盗图5:

(5)i = 3, o = 5, k = 3, padding, s = 2

深度学习反卷积 反卷积操作_卷积_05

当反卷积的s = 1时,反卷积和一般的卷积并没有什么不同,只是padding的称呼方式有所变化,方向和卷积相反。由反卷积的图5可以看到反卷积的一些缺点,在s > 1时,会降低图片的分辨率,并且不同于一般的convolution,反而增大了输出的feature map的size。
对于s = 2、padding=1、k=4的反卷积,输入AXA图像,输出为2AX2A。

还有这位前辈的博客,讲的挺详细的,可以参考一下: