本篇论文是2019年2月份,发表在arxiv上的篇关于超分辨率的一篇综述。这篇文章系统且全面的介绍了一些基于深度学习的超分辨率方法。其中包括:

  • 超分辨率问题的定义 (problem setting)
  • benchmark datasets
  • 性能评价指标 (performance metrics)
  • 基于深度学习的超分辨率方法
  • 特定领域的超分辨率应用 (domain-specific application)

此外作者对比每个超分辨率方法,指出了网络的优点以及局限。最后对该领域的一些开放性问题(open issuse) 以及挑战提出了未来研究的方向。

超分辨率问题的定义(problem setting)

图像的超分辨率要解决的问题是:从一张低分辨率(LR)的图像中,恢复出一张高分辨率(HR)的图像。

通常来说,我们通过下面的方式得到低分辨率的图像:
$$
I_{x}=\mathcal{D}\left(I_{y} ; \delta\right)
$$
$I_x$ 表示低分辨率图像,$I_y$ 表示高分辨率图像,$D()$ 表示下采样的映射函数,$\delta$ 表示映射函数的参数。图片清晰度不够的原因可能有很多种,例如聚焦,图片压缩,传感器噪声等问题。一些学者提出了下面的模型来模拟这种失真的映射。
$$
\mathcal{D}\left(I_{y} ; \delta\right)=\left(I_{y} \otimes \kappa\right) \downarrow_{s}+n_{\zeta},{\kappa, s, \zeta} \subset \delta
$$
$I_{y} \otimes \kappa$ 表示HR图片与模糊核(blur kernel)k的卷积操作,下箭头表示下采样,$n_{\zeta}$ 表示方差为$\zeta$ 的白高斯噪声。


目前大多数的数据库,产生LR图像的方法是直接对SR图像做一些下采样(双三次插值算法(bicubic interpolation)),同时对图片作抗锯齿(anti aliasing),去模糊等操作(blur) 。关于下采样,上采样的一些方法可以看 这个课件,或这里

关于超分问题,我们更关注的是如何由低分辨率的图片得到高分辨率的图片,即:
$$
\hat{I}_{y}=\mathcal{F}\left(I_{x} ; \theta\right)
$$
其中$\mathcal{F}()$ 为超分模型,由低分辨率图片生成高分辨率的图片。

对于一个典型的超分辨率问题来说,我们需要从一个LR图像中恢复出它的HR版本。模型的目标是最小化我们恢复出来的图片与原始HR图片的差距,目标方程如下:
$$
\hat{\theta}=\underset{\theta}{\arg \min } \mathcal{L}\left(\hat{I}_{y}, I_{y}\right)+\lambda \Phi(\theta)
$$
其中$\mathcal{L}\left(\hat{I}_{y}, I_{y}\right)$ 为生成的HR图像与原始图像的Loss,公式尾项是一个正则项。目前使用较多的loss为像素级别的MSE loss,同时一些组合型的loss也经常被使用。引入正则项的目的是控制参数的变化,使得网络更容易收敛。正则项可以看这里。


Benchmark dataset

在一个典型的超分辨率的文章中,通常需要对一些公开数据集上进行试验,在这些公开数据集上的效果指标作为这个算法性能的评价标准。主要使用的数据集有:


Image Quality Assessment

图片质量的评价是一个与感知,视觉相关的问题。通常存在客观和主观的两类方法。其中客观方法根据指标计算模型直接计算得出,如MSE。主观方法则与人们的感知更为接近。下面介绍一下常用的评价方法。

Peak Signal-to-Noise Ratio(峰值信噪比)

峰值信号比是一种图像的客观评价标准。他用最大值信号与背景噪声信号(重建与原始信号的差)的比值作为评价标准:
$$
\begin{aligned}
\operatorname{MSE} &=\frac{1}{N} \sum_{i=1}^{N}(I(i)-\hat{I}(i))^{2} \\
\operatorname{PSNR} &=10 \cdot \log _{10}\left(\frac{L^{2}}{\mathrm{MSE}}\right) \\
\end{aligned}
$$
其中L为图像点颜色的最大数值,若采样点采样8位表示,那么L = 255。该指标更加注重像素点之间的误差。典型的PSNR值在20到40之间。指标越高越好。

