{"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/deep-equilibrium-diffusion-restoration-with","title":"Deep Equilibrium Diffusion Restoration with Parallel Sampling","arxiv_id":"2311.11600","date":"2023-11-20","proceeding":"CVPR 2024 1","authors":["JieZhang Cao","Yue Shi","Kai Zhang","Yulun Zhang","Radu Timofte","Luc van Gool"],"abstract":"Diffusion model-based image restoration (IR) aims to use diffusion models to recover high-quality (HQ) images from degraded images, achieving promising performance. Due to the inherent property of diffusion models, most existing methods need long serial sampling chains to restore HQ images step-by-step, resulting in expensive sampling time and high computation costs. Moreover, such long sampling chains hinder understanding the relationship between inputs and restoration results since it is hard to compute the gradients in the whole chains. In this work, we aim to rethink the diffusion model-based IR models through a different perspective, i.e., a deep equilibrium (DEQ) fixed point system, called DeqIR. Specifically, we derive an analytical solution by modeling the entire sampling chain in these IR models as a joint multivariate fixed point system. Based on the analytical solution, we can conduct parallel sampling and restore HQ images without training. Furthermore, we compute fast gradients via DEQ inversion and found that initialization optimization can boost image quality and control the generation direction. Extensive experiments on benchmarks demonstrate the effectiveness of our method on typical IR tasks and real-world settings.","url_abs":"https://arxiv.org/abs/2311.11600v2","url_pdf":"https://arxiv.org/pdf/2311.11600v2.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":"deep-equilibrium-diffusion-restoration-with","repo_url":"https://github.com/caojiezhang/deqir","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"image-restoration","task_name":"Image Restoration"}],"methods":[{"method_slug":"deq","method_name":"DEQ"},{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2311.11600","atlas_url":"https://app.syntology.ai/?focus=2311.11600","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2311.11600"}},"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/caojiezhang/deqir","reach":{"status":"ok"}}],"summary":{"ran_fixture":6,"ran_draft_wrong":6,"ran":6,"ran_honours":2,"unverified":2},"by_repo_kind":{"official":{"samples":22,"ran":20,"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":22,"samples":[{"code_sha256_prefix":"144d10b49baeb8a6","entry":"window_partition","repo":"caojiezhang/deqir","repo_kind":"official","path":"models/network_swinir.py","file_url":"https://github.com/caojiezhang/deqir/blob/HEAD/models/network_swinir.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":2,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"144d10b49baeb8a6"}},{"code_sha256_prefix":"c3a6b977022957cb","entry":"Normalize","repo":"caojiezhang/deqir","repo_kind":"official","path":"models/diffusion.py","file_url":"https://github.com/caojiezhang/deqir/blob/HEAD/models/diffusion.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":"c3a6b977022957cb"}},{"code_sha256_prefix":"cfd76fd0d89574a4","entry":"approx_standard_normal_cdf","repo":"caojiezhang/deqir","repo_kind":"official","path":"guided_diffusion/losses.py","file_url":"https://github.com/caojiezhang/deqir/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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"cfd76fd0d89574a4"}},{"code_sha256_prefix":"7bf07d5f59aae36d","entry":"default_loader","repo":"caojiezhang/deqir","repo_kind":"official","path":"datasets/imagenet_subset.py","file_url":"https://github.com/caojiezhang/deqir/blob/HEAD/datasets/imagenet_subset.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":"7bf07d5f59aae36d"}},{"code_sha256_prefix":"cd33283d615fb3d7","entry":"discretized_gaussian_log_likelihood","repo":"caojiezhang/deqir","repo_kind":"official","path":"guided_diffusion/losses.py","file_url":"https://github.com/caojiezhang/deqir/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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"cd33283d615fb3d7"}},{"code_sha256_prefix":"52d96aa31ed74a56","entry":"drop_path","repo":"caojiezhang/deqir","repo_kind":"official","path":"models/hat_arch.py","file_url":"https://github.com/caojiezhang/deqir/blob/HEAD/models/hat_arch.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"52d96aa31ed74a56"}},{"code_sha256_prefix":"e180ab043e88b4f0","entry":"find_nearest","repo":"caojiezhang/deqir","repo_kind":"official","path":"utils/utils_model.py","file_url":"https://github.com/caojiezhang/deqir/blob/HEAD/utils/utils_model.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":"e180ab043e88b4f0"}},{"code_sha256_prefix":"cb49209c125de1b4","entry":"get_timestep_embedding","repo":"caojiezhang/deqir","repo_kind":"official","path":"models/diffusion.py","file_url":"https://github.com/caojiezhang/deqir/blob/HEAD/models/diffusion.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"cb49209c125de1b4"}},{"code_sha256_prefix":"db2365682e375484","entry":"info_model","repo":"caojiezhang/deqir","repo_kind":"official","path":"utils/utils_model.py","file_url":"https://github.com/caojiezhang/deqir/blob/HEAD/utils/utils_model.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":"db2365682e375484"}},{"code_sha256_prefix":"a794526b2a783dce","entry":"model_fn","repo":"caojiezhang/deqir","repo_kind":"official","path":"utils/utils_model.py","file_url":"https://github.com/caojiezhang/deqir/blob/HEAD/utils/utils_model.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":"a794526b2a783dce"}},{"code_sha256_prefix":"c87abb20ce2bbe3c","entry":"modified_noise_estimation_loss","repo":"caojiezhang/deqir","repo_kind":"official","path":"functions/losses.py","file_url":"https://github.com/caojiezhang/deqir/blob/HEAD/functions/losses.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":"c87abb20ce2bbe3c"}},{"code_sha256_prefix":"36a45cceb1209d2f","entry":"noise_estimation_loss","repo":"caojiezhang/deqir","repo_kind":"official","path":"functions/losses.py","file_url":"https://github.com/caojiezhang/deqir/blob/HEAD/functions/losses.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":"36a45cceb1209d2f"}},{"code_sha256_prefix":"3137073275f8c21a","entry":"nonlinearity","repo":"caojiezhang/deqir","repo_kind":"official","path":"models/diffusion.py","file_url":"https://github.com/caojiezhang/deqir/blob/HEAD/models/diffusion.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3137073275f8c21a"}},{"code_sha256_prefix":"cf2798b666b231ca","entry":"normal_kl","repo":"caojiezhang/deqir","repo_kind":"official","path":"guided_diffusion/losses.py","file_url":"https://github.com/caojiezhang/deqir/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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"cf2798b666b231ca"}},{"code_sha256_prefix":"f321f54723433661","entry":"pil_loader","repo":"caojiezhang/deqir","repo_kind":"official","path":"datasets/imagenet_subset.py","file_url":"https://github.com/caojiezhang/deqir/blob/HEAD/datasets/imagenet_subset.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f321f54723433661"}},{"code_sha256_prefix":"82a15cc1e46f7e4d","entry":"to_3d","repo":"caojiezhang/deqir","repo_kind":"official","path":"models/restormer_arch.py","file_url":"https://github.com/caojiezhang/deqir/blob/HEAD/models/restormer_arch.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"82a15cc1e46f7e4d"}},{"code_sha256_prefix":"b20f2a5df739a59e","entry":"to_4d","repo":"caojiezhang/deqir","repo_kind":"official","path":"models/restormer_arch.py","file_url":"https://github.com/caojiezhang/deqir/blob/HEAD/models/restormer_arch.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b20f2a5df739a59e"}},{"code_sha256_prefix":"60363d0620f5778d","entry":"window_partition","repo":"caojiezhang/deqir","repo_kind":"official","path":"models/hat_arch.py","file_url":"https://github.com/caojiezhang/deqir/blob/HEAD/models/hat_arch.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"60363d0620f5778d"}},{"code_sha256_prefix":"61bf152e6a42a184","entry":"window_reverse","repo":"caojiezhang/deqir","repo_kind":"official","path":"models/network_swinir.py","file_url":"https://github.com/caojiezhang/deqir/blob/HEAD/models/network_swinir.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"61bf152e6a42a184"}},{"code_sha256_prefix":"4f003e9ad9b7a7cb","entry":"window_reverse","repo":"caojiezhang/deqir","repo_kind":"official","path":"models/hat_arch.py","file_url":"https://github.com/caojiezhang/deqir/blob/HEAD/models/hat_arch.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4f003e9ad9b7a7cb"}},{"code_sha256_prefix":"404fb2b2daa1ae78","entry":"accimage_loader","repo":"caojiezhang/deqir","repo_kind":"official","path":"datasets/imagenet_subset.py","file_url":"https://github.com/caojiezhang/deqir/blob/HEAD/datasets/imagenet_subset.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":"404fb2b2daa1ae78"}},{"code_sha256_prefix":"91412db0885e5c46","entry":"modified_noise_estimation_loss_v3","repo":"caojiezhang/deqir","repo_kind":"official","path":"functions/losses.py","file_url":"https://github.com/caojiezhang/deqir/blob/HEAD/functions/losses.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":"91412db0885e5c46"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}