{"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/progressive-image-deraining-networks-a-better","title":"Progressive Image Deraining Networks: A Better and Simpler Baseline","arxiv_id":"1901.09221","date":"2019-01-26","proceeding":"CVPR 2019 6","authors":["Dongwei Ren","WangMeng Zuo","QinGhua Hu","Pengfei Zhu","Deyu Meng"],"abstract":"Along with the deraining performance improvement of deep networks, their structures and learning become more and more complicated and diverse, making it difficult to analyze the contribution of various network modules when developing new deraining networks. To handle this issue, this paper provides a better and simpler baseline deraining network by considering network architecture, input and output, and loss functions. Specifically, by repeatedly unfolding a shallow ResNet, progressive ResNet (PRN) is proposed to take advantage of recursive computation. A recurrent layer is further introduced to exploit the dependencies of deep features across stages, forming our progressive recurrent network (PReNet). Furthermore, intra-stage recursive computation of ResNet can be adopted in PRN and PReNet to notably reduce network parameters with graceful degradation in deraining performance. For network input and output, we take both stage-wise result and original rainy image as input to each ResNet and finally output the prediction of {residual image}. As for loss functions, single MSE or negative SSIM losses are sufficient to train PRN and PReNet. Experiments show that PRN and PReNet perform favorably on both synthetic and real rainy images. Considering its simplicity, efficiency and effectiveness, our models are expected to serve as a suitable baseline in future deraining research. The source codes are available at https://github.com/csdwren/PReNet.","url_abs":"https://arxiv.org/abs/1901.09221v3","url_pdf":"https://arxiv.org/pdf/1901.09221v3.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":"progressive-image-deraining-networks-a-better","repo_url":"https://github.com/csdwren/PReNet","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"progressive-image-deraining-networks-a-better","repo_url":"https://github.com/Leozhibin/PReNet-master","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"progressive-image-deraining-networks-a-better","repo_url":"https://github.com/simonsLiang/PReNet_paddle","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"paddle","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"progressive-image-deraining-networks-a-better","repo_url":"https://github.com/GuoQuanhao/PRNet-Paddle","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"paddle","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"image-super-resolution","task_name":"Image Super-Resolution"},{"task_slug":"rain-removal","task_name":"Rain Removal"},{"task_slug":"ssim","task_name":"SSIM"},{"task_slug":"single-image-deraining","task_name":"Single Image Deraining"}],"methods":[{"method_slug":"1x1-convolution","method_name":"1x1 Convolution"},{"method_slug":"average-pooling","method_name":"Average Pooling"},{"method_slug":"batch-normalization","method_name":"Batch Normalization"},{"method_slug":"bottleneck-residual-block","method_name":"Bottleneck Residual Block"},{"method_slug":"convolution","method_name":"Convolution"},{"method_slug":"global-average-pooling","method_name":"Global Average Pooling"},{"method_slug":"kaiming-initialization","method_name":"Kaiming Initialization"},{"method_slug":"max-pooling","method_name":"Max Pooling"},{"method_slug":"relu","method_name":"ReLU"},{"method_slug":"residual-block","method_name":"Residual Block"},{"method_slug":"residual-connection","method_name":"Residual Connection"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/single-image-deraining-on-rain100h","task":"Single Image Deraining","dataset":"Rain100H","model":"PReNet","rank_in_archive_order":12,"of":19,"metrics":{"PSNR":"29.46","SSIM":"0.899"},"uses_additional_data":false},{"leaderboard":"/sota/single-image-deraining-on-rain100l","task":"Single Image Deraining","dataset":"Rain100L","model":"PReNet","rank_in_archive_order":10,"of":19,"metrics":{"PSNR":"37.48","SSIM":"0.979"},"uses_additional_data":false},{"leaderboard":"/sota/single-image-deraining-on-rain12","task":"Single Image Deraining","dataset":"Rain12","model":"PReNet","rank_in_archive_order":1,"of":1,"metrics":{"PSNR":"36.66"},"uses_additional_data":false},{"leaderboard":"/sota/single-image-deraining-on-rain1400","task":"Single Image Deraining","dataset":"Rain1400","model":"PReNetr","rank_in_archive_order":1,"of":1,"metrics":{"PSNR":"32.44","SSIM":"0.9440000000000001"},"uses_additional_data":false},{"leaderboard":"/sota/single-image-deraining-on-test2800","task":"Single Image Deraining","dataset":"Test2800","model":"PreNet","rank_in_archive_order":12,"of":12,"metrics":{"SSIM":"0.916"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1901.09221","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1901.09221"}},"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/Leozhibin/PReNet-master","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/GuoQuanhao/PRNet-Paddle","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/csdwren/PReNet","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/simonsLiang/PReNet_paddle","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":1,"unverified":8},"by_repo_kind":{"listed":{"samples":9,"ran":1,"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":"5dfad570b582b1ea","entry":"normalize","repo":"simonsLiang/PReNet_paddle","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/simonsLiang/PReNet_paddle/blob/HEAD/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":"5dfad570b582b1ea"}},{"code_sha256_prefix":"2af2ba98f984835a","entry":"Im2Patch","repo":"GuoQuanhao/PRNet-Paddle","repo_kind":"listed","path":"DerainDataset.py","file_url":"https://github.com/GuoQuanhao/PRNet-Paddle/blob/HEAD/DerainDataset.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":"2af2ba98f984835a"}},{"code_sha256_prefix":"a8d4fcacf0698a54","entry":"batch_PSNR","repo":"GuoQuanhao/PRNet-Paddle","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/GuoQuanhao/PRNet-Paddle/blob/HEAD/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":"a8d4fcacf0698a54"}},{"code_sha256_prefix":"d3f67087567e318c","entry":"findLastCheckpoint","repo":"GuoQuanhao/PRNet-Paddle","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/GuoQuanhao/PRNet-Paddle/blob/HEAD/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":"d3f67087567e318c"}},{"code_sha256_prefix":"a96487f60124693f","entry":"findLastCheckpoint","repo":"simonsLiang/PReNet_paddle","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/simonsLiang/PReNet_paddle/blob/HEAD/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":"a96487f60124693f"}},{"code_sha256_prefix":"fdfa74ba00e702c9","entry":"gauss_filter","repo":"GuoQuanhao/PRNet-Paddle","repo_kind":"listed","path":"statistic/evaluate.py","file_url":"https://github.com/GuoQuanhao/PRNet-Paddle/blob/HEAD/statistic/evaluate.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":"fdfa74ba00e702c9"}},{"code_sha256_prefix":"6f10c4ac5f5970e6","entry":"matlab_psnr","repo":"GuoQuanhao/PRNet-Paddle","repo_kind":"listed","path":"statistic/evaluate.py","file_url":"https://github.com/GuoQuanhao/PRNet-Paddle/blob/HEAD/statistic/evaluate.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":"6f10c4ac5f5970e6"}},{"code_sha256_prefix":"925b86fff89dd565","entry":"rgb2ycbcr","repo":"GuoQuanhao/PRNet-Paddle","repo_kind":"listed","path":"statistic/evaluate.py","file_url":"https://github.com/GuoQuanhao/PRNet-Paddle/blob/HEAD/statistic/evaluate.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":"925b86fff89dd565"}},{"code_sha256_prefix":"0a2256a291767ded","entry":"shave","repo":"simonsLiang/PReNet_paddle","repo_kind":"listed","path":"mutils.py","file_url":"https://github.com/simonsLiang/PReNet_paddle/blob/HEAD/mutils.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":"0a2256a291767ded"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}