{"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/image-denoising-and-the-generative","title":"Image Denoising and the Generative Accumulation of Photons","arxiv_id":"2307.06607","date":"2023-07-13","proceeding":null,"authors":["Alexander Krull","Hector Basevi","Benjamin Salmon","Andre Zeug","Franziska Müller","Samuel Tonks","Leela Muppala","Ales Leonardis"],"abstract":"We present a fresh perspective on shot noise corrupted images and noise removal. By viewing image formation as the sequential accumulation of photons on a detector grid, we show that a network trained to predict where the next photon could arrive is in fact solving the minimum mean square error (MMSE) denoising task. This new perspective allows us to make three contributions: We present a new strategy for self-supervised denoising, We present a new method for sampling from the posterior of possible solutions by iteratively sampling and adding small numbers of photons to the image. We derive a full generative model by starting this process from an empty canvas. We call this approach generative accumulation of photons (GAP). We evaluate our method quantitatively and qualitatively on 4 new fluorescence microscopy datasets, which will be made available to the community. We find that it outperforms supervised, self-supervised and unsupervised baselines or performs on-par.","url_abs":"https://arxiv.org/abs/2307.06607v2","url_pdf":"https://arxiv.org/pdf/2307.06607v2.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":"image-denoising-and-the-generative","repo_url":"https://github.com/krulllab/gap","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"denoising","task_name":"Denoising"},{"task_slug":"image-denoising","task_name":"Image Denoising"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2307.06607","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2307.06607"}},"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/krulllab/gap","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":3,"unverified":1},"by_repo_kind":{"official":{"samples":4,"ran":3,"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":"9200656a2a28834f","entry":"conv1x1","repo":"krulllab/gap","repo_kind":"official","path":"gap/GAP_UNET_ResBlock.py","file_url":"https://github.com/krulllab/gap/blob/HEAD/gap/GAP_UNET_ResBlock.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":"9200656a2a28834f"}},{"code_sha256_prefix":"fe1bac001ffc64d5","entry":"conv3x3","repo":"krulllab/gap","repo_kind":"official","path":"gap/GAP_UNET_ResBlock.py","file_url":"https://github.com/krulllab/gap/blob/HEAD/gap/GAP_UNET_ResBlock.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":"fe1bac001ffc64d5"}},{"code_sha256_prefix":"87dc2e4625e5eb8c","entry":"upconv2x2","repo":"krulllab/gap","repo_kind":"official","path":"gap/GAP_UNET_ResBlock.py","file_url":"https://github.com/krulllab/gap/blob/HEAD/gap/GAP_UNET_ResBlock.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":"87dc2e4625e5eb8c"}},{"code_sha256_prefix":"d4a3acc1f2f503a2","entry":"sample_image","repo":"krulllab/gap","repo_kind":"official","path":"gap/inference.py","file_url":"https://github.com/krulllab/gap/blob/HEAD/gap/inference.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":"d4a3acc1f2f503a2"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}