CV领域

1. Upsample

利用传统插值方法进行上采样。往往会在upsample后接一个conv,进行学习。任务:超分,目标检测。

2. PixelShuffle

PixelShuffler是一种端到端可学习的上采样模块,通过设置上采样比例,就可由低分辨率图像获取指定倍率的高分辨率图像。上采样可以理解为在同一个位置,原来只是以1:1的比例提取信息,而现在以1:4的比例提取信息,提取信息的频率更高了,所以能反映的细节也就更多。对于tensor来说,在同一个位置多提取信息,也就是通过卷积生成通道数更多的tensor。

操作过程:

  1. 通过卷积,得到通道数倍增的特征图(n,64,64,256)
  2. 将特征图切割成若干份,对每一份(n,64,64,4)的像素点进行重新排列,reshape成(n,64,64,2,2),再reshape成(n,64,2,64,2),最后reshape成(n,128,128,1),再把这么多份拼接起来,得(n,128,128,64)的特征图
torch.nn.functional.pixel_shuffle(input, r)

其中r为上采样倍率。输入输出如下:

3. MaxUnPool2D

对于一部分网络模型来讲,上采样和下采样的结构往往是对称的,我们可以在下采样做Max Pooling的时候记录下来最大值所在的位置,当做上采样的时候把最大值还原到其对应的位置,然后其余的位置补0,如下图所示。

4. Conv2DTranspose

转置卷积应该是上采样力度最大的,所以有些时候的结果看起来会不太真实。任务:GAN,分割,超分。

5. grid_sample

基于flow field网格的对输入X进行双线性插值采样。网格通常由affine_grid生成, shape为[N, H, W, 2],是shape为[N, H, W]的采样点张量的(x, y)坐标。 其中,x坐标是对输入数据X的第四个维度(宽度维度)的索引,y坐标是第三维度(高维度)的索引,最终输出采样值为采样点的4个最接近的角点的双线性插值结果,输出张量的shape为[N, C, H, W]。

超分论文合集

超分算法小合集之SRCNN、DCSCN、SRDenseNet、SRGAN_暖风️的博客-CSDN博客_超分算法