{"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/plug-and-play-image-restoration-with","title":"Plug-and-Play image restoration with Stochastic deNOising REgularization","arxiv_id":"2402.01779","date":"2024-02-01","proceeding":null,"authors":["Marien Renaud","Jean Prost","Arthur Leclaire","Nicolas Papadakis"],"abstract":"Plug-and-Play (PnP) algorithms are a class of iterative algorithms that address image inverse problems by combining a physical model and a deep neural network for regularization. Even if they produce impressive image restoration results, these algorithms rely on a non-standard use of a denoiser on images that are less and less noisy along the iterations, which contrasts with recent algorithms based on Diffusion Models (DM), where the denoiser is applied only on re-noised images. We propose a new PnP framework, called Stochastic deNOising REgularization (SNORE), which applies the denoiser only on images with noise of the adequate level. It is based on an explicit stochastic regularization, which leads to a stochastic gradient descent algorithm to solve ill-posed inverse problems. A convergence analysis of this algorithm and its annealing extension is provided. Experimentally, we prove that SNORE is competitive with respect to state-of-the-art methods on deblurring and inpainting tasks, both quantitatively and qualitatively.","url_abs":"https://arxiv.org/abs/2402.01779v3","url_pdf":"https://arxiv.org/pdf/2402.01779v3.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":"plug-and-play-image-restoration-with","repo_url":"https://github.com/marien-renaud/snore","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"deblurring","task_name":"Deblurring"},{"task_slug":"denoising","task_name":"Denoising"},{"task_slug":"image-restoration","task_name":"Image Restoration"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"},{"method_slug":"pixel-prediction","method_name":"Inpainting"},{"method_slug":"pnp","method_name":"PnP"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2402.01779","atlas_url":"https://app.syntology.ai/?focus=2402.01779","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2402.01779"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/marien-renaud/snore","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":4,"ran_violates":1,"unverified":1},"by_repo_kind":{"official":{"samples":6,"ran":5,"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":"1b2b467bc627e097","entry":"conv","repo":"marien-renaud/snore","repo_kind":"official","path":"GS_denoising/models/basicblock.py","file_url":"https://github.com/marien-renaud/snore/blob/HEAD/GS_denoising/models/basicblock.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":"1b2b467bc627e097"}},{"code_sha256_prefix":"1ddc874088c80869","entry":"normalize_min_max","repo":"marien-renaud/snore","repo_kind":"official","path":"GS_denoising/GS_utils.py","file_url":"https://github.com/marien-renaud/snore/blob/HEAD/GS_denoising/GS_utils.py","link_basis":"plan_row","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":"1ddc874088c80869"}},{"code_sha256_prefix":"5d9b9713448d2a62","entry":"pixel_unshuffle","repo":"marien-renaud/snore","repo_kind":"official","path":"GS_denoising/models/basicblock.py","file_url":"https://github.com/marien-renaud/snore/blob/HEAD/GS_denoising/models/basicblock.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5d9b9713448d2a62"}},{"code_sha256_prefix":"86e7e23304e2fac8","entry":"psnr","repo":"marien-renaud/snore","repo_kind":"official","path":"GS_denoising/GS_utils.py","file_url":"https://github.com/marien-renaud/snore/blob/HEAD/GS_denoising/GS_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"86e7e23304e2fac8"}},{"code_sha256_prefix":"b86625cacaad2f34","entry":"upsample_pixelshuffle","repo":"marien-renaud/snore","repo_kind":"official","path":"GS_denoising/models/basicblock.py","file_url":"https://github.com/marien-renaud/snore/blob/HEAD/GS_denoising/models/basicblock.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":"b86625cacaad2f34"}},{"code_sha256_prefix":"29340349e959066b","entry":"injectspeckle_amplitude_log","repo":"marien-renaud/snore","repo_kind":"official","path":"PnP_restoration/despeckle.py","file_url":"https://github.com/marien-renaud/snore/blob/HEAD/PnP_restoration/despeckle.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":"29340349e959066b"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}