{"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/ffdnet-toward-a-fast-and-flexible-solution","title":"FFDNet: Toward a Fast and Flexible Solution for CNN based Image Denoising","arxiv_id":"1710.04026","date":"2017-10-11","proceeding":null,"authors":["Kai Zhang","WangMeng Zuo","Lei Zhang"],"abstract":"Due to the fast inference and good performance, discriminative learning\nmethods have been widely studied in image denoising. However, these methods\nmostly learn a specific model for each noise level, and require multiple models\nfor denoising images with different noise levels. They also lack flexibility to\ndeal with spatially variant noise, limiting their applications in practical\ndenoising. To address these issues, we present a fast and flexible denoising\nconvolutional neural network, namely FFDNet, with a tunable noise level map as\nthe input. The proposed FFDNet works on downsampled sub-images, achieving a\ngood trade-off between inference speed and denoising performance. In contrast\nto the existing discriminative denoisers, FFDNet enjoys several desirable\nproperties, including (i) the ability to handle a wide range of noise levels\n(i.e., [0, 75]) effectively with a single network, (ii) the ability to remove\nspatially variant noise by specifying a non-uniform noise level map, and (iii)\nfaster speed than benchmark BM3D even on CPU without sacrificing denoising\nperformance. Extensive experiments on synthetic and real noisy images are\nconducted to evaluate FFDNet in comparison with state-of-the-art denoisers. The\nresults show that FFDNet is effective and efficient, making it highly\nattractive for practical denoising applications.","url_abs":"http://arxiv.org/abs/1710.04026v2","url_pdf":"http://arxiv.org/pdf/1710.04026v2.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":"ffdnet-toward-a-fast-and-flexible-solution","repo_url":"https://github.com/cszn/FFDNet","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"ffdnet-toward-a-fast-and-flexible-solution","repo_url":"https://github.com/7568/ffdnet-pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"ffdnet-toward-a-fast-and-flexible-solution","repo_url":"https://github.com/Aoi-hosizora/FFDNet_pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"ffdnet-toward-a-fast-and-flexible-solution","repo_url":"https://github.com/LucasElbert/FFDNet","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"ffdnet-toward-a-fast-and-flexible-solution","repo_url":"https://github.com/SamirMitha/Denoising","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"ffdnet-toward-a-fast-and-flexible-solution","repo_url":"https://github.com/deshanyang/abdominal-dir-qa","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}},{"paper_slug":"ffdnet-toward-a-fast-and-flexible-solution","repo_url":"https://github.com/deshanyang/liver-dir-qa","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}},{"paper_slug":"ffdnet-toward-a-fast-and-flexible-solution","repo_url":"https://github.com/mq0829/DL-CACTI","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}}],"tasks":[{"task_slug":null,"task_name":"CPU"},{"task_slug":"color-image-denoising","task_name":"Color Image Denoising"},{"task_slug":"denoising","task_name":"Denoising"},{"task_slug":"image-denoising","task_name":"Image Denoising"}],"methods":[{"method_slug":"speed","method_name":"SPEED"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/color-image-denoising-on-cbsd68-sigma15","task":"Color Image Denoising","dataset":"CBSD68 sigma15","model":"FFDNet","rank_in_archive_order":8,"of":10,"metrics":{"PSNR":"33.87"},"uses_additional_data":false},{"leaderboard":"/sota/color-image-denoising-on-cbsd68-sigma25","task":"Color Image Denoising","dataset":"CBSD68 sigma25","model":"FFDNet","rank_in_archive_order":7,"of":9,"metrics":{"PSNR":"31.21"},"uses_additional_data":false},{"leaderboard":"/sota/color-image-denoising-on-cbsd68-sigma35","task":"Color Image Denoising","dataset":"CBSD68 sigma35","model":"FFDNet","rank_in_archive_order":3,"of":6,"metrics":{"PSNR":"29.58"},"uses_additional_data":false},{"leaderboard":"/sota/color-image-denoising-on-cbsd68-sigma50","task":"Color Image Denoising","dataset":"CBSD68 sigma50","model":"FFDNet","rank_in_archive_order":12,"of":18,"metrics":{"PSNR":"27.96"},"uses_additional_data":false},{"leaderboard":"/sota/color-image-denoising-on-cbsd68-sigma75","task":"Color Image Denoising","dataset":"CBSD68 sigma75","model":"FFDNet","rank_in_archive_order":3,"of":4,"metrics":{"PSNR":"26.24"},"uses_additional_data":false},{"leaderboard":"/sota/color-image-denoising-on-kodak25-sigma15","task":"Color Image Denoising","dataset":"Kodak25 sigma15","model":"FFDNet","rank_in_archive_order":1,"of":1,"metrics":{"PSNR":"34.63"},"uses_additional_data":false},{"leaderboard":"/sota/color-image-denoising-on-kodak25-sigma25","task":"Color Image Denoising","dataset":"Kodak25 sigma25","model":"FFDNet","rank_in_archive_order":1,"of":1,"metrics":{"PSNR":"32.13"},"uses_additional_data":false},{"leaderboard":"/sota/color-image-denoising-on-kodak25-sigma35","task":"Color Image Denoising","dataset":"Kodak25 sigma35","model":"FFDNet","rank_in_archive_order":1,"of":1,"metrics":{"PSNR":"30.57"},"uses_additional_data":false},{"leaderboard":"/sota/color-image-denoising-on-kodak25-sigma50","task":"Color Image Denoising","dataset":"Kodak25 sigma50","model":"FFDNet","rank_in_archive_order":1,"of":1,"metrics":{"PSNR":"28.98"},"uses_additional_data":false},{"leaderboard":"/sota/color-image-denoising-on-kodak25-sigma75","task":"Color Image Denoising","dataset":"Kodak25 sigma75","model":"FFDNet","rank_in_archive_order":1,"of":1,"metrics":{"PSNR":"27.27"},"uses_additional_data":false},{"leaderboard":"/sota/color-image-denoising-on-mcmaster-sigma15","task":"Color Image Denoising","dataset":"McMaster sigma15","model":"FFDNet","rank_in_archive_order":4,"of":4,"metrics":{"PSNR":"34.66"},"uses_additional_data":false},{"leaderboard":"/sota/color-image-denoising-on-mcmaster-sigma25","task":"Color Image Denoising","dataset":"McMaster sigma25","model":"FFDNet","rank_in_archive_order":4,"of":4,"metrics":{"PSNR":"32.35"},"uses_additional_data":false},{"leaderboard":"/sota/color-image-denoising-on-mcmaster-sigma35","task":"Color Image Denoising","dataset":"McMaster sigma35","model":"FFDNet","rank_in_archive_order":1,"of":1,"metrics":{"PSNR":"30.81"},"uses_additional_data":false},{"leaderboard":"/sota/color-image-denoising-on-mcmaster-sigma50","task":"Color Image Denoising","dataset":"McMaster sigma50","model":"FFDNet","rank_in_archive_order":5,"of":7,"metrics":{"PSNR":"29.18"},"uses_additional_data":false},{"leaderboard":"/sota/color-image-denoising-on-mcmaster-sigma75","task":"Color Image Denoising","dataset":"McMaster sigma75","model":"FFDNet","rank_in_archive_order":1,"of":1,"metrics":{"PSNR":"27.33"},"uses_additional_data":false},{"leaderboard":"/sota/color-image-denoising-on-urban100-sigma15-1","task":"Color Image Denoising","dataset":"urban100 sigma15","model":"FFDNet","rank_in_archive_order":6,"of":8,"metrics":{"Average PSNR":"33.83"},"uses_additional_data":false},{"leaderboard":"/sota/denoising-on-darmstadt-noise-dataset","task":"Denoising","dataset":"Darmstadt Noise Dataset","model":"FFDNet","rank_in_archive_order":7,"of":10,"metrics":{"PSNR":"34.40"},"uses_additional_data":false},{"leaderboard":"/sota/grayscale-image-denoising-on-bsd68-sigma15","task":"Grayscale Image Denoising","dataset":"BSD68 sigma15","model":"FFDNet","rank_in_archive_order":11,"of":16,"metrics":{"PSNR":"31.63"},"uses_additional_data":false},{"leaderboard":"/sota/grayscale-image-denoising-on-bsd68-sigma25","task":"Grayscale Image Denoising","dataset":"BSD68 sigma25","model":"FFDNet","rank_in_archive_order":11,"of":16,"metrics":{"PSNR":"29.19"},"uses_additional_data":false},{"leaderboard":"/sota/grayscale-image-denoising-on-bsd68-sigma35","task":"Grayscale Image Denoising","dataset":"BSD68 sigma35","model":"FFDNet","rank_in_archive_order":1,"of":2,"metrics":{"PSNR":"27.73"},"uses_additional_data":false},{"leaderboard":"/sota/grayscale-image-denoising-on-bsd68-sigma50","task":"Grayscale Image Denoising","dataset":"BSD68 sigma50","model":"FFDNet","rank_in_archive_order":13,"of":15,"metrics":{"PSNR":"26.29"},"uses_additional_data":false},{"leaderboard":"/sota/grayscale-image-denoising-on-bsd68-sigma75","task":"Grayscale Image Denoising","dataset":"BSD68 sigma75","model":"FFDNet","rank_in_archive_order":1,"of":2,"metrics":{"PSNR":"24.79"},"uses_additional_data":false},{"leaderboard":"/sota/grayscale-image-denoising-on-clip300-sigma15","task":"Grayscale Image Denoising","dataset":"Clip300 sigma15","model":"FFDNet-Clip","rank_in_archive_order":1,"of":1,"metrics":{"PSNR":"31.68"},"uses_additional_data":false},{"leaderboard":"/sota/grayscale-image-denoising-on-clip300-sigma25","task":"Grayscale Image Denoising","dataset":"Clip300 sigma25","model":"FFDNet-Clip","rank_in_archive_order":1,"of":1,"metrics":{"PSNR":"29.25"},"uses_additional_data":false},{"leaderboard":"/sota/grayscale-image-denoising-on-clip300-sigma35","task":"Grayscale Image Denoising","dataset":"Clip300 sigma35","model":"FFDNet-Clip","rank_in_archive_order":1,"of":1,"metrics":{"PSNR":"27.75"},"uses_additional_data":false},{"leaderboard":"/sota/grayscale-image-denoising-on-clip300-sigma50","task":"Grayscale Image Denoising","dataset":"Clip300 sigma50","model":"FFDNet-Clip","rank_in_archive_order":1,"of":1,"metrics":{"PSNR":"26.25"},"uses_additional_data":false},{"leaderboard":"/sota/grayscale-image-denoising-on-clip300-sigma60","task":"Grayscale Image Denoising","dataset":"Clip300 sigma60","model":"FFDNet-Clip","rank_in_archive_order":1,"of":1,"metrics":{"PSNR":"25.51"},"uses_additional_data":false},{"leaderboard":"/sota/grayscale-image-denoising-on-set12-sigma15","task":"Grayscale Image Denoising","dataset":"Set12 sigma15","model":"FFDNet","rank_in_archive_order":8,"of":8,"metrics":{"PSNR":"25.49"},"uses_additional_data":false}],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=1710.04026","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1710.04026"}},"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/cszn/FFDNet","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/7568/ffdnet-pytorch","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/deshanyang/abdominal-dir-qa","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/SamirMitha/Denoising","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Aoi-hosizora/FFDNet_pytorch","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/mq0829/DL-CACTI","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/LucasElbert/FFDNet","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/deshanyang/liver-dir-qa","reach":{"status":"ok"}}],"summary":{"unverified":7},"by_repo_kind":{"listed":{"samples":7,"ran":0,"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":"9826ce88e0ace708","entry":"denormalize","repo":"SamirMitha/Denoising","repo_kind":"listed","path":"FFDNet-Keras/utils.py","file_url":"https://github.com/SamirMitha/Denoising/blob/HEAD/FFDNet-Keras/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":"9826ce88e0ace708"}},{"code_sha256_prefix":"32cbb0bf667d4344","entry":"downsample","repo":"Aoi-hosizora/FFDNet_pytorch","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/Aoi-hosizora/FFDNet_pytorch/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":"32cbb0bf667d4344"}},{"code_sha256_prefix":"56373616d9d5d6e2","entry":"img_to_patches","repo":"SamirMitha/Denoising","repo_kind":"listed","path":"FFDNet-Keras/utils.py","file_url":"https://github.com/SamirMitha/Denoising/blob/HEAD/FFDNet-Keras/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":"56373616d9d5d6e2"}},{"code_sha256_prefix":"36d462f86684d561","entry":"img_to_patches","repo":"SamirMitha/Denoising","repo_kind":"listed","path":"DnCNN-Keras/utils.py","file_url":"https://github.com/SamirMitha/Denoising/blob/HEAD/DnCNN-Keras/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":"36d462f86684d561"}},{"code_sha256_prefix":"4efa089015c96dbb","entry":"is_image_gray","repo":"Aoi-hosizora/FFDNet_pytorch","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/Aoi-hosizora/FFDNet_pytorch/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":"4efa089015c96dbb"}},{"code_sha256_prefix":"0ca1aabdc293fc5f","entry":"normalize","repo":"SamirMitha/Denoising","repo_kind":"listed","path":"FFDNet-Keras/utils.py","file_url":"https://github.com/SamirMitha/Denoising/blob/HEAD/FFDNet-Keras/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":"0ca1aabdc293fc5f"}},{"code_sha256_prefix":"f8bb0108cfdc61e2","entry":"upsample","repo":"Aoi-hosizora/FFDNet_pytorch","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/Aoi-hosizora/FFDNet_pytorch/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":"f8bb0108cfdc61e2"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}