{"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/onerestore-a-universal-restoration-framework","title":"OneRestore: A Universal Restoration Framework for Composite Degradation","arxiv_id":"2407.04621","date":"2024-07-05","proceeding":null,"authors":["Yu Guo","Yuan Gao","Yuxu Lu","Huilin Zhu","Ryan Wen Liu","Shengfeng He"],"abstract":"In real-world scenarios, image impairments often manifest as composite degradations, presenting a complex interplay of elements such as low light, haze, rain, and snow. Despite this reality, existing restoration methods typically target isolated degradation types, thereby falling short in environments where multiple degrading factors coexist. To bridge this gap, our study proposes a versatile imaging model that consolidates four physical corruption paradigms to accurately represent complex, composite degradation scenarios. In this context, we propose OneRestore, a novel transformer-based framework designed for adaptive, controllable scene restoration. The proposed framework leverages a unique cross-attention mechanism, merging degraded scene descriptors with image features, allowing for nuanced restoration. Our model allows versatile input scene descriptors, ranging from manual text embeddings to automatic extractions based on visual attributes. Our methodology is further enhanced through a composite degradation restoration loss, using extra degraded images as negative samples to fortify model constraints. Comparative results on synthetic and real-world datasets demonstrate OneRestore as a superior solution, significantly advancing the state-of-the-art in addressing complex, composite degradations.","url_abs":"https://arxiv.org/abs/2407.04621v4","url_pdf":"https://arxiv.org/pdf/2407.04621v4.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":"onerestore-a-universal-restoration-framework","repo_url":"https://github.com/gy65896/onerestore","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"image-dehazing","task_name":"Image Dehazing"},{"task_slug":"image-restoration","task_name":"Image Restoration"},{"task_slug":"low-light-image-enhancement","task_name":"Low-Light Image Enhancement"},{"task_slug":"rain-removal","task_name":"Rain Removal"},{"task_slug":"snow-removal","task_name":"Snow Removal"}],"methods":[],"datasets_introduced":[{"slug":"cdd-11","name":"CDD-11","full_name":"Composite Degradation Dataset 11"}],"methods_introduced":[],"results":[{"leaderboard":"/sota/image-dehazing-on-sots-outdoor","task":"Image Dehazing","dataset":"SOTS Outdoor","model":"OneRestore","rank_in_archive_order":18,"of":31,"metrics":{"PSNR":"35.58","SSIM":"0.9814"},"uses_additional_data":false},{"leaderboard":"/sota/image-restoration-on-cdd-11","task":"Image Restoration","dataset":"CDD-11","model":"OneRestore","rank_in_archive_order":1,"of":14,"metrics":{"Average PSNR (dB)":"28.72","SSIM":"0.8828"},"uses_additional_data":false},{"leaderboard":"/sota/low-light-image-enhancement-on-lol","task":"Low-Light Image Enhancement","dataset":"LOL","model":"OneRestore","rank_in_archive_order":24,"of":40,"metrics":{"Average PSNR":"24.25","SSIM":"0.8564"},"uses_additional_data":false},{"leaderboard":"/sota/rain-removal-on-did-mdn","task":"Rain Removal","dataset":"DID-MDN","model":"OneRestore","rank_in_archive_order":1,"of":2,"metrics":{"PSNR":"32.89"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2407.04621","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2407.04621"}},"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/gy65896/onerestore","reach":null}],"summary":{"ran":5,"ran_fixture":2,"unverified":6},"by_repo_kind":{"official":{"samples":11,"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":13,"samples":[{"code_sha256_prefix":"724906a60f007865","entry":"BiasFree_LayerNorm","repo":"gy65896/onerestore","repo_kind":"official","path":"model/OneRestore.py","file_url":"https://github.com/gy65896/onerestore/blob/HEAD/model/OneRestore.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"724906a60f007865"}},{"code_sha256_prefix":"d3ccad8b8086e2e1","entry":"Cross_Attention","repo":"gy65896/onerestore","repo_kind":"official","path":"model/OneRestore.py","file_url":"https://github.com/gy65896/onerestore/blob/HEAD/model/OneRestore.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d3ccad8b8086e2e1"}},{"code_sha256_prefix":"e85ae4291ba1b8bc","entry":"LayerNorm","repo":"gy65896/onerestore","repo_kind":"official","path":"model/OneRestore.py","file_url":"https://github.com/gy65896/onerestore/blob/HEAD/model/OneRestore.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e85ae4291ba1b8bc"}},{"code_sha256_prefix":"ed78f14e4bfc3b01","entry":"Self_Attention","repo":"gy65896/onerestore","repo_kind":"official","path":"model/OneRestore.py","file_url":"https://github.com/gy65896/onerestore/blob/HEAD/model/OneRestore.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ed78f14e4bfc3b01"}},{"code_sha256_prefix":"9e049fb20380c085","entry":"WithBias_LayerNorm","repo":"gy65896/onerestore","repo_kind":"official","path":"model/OneRestore.py","file_url":"https://github.com/gy65896/onerestore/blob/HEAD/model/OneRestore.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":"9e049fb20380c085"}},{"code_sha256_prefix":"6485826a37203bb8","entry":"to_3d","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"6485826a37203bb8"}},{"code_sha256_prefix":"31052f33cc443e68","entry":"to_4d","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"31052f33cc443e68"}},{"code_sha256_prefix":"b7c1cde4ed5cf1e1","entry":"OneRestore","repo":"gy65896/onerestore","repo_kind":"official","path":"model/OneRestore.py","file_url":"https://github.com/gy65896/onerestore/blob/HEAD/model/OneRestore.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":"b7c1cde4ed5cf1e1"}},{"code_sha256_prefix":"2fc5524979466ad4","entry":"ResidualBlock","repo":"gy65896/onerestore","repo_kind":"official","path":"model/OneRestore.py","file_url":"https://github.com/gy65896/onerestore/blob/HEAD/model/OneRestore.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":"2fc5524979466ad4"}},{"code_sha256_prefix":"392dd9ba5b5f2e7a","entry":"TransformerBlock","repo":"gy65896/onerestore","repo_kind":"official","path":"model/OneRestore.py","file_url":"https://github.com/gy65896/onerestore/blob/HEAD/model/OneRestore.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":"392dd9ba5b5f2e7a"}},{"code_sha256_prefix":"f6f0f786ee4961ce","entry":"backbone","repo":"gy65896/onerestore","repo_kind":"official","path":"model/OneRestore.py","file_url":"https://github.com/gy65896/onerestore/blob/HEAD/model/OneRestore.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":"f6f0f786ee4961ce"}},{"code_sha256_prefix":"4b68208faa69b606","entry":"decoder","repo":"gy65896/onerestore","repo_kind":"official","path":"model/OneRestore.py","file_url":"https://github.com/gy65896/onerestore/blob/HEAD/model/OneRestore.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":"4b68208faa69b606"}},{"code_sha256_prefix":"a153e6fda2be705e","entry":"encoder","repo":"gy65896/onerestore","repo_kind":"official","path":"model/OneRestore.py","file_url":"https://github.com/gy65896/onerestore/blob/HEAD/model/OneRestore.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":"a153e6fda2be705e"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}