但是由于PSNR指标更多的放映相同位置上像素值的差异,而未考虑到人眼的视觉感知,因此作为质量评价指标是存在缺陷的。但这个指标仍是目前使用最多的一个指标。

人眼视觉特征

  1. 对空间频率较低的对比差异敏感度高
  2. 人眼对亮度对比差异的敏感度较色度高
  3. 人眼对一个区域的感知结果会影响到周围邻近区域

SSIM(Structural Similarity 结构相似性)

SSIM分别从亮度,对比度,结构三个方面度量图片的相似性。

首先计算图片的mean和variance:
$$
\begin{aligned}
\mu_{I} &=\frac{1}{N} \sum_{i=1}^{N} I(i) \\
\sigma_{I} &=\left(\frac{1}{N-1} \sum_{i=1}^{N}\left(I(i)-\mu_{I}\right)^{2}\right)^{\frac{1}{2}} \\
\end{aligned}
$$
亮度(luminance)指标($\hat{I}$ 指生成的图片):
$$
\mathcal{C}_{l}(I, \hat{I})=\frac{2 \mu_{I} \mu_{\hat{I}}+C_{1}}{\mu_{I}^{2}+\mu_{\hat{I}}^{2}+C_{1}}
$$
对比度(contrast)指标:
$$
\mathcal{C}_{c}(I, \hat{I})=\frac{2 \sigma_{I} \sigma_{\hat{I}}+C_{2}}{\sigma_{I}^{2}+\sigma_{\hat{I}}^{2}+C_{2}}
$$
结构对比度(structure comparison)指标:
$$
\begin{aligned}
\sigma_{I \hat{I}} &=\frac{1}{N-1} \sum_{i=1}^{N}\left(I(i)-\mu_{I}\right)\left(\hat{I}(i)-\mu_{\hat{I}}\right) \\
\mathcal{C}_{s}(I, \hat{I}) &=\frac{\sigma_{I \hat{I}}+C_{3}}{\sigma_{I} \sigma_{\hat{I}}+C_{3}} \\
\end{aligned}
$$
其中$C_1 = (K_1L)^2$,$C_2 = (K_2L)^2$,$C_3 = C_2 / 2$。

SSIM的指标有三面三个指标组合而成:
$$
\operatorname{SSIM}(I, \hat{I})=\left[\mathcal{C}_{l}(I, \hat{I})\right]^{\alpha}\left[\mathcal{C}_{c}(I, \hat{I})\right]^{\beta}\left[\mathcal{C}_{s}(I, \hat{I})\right]^{\gamma}
$$
通常使用下面这个形式:
$$
\operatorname{SSIM}(I, \hat{I})=\frac{\left(2 \mu_{I} \mu_{\hat{I}}+C_{1}\right)\left(\sigma_{I \hat{I}}+C_{2}\right)}{\left(\mu_{I}^{2}+\mu_{\overline{I}}^{2}+C_{1}\right)\left(\sigma_{I}^{2}+\sigma_{\tilde{I}}^{2}+C_{2}\right)}
$$
一般的,$k_1 = 0.01,k_2 = 0.03, L =255$。

此外还有一些主观的评价方法(mean opinion score),利用志愿者对生成图片的质量进行五个等级的评价,来确定图片的质量。

对于图片的颜色空间来说,常用的颜色空间有RGB空间与YCbCr。


基于有监督的超分辨率方法

超分辨率框架分类

超分辨率框架总结下来有以下四种:

  1. Pre-upsampling Super-resolution
  2. Post-upsampling Super-resolution
  3. Progressive Upsampling Super-resolution
  4. Iterative Up-and-down Sampling Super-resolution

如下图:

Pre-upsampling Super-resolution

该方法在将图片送入网络前先用传统方法进行图片的放大(bicubic interpolation上采样),将图片放大到输出的要求大小,然后送入CNN网络中,学习一个端到端的从LR到HR的映射。

该方法的优点在于神经网络仅需要学习一张粗糙的(传统方法放大的)图片到HR图片的映射,大大降低了网络学习的难度;同时这种结构可以任意控制图片放大倍数。该方法框架也成为了一种较为主流的框架。

该方法的缺点在于:传统的图片放大算法中通常需要包含去噪,去模糊等操作,需要花费很大的时间以及空间


