{"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/aeroblade-training-free-detection-of-latent","title":"AEROBLADE: Training-Free Detection of Latent Diffusion Images Using Autoencoder Reconstruction Error","arxiv_id":"2401.17879","date":"2024-01-31","proceeding":"CVPR 2024 1","authors":["Jonas Ricker","Denis Lukovnikov","Asja Fischer"],"abstract":"With recent text-to-image models, anyone can generate deceptively realistic images with arbitrary contents, fueling the growing threat of visual disinformation. A key enabler for generating high-resolution images with low computational cost has been the development of latent diffusion models (LDMs). In contrast to conventional diffusion models, LDMs perform the denoising process in the low-dimensional latent space of a pre-trained autoencoder (AE) instead of the high-dimensional image space. Despite their relevance, the forensic analysis of LDMs is still in its infancy. In this work we propose AEROBLADE, a novel detection method which exploits an inherent component of LDMs: the AE used to transform images between image and latent space. We find that generated images can be more accurately reconstructed by the AE than real images, allowing for a simple detection approach based on the reconstruction error. Most importantly, our method is easy to implement and does not require any training, yet nearly matches the performance of detectors that rely on extensive training. We empirically demonstrate that AEROBLADE is effective against state-of-the-art LDMs, including Stable Diffusion and Midjourney. Beyond detection, our approach allows for the qualitative analysis of images, which can be leveraged for identifying inpainted regions. We release our code and data at https://github.com/jonasricker/aeroblade .","url_abs":"https://arxiv.org/abs/2401.17879v2","url_pdf":"https://arxiv.org/pdf/2401.17879v2.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":"aeroblade-training-free-detection-of-latent","repo_url":"https://github.com/jonasricker/aeroblade","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"denoising","task_name":"Denoising"}],"methods":[{"method_slug":"ae","method_name":"AE"},{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2401.17879","atlas_url":"https://app.syntology.ai/?focus=2401.17879","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2401.17879"}},"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":"deterministic:regex_extraction","url":"https://github.com/jonasricker/aeroblade","reach":{"status":"ok"}}],"summary":{"ran":7},"by_repo_kind":{"official":{"samples":7,"ran":7,"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":7,"samples":[{"code_sha256_prefix":"664cc438d8ceb3b4","entry":"colorbar","repo":"jonasricker/aeroblade","repo_kind":"official","path":"src/aeroblade/paper.py","file_url":"https://github.com/jonasricker/aeroblade/blob/HEAD/src/aeroblade/paper.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":"664cc438d8ceb3b4"}},{"code_sha256_prefix":"44676333bce8f50d","entry":"compute_diff","repo":"jonasricker/aeroblade","repo_kind":"official","path":"src/aeroblade/inversion.py","file_url":"https://github.com/jonasricker/aeroblade/blob/HEAD/src/aeroblade/inversion.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":"44676333bce8f50d"}},{"code_sha256_prefix":"19475527a36172a4","entry":"extract_patches","repo":"jonasricker/aeroblade","repo_kind":"official","path":"src/aeroblade/image.py","file_url":"https://github.com/jonasricker/aeroblade/blob/HEAD/src/aeroblade/image.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":"19475527a36172a4"}},{"code_sha256_prefix":"91f685ec15f82d5e","entry":"get_nice_name","repo":"jonasricker/aeroblade","repo_kind":"official","path":"src/aeroblade/paper.py","file_url":"https://github.com/jonasricker/aeroblade/blob/HEAD/src/aeroblade/paper.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":"91f685ec15f82d5e"}},{"code_sha256_prefix":"69ebaa037f89e634","entry":"read_files","repo":"jonasricker/aeroblade","repo_kind":"official","path":"src/aeroblade/data.py","file_url":"https://github.com/jonasricker/aeroblade/blob/HEAD/src/aeroblade/data.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":"69ebaa037f89e634"}},{"code_sha256_prefix":"296d845b5510229a","entry":"tpr_at_max_fpr","repo":"jonasricker/aeroblade","repo_kind":"official","path":"src/aeroblade/evaluation.py","file_url":"https://github.com/jonasricker/aeroblade/blob/HEAD/src/aeroblade/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":"296d845b5510229a"}},{"code_sha256_prefix":"f7378b86f5547412","entry":"transform_from_config","repo":"jonasricker/aeroblade","repo_kind":"official","path":"src/aeroblade/transforms.py","file_url":"https://github.com/jonasricker/aeroblade/blob/HEAD/src/aeroblade/transforms.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":"f7378b86f5547412"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}