{"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/provably-robust-score-based-diffusion","title":"Provably Robust Score-Based Diffusion Posterior Sampling for Plug-and-Play Image Reconstruction","arxiv_id":"2403.17042","date":"2024-03-25","proceeding":null,"authors":["Xingyu Xu","Yuejie Chi"],"abstract":"In a great number of tasks in science and engineering, the goal is to infer an unknown image from a small number of measurements collected from a known forward model describing certain sensing or imaging modality. Due to resource constraints, this task is often extremely ill-posed, which necessitates the adoption of expressive prior information to regularize the solution space. Score-based diffusion models, due to its impressive empirical success, have emerged as an appealing candidate of an expressive prior in image reconstruction. In order to accommodate diverse tasks at once, it is of great interest to develop efficient, consistent and robust algorithms that incorporate unconditional score functions of an image prior distribution in conjunction with flexible choices of forward models. This work develops an algorithmic framework for employing score-based diffusion models as an expressive data prior in general nonlinear inverse problems. Motivated by the plug-and-play framework in the imaging community, we introduce a diffusion plug-and-play method (DPnP) that alternatively calls two samplers, a proximal consistency sampler based solely on the likelihood function of the forward model, and a denoising diffusion sampler based solely on the score functions of the image prior. The key insight is that denoising under white Gaussian noise can be solved rigorously via both stochastic (i.e., DDPM-type) and deterministic (i.e., DDIM-type) samplers using the unconditional score functions. We establish both asymptotic and non-asymptotic performance guarantees of DPnP, and provide numerical experiments to illustrate its promise in solving both linear and nonlinear image reconstruction tasks. To the best of our knowledge, DPnP is the first provably-robust posterior sampling method for nonlinear inverse problems using unconditional diffusion priors.","url_abs":"https://arxiv.org/abs/2403.17042v2","url_pdf":"https://arxiv.org/pdf/2403.17042v2.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":"provably-robust-score-based-diffusion","repo_url":"https://github.com/x1xu/diffusion-plug-and-play","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"denoising","task_name":"Denoising"},{"task_slug":"image-reconstruction","task_name":"Image Reconstruction"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2403.17042","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2403.17042"}},"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/x1xu/diffusion-plug-and-play","reach":{"status":"ok"}}],"summary":{"ran_draft_wrong":6,"ran":11,"unverified":11},"by_repo_kind":{"official":{"samples":28,"ran":17,"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":28,"samples":[{"code_sha256_prefix":"00c67a2ab9d4b104","entry":"load_yaml","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"sample_condition.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/sample_condition.py","link_basis":"plan_row","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":"372b275922a9f531","entry":"box","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"util/resizer.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/util/resizer.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"372b275922a9f531"}},{"code_sha256_prefix":"ee77cd8fde21ffd1","entry":"cubic","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"util/resizer.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/util/resizer.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ee77cd8fde21ffd1"}},{"code_sha256_prefix":"19cc8241bdc7b50a","entry":"fft2","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"util/img_utils.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/util/img_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"19cc8241bdc7b50a"}},{"code_sha256_prefix":"dc2dcfd069e89041","entry":"fft2c_new","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"util/fastmri_utils.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/util/fastmri_utils.py","link_basis":"harvester_set","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":"dc2dcfd069e89041"}},{"code_sha256_prefix":"e41367ad14ff58fd","entry":"get_param_groups_and_shapes","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"guided_diffusion/fp16_util.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e41367ad14ff58fd"}},{"code_sha256_prefix":"3aa8bac09ce6982f","entry":"ifft2","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"util/img_utils.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/util/img_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3aa8bac09ce6982f"}},{"code_sha256_prefix":"f106699fc610a684","entry":"lanczos2","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"util/resizer.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/util/resizer.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f106699fc610a684"}},{"code_sha256_prefix":"e20dd5102da3b050","entry":"make_master_params","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"guided_diffusion/fp16_util.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e20dd5102da3b050"}},{"code_sha256_prefix":"8027fc71dcbcfc45","entry":"register_conditioning_method","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"guided_diffusion/condition_methods.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/guided_diffusion/condition_methods.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8027fc71dcbcfc45"}},{"code_sha256_prefix":"2423fa5313aa3525","entry":"register_mean_processor","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"guided_diffusion/posterior_mean_variance.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/guided_diffusion/posterior_mean_variance.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2423fa5313aa3525"}},{"code_sha256_prefix":"905f4b0d3baca742","entry":"register_noise","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"guided_diffusion/measurements.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/guided_diffusion/measurements.py","link_basis":"harvester_set","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":"905f4b0d3baca742"}},{"code_sha256_prefix":"7f47ba486efd2c7e","entry":"register_operator","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"guided_diffusion/measurements.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/guided_diffusion/measurements.py","link_basis":"harvester_set","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":"7f47ba486efd2c7e"}},{"code_sha256_prefix":"d9bb4d03137bc7e9","entry":"register_sampler","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"guided_diffusion/gaussian_diffusion.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/guided_diffusion/gaussian_diffusion.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d9bb4d03137bc7e9"}},{"code_sha256_prefix":"e214ee19e7a9d92b","entry":"register_var_processor","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"guided_diffusion/posterior_mean_variance.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/guided_diffusion/posterior_mean_variance.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e214ee19e7a9d92b"}},{"code_sha256_prefix":"64fff1e30802b815","entry":"unflatten_master_params","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"guided_diffusion/fp16_util.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"64fff1e30802b815"}},{"code_sha256_prefix":"129b804760b3115f","entry":"zero_module","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"guided_diffusion/nn.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"129b804760b3115f"}},{"code_sha256_prefix":"ecd0fc28815b65ae","entry":"avg_pool_nd","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"guided_diffusion/nn.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ecd0fc28815b65ae"}},{"code_sha256_prefix":"944d16b22c6e6e77","entry":"cal_gradient_penalty","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"guided_diffusion/unet.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/guided_diffusion/unet.py","link_basis":"harvester_set","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":"944d16b22c6e6e77"}},{"code_sha256_prefix":"fe4eb545bbb728e0","entry":"conv_nd","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"guided_diffusion/nn.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fe4eb545bbb728e0"}},{"code_sha256_prefix":"e7d9c92d6da5e2c9","entry":"create_model","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"guided_diffusion/unet.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/guided_diffusion/unet.py","link_basis":"harvester_set","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":"e7d9c92d6da5e2c9"}},{"code_sha256_prefix":"9888b4f7081b54ed","entry":"fft2_m","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"util/img_utils.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/util/img_utils.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":"9888b4f7081b54ed"}},{"code_sha256_prefix":"d5d761740edb12db","entry":"fft2c_old","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"util/fastmri_utils.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/util/fastmri_utils.py","link_basis":"harvester_set","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":"d5d761740edb12db"}},{"code_sha256_prefix":"ceb7328ab8bdbfe2","entry":"get_conditioning_method","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"guided_diffusion/condition_methods.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/guided_diffusion/condition_methods.py","link_basis":"harvester_set","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":"ceb7328ab8bdbfe2"}},{"code_sha256_prefix":"e92451e6fb900818","entry":"get_mean_processor","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"guided_diffusion/posterior_mean_variance.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/guided_diffusion/posterior_mean_variance.py","link_basis":"harvester_set","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":"e92451e6fb900818"}},{"code_sha256_prefix":"bbb1be64bf961d18","entry":"get_operator","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"guided_diffusion/measurements.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/guided_diffusion/measurements.py","link_basis":"harvester_set","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":"bbb1be64bf961d18"}},{"code_sha256_prefix":"b910fefa7866252e","entry":"get_sampler","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"guided_diffusion/gaussian_diffusion.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/guided_diffusion/gaussian_diffusion.py","link_basis":"harvester_set","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":"b910fefa7866252e"}},{"code_sha256_prefix":"d63efa5d2fd536e2","entry":"ifft2c_old","repo":"x1xu/diffusion-plug-and-play","repo_kind":"official","path":"util/fastmri_utils.py","file_url":"https://github.com/x1xu/diffusion-plug-and-play/blob/HEAD/util/fastmri_utils.py","link_basis":"harvester_set","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":"d63efa5d2fd536e2"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}