Post-upsampling Super-resolution

该方法将LR到HR的整个过程作为网络学习的目标,上采样层在网络的末端,这种设计可以极大发挥网络的潜力,同时能够显著降低网络训练时消耗的时间与空间。在train和inference阶段速度带来了很大的提升。

缺点:仅通过一个upsample层来放大图片,使得网络学习的难度大大提升;由于upsample层的放大尺度是固定的,如果更换一个倍数,就要更换一个训练模型。


Progressive Upsampling Super-resolution

渐进式的上采样可以解决上诉post结构的问题(例如LapSRN网络 laplacian pyramid SR network)。该结构采用许多CNN的级联结构,每个阶段进行一个上采样重构HR,生成放大2倍,4倍,8倍等结果。

该模型的缺点是结构复杂,训练难度大等等。


Iterative Up-and-down Sampling Super-resolution

该结构反复的放大,缩小图片,试图学习到一种后映射(back projection)的关系,该模型可以很好的学习到LR与HR之间的映射关系。基于该框架的网络DBPN也获得了NTIRE 2018的冠军。尽管这种up-down的结构设计标准还未确定,DBPN网络中存在着大量的复杂的结构设计以及繁重的人工设计过程,但是这种结构有很大的研究潜力。还需要进一步探索。

传统插值上采样算法

  1. 最近邻插值
  2. 线性插值
  3. 双三次插值

详见这里

事实上,所有的差值算法完全通过图片自身的内容来实现超分辨率,因此他们并不能提供多于图片的信息,此外这些差值算法还引入了一些边界效应,例如计算复杂度,噪声,模糊等等。

基于学习的上采样方法

转置卷积层 (transposed/ deconvolution layer)

转置卷积层的作用与正常卷积层的操作是相反的。转置卷积通过在像素间插入0来扩大图片的分辨率。下面是转置卷积层的工作原理:

首先对一张图片,每个像素点之间添加一个0值,然后用一个3 X 3 的卷积核,padding= 1 ,stride = 1对它进行卷积操作,最终得到一个大小为原先两倍的图片。

这种做法能够使得网络实现端到端的映射,但是他的缺点是,产生的图片会产生一些不等的重叠,从坐标轴上看,容易形成棋盘的割裂感,一定程度上伤害了SR的性能。

子像素卷积(sub-pixel layer)

子像素卷积在超分辨率领域使用十分广泛,用于扩大图片的像素。他的工作原理是执行一次卷积之后,产生一个多通道的feature map。然后将这些多通道的像素reshape到一个二维平面上。原理图如下:

例如要将原始的feature map大小变大s倍,那么卷积核的channel数达到$s^2$。例如输入图片的大小为$w*h*c$,经过卷积操作后变为$w*h*s^2 c$ ,然后进过reshape成$sh*sw*c$,即完成了放大的操作。在原图的基础上放大了s倍。

子像素的上采样方法有一个重要的优点在于他有更大的感受野,能够提供更多的图片信息。但是感受野的分布是不对齐的,同时卷积层使用重复的感受野会导致不同卷积边界的不真实感。

网络的设计

超分辨率发展到今天,需有有效的网络结构得到了验证,例如残差学习,密集连接块。这些结构结合上面提到的四种框架能够组合出各种有效的网络结构。

残差学习 (residual Learning)

残差学习最早由何凯明的resNet提出,在超分辨率领域残差学习主要有以下两种结构:

全局残差学习 global residual learning

由于在SR问题中,网络通常是端到端的,输入的图片与输出的图片有着很大的相关性。因此有些研究者通过直接学习输入与输出之间的残差,在输入与输出之间连接一条high way达到这个目的。因此网络仅仅需要学习输入与输出之间的残差部分(图片中的高频部分数据)。由于残差网路中绝大多数的区域值接近零,因此在网络的学习过程中能够大大降低运算量,尤其在pre-upsample框架中。

局部残差学习(local residual learning)

局部残差学习与resNet中的残差模块类似,在缓解网络退化,改善网络的学习能力上具有很好的效果。

递归学习(Recursive Learning)

为了不引入过多的参数同时实现更大的感受野并学习更高级别的特征,递归学习(其是指以递归方式多次应用相同模块)被引入到超分辨率领域中。很多工作中引入卷积结构、残差结构作为递归块,均在performance上有比较好的表现。

