刚刚开始学习图像超分辨率的时候,我找了几篇这方面的论文,其中就有超分的开山之作:
刚开始我以为这篇文章通过反卷积来将图像的分辨率调高的,但是阅读了文章后发现我错的离谱。
所以我找了一篇关于反卷积的文章来学习。
实际上通过反卷积操作并不能还原出卷积之前的图片,只能还原出卷积之前图片的尺寸。
反卷积(转置卷积)通常用在以下几个方面:
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
盗图3:
(3) i = 7, o = 5, k = 3, full_padding, s = 1
盗图4:
(4) i = 2, o = 5, k = 3, no_padding, s = 2
盗图5:
(5)i = 3, o = 5, k = 3, padding, s = 2
当反卷积的s = 1时,反卷积和一般的卷积并没有什么不同,只是padding的称呼方式有所变化,方向和卷积相反。由反卷积的图5可以看到反卷积的一些缺点,在s > 1时,会降低图片的分辨率,并且不同于一般的convolution,反而增大了输出的feature map的size。
对于s = 2、padding=1、k=4的反卷积,输入AXA图像,输出为2AX2A。
还有这位前辈的博客,讲的挺详细的,可以参考一下: