美文网首页基础知识
上采样和PixelShuffle

上采样和PixelShuffle

作者: 红豆汤来两大碗 | 来源:发表于2019-10-19 22:44 被阅读0次

    转自:https://blog.csdn.net/g11d111/article/details/82855946

    0、前言

    • 上采样:可以简单的理解为任何可以让你的图像变成更高分辨率的技术。
    • 最简单的方式是重采样和插值:将输入图片input image进行rescale到一个想要的尺寸,而且计算每个点的像素点,使用如双线性插值bilinear等插值方法对其余点进行插值。
    • Deconvolution(反卷积)在CNN中常用于表示一种反向卷积 ,但它并不是一个完全符合数学规定的反卷积操作。
    • 反卷积也被称为分数步长卷积(convolution with fractional strides)或者转置卷积(transpose convolution)或者后向卷积backwards strided convolution。

    1、Vision Layer

    在PyTorch中,上采样的层被封装在torch.nn中的Vision Layers里面,一共有4种:
    ① PixelShuffle
    ② Upsample
    ③ UpsamplingNearest2d
    ④ UpsamplingBilinear2d

    1.1 PixelShuffle

    正常情况下,卷积操作会使feature map的高和宽变小。
    但当我们的stride = 1/r < 1 时,可以让卷积后的feature map的高和宽变大——即分辨率增大,这个新的操作叫做sub-pixel convolution,具体原理可以看PixelShuffle《Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network 》的论文。

    • 实现的功能是:将一个H × W的图像变为rH x rW的高分辨率图像(High Resolution)。

    • 原理:通过卷积先得到 r^2 个通道的特征图(特征图大小和输入低分辨率图像一致),然后通过周期筛选(periodic shuffing)的方法得到这个高分辨率的图像,其中rrr为上采样因子(upscaling factor),也就是图像的扩大倍率。

    • 定义:class torch.nn.PixleShuffle(upscale_factor)
      upscale_factor就是放大的倍数,数据类型为int。
      以四维输入 (N, C, H, W) 为例,Pixelshuffle会为 (∗, r^2 x C, H, W) 的Tensor给reshape成 (∗, C, rH, rW) 的Tensor。
      eg:扩大两倍
      输入: (12, 64, 224, 224)
      输出: (12, 16, 448, 448)

    >>> ps = nn.PixelShuffle(3)
    >>> input = torch.tensor(1, 9, 4, 4)
    >>> output = ps(input)
    >>> print(output.size())
    torch.Size([1, 1, 12, 12])
    

    2019年10月19日

    相关文章

      网友评论

        本文标题:上采样和PixelShuffle

        本文链接:https://www.haomeiwen.com/subject/attomctx.html