很多学者提出了很多与递归块结合的网络结构,例如将一个大的缩放因子分解成很多子问题,然后用力对结构解决这些子问题;将image upsample作为递归块等等。由于递归块同样面临着梯度的消失和梯度爆炸的问题,因此很多残差学习,多监督学习通常也会被引入到地柜结构中,来解决这些问题。

多路径学习(multi-path learning)

多路径学习将特征传入模型的不同分支中,每个分支有着不同的结构,以此来提高模型的超分能力。

全局多路径学习 Global Multi-path Learning

全局的多路径学习通过利用不同路径来学习图片中的不同特征,例如用一些分支学习一些亚频特征;学习visible特征;学习全局结构;学习低频或高频部分;用于upsample图片等等

这种思路能够提升网络的特征提取能力。

局部的多路径学习(local multi-path learning)

受到inception结构的影响,引入一个block,这个block中使用不同的路径,进行不同尺度的特征提取。如下图:

分别对feature map应用一个3X3和5X5大小的核,在不同的尺度上对特征进行提取。通过这种方式可以在不同尺度上对特征进行提取,能够有效的提升网络的性能。

特定尺度的路径学习(scale-specific multi-path learning)

由于多分辨率问题对图片的方法尺度不同,网络需要重新训练,但是网络结构都是相同的。这种策略就是保留网络的主干部分(结构以及参数),在网络的头部和尾部添加一个与尺度相关的预处理路径以及一个upsample路径,每次对于特定的分辨率需求,选择相关的路径,而网络的特征提取以及中间部分都得到了保留。

密集连接块(Dense Connections)

只从密集连接块被提出之后,这种结构就广泛的应用在超分辨率领域,结构如下:

1

该种结构将当前层之前的feature map都作为这一层的输入,能够有效的避免梯度消失,增强信号的传递、特征的复用等。此外还有很多结构是在块级上做密集的连接,该结构证明在超分辨率领域中同样有效。

通道注意力机制(channel attention)

通道注意力机制目的是给不同的channel赋予不同的权重,不同的channel在超分辨率问题上的作用是不同的,作者使用“压缩激发模块(squeeze-and-excitation)”对不同通道进行权重的赋值。

作者通过一个全局pooling将image的size变成1 X 1 X C,然后通过两个卷积层,得到每一个channel的权重。然后对feature map重新赋值,得到赋予权重的feature map。

先进的卷积层(advanced convolution)

空洞卷积 dilated convolution

空洞卷积即在原始的卷积的基础上加上空洞,目的是为了增加图片的感受野。

将这种卷积应用在超分辨率问题上也能够使得模型性能得到提升。

分组卷积(group convolution)

分组卷积的概念是对feature map进行分组(channel维度上的划分),按童谣的比例划分卷积核,然后将每个分组再进行卷积,最终将卷积结果组合成一个feature输出。这种卷积的方式大大减少了参数的计算量,在性能上仅仅下降了一点。

像素递归学习 pixel recurisive

大多数的SR方法在处理图像时像素之间是独立的,无法得到像素间的相关性,因此一些学者提出pixel by pixel的生成器,通过两个网络,分别学习图像的纹理结构信息以及像素间的序列依赖关系来生成HR图像。这种方法在某些方面有一个比较好的效果,但是训练过程十分的困难,计算量比较大。

金字塔pooling

引入金字塔模型能够有效的利用图片全局以及局部的特征,在EDSR-PP网络中使用金字塔模型能够有效的提升网络的精度。

小波变换

小波变换可以很方便的的将图片的信号分解成高频的纹理细节和低频的拓扑结构。将小波变换应用在超分辨率问题上,从低分辨率的图片中提取出低频信息作为输入,输出高分辨率的高频信息。

学习策略

Loss Functions

​ 在超分辨率领域,损失函数用来衡量生成的HR图片与原始的HR图片之间的差距,同时指导模型的优化。下面简要介绍一下存在的一些损失函数的形式。其中$\hat{I}$ 表示原始超分辨图像,$I$ 表示生成的超分辨率图像。

像素级别的loss (pixel loss)

