本文主要是介绍DREAMCLEAN: RESTORING CLEAN IMAGE USING DEEP DIFFUSION PRIOR,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
DREAMCLEAN: RESTORING CLEAN IMAGE USING DEEP DIFFUSION PRIOR (Paper reading)
Jie Xiao, USTC, ICLR24 poster, Paper, Code
1. 前言
目前的研究主要依赖于恢复类型的先验知识,要么是通过规则明确地定义(DDRM中Liner的假设),要么是通过可用的退化-清晰图像对(End2End)隐含地定义恢复过程,并且需要大量的工作来收集各种退化类型的图像对。本文介绍了DreamClean,这是一种无需训练的方法,无需退化先验知识,但能产生高保真度和普适性,适用于各种图像退化类型。DreamClean将退化图像嵌入到预先训练的扩散模型的潜在空间中,并通过精心设计的扩散过程对其重新采样,模拟生成清晰图像的过程。由于扩散模型中丰富的图像先验知识以及我们的新颖的方差保持采样(VPS)技术,DreamClean能够同时处理各种不同的退化类型,并且达到比以前的竞争对手更满意的最终质量。DreamClean依赖于优雅的理论支持,以确保当VPS具有适当的参数时,它会收敛到清晰图像,并且在没有退化先验知识的情况下,DreamClean在各种具有挑战性的任务上表现出卓越的实验性能,这对以前的方法来说可能是不可逾越的。
2. 整体思想
当我看到图1的时候,就感觉这篇更像是在做生成,一致性很难保证,但是low-level任务在降质不是非常严重的情况下,需要保证细节的一致性,虽然图1乍一看挺好,然而仔细看好多细节被篡改了。后面实验结果,也可以看到图像被过度平滑了。本文数学较多,整体思想建议看第3节高亮。
3. 方法
为了释放扩散模型的生成力量,摆脱沉重的退化先验,我们提出了一种新颖的无需训练和无监督框架,称为DreamClean,用于通用的图像恢复问题。DreamClean绕过了成对数据集的要求,可以在没有关于特定退化模型的显式或隐式假设的情况下生成样本,从而对各种退化类型具有强大的鲁棒性。正如图2所示,DreamClean可以处理各种类型的退化,包括典型的线性退化(图像着色、超分辨率、去模糊)、有噪线性退化(泊松噪声、带有高斯和泊松噪声的超分辨率)、非线性退化(多个非对齐JPEG伪影校正)、复杂的恶劣天气退化(雨、雪、雨滴)。DreamClean的工作方式类似于经验丰富的人类,纯粹基于输入的退化观察“想象”潜在的清晰图像。
DreamClean的关键思想是在干净图像分布中进行搜索,该分布由扩散先验表示,以找到清晰图像,同时保持对输入的退化图像的忠实。因此,我们框架的第一个核心要素是预训练的扩散模型。我们将这样的扩散模型视为极端图像恢复问题的解决方案(也就是变成生成模型了):即使有关清晰图像的所有信息都丢失了,它也能生成清晰图像。另一个需要解决的关键问题是确保对退化图像的忠实度。我们借助扩散模型的ODE采样算法(例如,DDIM(Song等,2021a))的反演来实现这一目标。如图3所示,通过重建退化图像,DDIM反演算法可以生成一系列保留有关输入图像信息的潜变量。由于从扩散模型中采样通常会产生清晰图像而不是退化图像,因此这些潜变量位于低概率区域。虽然这些潜变量不能直接恢复清晰图像,但它们可以继承输入图像的信息,为后续采样提供良好的初始化。受此启发,我们提出了方差保持采样(VPS)来引导这些受损的低概率潜变量朝向附近的高概率区域,从而可以生成清晰样本。这样,VPS作为一种通用解决方案,即使不知道具体的退化模型,也可以确保忠实度。值得注意的是:i)DreamClean不假设底层退化模型的特定形式。因此,它可以与在像素空间和VAE编码空间中预先训练的扩散模型集成。如图1所示,当应用于Stable Diffusion XL的编码空间时,DreamClean仍然可以完成具有挑战性的多个非对齐JPEG伪影校正任务;ii)DreamClean与先前利用退化模型从后验分布中采样的工作是正交的。DreamClean也可以利用退化模型产生更加忠实的结果。我们的方法在收敛性方面具有优雅的理论保证,并在许多具有挑战性的场景中表现出卓越的性能。
ODE采样算法近似可逆,也就是说,对于给定的图像,可以找到一系列潜变量,其中任何一个都可以沿着ODE采样轨迹重现输入图像(如图3所示)。这一属性意味着这些反向潜变量应该包含关于输入图像的理想信息。另一方面,当我们从预训练的扩散模型中采样时,会生成高质量的图像,这意味着这些潜变量位于低概率区域。受此启发,如图3所示,我们提出利用反向潜变量作为初始化,并设计一个校正算法来引导这些潜变量朝向附近的高概率区域。在本工作中,我们选择DDIM作为默认的ODE采样算法。假设退化图像是 y y y,则可以通过DDIM反演找到一个潜变量 y τ y_τ yτ: y τ = D D I M − 1 ( y ) y_τ=DDIM^{-1}(y) yτ=DDIM−1(y)。
得到信息丰富的潜变量 y τ y_τ yτ之后,我们可以校正低概率的潜变量,并逐渐去噪以获得清晰的图像。我们在每个时间步 t ∈ [ τ , 0 ) t∈[τ,0) t∈[τ,0)执行以下两个步骤:
- y t m = y t m − 1 + η l ∇ l o g p t ( y t m − 1 ) + η g ϵ g m , m = 1 , . . , M , y t 0 = y t y^m_t=y^{m-1}_t+\eta_l \nabla logp_t(y^{m-1}_t)+\eta_g\epsilon_g^m,\quad m=1,..,M, \quad y^0_t=y_t ytm=ytm−1+ηl∇logpt(ytm−1)+ηgϵgm,m=1,..,M,yt0=yt
- y t − 1 = D D I M ( y t M ) y_t-1 = DDIM(y_t^M) yt−1=DDIM(ytM)
其中, η l \eta_l ηl和 η g \eta_g ηg需要满足 η l = γ ( 1 − α ˉ t ) \eta_l = \gamma(1-\bar \alpha_t) ηl=γ(1−αˉt)和 η g = γ ( 2 − γ ) 1 − α ˉ t \eta_g = \sqrt{\gamma(2-\gamma)}\sqrt{1-\bar \alpha_t} ηg=γ(2−γ)1−αˉt。0 < γ < 1是一个标量,确定步长的大小。这样设置对于恢复清晰图像至关重要,我们将在后面的定理2.2中讨论。直观地,如图4所示,给定位于低概率区域的初始潜变量,VPS将引导潜变量向其附近的高概率区域移动。高概率区域符合扩散模型的正常采样公式。因此,通过逐渐校正潜变量,VPS可以产生高质量的图像。在实践中, ∇ l o g p t ( y t m − 1 ) \nabla logp_t(y^{m-1}_t) ∇logpt(ytm−1)可以通过预训练的扩散模型计算。具体来说,梯度项与预训练的扩散模型预测的噪声有关。
看到这里你一定很蒙,我按我的理解来重新说一遍:限制 η l η_l ηl和 η g η_g ηg是为了保证VPS校正的收敛性,使得迭代过程最终能够到达目标高概率集合,而不会发散。如果不加以约束,可能会使潜变量的更新步长过大或过小,导致无法正确收敛到目标集合。结合定理2.2,如果 M → ∞ M \to \infty M→∞,相当于无限执行公式9后面两个部分。这对于采用初期来说,等同于无限执行后面两项,而后面两项。这意味着,你的 x t x_t xt无限逼近真实分布,也就是收敛于高概率集合。更直白的话就是,输入是降质图像,我们利用VPS将其拉到清晰图像的先验空间中。为什么有效呢?DDIM Inversion提供了一个很好的起点,但是你降质图像的起点是有很大误差的,而这种误差在 T T T较大时是较小的, ∇ l o g p t ( y t m − 1 ) \nabla logp_t(y^{m-1}_t) ∇logpt(ytm−1)这一项是在误差较小时的一次采样,而这个采用的是完全基于 ϵ θ \epsilon_\theta ϵθ的真实先验。这个采样结果一定程度弥补了降质起点的误差,且采用作为DDIM下次采样的起点。因此,降质图像中的很多噪声或者其他可以被忽略,但是致命问题是VPS无法控制方向,换句话说,他只可能给你拉到高概率集合中,但是无法精确找到是哪个子集。所以他图像复原的结果,大体看着还行,具体细节改变了很多。
4. 实验
4.1 MOVING TO HIGHER PROBABILITY
对于潜变量 x t x_t xt,我们通过预训练的扩散模型评估其在概率下 l o g p θ ( x t ) log p_θ (x_t) logpθ(xt)。给定 x 0 x_0 x0,我们可以通过备用得分 l o g q t ( x t ∣ x 0 ) log q_t (x_t|x_0) logqt(xt∣x0) 来近似它。我们使用嘈杂的 SR 作为默认的 IR 任务,并记录 CelebA 1K 上的平均分数和标准差。图5显示,与清晰图像相比,退化图像的潜变量位于低概率区域,而 VPS 逐渐提高了它们的概率。我们还在图6中提供了具有不同时间步长的潜变量的更直观的可视化。我们可以发现,在 VPS 的驱动下,具有意外工件的潜变量被转换为具有类似高斯噪声的干净图像外观,这符合扩散模型的采样动态(方程 (2)).
4.2 QUANTITATIVE EXPERIMENTS
这篇关于DREAMCLEAN: RESTORING CLEAN IMAGE USING DEEP DIFFUSION PRIOR的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!