{"id":20497152,"url":"https://github.com/fork123aniket/denoising-diffusion-probabilistic-model-from-scratch","last_synced_at":"2026-05-17T11:34:01.337Z","repository":{"id":158619664,"uuid":"621697669","full_name":"fork123aniket/Denoising-Diffusion-Probabilistic-Model-from-Scratch","owner":"fork123aniket","description":"Implementation of Denoising Diffusion Probabilistic Model from Scratch for Image Generation Task in PyTorch","archived":false,"fork":false,"pushed_at":"2023-05-01T12:21:44.000Z","size":632,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-16T06:25:21.240Z","etag":null,"topics":["denoising","denoising-algorithm","denoising-diffusion","denoising-images","denoising-network","image-generation","image-generator","pytorch","pytorch-implementation","pytorch-tutorial"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fork123aniket.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-31T07:40:17.000Z","updated_at":"2024-01-09T19:35:02.000Z","dependencies_parsed_at":"2023-07-03T12:05:00.845Z","dependency_job_id":null,"html_url":"https://github.com/fork123aniket/Denoising-Diffusion-Probabilistic-Model-from-Scratch","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fork123aniket%2FDenoising-Diffusion-Probabilistic-Model-from-Scratch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fork123aniket%2FDenoising-Diffusion-Probabilistic-Model-from-Scratch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fork123aniket%2FDenoising-Diffusion-Probabilistic-Model-from-Scratch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fork123aniket%2FDenoising-Diffusion-Probabilistic-Model-from-Scratch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fork123aniket","download_url":"https://codeload.github.com/fork123aniket/Denoising-Diffusion-Probabilistic-Model-from-Scratch/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242087867,"owners_count":20069722,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["denoising","denoising-algorithm","denoising-diffusion","denoising-images","denoising-network","image-generation","image-generator","pytorch","pytorch-implementation","pytorch-tutorial"],"created_at":"2024-11-15T18:10:12.425Z","updated_at":"2026-05-17T11:33:56.315Z","avatar_url":"https://github.com/fork123aniket.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Denoising Diffusion Probabilistic Model from Scratch\n\nThis repository implements a fast, yet simple version of the [***Denoising Diffusion Probabilistic Models***](https://arxiv.org/abs/2006.11239) paper for the `image generation` task. ***Denoising score matching*** technique is used to allow the network for rapid estimation of data distribution’s gradient. Moreover, the ***Langevin sampling*** method is also performed to generate images from their corresponding true data distribution. This implementation provides ***unconditional*** along with ***conditional*** ([***Classifier-free Diffusion Guidance (CFG)***](https://arxiv.org/abs/2207.12598) and [***Exponential Moving Average (EMA)***]( https://proceedings.neurips.cc/paper_files/paper/2019/file/3001ef257407d5a371a96dcd947c7d93-Paper.pdf)) sampling approaches.\n\n## Requirements\n\n-\t`PyTorch`\n-\t`torchvision`\n-\t`numpy`\n-\t`PIL`\n-\t`matplotlib`\n-\t`logging`\n-\t`tqdm`\n\n## Usage\n\n### Data\n\nThe ***unconditional*** model is trained on [***Landscape Pictures***](https://www.kaggle.com/datasets/arnaud58/landscape-pictures) dataset and the ***conditional*** model is trained on [***CIFAR-10***](https://www.kaggle.com/datasets/joaopauloschuler/cifar10-64x64-resized-via-cai-super-resolution) dataset.\n\n### Training and Testing\n\n-\tTo see the implementation of ***conditional*** and ***unconditional*** sampling methods, check `DDPM.py`.\n-\tAll the network architectures for `EMA`, `UNet`, etc. can be found in the `models.py` file.\n-\tTo train ***DDPMs*** for either of the sampling approaches (***conditional*** and ***unconditional***) and generate the images, run `DDPM`.py.\n-\tAll hyperparameters to control the training and testing phases of the model are provided in the given `DDPM.py` file.\n\n## Results\n\nThe images generated by both ***conditional*** and ***unconditional*** models can be seen below:-\n\n| Training Dataset | Sampling Type | Generated Images |\n| ---------------------- |:-------------------:|:------------------------:|\n| Landscape Pictures | unconditional | ![alt text](https://github.com/fork123aniket/Denoising-Diffusion-Probabilistic-Model-from-Scratch/blob/main/Images/Landscape.PNG) |\n| CIFAR-10 | conditional (on `Dog` and `Deer` classes) | ![alt text](https://github.com/fork123aniket/Denoising-Diffusion-Probabilistic-Model-from-Scratch/blob/main/Images/Dog.PNG) ![alt text](https://github.com/fork123aniket/Denoising-Diffusion-Probabilistic-Model-from-Scratch/blob/main/Images/Deer.PNG)|\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffork123aniket%2Fdenoising-diffusion-probabilistic-model-from-scratch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffork123aniket%2Fdenoising-diffusion-probabilistic-model-from-scratch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffork123aniket%2Fdenoising-diffusion-probabilistic-model-from-scratch/lists"}