对比GT与生成的图片在像素级别上的L1以及L2 loss:
$$
\begin{aligned}
\mathcal{L}_{\text {pixel_L1 }}(\hat{I}, I) &=\frac{1}{h w c} \sum_{i, j, k}\left|\hat{I}_{i, j, k}-I_{i, j, k}\right| \\
\mathcal{L}_{\text {pixel_L2}}(\hat{I}, I) &=\frac{1}{h w c} \sum_{i, j, k}\left(\hat{I}_{i, j, k}-I_{i, j, k}\right)^{2} \\
\end{aligned}
$$
L2 loss 相比较于L1 loss 来说,更加的惩罚比较大的误差,而对一些小的误差的容忍度更大。L1 loss在对性能和最终的收敛上比L2更好。对于指标PSNR来说,最小化pixel loss就可以达到最大化PSNR的目的。但是pixel loss没有将图片的质量考虑在内,因此生成的图片过于平滑,失去了高频的细节信息。

满意度损失(content loss)

基于感知的满意度损失,这个loss是一个L2 loss。他的不同点在于,我们将GT与生成的图片,分别输入一个欲训练好的分类网络中,取其高层特征(第$l$ 层)进行pixel wise上的loss计算。
$$
\mathcal{L}_{\text {content }}(\hat{I}, I ; \phi, l)=\frac{1}{h_{l} w_{l} c_{l}} \sqrt{\sum_{i, j, k}\left(\phi_{i, j, k}^{(l)}(\hat{I})-\phi_{i, j, k}^{(l)}(I)\right)^{2}}
$$
其中h,w,h是抽取出来的特征层的大小。

这个loss更加强调图片在生成上的相似性,最常用的分类网络是VGG,resNet。

纹理损失(Texture Loss)

一些文章认为图片的纹理由特征不同通道的相关性组成,定义为下面Gram matrix:
$$
G_{i j}^{(l)}(I)=\operatorname{vec}\left(\phi_{i}^{(l)}(I)\right) \cdot \operatorname{vec}\left(\phi_{j}^{(l)}(I)\right)
$$
上式中表示两个不同通道的向量的点乘结果。即第 $l$ 层特征向量的i通道和j通道的点乘结果。纹理损失依旧是L2损失,输入是生成图片和GT之间的纹理表示。
$$
\mathcal{L}_{\text {texture }}(\hat{I}, I ; \phi, l)=\frac{1}{c_{l}^{2}} \sqrt{\sum_{i, j}\left(G_{i, j}^{(l)}(\hat{I})-G_{i, j}^{(l)}(I)\right)^{2}}
$$
通过这种损失可以很好的得到较为真实的图片。但是仍然有一个难以解决的问题是,用于计算纹理损失的图片patch(方块,补丁)大小的确定依旧要根据经验来确定,太大或太小的patch使得生成的纹理不够真实。

对抗损失(adversarial loss)

我们使用一个SR模型作为生成器,另外我们需要定义一个判别器,下面的判别器D使用交叉熵来表示。生成器希望生成的样本判别器无法辨认,判别器希望能够鉴别出生成器生成的样本是假的。
$$
\begin{aligned}
\mathcal{L}_{\text {gan_ce_g}}(\hat{I} ; D) &=-\log D(\hat{I}) \
\mathcal{L}_{\text {gan_ce_d }\left(\hat{I}, I_{s} ; D\right)} &=-\log D\left(I_{s}\right)-\log (1-D(\hat{I})) \\
\end{aligned}
$$
下面还有使用最小平方差最为判别器,能够得到更加真实的且高质量的结果。
$$
\begin{aligned}
\mathcal{L}_{\text{gan_ls_g}}(\hat{I} ; D) &=(D(\hat{I})-1)^{2} \
\mathcal{L}_{\text{gan_ls_d}}\left(\hat{I}, I_{s} ; D\right) &=(D(\hat{I}))^{2}+\left(D\left(I_{s}\right)-1\right)^{2} \end{aligned}
$$
下面是使用hinge loss形式的对抗损失:
$$
\begin{aligned} \mathcal{L}_{\text{gan_hi_g}}(\hat{I} ; D) &=-D(\hat{I}) \ \mathcal{L}_{\text{gan_hi_d}}\left(\hat{I}, I_{s} ; D\right) &=\min (0, D(\hat{I})-1)+\min \left(0,-D\left(I_{s}\right)-1\right) \\
\end{aligned}
$$
使用对抗损失很大程度上带来的感知质量的提升,虽然PSNR指数有所下降,但是MOS指数有上升,取得了一个很好的视觉效果,生成的图片更加的真实。

