{"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/are-clip-features-all-you-need-for-universal","title":"Are CLIP features all you need for Universal Synthetic Image Origin Attribution?","arxiv_id":"2408.09153","date":"2024-08-17","proceeding":null,"authors":["Dario Cioni","Christos Tzelepis","Lorenzo Seidenari","Ioannis Patras"],"abstract":"The steady improvement of Diffusion Models for visual synthesis has given rise to many new and interesting use cases of synthetic images but also has raised concerns about their potential abuse, which poses significant societal threats. To address this, fake images need to be detected and attributed to their source model, and given the frequent release of new generators, realistic applications need to consider an Open-Set scenario where some models are unseen at training time. Existing forensic techniques are either limited to Closed-Set settings or to GAN-generated images, relying on fragile frequency-based \"fingerprint\" features. By contrast, we propose a simple yet effective framework that incorporates features from large pre-trained foundation models to perform Open-Set origin attribution of synthetic images produced by various generative models, including Diffusion Models. We show that our method leads to remarkable attribution performance, even in the low-data regime, exceeding the performance of existing methods and generalizes better on images obtained from a diverse set of architectures. We make the code publicly available at: https://github.com/ciodar/UniversalAttribution.","url_abs":"https://arxiv.org/abs/2408.09153v1","url_pdf":"https://arxiv.org/pdf/2408.09153v1.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":"are-clip-features-all-you-need-for-universal","repo_url":"https://github.com/ciodar/universalattribution","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"all","task_name":"All"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"},{"method_slug":"set","method_name":"SET"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2408.09153","atlas_url":"https://app.syntology.ai/?focus=2408.09153","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2408.09153"}},"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/ciodar/universalattribution","reach":{"status":"ok"}}],"summary":{"ran":10,"unverified":3},"by_repo_kind":{"official":{"samples":13,"ran":10,"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":13,"samples":[{"code_sha256_prefix":"12c09a1a10ca585d","entry":"collate_fn","repo":"ciodar/universalattribution","repo_kind":"official","path":"utils/common.py","file_url":"https://github.com/ciodar/universalattribution/blob/HEAD/utils/common.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"12c09a1a10ca585d"}},{"code_sha256_prefix":"281336a57d89d2f5","entry":"create_logger","repo":"ciodar/universalattribution","repo_kind":"official","path":"utils/logger.py","file_url":"https://github.com/ciodar/universalattribution/blob/HEAD/utils/logger.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"281336a57d89d2f5"}},{"code_sha256_prefix":"abec4902fd36544a","entry":"deep_update","repo":"ciodar/universalattribution","repo_kind":"official","path":"utils/config.py","file_url":"https://github.com/ciodar/universalattribution/blob/HEAD/utils/config.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"abec4902fd36544a"}},{"code_sha256_prefix":"07dcafe48b5005f4","entry":"evaluate_multiclass","repo":"ciodar/universalattribution","repo_kind":"official","path":"utils/evaluation.py","file_url":"https://github.com/ciodar/universalattribution/blob/HEAD/utils/evaluation.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"07dcafe48b5005f4"}},{"code_sha256_prefix":"5c806edc39b7b930","entry":"extract_features","repo":"ciodar/universalattribution","repo_kind":"official","path":"utils/feature_extraction.py","file_url":"https://github.com/ciodar/universalattribution/blob/HEAD/utils/feature_extraction.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5c806edc39b7b930"}},{"code_sha256_prefix":"4411abd157c1879b","entry":"get_curve_online","repo":"ciodar/universalattribution","repo_kind":"official","path":"utils/evaluation.py","file_url":"https://github.com/ciodar/universalattribution/blob/HEAD/utils/evaluation.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4411abd157c1879b"}},{"code_sha256_prefix":"e829384ae5bbe7ec","entry":"get_feature_extractor","repo":"ciodar/universalattribution","repo_kind":"official","path":"utils/feature_extraction.py","file_url":"https://github.com/ciodar/universalattribution/blob/HEAD/utils/feature_extraction.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e829384ae5bbe7ec"}},{"code_sha256_prefix":"ff3e80b5a6bf461f","entry":"load_config","repo":"ciodar/universalattribution","repo_kind":"official","path":"utils/common.py","file_url":"https://github.com/ciodar/universalattribution/blob/HEAD/utils/common.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ff3e80b5a6bf461f"}},{"code_sha256_prefix":"ce24138500c16e6a","entry":"read_annotations","repo":"ciodar/universalattribution","repo_kind":"official","path":"utils/common.py","file_url":"https://github.com/ciodar/universalattribution/blob/HEAD/utils/common.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ce24138500c16e6a"}},{"code_sha256_prefix":"3d5ab682980fa9db","entry":"update","repo":"ciodar/universalattribution","repo_kind":"official","path":"utils/config.py","file_url":"https://github.com/ciodar/universalattribution/blob/HEAD/utils/config.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3d5ab682980fa9db"}},{"code_sha256_prefix":"819d24b6de4ea149","entry":"create_linear_input","repo":"ciodar/universalattribution","repo_kind":"official","path":"utils/feature_extraction.py","file_url":"https://github.com/ciodar/universalattribution/blob/HEAD/utils/feature_extraction.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"819d24b6de4ea149"}},{"code_sha256_prefix":"113fc8a663ad687e","entry":"metric_ood","repo":"ciodar/universalattribution","repo_kind":"official","path":"utils/evaluation.py","file_url":"https://github.com/ciodar/universalattribution/blob/HEAD/utils/evaluation.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"113fc8a663ad687e"}},{"code_sha256_prefix":"027bced136403def","entry":"parse_data_str","repo":"ciodar/universalattribution","repo_kind":"official","path":"utils/config.py","file_url":"https://github.com/ciodar/universalattribution/blob/HEAD/utils/config.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"027bced136403def"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}