建筑公司网站制作,万网 网站建设,咸阳专业学校网站建设,电子商务网站建设论文文章目录 1. 去噪扩散概率模型2. 前向扩散3. 反向采样3. 图像条件扩散模型4. 可以考虑改进的点5. 实现代码 话不多说#xff0c;先上代码#xff1a;
扩散模型diffusion model用于图像恢复完整可运行代码#xff0c;附详细实验操作流程 令外一篇简化超分扩散模型SR3来实现图… 文章目录 1. 去噪扩散概率模型2. 前向扩散3. 反向采样3. 图像条件扩散模型4. 可以考虑改进的点5. 实现代码 话不多说先上代码
扩散模型diffusion model用于图像恢复完整可运行代码附详细实验操作流程 令外一篇简化超分扩散模型SR3来实现图像恢复的博客见
超分扩散模型 SR3 可以做图像去雨、去雾等恢复任务吗 1. 去噪扩散概率模型
扩散模型是一类生成模型, 和生成对抗网络GAN 、变分自动编码器VAE和标准化流模型NFM等生成网络不同的是, 扩散模型在前向扩散过程中对图像逐步施加噪声, 直至图像被破坏变成完全的高斯噪声, 然后在反向采样过程中学习从高斯噪声还原为真实图像。在模型训练完成后只需要随机给定一个高斯噪声就可以生成丰富的真实图像。
2. 前向扩散
前向扩散过程就是向图像不断加高斯噪声使其逐渐接近一个与输入数据相关的高斯分布。此处将未加噪声的数据记为 x 0 x_0 x0 x 0 ∼ q ( x 0 ) x_0\sim q(x_0) x0∼q(x0) q ( x 0 ) q(x_0) q(x0)是为被噪声破坏的原始数据分布则在 t t t时刻的噪化状态和上一时刻 t − 1 t-1 t−1之间的关系为 q ( x t ∣ x t − 1 ) N ( x t ; 1 − β t ⋅ x t − 1 , β t ⋅ I ) , (1) q(x_t|x_{t-1})\mathcal{N}(x_t; \sqrt{1-\beta_t}\cdot x_{t-1}, \beta_t\cdot\textbf{I}), \tag{1} q(xt∣xt−1)N(xt;1−βt ⋅xt−1,βt⋅I),(1)其中 t ∈ { 0 , 1 , . . . , T } t\in{\{0, 1, ..., T\}} t∈{0,1,...,T} N \mathcal{N} N表示高斯噪声分布 β t \beta_t βt是与时刻t相关的噪声方差调节因子 I \textbf{I} I是一个与初始状态 x 0 x_0 x0维度相同的单位矩阵。则输入 x 0 x_0 x0的条件下 x 1 , x 2 , . . . , x T x_1, x_2, ..., x_T x1,x2,...,xT的联合分布可以表示为 q ( x 1 , x 2 , . . . , x T ∣ x 0 ) ∏ t 1 T q ( x t ∣ x t − 1 ) (2) q(x_1, x_2, ..., x_T|x_0)\displaystyle\prod_{t1}^{T}q(x_t|x_{t-1}) \tag{2} q(x1,x2,...,xT∣x0)t1∏Tq(xt∣xt−1)(2)则根据根据马尔科夫性可以直接得到输入 x 0 x_0 x0的条件下 t t t时刻的噪化状态为 q ( x t ∣ x 0 ) N ( x t ; α ‾ t ⋅ x 0 , ( 1 − α ‾ t ) ⋅ I ) , (3) q(x_t|x_0)\mathcal{N}(x_t; \sqrt{\overline{\alpha}_t}\cdot x_0, (1-\overline{\alpha}_t)\cdot\textbf{I}), \tag{3} q(xt∣x0)N(xt;αt ⋅x0,(1−αt)⋅I),(3)其中 α t : 1 − β t \alpha_t:1-\beta_t αt:1−βt, α ‾ t : ∏ s 0 t α s \overline{\alpha}_t:\prod_{s0}^{t}\alpha_s αt:∏s0tαs。根据公式 ( 1 ) (1) (1)可以得到 t t t时刻的噪化状态 x t x_t xt与 t − 1 t-1 t−1时刻的噪化状态 x t − 1 x_{t-1} xt−1的关系为 x t α t ⋅ x t − 1 1 − α t ⋅ ϵ t − 1 , (4) x_t\sqrt{\alpha_t}\cdot x_{t-1}\sqrt{1-\alpha_t}\cdot\epsilon_{t-1}, \tag{4} xtαt ⋅xt−11−αt ⋅ϵt−1,(4)其中 ϵ t − 1 ∼ N ( 0 , I ) \epsilon_{t-1}\sim\mathcal{N}(\textbf{0}, \textbf{I}) ϵt−1∼N(0,I)通过不断取代递推可以得到 t t t时刻的噪化状态 x t x_t xt与输入 x 0 x_0 x0之间的关系为 x t α t ⋅ x t − 1 1 − α t ⋅ ϵ t − 1 α t α t − 1 ⋅ x t − 2 1 − α t α t − 1 ⋅ ϵ ‾ t − 2 α t α t − 1 α t − 2 ⋅ x t − 3 1 − α t α t − 1 α t − 2 ⋅ ϵ ‾ t − 3 … α ‾ t ⋅ x 0 1 − α ‾ t ⋅ ϵ (5) \begin{equation*} \begin{aligned} x_t \sqrt{\alpha_t}\cdot x_{t-1}\sqrt{1-\alpha_t}\cdot\epsilon_{t-1} \\ ~ \sqrt{\alpha_t\alpha_{t-1}}\cdot x_{t-2}\sqrt{1-\alpha_t\alpha_{t-1}}\cdot\overline{\epsilon}_{t-2} \\ ~ \sqrt{\alpha_t\alpha_{t-1}\alpha_{t-2}}\cdot x_{t-3}\sqrt{1-\alpha_t\alpha_{t-1}\alpha_{t-2}}\cdot\overline{\epsilon}_{t-3} \\ ~ \dots \\ ~ \sqrt{\overline{\alpha}_t}\cdot x_0\sqrt{1-\overline{\alpha}_t}\cdot\epsilon \\ \end{aligned} \end{equation*} \tag{5} xt αt ⋅xt−11−αt ⋅ϵt−1αtαt−1 ⋅xt−21−αtαt−1 ⋅ϵt−2αtαt−1αt−2 ⋅xt−31−αtαt−1αt−2 ⋅ϵt−3…αt ⋅x01−αt ⋅ϵ(5)其中 ϵ ∼ N ( 0 , I ) \epsilon\sim\mathcal{N}(\textbf{0}, \textbf{I}) ϵ∼N(0,I) ϵ ‾ t − 2 \overline{\epsilon}_{t-2} ϵt−2是两个高斯分布相加后的分布。第一步到第二步的公式推导需要说明一下根据高斯噪声的特点对于两个方差不同的高斯分布 N ( 0 , σ 1 2 ⋅ I ) \mathcal{N}(\textbf{0}, \sigma_1^2\cdot\textbf{I}) N(0,σ12⋅I)和 N ( 0 , σ 2 2 ⋅ I ) \mathcal{N}(\textbf{0}, \sigma_2^2\cdot\textbf{I}) N(0,σ22⋅I)其相加后的高斯分布为 N ( 0 , ( σ 1 2 σ 2 2 ) ⋅ I ) \mathcal{N}(\textbf{0}, (\sigma_1^2\sigma_2^2)\cdot\textbf{I}) N(0,(σ12σ22)⋅I)表现在公式中即 x t α t ⋅ x t − 1 1 − α t ⋅ ϵ t − 1 α t ⋅ ( α t − 1 ⋅ x t − 2 1 − α t − 1 ⋅ ϵ t − 2 ) 1 − α t ⋅ ϵ t − 1 α t α t − 1 ⋅ x t − 2 α t ( 1 − α t − 1 ) ⋅ ϵ t − 2 1 − α t ⋅ ϵ t − 1 α t α t − 1 ⋅ x t − 2 1 − α t α t − 1 ⋅ ϵ ‾ t − 2 (6) \begin{equation} \begin{aligned} x_t \sqrt{\alpha_t}\cdot x_{t-1}\sqrt{1-\alpha_t}\cdot\epsilon_{t-1} \\ ~ \sqrt{\alpha_t}\cdot( \sqrt{\alpha_{t-1}}\cdot x_{t-2}\sqrt{1-\alpha_{t-1}}\cdot\epsilon_{t-2})\sqrt{1-\alpha_t}\cdot\epsilon_{t-1} \\ ~ \sqrt{\alpha_t\alpha_{t-1}}\cdot x_{t-2} \sqrt{\alpha_t(1-\alpha_{t-1})}\cdot\epsilon_{t-2}\sqrt{1-\alpha_t}\cdot\epsilon_{t-1} \\ ~ \sqrt{\alpha_t\alpha_{t-1}}\cdot x_{t-2}\sqrt{1-\alpha_t\alpha_{t-1}}\cdot\overline{\epsilon}_{t-2} \end{aligned} \end{equation} \tag{6} xt αt ⋅xt−11−αt ⋅ϵt−1αt ⋅(αt−1 ⋅xt−21−αt−1 ⋅ϵt−2)1−αt ⋅ϵt−1αtαt−1 ⋅xt−2αt(1−αt−1) ⋅ϵt−21−αt ⋅ϵt−1αtαt−1 ⋅xt−21−αtαt−1 ⋅ϵt−2(6)其中两个高斯分布相加后的标准差为 α t ( 1 − α t − 1 ) ( 1 − α t ) 1 − α t α t − 1 , (7) \sqrt{\alpha_t(1-\alpha_{t-1})(1-\alpha_t)}\sqrt{1-\alpha_t\alpha_{t-1}}, \tag{7} αt(1−αt−1)(1−αt) 1−αtαt−1 ,(7)依此得到第二步进而逐渐递推到最后一步。公式 ( 3 ) (3) (3)和公式 ( 5 ) (5) (5)的目的就是表明在前向扩散过程中由于每步加的噪声均是同分布的高斯噪声因此不需要逐步进行加噪直接就可以由输入 x 0 x_0 x0的到 T T T时刻的噪化状态 x T x_T xT。当 α ‾ T ≈ 0 \overline{\alpha}_T\approx0 αT≈0 T T T时刻的分布 x t x_t xt则几乎就是一个高斯分布据此其可以定义为 q ( x T ) : ∫ q ( x T ∣ x 0 ) q ( x 0 ) d x 0 ≈ N ( x T ; 0 , I ) , (5) q(x_T):\int q(x_T|x_0)q(x_0)dx_0\approx\mathcal{N}(x_T; \textbf{0}, \textbf{I}), \tag{5} q(xT):∫q(xT∣x0)q(x0)dx0≈N(xT;0,I),(5)其中 ∫ \int ∫表示积分最终的噪化状态 x T x_T xT也可以在图像上看出其分布特点。 3. 反向采样
反向采样过程就是根据已有的噪化状态通过学习来估计噪声分布进一步获得上一时刻的状态并逐渐从高斯分布中构造出真实数据。根据前向扩散过程的结果可以认为 T T T时刻噪化状态 x T x_T xT的后验分布 p ( x t ) ∼ N ( x t ; 0 , I ) p(x_t)\sim\mathcal{N}(x_t; \textbf{0}, \textbf{I}) p(xt)∼N(xt;0,I)则联和分布 p θ ( x 0 , x 1 , . . . , x T ) p_{\theta}(x_0, x_1, ..., x_T) pθ(x0,x1,...,xT)也是一个马尔科夫链其被定义为: p θ ( x 0 , x 1 , . . . , x T ) : p ( x T ) ∏ t 1 T p θ ( x t − 1 ∣ x t ) , (6) p_{\theta}(x_0, x_1, ..., x_T):p(x_T)\displaystyle\prod_{t1}^{T}p_{\theta}(x_{t-1}|x_t), \tag{6} pθ(x0,x1,...,xT):p(xT)t1∏Tpθ(xt−1∣xt),(6)则 t − 1 t-1 t−1时刻的噪状态 x t − 1 x_{t-1} xt−1可以由上一时刻 t t t的状态 x t x_t xt得到其条件分布可以表示为 p θ ( x t − 1 ∣ x t ) N ( x t − 1 ; μ θ ( x t , t ) , ∑ θ ( x t , t ) ) , (7) p_{\theta}(x_{t-1}|x_t)\mathcal{N}(x_{t-1}; \mu_{\theta}(x_t, t), {\tiny{\sum}}_{\theta}(x_t, t)), \tag{7} pθ(xt−1∣xt)N(xt−1;μθ(xt,t),∑θ(xt,t)),(7)其中 μ θ ( x t , t ) \mu_\theta(x_t, t) μθ(xt,t)和 ∑ θ ( x t , t ) ) {\tiny{\sum}}_{\theta}(x_t, t)) ∑θ(xt,t))分别为 t t t时刻由噪声估计网络得到的噪声均值和方差 θ \theta θ为噪声估计网络的参数。此时在输入为 x 0 x_0 x0时 t − 1 t-1 t−1时刻的噪状态 x t − 1 x_{t-1} xt−1与上一时刻 t t t的状态 x t x_t xt之间的真实条件分布为 q ( x t − 1 ∣ x t , x 0 ) N ( x t − 1 ; μ ~ t ( x t , x 0 ) , β ~ t ⋅ I ) , (8) q(x_{t-1}|x_t, x_0)\mathcal{N}(x_{t-1}; \tilde{\mu}_{t}(x_t, x_0), \tilde{\beta}_t\cdot\textbf{I}), \tag{8} q(xt−1∣xt,x0)N(xt−1;μ~t(xt,x0),β~t⋅I),(8)其中噪声后验分布参数 μ ~ t \widetilde{\mu}_t μ t, β ~ t \tilde{\beta}_t β~t分别为 μ ~ t 1 α t ( x t − β t 1 − α ‾ t ⋅ ϵ t ) , β ~ t 1 − α ‾ t − 1 1 − α ‾ t ⋅ β t , (9) \tilde{\mu}_t\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{\beta_t}{\sqrt{1-\overline{\alpha}_t}}\cdot\epsilon_t), \tilde{\beta}_t\frac{1-\overline{\alpha}_{t-1}}{1-\overline{\alpha}_t}\cdot\beta_t, \tag{9} μ~tαt 1(xt−1−αt βt⋅ϵt),β~t1−αt1−αt−1⋅βt,(9)此处认为 ∑ θ ( x t , t ) σ t 2 ⋅ I {\small{\sum}}_\theta(x_t, t)\sigma_t^2\cdot\textbf{I} ∑θ(xt,t)σt2⋅I即 σ t 2 β ~ t \sigma_t^2\tilde{\beta}_t σt2β~t则预测的后验条件分布变为 p θ ( x t − 01 ∣ x t ) N ( x t − 1 ; μ θ ( x t , t ) , σ t 2 ⋅ I ) , , (10) p_{\theta}(x_{t-01}|x_t)\mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \sigma_t^2\cdot\textbf{I}), \tag{10}, pθ(xt−01∣xt)N(xt−1;μθ(xt,t),σt2⋅I),,(10)即利用噪声估计网络 μ θ \mu_\theta μθ来估计真实噪声分布均值 μ ~ t \tilde{\mu}_t μ~t则公式 ( 9 ) (9) (9)中的噪声分布均值可以被估计为 μ θ ( x t , t ) 1 α t ( x t − β t 1 − α ‾ t ⋅ ϵ θ ( x t , t ) ) , (11) \mu_\theta(x_t, t)\frac{1}{\sqrt{\alpha_t}}(x_t-\frac{\beta_t}{\sqrt{1-\overline{\alpha}_t}}\cdot\epsilon_\theta(x_t, t)), \tag{11} μθ(xt,t)αt 1(xt−1−αt βt⋅ϵθ(xt,t)),(11)而根据公式已知 t t t时刻的噪化状态 x t x_t xt满足 x t α ‾ t ⋅ x 0 1 − α ‾ t ⋅ ϵ x_t\sqrt{\overline{\alpha}_t}\cdot x_0\sqrt{1-\overline{\alpha}_t}\cdot\epsilon xtαt ⋅x01−αt ⋅ϵ则网络学习的优化目标就是让估计出的噪声分布接近真实的噪声分布即 E x 0 , t , ϵ t ∼ N ( 0 , I ) [ ∣ ∣ ϵ t − ϵ θ ( α ‾ t ⋅ x 0 1 − α ‾ t ⋅ ϵ , t ) ∣ ∣ 2 ] , (12) \mathbb{E}_{x_0, t, \epsilon_t\sim\mathcal{N}(0, \textbf{I})}[||\epsilon_t-\epsilon_\theta(\sqrt{\overline\alpha}_t\cdot x_0\sqrt{1-\overline{\alpha}_t}\cdot\epsilon, t)||^2], \tag{12} Ex0,t,ϵt∼N(0,I)[∣∣ϵt−ϵθ(α t⋅x01−αt ⋅ϵ,t)∣∣2],(12)而 t − 1 t-1 t−1时刻的噪化状态 x t − 1 x_{t-1} xt−1可以表示为 (这块尚没搞清楚这个公式的由来似乎与原论文中的公式不一样) x t − 1 α ‾ t − 1 ( x t − 1 − α ‾ t ⋅ ϵ θ ( x t , t ) α ‾ t ) 1 − α ‾ t − 1 ⋅ ϵ θ ( x t , t ) , (13) x_{t-1}\sqrt{\overline\alpha_{t-1}}(\frac{x_t-\sqrt{1-\overline{\alpha}_t}\cdot\epsilon_\theta(x_t, t)}{\sqrt{\overline{\alpha}_t}})\sqrt{1-\overline{\alpha}_{t-1}}\cdot\epsilon_\theta(x_t, t), \tag{13} xt−1αt−1 (αt xt−1−αt ⋅ϵθ(xt,t))1−αt−1 ⋅ϵθ(xt,t),(13)其中 z ∼ N ( 0 , I ) z\sim\mathcal{N}(\textbf{0}, \textbf{I}) z∼N(0,I)。则根据不同时刻噪声估计网络对噪声分布的估计可以依据公式 ( 13 ) (13) (13)逐渐反向采样得到真实数据分布。 3. 图像条件扩散模型
在图像恢复任务中必须使用条件扩散模型才能生成我们预期的恢复图像实际中即将退化的图像作为条件引入到噪声估计网络中来估计条件噪声分布。如图所示 图像条件扩散模型与经典扩散模型的前向扩散过程完全一样区别仅在于反向采样过程中是否引入图像条件。则反向采样过程中 x 1 , x 2 , . . . , x T x_1, x_2, ..., x_T x1,x2,...,xT的联合分布变为 p θ ( x 0 , x 1 , . . . , x T ∣ x ^ ) : p ( x T ) ∏ t 1 T p θ ( x t − 1 ∣ x t , x ^ ) , (14) p_{\theta}(x_0, x_1, ..., x_T|\hat{x}):p(x_T)\displaystyle\prod_{t1}^{T}p_{\theta}(x_{t-1}|x_t, \hat{x}), \tag{14} pθ(x0,x1,...,xT∣x^):p(xT)t1∏Tpθ(xt−1∣xt,x^),(14)其中 x ^ \hat{x} x^为作为条件输入噪声估计网络的退化图像。此时噪声分布估计变为 ϵ θ ( x t , t ) → ϵ θ ( x t , x ^ , t ) (15) \epsilon_\theta(x_t, t)\rightarrow\epsilon_\theta(x_t, \hat{x}, t) \tag{15} ϵθ(xt,t)→ϵθ(xt,x^,t)(15) t − 1 t-1 t−1时刻的噪化状态 x t − 1 x_{t-1} xt−1也由公式 ( 13 ) (13) (13)变为 x t − 1 α ‾ t − 1 ( x t − 1 − α ‾ t ⋅ ϵ θ ( x t , x ^ , t ) α ‾ t ) 1 − α ‾ t − 1 ⋅ ϵ θ ( x t , x ^ , t ) , (16) x_{t-1}\sqrt{\overline\alpha_{t-1}}(\frac{x_t-\sqrt{1-\overline{\alpha}_t}\cdot\epsilon_\theta(x_t, \hat{x}, t)}{\sqrt{\overline{\alpha}_t}})\sqrt{1-\overline{\alpha}_{t-1}}\cdot\epsilon_\theta(x_t, \hat{x}, t), \tag{16} xt−1αt−1 (αt xt−1−αt ⋅ϵθ(xt,x^,t))1−αt−1 ⋅ϵθ(xt,x^,t),(16) 实际中条件的引入由多种方式最常见的方法是直接通过与噪化状态拼接后作为噪声估计网络的输入。
4. 可以考虑改进的点
以下是我问chatGPT得到的答案 我的拙见
引入天气退化图像恢复中虽然扩散模型已经出现众多研究但在图像去雨、去雾、去雨滴、去雪等方面的研究屈指可数改进噪声估计网络经典的扩散模型是基于U-Net结构的主要模块也是卷积 (也包括自注意力)近来有一些研究发现Transformer架构在扩散模型上可以取得更好地效果Follow最新的更快地扩散模型传统的扩散模型要进行图像恢复一幅图片的处理时长基本都是几十秒实时性太差目前有一些研究提出快速反向采样的方法无监督目前多数给予扩散模型的图像恢复算法仍然是有监督的 (当然不算是监督学习只是条件生成)可以采用一些无监督策略来利用扩散模型实现图像恢复。
5. 实现代码
完整的用于图像恢复的扩散模型代码见完整可直接运行代码其中包括详细的实验操作流程只需要修改数据集路径即可直接使用。