循环连续损失 (Cycle Consistency Loss)

改损失受到循环GAN的启发,所用的网络不仅需要从LR到SR,还需要从SR到LR,重新生成的LR需要和输入一致,因此loss 如下:
$$
\mathcal{L}_{\text {cycle }}\left(I^{\prime}, I\right)=\frac{1}{h w c} \sqrt{\sum_{i, j, k}\left(I_{i, j, k}^{\prime}-I_{i, j, k}\right)^{2}}
$$
总差异损失(total variation loss)

这个算是是为了压制在生成图像过程中生成的噪声对图像质量产生的影响。他的loss有相邻像素的差异组合成。
$$
\mathcal{L}_{\mathrm{TV}}(\hat{I})=\frac{1}{h w c} \sum_{i, j, k} \sqrt{\left(\hat{I}_{i, j+1, k}-\hat{I}_{i, j, k}\right)^{2}+\left(\hat{I}_{i+1, j, k}-\hat{I}_{i, j, k}\right)^{2}}
$$
基于先验损失(prior based loss)

对于特定的数据,可以引入一下数据所特有的先验特征。通过这种先验特征可以很快的提升网络对这类数据恢复的性能。

Batch Normalization

BN的提出是为了消除网络训练过程中内部参数的偏移问题。具体做法是对每一个bach做一个归一化操作,并且训练两个变量用于还原网络的表达能力。因此我们在训练过程中可以使用更高的学习率,以及不用太在意参数的初始化值。因此BN在SR网络中同样得到了广泛的应用。

但是有一些学者认为BN使得网络丧失了尺度信息,使得网络失去灵活度,同样有些网络中去除BN后,取得了一个很好的性能。

课程学习 Curriculum learning

渐进性的课程学习方法指的是网络从一个简单的任务出发,逐渐增加问题的难度,以此来得到一个鲁棒的模型。

超分辨率问题本质上是一个病态问题(ill-posed problem),即一些干扰对结果的影响非常的大,且系统十分不稳定,难以从结果反推回输入。这些干扰包括噪声,图片的模糊度,以及超分辨的倍数等等。

课程学习可以通过渐进学习的方式来解决这些问题,对于放大倍数很大(例如8)的任务,可以利用该思想,现训练简单的情况,例如可以先放大2,4,8倍来解决这个问题,这种方式能够大大缩短网络的训练时间,提升性能。

多监督问题 (multi-supervision)

多监督问题在loss 中增加一些变量,用来对某些信号进行监督,最终能够得到一个性能较好的模型。

其他有用的方法

context-wise network fusion

这种方式使用多个不同结构的网络,分别进行超分辨率的训练,然后依次将这些训练结果通过卷积层组合最终的结果(SRCNN),使用这种方法能够也能够达到state of art的效果,同时效率也是可以接受的。

data augmentation

数据增强方面,常用于网络中的方法有random cropping, flipping,scaling,rotation, color jittering, 此外还有一个特殊的增强方式,random shuffle RGB,随机打乱RGB的颜色值,这种方法能够消除颜色带来的偏差。

multi-task learning

多任务学习指的是将多种任务于SR任务结合,例如语义分割网络于SR网络结合(SFT-GAN)等,将去噪声网络和SR网络结合(DNSR),这种方式能够提供数据的先验,能够更好的提升SR的效果。

network interpolation

网络的结合,将基于pxiel loss和基于感知loss的两种方法结合起来,得到一种中间状态的网络,这种网络同时在PSNR和真实感上有很好的表现。

无监督的方法

在超分辨率问题上,由于很难获得真实数据的超分辨率结果,因此 通常的做法是使用一个下采样方法,从超分辨率图像中得到他的低分辨率版本你,组成一个数据对,因此监督学习更像是学习这个方法的逆方法,人们通常忽略了提前定义好的下采样方法给数据带来的副作用。对于无监督方法来说,直接使用高分辨率的图片,更加符合现实中的场景。无监督方法上,目前仍然有很多值得探索的地方。

