扩散模型笔记(pytorch实现)

论文:Denoising Diffusion Probabilistic Models
讲解视频:Probabilistic Diffusion Model概率扩散模型理论与完整PyTorch代码详细解读
视频笔记:Probabilistic Diffusion Model概率扩散模型理论与完整PyTorch代码详细解读
示例代码:

符号和公式

x 0 x_0 x0:从真实数据分布中采样得到的数据,可以粗略得理解成样本图像。
x i , i = 1 , 2 , . . . , T x_i,i =1,2,...,T xi,i=1,2,...,T:第 i i i次扩散时向样本数据中添加高斯噪声后得到的样本。
q ( x ) q(x) q(x):扩散过程中,数据 x x x的分布,模型中统一为高斯分布。
q ( x t ∣ x t − 1 ) q(x_t|x_{t-1}) q(xtxt1):给定 x t − 1 x_{t-1} xt1的前提下, x t x_{t} xt的数据分布。
p ( x ) p(x) p(x):逆扩散过程中,数据 x x x的分布。
z t z_t zt:均值为0,方差为1的正态分布噪声,经过变换后可以表示第 i i i次扩散时向样本数据中添加的高斯噪声。
q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) q(x_t|x_{t-1})=N(x_t;\sqrt{1-\beta_t }x_{t-1},\beta_tI) q(xtxt1)=N(xt;1βt xt1,βtI) x t x_t xt是以 1 − β t x t − 1 \sqrt{1-\beta_t }x_{t-1} 1βt xt1为均值, β t I \beta_t I βtI为方差的正态分布。令 α t = 1 − β t , α ‾ t = ∏ i = 1 T α i \alpha_t=1-\beta_t,\overline{\alpha}_t=\prod^T_{i=1}\alpha_i αt=1βt,αt=i=1Tαi,则 x t x_t xt可以写成下式:
x t = α t x t − 1 + 1 − α t z t − 1 x_t=\sqrt{\alpha_t}x_{t-1}+\sqrt{1-\alpha_t}z_{t-1} xt=αt xt1+1αt zt1
x t − 1 x_{t-1} xt1进行替换,基于正态分布叠加的规律,可以得到如下计算:
在这里插入图片描述

整体思路

扩散模型可以分为扩散/前向过程和逆扩散/反向过程。
扩散过程就是向样本图像中逐步添加噪声,学习如何将图像扩散为噪声。
逆扩散过程就是从噪声中恢复图像,当模型学会从噪声中恢复图像后,给定噪声数据,模型也能够由噪声生成图像。因此,推理时只包括逆扩散过程。

扩散过程

扩散模型和其它类型的潜空间模型的区别在于近似后验分布 q ( x 1 : T ∣ x 0 ) q(x_{1:T}|x_0) q(x1:Tx0)
扩散模型的前向过程固定在马尔科夫链上,所以具有下式:
在这里插入图片描述
前向过程根据方差表 β 1 , . . . , β T \beta_1,...,\beta_T β1,...,βT向数据中逐步添加高斯噪声,使 x t x_t xt成为以 1 − β t x t − 1 \sqrt{1-\beta_t }x_{t-1} 1βt xt1为均值, β t I \beta_t I βtI为方差的正态分布。即:
在这里插入图片描述
基于上面两个式子,可以推出 x T x_T xT x 0 x_0 x0的关系,如下:
在这里插入图片描述

反向过程

反向过程被定义为马尔科夫链,初始样本为标准正态分布 p ( x T ) = N ( x T ; 0 , I ) p(x_T)=N(x_T;0,I) p(xT)=N(xT;0,I)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值