DDPM_DDIM_SDE_CompVis

DDPM

Denoising Diffusion Probabilistic Models

https://github.com/betterlmy/ddpm_abarankab

公式原理

正向一步步加噪音:

beta是一个设定好的和t有关的超参数,噪音就是随机高斯噪音

正向一步得到加噪结果

网络训练去噪器
估计出当前噪音,得到Xt-1

总的来说

代码实现

训练过程

推理过程

DDIM

DENOISING DIFFUSION IMPLICIT MODELS

https://github.com/ermongroup/ddim

论文原理

DDPM在采样的时候,需要利用到xt-1 扩散到xt的知识,导致sample速度过慢,而DDIM可以只利用predicted X0 Xt,去求Xt-1,这样就不要求一步步采样了。

reverse过程

代码实现

训练过程,和DDPM一样

推理过程

SDE

论文原理

SDE时间上连续 ,正向和逆向推导过程

涵盖了之前的score base 和ddpm

score base VE

ddpm VP

结合上述两种扩散方式 提出sub-VP SDE 目的是which perform particularly well on

likelihoods

PC采样:

用SDE数值求解预测出结果,再用分数估计修正结果。这部分也有一些实验性结论,比如correct一步还是n步。结合了两种采样方式 *unifies and improves over existing sampling methods for score-based models.

PC的原因

纠正离散步长不准确?

ODE

就是一种和SDE有同样边缘概率分布的采样方式 likelihood fast adaptive sampling via black-box ODE solvers, flexible data manipulation via latent codes, a uniquely identifiable encoding, and notably, exact likelihood computation.

controllable generation

对于score模型 只要知道了 每个时刻condition 的score 就可以根据condition生成图片了,总之就是额外或者利用domain信息,得到一个跟condition有关的score,放到采样过程中就行。主要应用有,分类图片生成,图片补全,图片上色。

这里这些condition都是sample时候加进去的,不涉及估计score的那个训练阶段。

代码实现

怎么训练分数网络

score 本质上还是和noise z相关的的一个估计

怎么采样

PC采样的框架

不同数值求解器的predictor

不同数值求解器的correcter,只截取了部分 还有很多

https://www.bilibili.com/video/BV1Dd4y1A7oz/?spm_id_from=333.999.0.0&vd_source=857061537338948659f6d0f1f3868d83

https://www.bilibili.com/video/BV19M411z7hS/?spm_id_from=333.999.0.0&vd_source=857061537338948659f6d0f1f3868d83

https://www.bilibili.com/video/BV1jg411Q7bQ/?spm_id_from=333.337.search-card.all.click&vd_source=857061537338948659f6d0f1f3868d83

CompVis

论文思想

High-Resolution Image Synthesis with Latent Diffusion Models

利用预先训练好的encoder decoder,将图像映射到latent space上再做DM,这样节省计算资源,因此可以训练高清图片。

在去噪器的结构里加入cross-attention layers 实现更丰富的控制生成。

https://github.com/CompVis/latent-diffusion