This may be the simplest implement of DDPM. I trained with CIFAR-10 dataset. The links of pretrain weight, which trained on CIFAR-10 are in the Issue 2.
If you really want to know more about the framwork of DDPM, I have listed some papers for reading by order in the closed Issue 1.
Lil' Log is also a very nice blog for understanding the details of DDPM, the reference is
"https://lilianweng.github.io/posts/2021-07-11-diffusion-models/#:~:text=Diffusion%20models%20are%20inspired%20by,data%20samples%20from%20the%20noise."
HOW TO RUN
-
- You can run Main.py to train the UNet on CIFAR-10 dataset. After training, you can set the parameters in the model config to see the amazing process of DDPM.
-
- You can run MainCondition.py to train UNet on CIFAR-10. This is for DDPM + Classifier free guidence.
Some generated images are showed below:
-
- DDPM without guidence:
-
- DDPM + Classifier free guidence: