超分任务中的转置卷积、pixelshuffle 和插值上采样

前言

超分任务中,有两种上采用的方式:

  1. 先插值上采样,再进行卷积操作;
  2. 先卷积操作,再插值上采样。

一般随着训练的推进,2方法会比1方法获取更加高频且准确的信息,而且2方法比1方法计算开销小。下面讲讲常见上采样方式。

1. 转置卷积

以2维卷积来进行演示,输入一个4 x 4的单通道图像,卷积核取1个4 x 4的,假设这里取上采样比例为2,那么我们的目标就是恢复成一个8 x 8的单通道图像。

首先通过fractional indices从原input中创建一个sub-pixel图像,其中白色的像素点就是原input中的像素(在LR sapce中),灰色像素点则是通过zero padding而来的。

用一个4 x 4的卷积核来和刚才生成的sub-pixel图像进行stride=1的卷积,首先发现卷积核和sub-pixel图像中非零的像素进行了第一次有效卷积(图中紫色像素代表被激活的权重),然后我们将sub-pixels整体向右移动一格,让卷积核再进行一次卷积操作,会发现卷积核中蓝色像素的权重被激活,同理绿色和红色(注意这里是中间的那个8×8的sub-pixel图像中的白色像素点进行移动,而每次卷积的方式都相同)。

最后我们输出得到8 x 8的高分辨率图像(HR图像),HR图像和sub-pixel图像的大小是一致的,我们将其涂上颜色,颜色代表卷积核中权重和sub-pixel图像中哪个像素点进行了卷积 (也就是哪个权重对对应的像素进行了贡献)。最后我们输出得到8 x 8的高分辨率图像(HR图像),HR图像和sub-pixel图像的大小是一致的,我们将其涂上颜色,颜色代表卷积核中权重和sub-pixel图像中哪个像素点进行了卷积(也就是哪个权重对对应的像素进行了贡献)。

但是转置卷积很容易遇到一种叫做 "uneven overlap"(不均匀重叠) (棋盘格伪影)的现象. 具体来说, 当kernel_size 无法被 stride整除时, 反卷积就会出现这种不均匀重叠的现象。原则上,神经网络可以通过仔细学习权值来避免这种情况,但在实践中,神经网络很难完全避免这种情况。

2. pixelshuffle

上述卷积操作中,可以看出,紫、蓝、绿、红四部分是相互独立的,那么,可以将这个4 x 4的卷积核分成4个2 x 2的卷积核如下:

因此,我们可以直接对原始图像(未经过sub-pixel处理)直接进行2 x 2的卷积,并对输出进行周期筛选(periodic shuffling)来得到同样的8 x 8的高分辨率图像。

所以 pixelshuffle 讲白了就是将通道维度的数据拿来填充。本质在于学习通道插值的过程。

pytorch 中,定义为以下的类:

python 复制代码
class torch.nn.PixleShuffle(upscale_factor)

这里的upscale_factor就是放大的倍数,数据类型为int。

以四维输入(N,C,H,W)为例,Pixelshuffle会将为(b,C r^2,H,W)的Tensor给reshape成(b,C,rH,rW)的Tensor。形式化地说,它的输入输出的shape如下:

输入: (N,C x upscale_factor2 ^2 ,H,W)

输出: (N,C,H x upscale_factor,W x upscale_factor)

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

3. 插值上采样

用一般的upsample方法(最近邻, 双线性插值等)进行resize, 对特征图进行放大,然后在放大的特征图基础上进行卷积.

4. 总结

pixelshuffle 在超分任务中比较主流,不过我实测发现跟其他的上采样方式效果差别不大,内存和计算速度上也没啥差别。

相关推荐
沃达德软件15 小时前
人工智能治安管控系统
图像处理·人工智能·深度学习·目标检测·计算机视觉·目标跟踪·视觉检测
逄逄不是胖胖17 小时前
《动手学深度学习》-54循环神经网络RNN
人工智能·深度学习
beginner.zs18 小时前
注意力革命:Transformer架构深度解析与全景应用
深度学习·架构·transformer
songyuc18 小时前
【Qwen】DataArguments说明
深度学习·算法·机器学习
亚里随笔20 小时前
相对优势估计存在偏差——揭示群体相对强化学习中的系统性偏差问题
人工智能·深度学习·机器学习·llm·agentic·rlvr
小白勇闯网安圈20 小时前
神经网络的简单实现
人工智能·深度学习·神经网络
爱吃泡芙的小白白21 小时前
深度学习五大核心指标:F1、Loss、Learning Rate 等的最新演进与应用实战
人工智能·深度学习·训练测试评价指标
BHXDML21 小时前
基于卷积、循环神经网络身份证识别应用实验
人工智能·rnn·深度学习
2401_8362358621 小时前
通关利器:中安未来TH-ER610电子护照阅读器,无纸化时代的身份核验安全保障
人工智能·科技·深度学习·安全·ocr
seasonsyy1 天前
参数量有单位吗?
深度学习·参数量·论文写作