{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/at-ddpm-restoring-faces-degraded-by","title":"AT-DDPM: Restoring Faces degraded by Atmospheric Turbulence using Denoising Diffusion Probabilistic Models","arxiv_id":"2208.11284","date":"2022-08-24","proceeding":null,"authors":["Nithin Gopalakrishnan Nair","Kangfu Mei","Vishal M. Patel"],"abstract":"Although many long-range imaging systems are designed to support extended vision applications, a natural obstacle to their operation is degradation due to atmospheric turbulence. Atmospheric turbulence causes significant degradation to image quality by introducing blur and geometric distortion. In recent years, various deep learning-based single image atmospheric turbulence mitigation methods, including CNN-based and GAN inversion-based, have been proposed in the literature which attempt to remove the distortion in the image. However, some of these methods are difficult to train and often fail to reconstruct facial features and produce unrealistic results especially in the case of high turbulence. Denoising Diffusion Probabilistic Models (DDPMs) have recently gained some traction because of their stable training process and their ability to generate high quality images. In this paper, we propose the first DDPM-based solution for the problem of atmospheric turbulence mitigation. We also propose a fast sampling technique for reducing the inference times for conditional DDPMs. Extensive experiments are conducted on synthetic and real-world data to show the significance of our model. To facilitate further research, all codes and pretrained models are publically available at http://github.com/Nithin-GK/AT-DDPM","url_abs":"https://arxiv.org/abs/2208.11284v2","url_pdf":"https://arxiv.org/pdf/2208.11284v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"at-ddpm-restoring-faces-degraded-by","repo_url":"https://github.com/nithin-gk/at-ddpm","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"image-restoration","task_name":"Image Restoration"},{"task_slug":"image-super-resolution","task_name":"Image Super-Resolution"},{"task_slug":"image-to-image-translation","task_name":"Image-to-Image Translation"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2208.11284","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2208.11284"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/nithin-gk/at-ddpm","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_draft_wrong":5,"ran_honours":2,"ran":7,"ran_fixture":1,"unverified":6},"by_repo_kind":{"official":{"samples":21,"ran":15,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"cfd76fd0d89574a4","entry":"approx_standard_normal_cdf","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"guided_diffusion/losses.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/guided_diffusion/losses.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"cfd76fd0d89574a4"}},{"code_sha256_prefix":"6cdc8772f5db6f48","entry":"betas_for_alpha_bar","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"guided_diffusion/gaussian_diffusion.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/guided_diffusion/gaussian_diffusion.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"6cdc8772f5db6f48"}},{"code_sha256_prefix":"9394ff2c25b8a988","entry":"calculate_psnr","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"core/metrics.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/core/metrics.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9394ff2c25b8a988"}},{"code_sha256_prefix":"40c52ad98161c17b","entry":"dict2str","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"core/logger.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/core/logger.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"40c52ad98161c17b"}},{"code_sha256_prefix":"ada7273eee7081c7","entry":"dict_to_nonedict","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"core/logger.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/core/logger.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ada7273eee7081c7"}},{"code_sha256_prefix":"cd33283d615fb3d7","entry":"discretized_gaussian_log_likelihood","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"guided_diffusion/losses.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/guided_diffusion/losses.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"cd33283d615fb3d7"}},{"code_sha256_prefix":"141937afc98f8d1e","entry":"get_named_beta_schedule","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"guided_diffusion/gaussian_diffusion.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/guided_diffusion/gaussian_diffusion.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"141937afc98f8d1e"}},{"code_sha256_prefix":"e41367ad14ff58fd","entry":"get_param_groups_and_shapes","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"guided_diffusion/fp16_util.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/guided_diffusion/fp16_util.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e41367ad14ff58fd"}},{"code_sha256_prefix":"e20dd5102da3b050","entry":"make_master_params","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"guided_diffusion/fp16_util.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/guided_diffusion/fp16_util.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e20dd5102da3b050"}},{"code_sha256_prefix":"bcd8b4acab199405","entry":"make_output_format","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"guided_diffusion/logger.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/guided_diffusion/logger.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"bcd8b4acab199405"}},{"code_sha256_prefix":"cf2798b666b231ca","entry":"normal_kl","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"guided_diffusion/losses.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/guided_diffusion/losses.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"cf2798b666b231ca"}},{"code_sha256_prefix":"ba721aeacc165234","entry":"ssim","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"core/metrics.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/core/metrics.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ba721aeacc165234"}},{"code_sha256_prefix":"34c878feb7966d4c","entry":"tensor2img","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"core/metrics.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/core/metrics.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"34c878feb7966d4c"}},{"code_sha256_prefix":"64fff1e30802b815","entry":"unflatten_master_params","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"guided_diffusion/fp16_util.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/guided_diffusion/fp16_util.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"64fff1e30802b815"}},{"code_sha256_prefix":"129b804760b3115f","entry":"zero_module","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"guided_diffusion/nn.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/guided_diffusion/nn.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"129b804760b3115f"}},{"code_sha256_prefix":"ecd0fc28815b65ae","entry":"avg_pool_nd","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"guided_diffusion/nn.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/guided_diffusion/nn.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ecd0fc28815b65ae"}},{"code_sha256_prefix":"fe4eb545bbb728e0","entry":"conv_nd","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"guided_diffusion/nn.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/guided_diffusion/nn.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"fe4eb545bbb728e0"}},{"code_sha256_prefix":"f3da2d61d9c48642","entry":"load_state_dict","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"guided_diffusion/dist_util.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/guided_diffusion/dist_util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f3da2d61d9c48642"}},{"code_sha256_prefix":"e515a67f7f32e76d","entry":"mpi_weighted_mean","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"guided_diffusion/logger.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/guided_diffusion/logger.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e515a67f7f32e76d"}},{"code_sha256_prefix":"27e812d0b0c57e37","entry":"parse","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"core/logger.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/core/logger.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"27e812d0b0c57e37"}},{"code_sha256_prefix":"0c6607473a4c4c55","entry":"profile","repo":"nithin-gk/at-ddpm","repo_kind":"official","path":"guided_diffusion/logger.py","file_url":"https://github.com/nithin-gk/at-ddpm/blob/HEAD/guided_diffusion/logger.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"0c6607473a4c4c55"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}