{"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/diffusion-posterior-sampling-for-general","title":"Diffusion Posterior Sampling for General Noisy Inverse Problems","arxiv_id":"2209.14687","date":"2022-09-29","proceeding":null,"authors":["Hyungjin Chung","Jeongsol Kim","Michael T. McCann","Marc L. Klasky","Jong Chul Ye"],"abstract":"Diffusion models have been recently studied as powerful generative inverse problem solvers, owing to their high quality reconstructions and the ease of combining existing iterative solvers. However, most works focus on solving simple linear inverse problems in noiseless settings, which significantly under-represents the complexity of real-world problems. In this work, we extend diffusion solvers to efficiently handle general noisy (non)linear inverse problems via approximation of the posterior sampling. Interestingly, the resulting posterior sampling scheme is a blended version of diffusion sampling with the manifold constrained gradient without a strict measurement consistency projection step, yielding a more desirable generative path in noisy settings compared to the previous studies. Our method demonstrates that diffusion models can incorporate various measurement noise statistics such as Gaussian and Poisson, and also efficiently handle noisy nonlinear inverse problems such as Fourier phase retrieval and non-uniform deblurring. Code available at https://github.com/DPS2022/diffusion-posterior-sampling","url_abs":"https://arxiv.org/abs/2209.14687v4","url_pdf":"https://arxiv.org/pdf/2209.14687v4.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":"diffusion-posterior-sampling-for-general","repo_url":"https://github.com/dps2022/diffusion-posterior-sampling","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":null},{"paper_slug":"diffusion-posterior-sampling-for-general","repo_url":"https://github.com/alexdenker/SteerableConditionalDiffusion","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"diffusion-posterior-sampling-for-general","repo_url":"https://github.com/francois-rozet/mmps-benchmark","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"diffusion-posterior-sampling-for-general","repo_url":"https://github.com/xypeng9903/k-diffusion-inverse-problems","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"diffusion-posterior-sampling-for-general","repo_url":"https://github.com/probabilists/azula","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"deblurring","task_name":"Deblurring"},{"task_slug":"retrieval","task_name":"Retrieval"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2209.14687","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2209.14687"}},"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":"deterministic:regex_extraction","url":"https://github.com/DPS2022/diffusion-posterior-sampling","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/alexdenker/SteerableConditionalDiffusion","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/francois-rozet/mmps-benchmark","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/probabilists/azula","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/xypeng9903/k-diffusion-inverse-problems","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/dps2022/diffusion-posterior-sampling","reach":null}],"summary":{"ran_draft_wrong":1,"ran":4,"ran_violates":1,"unverified":14},"by_repo_kind":{"official":{"samples":2,"ran":2,"repositories":1},"listed":{"samples":18,"ran":4,"repositories":4}},"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":9,"samples":[{"code_sha256_prefix":"00c67a2ab9d4b104","entry":"load_yaml","repo":"DPS2022/diffusion-posterior-sampling","repo_kind":"official","path":"sample_condition.py","file_url":"https://github.com/DPS2022/diffusion-posterior-sampling/blob/HEAD/sample_condition.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":2,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"00c67a2ab9d4b104"}},{"code_sha256_prefix":"4fa5dcb295f5cb74","entry":"ClassifierGuidanceModel","repo":"alexdenker/SteerableConditionalDiffusion","repo_kind":"listed","path":"algos/dps.py","file_url":"https://github.com/alexdenker/SteerableConditionalDiffusion/blob/HEAD/algos/dps.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4fa5dcb295f5cb74"}},{"code_sha256_prefix":"a9220fd383044f44","entry":"Diffusion","repo":"alexdenker/SteerableConditionalDiffusion","repo_kind":"listed","path":"algos/dps.py","file_url":"https://github.com/alexdenker/SteerableConditionalDiffusion/blob/HEAD/algos/dps.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a9220fd383044f44"}},{"code_sha256_prefix":"d0db614fb136ab5d","entry":"PosteriorSampling","repo":"francois-rozet/mmps-benchmark","repo_kind":"listed","path":"guided_diffusion/condition_methods.py","file_url":"https://github.com/francois-rozet/mmps-benchmark/blob/HEAD/guided_diffusion/condition_methods.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d0db614fb136ab5d"}},{"code_sha256_prefix":"b9ffdab3f5e8e027","entry":"PosteriorSampling","repo":"dps2022/diffusion-posterior-sampling","repo_kind":"official","path":"guided_diffusion/condition_methods.py","file_url":"https://github.com/dps2022/diffusion-posterior-sampling/blob/HEAD/guided_diffusion/condition_methods.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b9ffdab3f5e8e027"}},{"code_sha256_prefix":"152398a541d26c5a","entry":"sigmoid","repo":"alexdenker/SteerableConditionalDiffusion","repo_kind":"listed","path":"algos/dps.py","file_url":"https://github.com/alexdenker/SteerableConditionalDiffusion/blob/HEAD/algos/dps.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"152398a541d26c5a"}},{"code_sha256_prefix":"5160c8a3bf4b65a0","entry":"AbstractLinearFunction","repo":"xypeng9903/k-diffusion-inverse-problems","repo_kind":"listed","path":"condition/condition.py","file_url":"https://github.com/xypeng9903/k-diffusion-inverse-problems/blob/HEAD/condition/condition.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5160c8a3bf4b65a0"}},{"code_sha256_prefix":"4f88e1d19f72bee6","entry":"ConditionDenoiser","repo":"xypeng9903/k-diffusion-inverse-problems","repo_kind":"listed","path":"condition/condition.py","file_url":"https://github.com/xypeng9903/k-diffusion-inverse-problems/blob/HEAD/condition/condition.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4f88e1d19f72bee6"}},{"code_sha256_prefix":"af618e9e9f4a8355","entry":"DDIM","repo":"alexdenker/SteerableConditionalDiffusion","repo_kind":"listed","path":"algos/dps.py","file_url":"https://github.com/alexdenker/SteerableConditionalDiffusion/blob/HEAD/algos/dps.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"af618e9e9f4a8355"}},{"code_sha256_prefix":"d39bd69880b8f2a5","entry":"DDPMSampler","repo":"probabilists/azula","repo_kind":"listed","path":"azula/guidance/dps.py","file_url":"https://github.com/probabilists/azula/blob/HEAD/azula/guidance/dps.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d39bd69880b8f2a5"}},{"code_sha256_prefix":"6ef00667e85c2408","entry":"DPS","repo":"alexdenker/SteerableConditionalDiffusion","repo_kind":"listed","path":"algos/dps.py","file_url":"https://github.com/alexdenker/SteerableConditionalDiffusion/blob/HEAD/algos/dps.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6ef00667e85c2408"}},{"code_sha256_prefix":"fffb9d4c78ad024a","entry":"DPSSampler","repo":"probabilists/azula","repo_kind":"listed","path":"azula/guidance/dps.py","file_url":"https://github.com/probabilists/azula/blob/HEAD/azula/guidance/dps.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fffb9d4c78ad024a"}},{"code_sha256_prefix":"5a4816ad6f39f305","entry":"Denoiser","repo":"probabilists/azula","repo_kind":"listed","path":"azula/guidance/dps.py","file_url":"https://github.com/probabilists/azula/blob/HEAD/azula/guidance/dps.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5a4816ad6f39f305"}},{"code_sha256_prefix":"c93a6d8b8374e79a","entry":"LazyLikelihoodCovariance","repo":"xypeng9903/k-diffusion-inverse-problems","repo_kind":"listed","path":"condition/condition.py","file_url":"https://github.com/xypeng9903/k-diffusion-inverse-problems/blob/HEAD/condition/condition.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c93a6d8b8374e79a"}},{"code_sha256_prefix":"f3df731e53100d01","entry":"LazyOTCovariance","repo":"xypeng9903/k-diffusion-inverse-problems","repo_kind":"listed","path":"condition/condition.py","file_url":"https://github.com/xypeng9903/k-diffusion-inverse-problems/blob/HEAD/condition/condition.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f3df731e53100d01"}},{"code_sha256_prefix":"e53b58423f816913","entry":"LinearFunction","repo":"xypeng9903/k-diffusion-inverse-problems","repo_kind":"listed","path":"condition/condition.py","file_url":"https://github.com/xypeng9903/k-diffusion-inverse-problems/blob/HEAD/condition/condition.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e53b58423f816913"}},{"code_sha256_prefix":"346b2d08b59dea9f","entry":"OrthoTransform","repo":"xypeng9903/k-diffusion-inverse-problems","repo_kind":"listed","path":"condition/condition.py","file_url":"https://github.com/xypeng9903/k-diffusion-inverse-problems/blob/HEAD/condition/condition.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"346b2d08b59dea9f"}},{"code_sha256_prefix":"34d5b5a59cb51a07","entry":"Posterior","repo":"probabilists/azula","repo_kind":"listed","path":"azula/guidance/dps.py","file_url":"https://github.com/probabilists/azula/blob/HEAD/azula/guidance/dps.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"34d5b5a59cb51a07"}},{"code_sha256_prefix":"63d1de06f843e96d","entry":"Sampler","repo":"probabilists/azula","repo_kind":"listed","path":"azula/guidance/dps.py","file_url":"https://github.com/probabilists/azula/blob/HEAD/azula/guidance/dps.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"63d1de06f843e96d"}},{"code_sha256_prefix":"b6a8741f585dd914","entry":"Schedule","repo":"probabilists/azula","repo_kind":"listed","path":"azula/guidance/dps.py","file_url":"https://github.com/probabilists/azula/blob/HEAD/azula/guidance/dps.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b6a8741f585dd914"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}