{"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/adair-adaptive-all-in-one-image-restoration","title":"AdaIR: Adaptive All-in-One Image Restoration via Frequency Mining and Modulation","arxiv_id":"2403.14614","date":"2024-03-21","proceeding":null,"authors":["Yuning Cui","Syed Waqas Zamir","Salman Khan","Alois Knoll","Mubarak Shah","Fahad Shahbaz Khan"],"abstract":"In the image acquisition process, various forms of degradation, including noise, haze, and rain, are frequently introduced. These degradations typically arise from the inherent limitations of cameras or unfavorable ambient conditions. To recover clean images from degraded versions, numerous specialized restoration methods have been developed, each targeting a specific type of degradation. Recently, all-in-one algorithms have garnered significant attention by addressing different types of degradations within a single model without requiring prior information of the input degradation type. However, these methods purely operate in the spatial domain and do not delve into the distinct frequency variations inherent to different degradation types. To address this gap, we propose an adaptive all-in-one image restoration network based on frequency mining and modulation. Our approach is motivated by the observation that different degradation types impact the image content on different frequency subbands, thereby requiring different treatments for each restoration task. Specifically, we first mine low- and high-frequency information from the input features, guided by the adaptively decoupled spectra of the degraded image. The extracted features are then modulated by a bidirectional operator to facilitate interactions between different frequency components. Finally, the modulated features are merged into the original input for a progressively guided restoration. With this approach, the model achieves adaptive reconstruction by accentuating the informative frequency subbands according to different input degradations. Extensive experiments demonstrate that the proposed method achieves state-of-the-art performance on different image restoration tasks, including denoising, dehazing, deraining, motion deblurring, and low-light image enhancement. Our code is available at https://github.com/c-yn/AdaIR.","url_abs":"https://arxiv.org/abs/2403.14614v1","url_pdf":"https://arxiv.org/pdf/2403.14614v1.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":"adair-adaptive-all-in-one-image-restoration","repo_url":"https://github.com/c-yn/adair","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"all","task_name":"All"},{"task_slug":"blind-all-in-one-image-restoration","task_name":"Blind All-in-One Image Restoration"},{"task_slug":"deblurring","task_name":"Deblurring"},{"task_slug":"denoising","task_name":"Denoising"},{"task_slug":"image-enhancement","task_name":"Image Enhancement"},{"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"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/blind-all-in-one-image-restoration-on-3","task":"Blind All-in-One Image Restoration","dataset":"3-Degradations","model":"AdaIR","rank_in_archive_order":4,"of":9,"metrics":{"Average PSNR":"32.69","SSIM":"0.918"},"uses_additional_data":false},{"leaderboard":"/sota/blind-all-in-one-image-restoration-on-5","task":"Blind All-in-One Image Restoration","dataset":"5-Degradations","model":"AdaIR","rank_in_archive_order":6,"of":9,"metrics":{"Average PSNR":"30.20","SSIM":"0.910"},"uses_additional_data":false}],"syntology":{"syntology_url":"https://syntology.ai/paper/2403.14614","atlas_url":"https://app.syntology.ai/?focus=2403.14614","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2403.14614"}},"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/c-yn/adair","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":9,"ran_fixture":3,"unverified":3},"by_repo_kind":{"official":{"samples":15,"ran":12,"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":"b921438690ac017f","entry":"contributions","repo":"c-yn/adair","repo_kind":"official","path":"utils/imresize.py","file_url":"https://github.com/c-yn/adair/blob/HEAD/utils/imresize.py","link_basis":"harvester_set","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":"b921438690ac017f"}},{"code_sha256_prefix":"8ade57fc1fb950bb","entry":"crop_a_image","repo":"c-yn/adair","repo_kind":"official","path":"utils/image_io.py","file_url":"https://github.com/c-yn/adair/blob/HEAD/utils/image_io.py","link_basis":"harvester_set","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":"8ade57fc1fb950bb"}},{"code_sha256_prefix":"11c75b3b8bc61c21","entry":"crop_img","repo":"c-yn/adair","repo_kind":"official","path":"utils/image_utils.py","file_url":"https://github.com/c-yn/adair/blob/HEAD/utils/image_utils.py","link_basis":"harvester_set","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":"11c75b3b8bc61c21"}},{"code_sha256_prefix":"86abcfa12b6612f0","entry":"crop_patch","repo":"c-yn/adair","repo_kind":"official","path":"utils/image_utils.py","file_url":"https://github.com/c-yn/adair/blob/HEAD/utils/image_utils.py","link_basis":"harvester_set","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":"86abcfa12b6612f0"}},{"code_sha256_prefix":"ee75635bb6c497f1","entry":"fix_scale_and_size","repo":"c-yn/adair","repo_kind":"official","path":"utils/imresize.py","file_url":"https://github.com/c-yn/adair/blob/HEAD/utils/imresize.py","link_basis":"harvester_set","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":"ee75635bb6c497f1"}},{"code_sha256_prefix":"cd569444547de84f","entry":"get_position_from_periods","repo":"c-yn/adair","repo_kind":"official","path":"utils/schedulers.py","file_url":"https://github.com/c-yn/adair/blob/HEAD/utils/schedulers.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"cd569444547de84f"}},{"code_sha256_prefix":"c38287d2acea0ce0","entry":"imresize","repo":"c-yn/adair","repo_kind":"official","path":"utils/imresize.py","file_url":"https://github.com/c-yn/adair/blob/HEAD/utils/imresize.py","link_basis":"harvester_set","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":"c38287d2acea0ce0"}},{"code_sha256_prefix":"442cb54f21dcfe50","entry":"linear_warmup_decay","repo":"c-yn/adair","repo_kind":"official","path":"utils/schedulers.py","file_url":"https://github.com/c-yn/adair/blob/HEAD/utils/schedulers.py","link_basis":"harvester_set","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":"442cb54f21dcfe50"}},{"code_sha256_prefix":"e91553b51010dfd6","entry":"prepare_gt_img","repo":"c-yn/adair","repo_kind":"official","path":"utils/image_io.py","file_url":"https://github.com/c-yn/adair/blob/HEAD/utils/image_io.py","link_basis":"harvester_set","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":"e91553b51010dfd6"}},{"code_sha256_prefix":"8564be766b7cda56","entry":"prepare_hazy_image","repo":"c-yn/adair","repo_kind":"official","path":"utils/image_io.py","file_url":"https://github.com/c-yn/adair/blob/HEAD/utils/image_io.py","link_basis":"harvester_set","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":"8564be766b7cda56"}},{"code_sha256_prefix":"82a15cc1e46f7e4d","entry":"to_3d","repo":"c-yn/adair","repo_kind":"official","path":"net/model.py","file_url":"https://github.com/c-yn/adair/blob/HEAD/net/model.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"82a15cc1e46f7e4d"}},{"code_sha256_prefix":"b20f2a5df739a59e","entry":"to_4d","repo":"c-yn/adair","repo_kind":"official","path":"net/model.py","file_url":"https://github.com/c-yn/adair/blob/HEAD/net/model.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b20f2a5df739a59e"}},{"code_sha256_prefix":"418284b6911ecae5","entry":"accuracy","repo":"c-yn/adair","repo_kind":"official","path":"utils/val_utils.py","file_url":"https://github.com/c-yn/adair/blob/HEAD/utils/val_utils.py","link_basis":"harvester_set","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":"418284b6911ecae5"}},{"code_sha256_prefix":"41bf6e3c6e9bb89b","entry":"compute_psnr_ssim","repo":"c-yn/adair","repo_kind":"official","path":"utils/val_utils.py","file_url":"https://github.com/c-yn/adair/blob/HEAD/utils/val_utils.py","link_basis":"harvester_set","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":"41bf6e3c6e9bb89b"}},{"code_sha256_prefix":"779d9bd47765629e","entry":"slice_image2patches","repo":"c-yn/adair","repo_kind":"official","path":"utils/image_utils.py","file_url":"https://github.com/c-yn/adair/blob/HEAD/utils/image_utils.py","link_basis":"harvester_set","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":"779d9bd47765629e"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}