论文链接:A Review of Hyperspectral Image Super-Resolution Based on Deep Learning
在Front-end上采样中,是首先扩大LR图像,然后通过卷积网络对放大图像进行优化。如"Image Super-Resolution Using Deep Convolutional Networks"(SRCNN)中,首先使用bicubic对图像进行放大,再采用卷积进行处理。
缺点:
为了降低计算成本,充分利用神经网络的学习能力,将Upsample层放到模型后端进行操作。也就是先通过神经网络对LR图像特征进行提取,减弱噪声部分影响,再采用上采样操作对图像进行超分辨率。如"Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network".(ESPCN),先使用卷积层进行LR图像的特征提取,再采用提出的Pixelshuffle模块——亚像素卷积层(sub-pixelconvolutionlayer)进行上采样得到重建图像。
缺点:
解决缩放因子较大时的问题,通过将其拆分为几个子任务进行解决。
缺点:网络结构更加复杂
import torch
import torch.nn as nn
nn.ConvTranspose2d()
#函数定义
def __init__(self,
in_channels: int,
out_channels: int,
kernel_size: Union[int, Tuple[int, int]],
stride: Union[int, Tuple[int, int]] = 1,
padding: Union[int, Tuple[int, int]] = 0,
output_padding: Union[int, Tuple[int, int]] = 0,
groups: int = 1,
bias: bool = True,
dilation: Union[int, Tuple[int, int]] = 1,
padding_mode: str = 'zeros',
device: Any = None,
dtype: Any = None) -> None
import torch
import torch.nn as nn
self.ps = nn.PixelShuffle(8)
#8为上采样因子,需要注意的是用其处理时,首先需要使用卷积调整channel维度,使其满足为采样因子平方的倍数
引人残差网络,方便加深网络,避免梯度消失
所有残差单元共享相同的权重,大大减少了模型参数的数量。同时,递归学习固有地引入了梯度消失或梯度爆炸的问题因此将残差学习与递归学习相结合是明智的选择。
通过将图像输入到不同路径进行特征提取,方便提取多个维度的特征,可以使得特征之间的细节有效互补
采用channel attention以及spatial attention,可以分别学习channel维度(频段维度),spatial维度(空间维度hw)之间特定的信息,用于保留输入图像的关键空间信息以及频段信息。
密集连接最重要的特点是能够重用包括低级特征和高级特征在内的特征,与普通skip connection相比,这是一个优越的方面。
像素级别的损失,常见的是L1损失和L2损失,它们都是逐像素进行误差计算。
与L1损失相比,L2损失可以有力地处理较大的误差,但不能对较小的误差进行有效的惩罚,因此经常导致结果过于平滑。这使得L1损耗在大多数情况下是更好的选择。