扩散模式有哪些类型(扩散模型diffusion model用于图像恢复任务详细原理 (去雨,去雾等皆可),附实现代码)
话不多说 ,先上代码:
扩散模型diffusion model用于图像恢复完整可运行代码 ,附详细实验操作流程
令外一篇简化超分扩散模型SR3来实现图像恢复的博客见:
超分扩散模型 SR3 可以做图像去雨 、去雾等恢复任务吗?1. 去噪扩散概率模型
扩散模型是一类生成模型, 和生成对抗网络GAN 、变分自动编码器VAE和标准化流模型NFM等生成网络不同的是, 扩散模型在前向扩散过程中对图像逐步施加噪声, 直至图像被破坏变成完全的高斯噪声, 然后在反向采样过程中学习从高斯噪声还原为真实图像 。在模型训练完成后 ,只需要随机给定一个高斯噪声 ,就可以生成丰富的真实图像 。
2. 前向扩散
前向扩散过程就是向图像不断加高斯噪声 ,使其逐渐接近一个与输入数据相关的高斯分布 。此处将未加噪声的数据记为
x
x_0
x0 ,x
∼
q
(
x
)
x_0\sim q(x_0)
x0∼q(x0) ,q
(
x
)
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
∈
{
,
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
x_0
x0维度相同的单位矩阵 。则输入x
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
)
=
∏
t
=
1
T
q
(
x
t
∣
x
t
−
1
)
(2)
q(x_1, x_2, ..., x_T|x_0)=\displaystyle\prod_{t=1}^{T}q(x_t|x_{t-1}) \tag{2}
q(x1,x2,...,xT∣x0)=t=1∏Tq(xt∣xt−1)(2)则根据根据马尔科夫性可以直接得到输入x
x_0
x0的条件下t
t
t时刻的噪化状态为
q
(
x
t
∣
x
)
=
N
(
x
t
;
α
‾
t
⋅
x
,
(
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
=
t
α
s
\overline{\alpha}_t:=\prod_{s=0}^{t}\alpha_s
αt:=∏s=0tα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−1+1−αt⋅ϵt−1,(4)其中:ϵ
t
−
1
∼
N
(
,
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
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
+
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−1+1−αt⋅ϵt−1=αtαt−1⋅xt−2+1−αtαt−1⋅ϵt−2=αtαt−1αt−2⋅xt−3+1−αtαt−1αt−2⋅ϵt−3…=αt⋅x0+1−αt⋅ϵ(5)其中:ϵ
∼
N
(
,
I
)
\epsilon\sim\mathcal{N}(\textbf{0}, \textbf{I})
ϵ∼N(0,I) ,ϵ
‾
t
−
2
\overline{\epsilon}_{t-2}
ϵt−2是两个高斯分布相加后的分布 。第一步到第二步的公式推导需要说明一下 ,根据高斯噪声的特点,对于两个方差不同的高斯分布N
(
,
σ
1
2
⋅
I
)
\mathcal{N}(\textbf{0}, \sigma_1^2\cdot\textbf{I})
N(0,σ12⋅I)和N
(
,
σ
2
2
⋅
I
)
\mathcal{N}(\textbf{0}, \sigma_2^2\cdot\textbf{I})
N(0,σ22⋅I) ,其相加后的高斯分布为N
(
,
(
σ
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
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!