{"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/restormer-efficient-transformer-for-high","title":"Restormer: Efficient Transformer for High-Resolution Image Restoration","arxiv_id":"2111.09881","date":"2021-11-18","proceeding":"CVPR 2022 1","authors":["Syed Waqas Zamir","Aditya Arora","Salman Khan","Munawar Hayat","Fahad Shahbaz Khan","Ming-Hsuan Yang"],"abstract":"Since convolutional neural networks (CNNs) perform well at learning generalizable image priors from large-scale data, these models have been extensively applied to image restoration and related tasks. Recently, another class of neural architectures, Transformers, have shown significant performance gains on natural language and high-level vision tasks. While the Transformer model mitigates the shortcomings of CNNs (i.e., limited receptive field and inadaptability to input content), its computational complexity grows quadratically with the spatial resolution, therefore making it infeasible to apply to most image restoration tasks involving high-resolution images. In this work, we propose an efficient Transformer model by making several key designs in the building blocks (multi-head attention and feed-forward network) such that it can capture long-range pixel interactions, while still remaining applicable to large images. Our model, named Restoration Transformer (Restormer), achieves state-of-the-art results on several image restoration tasks, including image deraining, single-image motion deblurring, defocus deblurring (single-image and dual-pixel data), and image denoising (Gaussian grayscale/color denoising, and real image denoising). The source code and pre-trained models are available at https://github.com/swz30/Restormer.","url_abs":"https://arxiv.org/abs/2111.09881v2","url_pdf":"https://arxiv.org/pdf/2111.09881v2.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":"restormer-efficient-transformer-for-high","repo_url":"https://github.com/swz30/restormer","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"restormer-efficient-transformer-for-high","repo_url":"https://github.com/GarrickZ2/Image-Denoising","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"restormer-efficient-transformer-for-high","repo_url":"https://github.com/HDCVLab/MC-Blur-Dataset","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"restormer-efficient-transformer-for-high","repo_url":"https://github.com/MKFMIKU/VIDM","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"restormer-efficient-transformer-for-high","repo_url":"https://github.com/gymoon10/Instance-Segmentation-with-SpatialEmbedding-CA","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"restormer-efficient-transformer-for-high","repo_url":"https://github.com/leftthomas/restormer","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"restormer-efficient-transformer-for-high","repo_url":"https://github.com/prakashSidd18/blind_augmentation","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"restormer-efficient-transformer-for-high","repo_url":"https://github.com/stephen0808/dnlut","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"restormer-efficient-transformer-for-high","repo_url":"https://github.com/swz30/CycleISP","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"restormer-efficient-transformer-for-high","repo_url":"https://github.com/swz30/MIRNet","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}},{"paper_slug":"restormer-efficient-transformer-for-high","repo_url":"https://github.com/swz30/MPRNet","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"restormer-efficient-transformer-for-high","repo_url":"https://github.com/swz30/mirnetv2","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"restormer-efficient-transformer-for-high","repo_url":"https://github.com/txyugood/Restormer_Paddle","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"paddle","reach":{"status":"ok"}}],"tasks":[{"task_slug":"color-image-denoising","task_name":"Color Image Denoising"},{"task_slug":"deblurring","task_name":"Deblurring"},{"task_slug":"denoising","task_name":"Denoising"},{"task_slug":"grayscale-image-denoising","task_name":"Grayscale Image Denoising"},{"task_slug":"image-deblurring","task_name":"Image Deblurring"},{"task_slug":"image-defocus-deblurring","task_name":"Image Defocus Deblurring"},{"task_slug":"image-denoising","task_name":"Image Denoising"},{"task_slug":"image-restoration","task_name":"Image Restoration"},{"task_slug":"rain-removal","task_name":"Rain Removal"},{"task_slug":"single-image-deraining","task_name":"Single Image Deraining"},{"task_slug":"single-image-desnowing","task_name":"Single Image Desnowing"},{"task_slug":"spectral-reconstruction","task_name":"Spectral Reconstruction"},{"task_slug":"video-deraining","task_name":"Video deraining"},{"task_slug":"high","task_name":"Vocal Bursts Intensity Prediction"}],"methods":[{"method_slug":"absolute-position-encodings","method_name":"Absolute Position Encodings"},{"method_slug":"adam","method_name":"Adam"},{"method_slug":"attention","method_name":"Attention"},{"method_slug":"bpe","method_name":"BPE"},{"method_slug":"dense-connections","method_name":"Dense Connections"},{"method_slug":"dropout","method_name":"Dropout"},{"method_slug":"label-smoothing","method_name":"Label Smoothing"},{"method_slug":"layer-normalization","method_name":"Layer Normalization"},{"method_slug":"linear-layer","method_name":"Linear Layer"},{"method_slug":"multi-head-attention","method_name":"Multi-Head Attention"},{"method_slug":"position-wise-feed-forward-layer","method_name":"Position-Wise Feed-Forward Layer"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"transformer","method_name":"Transformer"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/color-image-denoising-on-kodak24-sigma50","task":"Color Image Denoising","dataset":"Kodak24 sigma50","model":"Restormer","rank_in_archive_order":4,"of":9,"metrics":{"PSNR":"30.01"},"uses_additional_data":false},{"leaderboard":"/sota/color-image-denoising-on-urban100-sigma50","task":"Color Image Denoising","dataset":"Urban100 sigma50","model":"Restormer","rank_in_archive_order":5,"of":9,"metrics":{"PSNR":"30.02"},"uses_additional_data":false},{"leaderboard":"/sota/color-image-denoising-on-urban100-sigma15-1","task":"Color Image Denoising","dataset":"urban100 sigma15","model":"Restormer","rank_in_archive_order":4,"of":8,"metrics":{"Average PSNR":"35.13"},"uses_additional_data":false},{"leaderboard":"/sota/deblurring-on-gopro","task":"Deblurring","dataset":"GoPro","model":"Restormer","rank_in_archive_order":29,"of":56,"metrics":{"PSNR":"32.92","SSIM":"0.961"},"uses_additional_data":false},{"leaderboard":"/sota/deblurring-on-hide-trained-on-gopro","task":"Deblurring","dataset":"HIDE (trained on GOPRO)","model":"Restormer","rank_in_archive_order":14,"of":26,"metrics":{"PSNR (sRGB)":"31.22","Params (M)":"26.13","SSIM (sRGB)":"0.942"},"uses_additional_data":false},{"leaderboard":"/sota/deblurring-on-based","task":"Deblurring","dataset":"MSU BASED","model":"Restormer local","rank_in_archive_order":10,"of":11,"metrics":{"ERQAv2.0":"0.73875","LPIPS":"0.08251","PSNR":"31.12341","SSIM":"0.94217","Subjective":"0.1231","VMAF":"65.25911"},"uses_additional_data":false},{"leaderboard":"/sota/deblurring-on-based","task":"Deblurring","dataset":"MSU BASED","model":"Restormer","rank_in_archive_order":11,"of":11,"metrics":{"ERQAv2.0":"0.74776","LPIPS":"0.08239","PSNR":"31.76111","SSIM":"0.94632","Subjective":"0.1175","VMAF":"66.3964"},"uses_additional_data":false},{"leaderboard":"/sota/deblurring-on-rsblur","task":"Deblurring","dataset":"RSBlur","model":"Restormer","rank_in_archive_order":8,"of":12,"metrics":{"Average PSNR":"33.69"},"uses_additional_data":false},{"leaderboard":"/sota/deblurring-on-realblur-j-trained-on-gopro","task":"Deblurring","dataset":"RealBlur-J (trained on GoPro)","model":"Restormer","rank_in_archive_order":6,"of":15,"metrics":{"PSNR (sRGB)":"28.96","SSIM (sRGB)":"0.879"},"uses_additional_data":false},{"leaderboard":"/sota/deblurring-on-realblur-r-trained-on-gopro","task":"Deblurring","dataset":"RealBlur-R (trained on GoPro)","model":"Restormer","rank_in_archive_order":4,"of":19,"metrics":{"PSNR (sRGB)":"36.19","SSIM (sRGB)":"0.957"},"uses_additional_data":false},{"leaderboard":"/sota/grayscale-image-denoising-on-bsd68-sigma15","task":"Grayscale Image Denoising","dataset":"BSD68 sigma15","model":"Restormer","rank_in_archive_order":4,"of":16,"metrics":{"PSNR":"31.96"},"uses_additional_data":false},{"leaderboard":"/sota/grayscale-image-denoising-on-urban100-sigma15","task":"Grayscale Image Denoising","dataset":"Urban100 sigma15","model":"Restormer","rank_in_archive_order":1,"of":7,"metrics":{"PSNR":"33.79"},"uses_additional_data":false},{"leaderboard":"/sota/grayscale-image-denoising-on-urban100-sigma25","task":"Grayscale Image Denoising","dataset":"Urban100 sigma25","model":"Restormer","rank_in_archive_order":3,"of":10,"metrics":{"PSNR":"31.46"},"uses_additional_data":false},{"leaderboard":"/sota/grayscale-image-denoising-on-urban100-sigma50","task":"Grayscale Image Denoising","dataset":"Urban100 sigma50","model":"Restormer","rank_in_archive_order":4,"of":10,"metrics":{"PSNR":"28.29"},"uses_additional_data":false},{"leaderboard":"/sota/image-deblurring-on-gopro","task":"Image Deblurring","dataset":"GoPro","model":"Restormer","rank_in_archive_order":31,"of":55,"metrics":{"PSNR":"32.92","Params (M)":"26.13","SSIM":"0.961"},"uses_additional_data":false},{"leaderboard":"/sota/image-denoising-on-dnd","task":"Image Denoising","dataset":"DND","model":"Restormer","rank_in_archive_order":4,"of":16,"metrics":{"PSNR (sRGB)":"40.03","SSIM (sRGB)":"0.956"},"uses_additional_data":false},{"leaderboard":"/sota/image-denoising-on-sidd","task":"Image Denoising","dataset":"SIDD","model":"Restormer","rank_in_archive_order":6,"of":22,"metrics":{"PSNR (sRGB)":"40.02","SSIM (sRGB)":"0.960"},"uses_additional_data":false},{"leaderboard":"/sota/image-restoration-on-cdd-11","task":"Image Restoration","dataset":"CDD-11","model":"Restormer","rank_in_archive_order":3,"of":14,"metrics":{"Average PSNR (dB)":"26.99","SSIM":"0.8646"},"uses_additional_data":false},{"leaderboard":"/sota/single-image-deraining-on-rain100h","task":"Single Image Deraining","dataset":"Rain100H","model":"Restormer","rank_in_archive_order":6,"of":19,"metrics":{"PSNR":"31.46","SSIM":"0.904"},"uses_additional_data":false},{"leaderboard":"/sota/single-image-deraining-on-rain100l","task":"Single Image Deraining","dataset":"Rain100L","model":"Restormer","rank_in_archive_order":7,"of":19,"metrics":{"PSNR":"38.99","SSIM":"0.978"},"uses_additional_data":false},{"leaderboard":"/sota/single-image-deraining-on-test100","task":"Single Image Deraining","dataset":"Test100","model":"Restormer","rank_in_archive_order":1,"of":12,"metrics":{"PSNR":"32.00","SSIM":"0.923"},"uses_additional_data":false},{"leaderboard":"/sota/single-image-deraining-on-test1200","task":"Single Image Deraining","dataset":"Test1200","model":"Restormer","rank_in_archive_order":5,"of":14,"metrics":{"PSNR":"33.19","SSIM":"0.926"},"uses_additional_data":false},{"leaderboard":"/sota/single-image-deraining-on-test2800","task":"Single Image Deraining","dataset":"Test2800","model":"Restormer","rank_in_archive_order":2,"of":12,"metrics":{"PSNR":"34.18","SSIM":"0.944"},"uses_additional_data":false},{"leaderboard":"/sota/single-image-desnowing-on-csd","task":"Single Image Desnowing","dataset":"CSD","model":"Restormer","rank_in_archive_order":3,"of":6,"metrics":{"Average PSNR (dB)":"35.43"},"uses_additional_data":false},{"leaderboard":"/sota/spectral-reconstruction-on-arad-1k","task":"Spectral Reconstruction","dataset":"ARAD-1K","model":"Restormer","rank_in_archive_order":4,"of":11,"metrics":{"MRAE":"0.1833","PSNR":"33.40","RMSE":"0.0274"},"uses_additional_data":false},{"leaderboard":"/sota/video-deraining-on-vrds","task":"Video deraining","dataset":"VRDS","model":"Restormer","rank_in_archive_order":3,"of":8,"metrics":{"PSNR":"29.59","SSIM":"0.9206"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2111.09881","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2111.09881"}},"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/swz30/MPRNet","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/swz30/MIRNet","reach":{"status":"ok","spdx":"NOASSERTION"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/swz30/mirnetv2","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/swz30/restormer","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/MKFMIKU/VIDM","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/swz30/CycleISP","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/txyugood/Restormer_Paddle","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/gymoon10/Instance-Segmentation-with-SpatialEmbedding-CA","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/GarrickZ2/Image-Denoising","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/prakashSidd18/blind_augmentation","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/leftthomas/restormer","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/HDCVLab/MC-Blur-Dataset","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/stephen0808/dnlut","reach":{"status":"ok"}}],"summary":{"ran_draft_wrong":2,"ran_fixture":2},"by_repo_kind":{"listed":{"samples":2,"ran":2,"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":4,"samples":[{"code_sha256_prefix":"4ea9fc528e09fe19","entry":"init_args","repo":"leftthomas/restormer","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/leftthomas/restormer/blob/HEAD/utils.py","link_basis":"first_harvest_node","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":"4ea9fc528e09fe19"}},{"code_sha256_prefix":"f66118f3a493e2fd","entry":"rgb_to_y","repo":"leftthomas/restormer","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/leftthomas/restormer/blob/HEAD/utils.py","link_basis":"first_harvest_node","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":"f66118f3a493e2fd"}},{"code_sha256_prefix":"82a15cc1e46f7e4d","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":"82a15cc1e46f7e4d"}},{"code_sha256_prefix":"b20f2a5df739a59e","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":"b20f2a5df739a59e"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}