{"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/learning-to-generate-realistic-noisy-images-2","title":"Learning to Generate Realistic Noisy Images via Pixel-level Noise-aware Adversarial Training","arxiv_id":"2204.02844","date":"2022-04-06","proceeding":"NeurIPS 2021 12","authors":["Yuanhao Cai","Xiaowan Hu","Haoqian Wang","Yulun Zhang","Hanspeter Pfister","Donglai Wei"],"abstract":"Existing deep learning real denoising methods require a large amount of noisy-clean image pairs for supervision. Nonetheless, capturing a real noisy-clean dataset is an unacceptable expensive and cumbersome procedure. To alleviate this problem, this work investigates how to generate realistic noisy images. Firstly, we formulate a simple yet reasonable noise model that treats each real noisy pixel as a random variable. This model splits the noisy image generation problem into two sub-problems: image domain alignment and noise domain alignment. Subsequently, we propose a novel framework, namely Pixel-level Noise-aware Generative Adversarial Network (PNGAN). PNGAN employs a pre-trained real denoiser to map the fake and real noisy images into a nearly noise-free solution space to perform image domain alignment. Simultaneously, PNGAN establishes a pixel-level adversarial training to conduct noise domain alignment. Additionally, for better noise fitting, we present an efficient architecture Simple Multi-scale Network (SMNet) as the generator. Qualitative validation shows that noise generated by PNGAN is highly similar to real noise in terms of intensity and distribution. Quantitative experiments demonstrate that a series of denoisers trained with the generated noisy images achieve state-of-the-art (SOTA) results on four real denoising benchmarks. Part of codes, pre-trained models, and results are available at https://github.com/caiyuanhao1998/PNGAN for comparisons.","url_abs":"https://arxiv.org/abs/2204.02844v2","url_pdf":"https://arxiv.org/pdf/2204.02844v2.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":"learning-to-generate-realistic-noisy-images-2","repo_url":"https://github.com/caiyuanhao1998/PNGAN","is_official":0,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":null},{"paper_slug":"learning-to-generate-realistic-noisy-images-2","repo_url":"https://github.com/GarrickZ2/Image-Denoising","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"denoising","task_name":"Denoising"},{"task_slug":null,"task_name":"Generative Adversarial Network"},{"task_slug":"image-denoising","task_name":"Image Denoising"},{"task_slug":"image-generation","task_name":"Image Generation"},{"task_slug":"noise-estimation","task_name":"Noise Estimation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/image-denoising-on-dnd","task":"Image Denoising","dataset":"DND","model":"PNGAN","rank_in_archive_order":2,"of":16,"metrics":{"PSNR (sRGB)":"40.18","SSIM (sRGB)":"0.961"},"uses_additional_data":true},{"leaderboard":"/sota/image-denoising-on-nam","task":"Image Denoising","dataset":"Nam","model":"PNGAN","rank_in_archive_order":1,"of":1,"metrics":{"PSNR":"40.78","SSIM":"0.986"},"uses_additional_data":false},{"leaderboard":"/sota/image-denoising-on-polyu-dataset","task":"Image Denoising","dataset":"PolyU","model":"PNGAN","rank_in_archive_order":1,"of":1,"metrics":{"PSNR":"40.55","SSIM":"0.983"},"uses_additional_data":false},{"leaderboard":"/sota/image-denoising-on-sidd","task":"Image Denoising","dataset":"SIDD","model":"PNGAN","rank_in_archive_order":5,"of":22,"metrics":{"PSNR (sRGB)":"40.07","SSIM (sRGB)":"0.960"},"uses_additional_data":true},{"leaderboard":"/sota/noise-estimation-on-sidd","task":"Noise Estimation","dataset":"SIDD","model":"PNGAN","rank_in_archive_order":1,"of":5,"metrics":{"Average KL Divergence":"0.153","PSNR Gap":"0.84"},"uses_additional_data":false}],"syntology":{"syntology_url":"https://syntology.ai/paper/2204.02844","atlas_url":"https://app.syntology.ai/?focus=2204.02844","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2204.02844"}},"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":"deterministic:regex_extraction","url":"https://github.com/caiyuanhao1998/PNGAN","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/GarrickZ2/Image-Denoising","reach":null}],"summary":{"ran":13,"ran_draft_wrong":1,"unverified":4},"by_repo_kind":{"named_in_paper":{"samples":12,"ran":8,"repositories":1},"listed":{"samples":6,"ran":6,"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":"9cf54f0737819c78","entry":"BlurPool2d","repo":"GarrickZ2/Image-Denoising","repo_kind":"listed","path":"PNGAN/model/generator.py","file_url":"https://github.com/GarrickZ2/Image-Denoising/blob/HEAD/PNGAN/model/generator.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9cf54f0737819c78"}},{"code_sha256_prefix":"98fb983c7e88720b","entry":"DAU","repo":"caiyuanhao1998/PNGAN","repo_kind":"named_in_paper","path":"networks/MIRNet_model.py","file_url":"https://github.com/caiyuanhao1998/PNGAN/blob/HEAD/networks/MIRNet_model.py","link_basis":"first_harvest_node","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":"98fb983c7e88720b"}},{"code_sha256_prefix":"38aa16cfac60cc92","entry":"DownSample","repo":"caiyuanhao1998/PNGAN","repo_kind":"named_in_paper","path":"networks/MIRNet_model.py","file_url":"https://github.com/caiyuanhao1998/PNGAN/blob/HEAD/networks/MIRNet_model.py","link_basis":"first_harvest_node","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":"38aa16cfac60cc92"}},{"code_sha256_prefix":"f1293d5b242d5302","entry":"FCA","repo":"GarrickZ2/Image-Denoising","repo_kind":"listed","path":"PNGAN/model/generator.py","file_url":"https://github.com/GarrickZ2/Image-Denoising/blob/HEAD/PNGAN/model/generator.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f1293d5b242d5302"}},{"code_sha256_prefix":"88e02cc50ac1629c","entry":"Generator","repo":"GarrickZ2/Image-Denoising","repo_kind":"listed","path":"PNGAN/model/generator.py","file_url":"https://github.com/GarrickZ2/Image-Denoising/blob/HEAD/PNGAN/model/generator.py","link_basis":"first_harvest_node","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":"88e02cc50ac1629c"}},{"code_sha256_prefix":"0328887c18f80d1f","entry":"MAB","repo":"GarrickZ2/Image-Denoising","repo_kind":"listed","path":"PNGAN/model/generator.py","file_url":"https://github.com/GarrickZ2/Image-Denoising/blob/HEAD/PNGAN/model/generator.py","link_basis":"first_harvest_node","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":"0328887c18f80d1f"}},{"code_sha256_prefix":"cdc02a8705d4e515","entry":"ResidualDownSample","repo":"caiyuanhao1998/PNGAN","repo_kind":"named_in_paper","path":"networks/MIRNet_model.py","file_url":"https://github.com/caiyuanhao1998/PNGAN/blob/HEAD/networks/MIRNet_model.py","link_basis":"first_harvest_node","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":"cdc02a8705d4e515"}},{"code_sha256_prefix":"edb5af10fa50176e","entry":"SKFF","repo":"caiyuanhao1998/PNGAN","repo_kind":"named_in_paper","path":"networks/MIRNet_model.py","file_url":"https://github.com/caiyuanhao1998/PNGAN/blob/HEAD/networks/MIRNet_model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"edb5af10fa50176e"}},{"code_sha256_prefix":"94c45fe09610c1f3","entry":"SRG","repo":"GarrickZ2/Image-Denoising","repo_kind":"listed","path":"PNGAN/model/generator.py","file_url":"https://github.com/GarrickZ2/Image-Denoising/blob/HEAD/PNGAN/model/generator.py","link_basis":"first_harvest_node","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":"94c45fe09610c1f3"}},{"code_sha256_prefix":"84169db3c61ab293","entry":"UpSample","repo":"caiyuanhao1998/PNGAN","repo_kind":"named_in_paper","path":"networks/MIRNet_model.py","file_url":"https://github.com/caiyuanhao1998/PNGAN/blob/HEAD/networks/MIRNet_model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"84169db3c61ab293"}},{"code_sha256_prefix":"6379151f00888f20","entry":"ca_layer","repo":"caiyuanhao1998/PNGAN","repo_kind":"named_in_paper","path":"networks/MIRNet_model.py","file_url":"https://github.com/caiyuanhao1998/PNGAN/blob/HEAD/networks/MIRNet_model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6379151f00888f20"}},{"code_sha256_prefix":"bf2eb3936cb10010","entry":"downsamp","repo":"caiyuanhao1998/PNGAN","repo_kind":"named_in_paper","path":"networks/MIRNet_model.py","file_url":"https://github.com/caiyuanhao1998/PNGAN/blob/HEAD/networks/MIRNet_model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"bf2eb3936cb10010"}},{"code_sha256_prefix":"0432f3b4007a10d2","entry":"spatial_attn_layer","repo":"caiyuanhao1998/PNGAN","repo_kind":"named_in_paper","path":"networks/MIRNet_model.py","file_url":"https://github.com/caiyuanhao1998/PNGAN/blob/HEAD/networks/MIRNet_model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0432f3b4007a10d2"}},{"code_sha256_prefix":"d133dd217f98b88c","entry":"up_sample","repo":"GarrickZ2/Image-Denoising","repo_kind":"listed","path":"PNGAN/model/generator.py","file_url":"https://github.com/GarrickZ2/Image-Denoising/blob/HEAD/PNGAN/model/generator.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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d133dd217f98b88c"}},{"code_sha256_prefix":"82219d825869b542","entry":"MIRNet","repo":"caiyuanhao1998/PNGAN","repo_kind":"named_in_paper","path":"networks/MIRNet_model.py","file_url":"https://github.com/caiyuanhao1998/PNGAN/blob/HEAD/networks/MIRNet_model.py","link_basis":"first_harvest_node","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":"82219d825869b542"}},{"code_sha256_prefix":"67a302b3bbe19d09","entry":"MSRB","repo":"caiyuanhao1998/PNGAN","repo_kind":"named_in_paper","path":"networks/MIRNet_model.py","file_url":"https://github.com/caiyuanhao1998/PNGAN/blob/HEAD/networks/MIRNet_model.py","link_basis":"first_harvest_node","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":"67a302b3bbe19d09"}},{"code_sha256_prefix":"9ddd23ff4f39e64c","entry":"RRG","repo":"caiyuanhao1998/PNGAN","repo_kind":"named_in_paper","path":"networks/MIRNet_model.py","file_url":"https://github.com/caiyuanhao1998/PNGAN/blob/HEAD/networks/MIRNet_model.py","link_basis":"first_harvest_node","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":"9ddd23ff4f39e64c"}},{"code_sha256_prefix":"b6ff14afe822f838","entry":"ResidualUpSample","repo":"caiyuanhao1998/PNGAN","repo_kind":"named_in_paper","path":"networks/MIRNet_model.py","file_url":"https://github.com/caiyuanhao1998/PNGAN/blob/HEAD/networks/MIRNet_model.py","link_basis":"first_harvest_node","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":"b6ff14afe822f838"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}