先放一张在人脸数据集上训练好后去噪的可视化过程

DDPM可视化去噪

各数据集参数配置及效果

训练:

CUDA_VISIBLE_DEVICES=0 python train_solver.py --data_name "Flower102"

在config.yaml中各个数据集使用默认的Training Setting,每个数据集特有的配置见config.yaml下的Train_Data.

生成效果

生成效果如下:

数据集 去噪过程可视化 最终去噪效果 插值
Mnist
Fashion_Mnist
Cifar10
Flower102
StyleGAN2人脸

上述训练数据集和已经训练好的模型放在这里.

  • 去噪过程可视化中,如果在采样step内均匀采样时间戳,会发现前面的去噪过程过于缓慢而后面会突然“有效果”,所以这里对于时间戳采用了一个“先粗后细”的采样trick用于可视化。

  • 上述插值方法由原DDPM 论文中提出,本仓库采用其默认配置: 扩散步数=500,插值系数从0~1均匀采样11次 其中第一行和最后一行分别为两个原始的插值图片,中间11行为插值的结果,并且第二行和倒数第二行插值系数分别为0和1,可以看成是对原始两个插值图片的重构。 实验下来:感觉插值的结果并非是平缓的,而是中间会有一个比较“陡峭”的突变过程.....和DDPM 原文中的Figure.8产生的图片接近,暂时没找到这种突变的合理解释~

完整代码见: qzq2514/Diffusion

参考文献/Code

DDPM
Improved DDPM
What are Diffusion Models
lucidrains/denoising-diffusion-pytorch
zoubohao/DenoisingDiffusionProbabilityModel-ddpm
LianShuaiLong/CV_Applications
yiyixuxu/denoising-diffusion-flax