FCN于反卷积(Deconvolution)、上采样(UpSampling)
https://blog.csdn.net/nijiayan123/article/details/79416764
反卷积(Deconvolution)、上采样(UNSampling)与上池化(UnPooling)
https://blog.csdn.net/A_a_ron/article/details/79181108
Tensorflow卷积与反卷积(目前看到的最详细的解释)
https://blog.csdn.net/gubenpeiyuan/article/details/81266155
Sub-pixel Convolution(子像素卷积)
https://blog.csdn.net/leviopku/article/details/84975282
- 最大的区别在于反卷积过程是有参数要进行学习的(类似卷积过程),理论是反卷积可以实现UnPooling和unSampling(狭义的,见参考文献https://blog.csdn.net/A_a_ron/article/details/79181108),只要卷积核的参数设置的合理。
- 广义的上采样:由于上采样是指将图像上采样到更高分辨率的任何技术,因此我们可以讲:通过反卷积、UnPooling进行上采样
子像素卷积
如果做SR(超分辨率)的话,需要将一张低分辨率图像转换成一张高分辨率图像。如果直接用deconvolution作为upscale手段的话,通常会带入过多人工因素进来(有不少论文提到这个)。而sub-pixel conv会大大降低这个风险。先看看sub-pixel是怎么做的:
上图很直观得表达了sub-pixel convolution的做法,前面就是一个普通的CNN网络,到后面彩色部分就是sub-pixel conv的操作了。首先,如果我想对原图放大3倍,那么我需要生成出3^2=9个same size的特征图。将九个same size的特征图拼成一个X3的大图,这就是sub-pixel convolution的操作了。(具体过程:从9个特征图的同一个位置各取一个点,将其组成一个3x3的小块,如法炮制各个位置,最终实现9倍放大)
具体实现参考:
tf.depth_to_space和torch.nn.pixel_shuffle
tf.nn.depth_to_space