{"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/drop-the-gan-in-defense-of-patches-nearest","title":"Drop the GAN: In Defense of Patches Nearest Neighbors as Single Image Generative Models","arxiv_id":"2103.15545","date":"2021-03-29","proceeding":"CVPR 2022 1","authors":["Niv Granot","Ben Feinstein","Assaf Shocher","Shai Bagon","Michal Irani"],"abstract":"Single image generative models perform synthesis and manipulation tasks by capturing the distribution of patches within a single image. The classical (pre Deep Learning) prevailing approaches for these tasks are based on an optimization process that maximizes patch similarity between the input and generated output. Recently, however, Single Image GANs were introduced both as a superior solution for such manipulation tasks, but also for remarkable novel generative tasks. Despite their impressiveness, single image GANs require long training time (usually hours) for each image and each task. They often suffer from artifacts and are prone to optimization issues such as mode collapse. In this paper, we show that all of these tasks can be performed without any training, within several seconds, in a unified, surprisingly simple framework. We revisit and cast the \"good-old\" patch-based methods into a novel optimization-free framework. We start with an initial coarse guess, and then simply refine the details coarse-to-fine using patch-nearest-neighbor search. This allows generating random novel images better and much faster than GANs. We further demonstrate a wide range of applications, such as image editing and reshuffling, retargeting to different sizes, structural analogies, image collage and a newly introduced task of conditional inpainting. Not only is our method faster ($\\times 10^3$-$\\times 10^4$ than a GAN), it produces superior results (confirmed by quantitative and qualitative evaluation), less artifacts and more realistic global structure than any of the previous approaches (whether GAN-based or classical patch-based).","url_abs":"https://arxiv.org/abs/2103.15545v2","url_pdf":"https://arxiv.org/pdf/2103.15545v2.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":"drop-the-gan-in-defense-of-patches-nearest","repo_url":"https://github.com/ariel415el/Efficient-GPNN","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"drop-the-gan-in-defense-of-patches-nearest","repo_url":"https://github.com/iyttor/GPNN","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"image-generation","task_name":"Image Generation"},{"task_slug":"image-manipulation","task_name":"Image Manipulation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2103.15545","atlas_url":"https://app.syntology.ai/?focus=2103.15545","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2103.15545"}},"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/iyttor/GPNN","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ariel415el/Efficient-GPNN","reach":null}],"summary":{"ran_fixture":3,"ran_honours":1},"by_repo_kind":{"listed":{"samples":4,"ran":4,"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":"3a1cb8c68c0cc6d3","entry":"compute_distances_batch","repo":"ariel415el/Efficient-GPNN","repo_kind":"listed","path":"utils/NN.py","file_url":"https://github.com/ariel415el/Efficient-GPNN/blob/HEAD/utils/NN.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"3a1cb8c68c0cc6d3"}},{"code_sha256_prefix":"2b3b423e2c8caf74","entry":"efficient_compute_distances","repo":"ariel415el/Efficient-GPNN","repo_kind":"listed","path":"utils/NN.py","file_url":"https://github.com/ariel415el/Efficient-GPNN/blob/HEAD/utils/NN.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2b3b423e2c8caf74"}},{"code_sha256_prefix":"c05daefe6f31b2c3","entry":"get_NN_indices","repo":"ariel415el/Efficient-GPNN","repo_kind":"listed","path":"utils/NN.py","file_url":"https://github.com/ariel415el/Efficient-GPNN/blob/HEAD/utils/NN.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c05daefe6f31b2c3"}},{"code_sha256_prefix":"2519da9c8c5f8b95","entry":"get_output_shape","repo":"ariel415el/Efficient-GPNN","repo_kind":"listed","path":"GPNN.py","file_url":"https://github.com/ariel415el/Efficient-GPNN/blob/HEAD/GPNN.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"well_formed","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2519da9c8c5f8b95"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}