In this project, the goal was to implement and train a diffusion model using PyTorch to generate synthetic images of cats.
A diffusion model is a type of generative model that learns to create data (e.g., images, audio) by modeling the process of noise being added to and removed from the data. During training, the model learns to reverse the noise process step by step, allowing it to generate realistic outputs from random noise.
The model was trained on a dataset of cat images consisting of 12,500 images. The dataset is publicly available on Kaggle and includes images of cats and dogs. For this project, only cat images were used.
dataset : cat-dog-images-for-classification
| Property | Value |
|---|---|
| Framework | PyTorch |
| Device | RTX 2070 |
| Optimizer | Adam |
| Epochs | 400 |
| Training Time | ~40h |
| image size | 64 |
| batch_size | 5 |
| start lr | 3e-4 |
| loss | mse |
Here are examples of synthetic cat images generated by the trained diffusion model:
Here the diffusion process :
- Improve Image Resolution: Enhance the model to generate images with resolutions higher than 64x64.
- Diversify Dataset: Include additional cat breeds and styles to create more varied outputs.
- Optimize Training Time: Experiment with larger batch sizes and mixed-precision training for faster results.
https://youtu.be/ZBKpAp_6TGI?si=IgHF2YOAdGVgslFy
https://arxiv.org/abs/2006.11239


