1、是什么?
论文((ESPCN)Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network, CVPR2016)
亚像素卷积层包含两个过程:
-
一个普通的卷积层:得到通道数为 c^2 的与输入图像大小一样的特征图
-
像素重排操作,操作图解如下:
该重排操作的代码如下:
#torch version
def shuffle_up(input, scale):
N, C, iH, iW = input.size()
oH = iH * scale
oW = iW * scale
out = input.view(N, -1, scale, scale, iH, iW)
out = out.permute(0,1,4,3,5,2).contiguous()
out = out.view(N, -1, oH, oW)
return out
#numpy vesion
def shuff_up2(input, scale):
N, C, iH, iW = input.size()
oH = iH * scale
oW = iW * scale
out = input.reshape((N, -1, scale, scale, iH, iW))
out = out.transpose((0,1,4,3,5,2))
out = out.reshape((N, -1, oH, oW))
return out
2、为什么?
Sub-pixel convolution的上采样操作可通过两步实现:
-
对输入图像插0
-
对插0后的图像进行正常卷积
详情参考:https://blog.csdn.net/huachao1001/article/details/79131814
而该方式也等价于:
-
先卷积
-
再进行周期性的像素选择
详情参考:https://blog.csdn.net/g11d111/article/details/82855946
3、扩展
可发现,对于待预测 SR 图像上的每个像素点(i, j),是由LR图像上的对应点与相应卷积滤波器相乘得到,那么为了实现任意尺寸的上采样,可动态学习不同数量的滤波器。论文详情见: Meta-SR: AMagnification-Arbitrary Network for Super-Resolution