{"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/edvr-video-restoration-with-enhanced","title":"EDVR: Video Restoration with Enhanced Deformable Convolutional Networks","arxiv_id":"1905.02716","date":"2019-05-07","proceeding":null,"authors":["Xintao Wang","Kelvin C. K. Chan","Ke Yu","Chao Dong","Chen Change Loy"],"abstract":"Video restoration tasks, including super-resolution, deblurring, etc, are drawing increasing attention in the computer vision community. A challenging benchmark named REDS is released in the NTIRE19 Challenge. This new benchmark challenges existing methods from two aspects: (1) how to align multiple frames given large motions, and (2) how to effectively fuse different frames with diverse motion and blur. In this work, we propose a novel Video Restoration framework with Enhanced Deformable networks, termed EDVR, to address these challenges. First, to handle large motions, we devise a Pyramid, Cascading and Deformable (PCD) alignment module, in which frame alignment is done at the feature level using deformable convolutions in a coarse-to-fine manner. Second, we propose a Temporal and Spatial Attention (TSA) fusion module, in which attention is applied both temporally and spatially, so as to emphasize important features for subsequent restoration. Thanks to these modules, our EDVR wins the champions and outperforms the second place by a large margin in all four tracks in the NTIRE19 video restoration and enhancement challenges. EDVR also demonstrates superior performance to state-of-the-art published methods on video super-resolution and deblurring. The code is available at https://github.com/xinntao/EDVR.","url_abs":"https://arxiv.org/abs/1905.02716v1","url_pdf":"https://arxiv.org/pdf/1905.02716v1.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":"edvr-video-restoration-with-enhanced","repo_url":"https://github.com/xinntao/EDVR","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"edvr-video-restoration-with-enhanced","repo_url":"https://github.com/Harrypotterrrr/EDVR","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}},{"paper_slug":"edvr-video-restoration-with-enhanced","repo_url":"https://github.com/Pea-Shooter/ADNet","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"edvr-video-restoration-with-enhanced","repo_url":"https://github.com/YapengTian/TDAN-VSR-CVPR-2020","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"edvr-video-restoration-with-enhanced","repo_url":"https://github.com/ZhaoHengrun/EDVR","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"edvr-video-restoration-with-enhanced","repo_url":"https://github.com/drhdr-user/drhdr","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"edvr-video-restoration-with-enhanced","repo_url":"https://github.com/khyeyoon/Video-Super-Resolution","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"edvr-video-restoration-with-enhanced","repo_url":"https://github.com/liuzhen03/ADNet","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"edvr-video-restoration-with-enhanced","repo_url":"https://github.com/zhusiling/EDVR","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"edvr-video-restoration-with-enhanced","repo_url":"https://github.com/MohamedAliRashad/Crystal","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"edvr-video-restoration-with-enhanced","repo_url":"https://github.com/open-mmlab/mmsr","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"deblurring","task_name":"Deblurring"},{"task_slug":"super-resolution","task_name":"Super-Resolution"},{"task_slug":"video-enhancement","task_name":"Video Enhancement"},{"task_slug":"video-restoration","task_name":"Video Restoration"},{"task_slug":"video-super-resolution","task_name":"Video Super-Resolution"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/deblurring-on-reds","task":"Deblurring","dataset":"REDS","model":"EDVR_Deblur","rank_in_archive_order":2,"of":3,"metrics":{"Average PSNR":"34.80"},"uses_additional_data":false},{"leaderboard":"/sota/video-enhancement-on-mfqe-v2","task":"Video Enhancement","dataset":"MFQE v2","model":"EDVR","rank_in_archive_order":4,"of":6,"metrics":{"Incremental PSNR":"0.75"},"uses_additional_data":false},{"leaderboard":"/sota/video-super-resolution-on-vid4-4x-upscaling","task":"Video Super-Resolution","dataset":"Vid4 - 4x upscaling","model":"EDVR","rank_in_archive_order":13,"of":27,"metrics":{"PSNR":"27.35","SSIM":"0.8264"},"uses_additional_data":false},{"leaderboard":"/sota/video-super-resolution-on-vid4-4x-upscaling-1","task":"Video Super-Resolution","dataset":"Vid4 - 4x upscaling - BD degradation","model":"EDVR","rank_in_archive_order":10,"of":18,"metrics":{"PSNR":"27.85","SSIM":"0.8503"},"uses_additional_data":false}],"syntology":{"syntology_url":"https://syntology.ai/paper/1905.02716","atlas_url":"https://app.syntology.ai/?focus=1905.02716","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1905.02716"}},"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/zhusiling/EDVR","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/drhdr-user/drhdr","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/MohamedAliRashad/Crystal","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/YapengTian/TDAN-VSR-CVPR-2020","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/liuzhen03/ADNet","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/xinntao/EDVR","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ZhaoHengrun/EDVR","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/khyeyoon/Video-Super-Resolution","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Pea-Shooter/ADNet","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/open-mmlab/mmsr","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Harrypotterrrr/EDVR","reach":{"status":"ok"}}],"summary":{"ran":12,"ran_draft_wrong":3,"unverified":4},"by_repo_kind":{"listed":{"samples":19,"ran":15,"repositories":2}},"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":"a3c1e35e4ff68673","entry":"adapt_official","repo":"zhusiling/EDVR","repo_kind":"listed","path":"codes/models/modules/DUF_arch.py","file_url":"https://github.com/zhusiling/EDVR/blob/HEAD/codes/models/modules/DUF_arch.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a3c1e35e4ff68673"}},{"code_sha256_prefix":"9394ff2c25b8a988","entry":"calculate_psnr","repo":"zhusiling/EDVR","repo_kind":"listed","path":"codes/utils/util.py","file_url":"https://github.com/zhusiling/EDVR/blob/HEAD/codes/utils/util.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9394ff2c25b8a988"}},{"code_sha256_prefix":"54b6d9dc8ce868bb","entry":"collate_metrics","repo":"open-mmlab/mmsr","repo_kind":"listed","path":".dev_scripts/utils/modelindex.py","file_url":"https://github.com/open-mmlab/mmsr/blob/HEAD/.dev_scripts/utils/modelindex.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"54b6d9dc8ce868bb"}},{"code_sha256_prefix":"2c460a151351c467","entry":"convert_data_config","repo":"open-mmlab/mmsr","repo_kind":"listed","path":".dev_scripts/create_ceph_configs.py","file_url":"https://github.com/open-mmlab/mmsr/blob/HEAD/.dev_scripts/create_ceph_configs.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2c460a151351c467"}},{"code_sha256_prefix":"40c52ad98161c17b","entry":"dict2str","repo":"zhusiling/EDVR","repo_kind":"listed","path":"codes/options/options.py","file_url":"https://github.com/zhusiling/EDVR/blob/HEAD/codes/options/options.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":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"40c52ad98161c17b"}},{"code_sha256_prefix":"ada7273eee7081c7","entry":"dict_to_nonedict","repo":"zhusiling/EDVR","repo_kind":"listed","path":"codes/options/options.py","file_url":"https://github.com/zhusiling/EDVR/blob/HEAD/codes/options/options.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":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ada7273eee7081c7"}},{"code_sha256_prefix":"0ce4b91d8aca61e4","entry":"filter_metric","repo":"open-mmlab/mmsr","repo_kind":"listed","path":".dev_scripts/metric_mapping.py","file_url":"https://github.com/open-mmlab/mmsr/blob/HEAD/.dev_scripts/metric_mapping.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"0ce4b91d8aca61e4"}},{"code_sha256_prefix":"7018e324f2150c43","entry":"flow_warp","repo":"zhusiling/EDVR","repo_kind":"listed","path":"codes/models/modules/module_util.py","file_url":"https://github.com/zhusiling/EDVR/blob/HEAD/codes/models/modules/module_util.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7018e324f2150c43"}},{"code_sha256_prefix":"8e5814637d5291d6","entry":"found_table","repo":"open-mmlab/mmsr","repo_kind":"listed","path":".dev_scripts/utils/modelindex.py","file_url":"https://github.com/open-mmlab/mmsr/blob/HEAD/.dev_scripts/utils/modelindex.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8e5814637d5291d6"}},{"code_sha256_prefix":"c04a23de0531da4a","entry":"make_layer","repo":"zhusiling/EDVR","repo_kind":"listed","path":"codes/models/modules/module_util.py","file_url":"https://github.com/zhusiling/EDVR/blob/HEAD/codes/models/modules/module_util.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":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c04a23de0531da4a"}},{"code_sha256_prefix":"e47a76b039b007e1","entry":"reading_image_worker","repo":"zhusiling/EDVR","repo_kind":"listed","path":"codes/data_scripts/create_lmdb_mp.py","file_url":"https://github.com/zhusiling/EDVR/blob/HEAD/codes/data_scripts/create_lmdb_mp.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e47a76b039b007e1"}},{"code_sha256_prefix":"4214819cf4b6bd8d","entry":"start_from_proc","repo":"open-mmlab/mmsr","repo_kind":"listed","path":".dev_scripts/job_watcher.py","file_url":"https://github.com/open-mmlab/mmsr/blob/HEAD/.dev_scripts/job_watcher.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4214819cf4b6bd8d"}},{"code_sha256_prefix":"1b40b4f3f0ea0b6e","entry":"tensor2img","repo":"zhusiling/EDVR","repo_kind":"listed","path":"codes/utils/util.py","file_url":"https://github.com/zhusiling/EDVR/blob/HEAD/codes/utils/util.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"1b40b4f3f0ea0b6e"}},{"code_sha256_prefix":"4bbabfed79ffbff3","entry":"update_intervals","repo":"open-mmlab/mmsr","repo_kind":"listed","path":".dev_scripts/create_ceph_configs.py","file_url":"https://github.com/open-mmlab/mmsr/blob/HEAD/.dev_scripts/create_ceph_configs.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4bbabfed79ffbff3"}},{"code_sha256_prefix":"185156d990381282","entry":"update_md","repo":"open-mmlab/mmsr","repo_kind":"listed","path":".dev_scripts/update_config_readme.py","file_url":"https://github.com/open-mmlab/mmsr/blob/HEAD/.dev_scripts/update_config_readme.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"185156d990381282"}},{"code_sha256_prefix":"30896d7c1646f28e","entry":"DUF_downsample","repo":"zhusiling/EDVR","repo_kind":"listed","path":"codes/utils/util.py","file_url":"https://github.com/zhusiling/EDVR/blob/HEAD/codes/utils/util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"30896d7c1646f28e"}},{"code_sha256_prefix":"eda5ede48a264b22","entry":"check_exclude","repo":"open-mmlab/mmsr","repo_kind":"listed","path":".dev_scripts/update_ut.py","file_url":"https://github.com/open-mmlab/mmsr/blob/HEAD/.dev_scripts/update_ut.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"eda5ede48a264b22"}},{"code_sha256_prefix":"cee4c863ad3de58e","entry":"create_train_job_batch","repo":"open-mmlab/mmsr","repo_kind":"listed","path":".dev_scripts/train_benchmark.py","file_url":"https://github.com/open-mmlab/mmsr/blob/HEAD/.dev_scripts/train_benchmark.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"cee4c863ad3de58e"}},{"code_sha256_prefix":"ce4ad67a16f94299","entry":"parse","repo":"zhusiling/EDVR","repo_kind":"listed","path":"codes/options/options.py","file_url":"https://github.com/zhusiling/EDVR/blob/HEAD/codes/options/options.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ce4ad67a16f94299"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}