zero-shot super-resolution

这个方法训练了一个预测核函数直接针对每张图片都生成一个下采样(degradation)核方法,使用这个核方法来构造数据集,采用不同的缩放尺度得到测试数据,然后训练一个CNN网络来实现SR。由于这个模型需要为每一张图片构造一个函数,因此需要更多的时间。

weakly-supervised Super-resolution

弱监督的学习方法有两个思路,第一种是不是用传统的HR-to-LR的退化函数,而是学习一个网络来实现这个过程,然后构造一个数据集,然后使用这个数据集来训练SR模型。另一种是cycle-in-cycle的方法,同时学习LR-to-HR和HR-to-LR两方面。

learning degradation

有学者提出了一个两个阶段的学习网络,提出一个GAN网络,学习HR to LR,用这个网络生成一个LR-HR配对的数据集,然后训练一个LR to SR的GAN网络使用上诉的数据集进行训练,最终结果能够显著提升数据恢复的真实性。

cycle in cycle super resolution

CinCGAN网络使用了四个生成器,两个判别器。生成器分别为noise LR -> clean LR -> clean HR,另外两个生成器进行反方向的生成。然后生成器用于判别生成了LR和SR的真实性,这其中引入了大量的损失函数,来保证这一过程的合理性。此外,这个方法还有很多改进的地方,来降低它训练的难度。

图像的深度先验

使用一个随机初始化参数的CNN,对一张输入的图像,直接恢复他的超分辨率图像,仅仅利用CNN的结构先验来解决这个问题。模型的效果比传统的双线性插值要好些,但是效果不如其他监督方法,这种方法给我门提供了一种思路,仅仅利用一些手工制作的先验对图像进行超分辨率的恢复。

领域相关的应用

高光谱影像 (Hyperspectral Image Super-resolution)

高光谱影像在视觉任务中有着很多的用途,但是由于硬件的约束,收集到高质量的高光谱数据是十分的困难的,高光谱数据的分辨率因此也十分的低。因此在高光谱数据领域应用超分辨率方法是很有前景的。

基于高光谱的超分辨率工作有以下几种:

W. Huang, L. Xiao, Z. Wei, H. Liu, and S. Tang, “A new pan- sharpening method with deep neural networks,” GRSL, vol. 12, 2015.

G. Masi, D. Cozzolino, L. Verdoliva, and G. Scarpa, “Pansharp- ening by convolutional neural networks,” Remote Sensing, vol. 8, 2016. Y.Wei,Q.Yuan,H.Shen,andL.Zhang,“Boostingtheaccuracyof multispectral image pansharpening by learning a deep residual network,” GRSL, vol. 14, 2017.

Y. Qu, H. Qi, and C. Kwan, “Unsupervised sparse dirichlet-net for hyperspectral image super-resolution,” in CVPR, 2018.

未来的研究方向

网络结构设计

结合图片局部和全局信息: 更大的感受野能够帮助网络获得更多图片的纹理细节。

结合图片中的高低频数据:cnn网络的浅层部分能够获取图像的颜色和边界信息,深层网络能够获取图像的语义信息。

纹理注意力机制:不同的纹理反应出来的细节特征是不同的,引入注意力机制能够增强图片的真实性。

轻量级的结构:预测一张DIV2k的图片,EDSR模型需要花费20s,这是难以接受的,因此我们需要精简网络结构。

上采样层:当前使用的上采样层均存在着不同程度的缺陷,提出一个好的上采样层,能够提升网络效能。

学习策略

损失函数: 当前仍未找到一个很好的损失函数,能够兼顾感知和pixel wise

Normalization:BN归一化方法十分花费时间,需要找到它的替代结构

评价指标

当前的评价指标有PSNR,SSIM,MOS三种,其中PSNR容易生成过于平滑的图像,SSIM根据图片的光照,对比度,结构来评价,当时离人的感知还有一定距离,MOS与人的感知比较接近,但是统计起来十分的耗费人力及复杂。

现实场景的使用

无监督学习方向上,可以学习一个degradation函数,用于数据的上采样,更符合现实数据的现状。

一些特定领域的应用方面,超分辨率可以作为整个流程的一部分。