Implementing DDPM - Denoising Diffusion Probabilistic Models from scratch using PyTorch.
This implementation follows a U-Net structure with self-attention blocks as well as positional and time encodings.
There are 2 different variants in this project - Conditional and Unconditional. The conditional variant allows us to control the type of image generated based on labels. Hence, this variant of the model requires the labels to be embedded as well along with time. This variant was trained using the CIFAR-10 dataset. The unconditional variant was trained on the Landscape dataset, and as expected we do not constrain the type of image generated using the trained model.
Here are sample outputs after training the unconditonal variant model for 500 epochs.