{"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/arxiv-2511-01293","title":"Detecting Generated Images by Fitting Natural Image Distributions","arxiv_id":"2511.01293","date":"2025-11-03","proceeding":"NeurIPS","authors":["Yonggang Zhang","Jun Nie","Xinmei Tian","Mingming Gong","Kun Zhang","Bo Han"],"abstract":"The increasing realism of generated images has raised significant concerns about their potential misuse, necessitating robust detection methods. Current approaches mainly rely on training binary classifiers, which depend heavily on the quantity and quality of available generated images. In this work, we propose a novel framework that exploits geometric differences between the data manifolds of natural and generated images. To exploit this difference, we employ a pair of functions engineered to yield consistent outputs for natural images but divergent outputs for generated ones, leveraging the property that their gradients reside in mutually orthogonal subspaces. This design enables a simple yet effective detection method: an image is identified as generated if a transformation along its data manifold induces a significant change in the loss value of a self-supervised model pre-trained on natural images. Further more, to address diminishing manifold disparities in advanced generative models, we leverage normalizing flows to amplify detectable differences by extruding generated images away from the natural image manifold. Extensive experiments demonstrate the efficacy of this method. Code is available at https://github.com/tmlr-group/ConV.","url_abs":"https://arxiv.org/abs/2511.01293","url_pdf":"https://arxiv.org/pdf/2511.01293","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2511.01293","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2511.01293"}},"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":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/tmlr-group/ConV","reach":null}],"summary":{"ran_fixture":3,"ran_draft_wrong":1,"ran_violates":1,"ran_honours":1,"unverified":1},"by_repo_kind":{"found_in_text":{"samples":7,"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":"9c61bf697b537928","entry":"calculate_acc","repo":"tmlr-group/ConV","repo_kind":"found_in_text","path":"srcs/ConV.py","file_url":"https://github.com/tmlr-group/ConV/blob/HEAD/srcs/ConV.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9c61bf697b537928"}},{"code_sha256_prefix":"c50a5cf11b9ea3b0","entry":"calculate_cosine_similarity","repo":"tmlr-group/ConV","repo_kind":"found_in_text","path":"srcs/ConV.py","file_url":"https://github.com/tmlr-group/ConV/blob/HEAD/srcs/ConV.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c50a5cf11b9ea3b0"}},{"code_sha256_prefix":"295724c23de5a53d","entry":"find_best_threshold","repo":"tmlr-group/ConV","repo_kind":"found_in_text","path":"srcs/ConV.py","file_url":"https://github.com/tmlr-group/ConV/blob/HEAD/srcs/ConV.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"295724c23de5a53d"}},{"code_sha256_prefix":"7007a88885032a37","entry":"fpr_and_fdr_at_recall","repo":"tmlr-group/ConV","repo_kind":"found_in_text","path":"srcs/ConV.py","file_url":"https://github.com/tmlr-group/ConV/blob/HEAD/srcs/ConV.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7007a88885032a37"}},{"code_sha256_prefix":"6968accad9d4d5f3","entry":"get_measures","repo":"tmlr-group/ConV","repo_kind":"found_in_text","path":"srcs/ConV.py","file_url":"https://github.com/tmlr-group/ConV/blob/HEAD/srcs/ConV.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6968accad9d4d5f3"}},{"code_sha256_prefix":"a7036bae17c58812","entry":"stable_cumsum","repo":"tmlr-group/ConV","repo_kind":"found_in_text","path":"srcs/ConV.py","file_url":"https://github.com/tmlr-group/ConV/blob/HEAD/srcs/ConV.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a7036bae17c58812"}},{"code_sha256_prefix":"8e5cc49584fda482","entry":"validate","repo":"tmlr-group/ConV","repo_kind":"found_in_text","path":"srcs/ConV.py","file_url":"https://github.com/tmlr-group/ConV/blob/HEAD/srcs/ConV.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":"8e5cc49584fda482"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.CV","source":"arxiv_api"},"syntology_extracted_results":null}