超分辨率第十一章-SR&Diffusion_model
Denoising Diffusion Probabilistic Models 于2020年发布。
参考文献:Denoising Diffusion Probabilistic Models
此后在超分领域出现了两篇以扩散模型为基础的文章:
参考文献:
SR3: Image Super-Resolution via Iterative Refinement (2021)
SRDiff: Single Image Super-Resolution with Diffusion Probabilistic Models (2021)
一.Diffusion_model介绍
1.应用背景
基于其它模型的缺点:
PSNR-oriented:导致图像过度平滑并导致高频信息丢失。
GAN-driven:“mode collapse(模式崩溃)“、训练时很难收敛
- 模式崩溃是指模型未能生成数据分布的所有模式,而是只生成部分模式或重复生成相同的模式。
VAE: 生成后的图片较为模糊。
Flow-based:占用空间过大,损失函数计算负对数似然时雅可比行列式的值难以计算
2.Diffusion Models原理
扩散模型使用马尔可夫链,通过在扩散过程中逐渐添加噪声,将数据 x0(复杂分布) 转换为简单分布的潜在变量 xt,并预测每个扩散步骤中的噪声。
一般加噪过程最后会将数据变为高斯分布xT~N(0,1),即最简单的标准正态分布。
最后通过逆向的去噪从高斯分布逐步恢复原始数据 x0
①马尔科夫链
马尔科夫链是一个随机过程{X_n ,n=0,1,2,⋯},其中X_n表示在时间步n时系统所处的状态,且状态空间S是离散的。
它具有马尔科夫性质,即给定当前状态,未来的状态只取决于当前状态,而与过去的历史状态无关。
- 马尔科夫链的三要素:
1.状态空间:t0=[1,0] or t0=[0,1],初始值
2.无记忆性:当前选择的概率只受上一期的选择概率的影响,与以前的无关
3.转移矩阵:每一个状态都以一定的概率转化到下一个状态,这种概率可以用一个矩阵表示,即转移概率矩阵。
马尔科夫链在扩散模型中的应用:
正向加噪过程
- 扩散模型通常基于马尔科夫链来构建正向扩散过程。从初始的清晰数据分布(如自然图像分布)开始,逐步向数据中添加噪声,这个过程可以看作是马尔科夫链的状态转移。每一步添加噪声的过程只依赖于当前的数据状态,符合马尔科夫性质。
- 即给定当前时刻的数据状态 x_t,下一时刻 t+1的数据状态 x_t+1的概率分布只取决于 x_t,可以表示为q(x_t+1∣x_t)。
- 随着时间步t的增加,数据逐渐被噪声淹没,最终达到一个纯噪声的分布。例如在图像扩散模型中,从一张清晰的图像开始,经过多次添加噪声的操作,最终图像变得完全像随机噪声。
逆向去噪过程
- 基于马尔科夫链的反向过程是从纯噪声开始,逐步去除噪声以恢复原始数据。在反向过程中,根据马尔科夫性质,给定当前的噪声状态 x_t,模型需要学习预测前一时刻的状态 x_t−1的概率分布p(x_t−1∣xt)。
- 通过不断地从这个条件分布中采样,逐步向原始数据分布靠近,最终生成出接近真实数据的样本。从一个随机的噪声向量开始,通过一系列的马尔科夫链状态转移,逐步生成原图像。
- 在反向过程中,马尔科夫链的转移概率通常通过神经网络来参数化。例如使用一个基于深度学习的生成器网络,以当前的噪声状态 x_t和时间步 t 作为输入,输出预测的前一时刻状态 x_t−1的概率分布或直接输出一个估计的 x_t−1样本。
②前向加噪
从原始数据x0出发,着时间步t从0增加到T,数据 xt逐渐被噪声淹没,最终xT服从一个纯噪声分布,通常是标准正态分布。
在每个时间步t逐步向数据中添加噪声。通常使用高斯噪声,在时间步t,给定 xt−1,通过以下公式得到xt:
- 其中βt是一个与时间步t相关的噪声系数,控制着噪声添加的强度,ϵt是从标准正态分布N(0,I)中采样得到的噪声向量。
- 过程如下面表达式所示
训练过程:$f _ { \theta } ( x , \tilde { y } , \gamma )$,该神经网络经过训练之后预测当前次迭代步t产生的噪声$ \widehat { \epsilon } _ { t }$
需要最小化该步预测噪声和该步实际的噪声的差值(会转换为求极大似然估计):
③反向去噪
- 从纯噪声采样:从纯噪声分布中采样得到 xT,由于前向加噪过程的结果,xT通常服从标准正态分布
- 学习条件分布:模型需要学习在给定xt的情况下,xt - 1的条件分布,之后逐步开始去噪,向前采样,T步之后得到超分辨率重建图片。
- 过程如下面表达式所示:
推理过程需要添加额外的高斯噪声,避免陷入局部最优
二.SR3介绍
SR3架构基于DDPM架构并做了改进。
DDPM在正向加噪后,训练阶段,将加噪后的图输入U-Net预测每次迭代添加的噪声。
推理阶段,从一张标准正态分布的噪声,输入U-Net后可通过预测出的噪声逆向去噪,迭代后生成新图像。
SR3的改进为:SR3在每一步的输入为:concat y_t and x (将低分辨率图片用插值法到目标高分辨率再于当前时间步图片连接)
三.SRDiff介绍
过程:与SR3不同,它预测的是残差:
加噪:将残差xr=XH-up(xL)t步加噪迭代后转化为高斯分布的潜在xT
训练:输入xr=XH-up(xL)和经过基于RRDB编码器的XL,经过U-net结构,预测每一步迭代的噪声
去噪:采样一个高斯分布的XT,将每一步预测的噪声进行去噪,还需添加一个随机采样的噪声z引入随机性,经过T次迭代后得出残差,与低分辨率图片相加即可得到超分辨率图片:
优化目标为:
LR Encoder:RRDB结构,将低分图片上采样到与xt相同的维度