{"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/diad-a-diffusion-based-framework-for-multi","title":"DiAD: A Diffusion-based Framework for Multi-class Anomaly Detection","arxiv_id":"2312.06607","date":"2023-12-11","proceeding":null,"authors":["Haoyang He","Jiangning Zhang","Hongxu Chen","Xuhai Chen","Zhishan Li","Xu Chen","Yabiao Wang","Chengjie Wang","Lei Xie"],"abstract":"Reconstruction-based approaches have achieved remarkable outcomes in anomaly detection. The exceptional image reconstruction capabilities of recently popular diffusion models have sparked research efforts to utilize them for enhanced reconstruction of anomalous images. Nonetheless, these methods might face challenges related to the preservation of image categories and pixel-wise structural integrity in the more practical multi-class setting. To solve the above problems, we propose a Difusion-based Anomaly Detection (DiAD) framework for multi-class anomaly detection, which consists of a pixel-space autoencoder, a latent-space Semantic-Guided (SG) network with a connection to the stable diffusion's denoising network, and a feature-space pre-trained feature extractor. Firstly, The SG network is proposed for reconstructing anomalous regions while preserving the original image's semantic information. Secondly, we introduce Spatial-aware Feature Fusion (SFF) block to maximize reconstruction accuracy when dealing with extensively reconstructed areas. Thirdly, the input and reconstructed images are processed by a pre-trained feature extractor to generate anomaly maps based on features extracted at different scales. Experiments on MVTec-AD and VisA datasets demonstrate the effectiveness of our approach which surpasses the state-of-the-art methods, e.g., achieving 96.8/52.6 and 97.2/99.0 (AUROC/AP) for localization and detection respectively on multi-class MVTec-AD dataset. Code will be available at https://lewandofskee.github.io/projects/diad.","url_abs":"https://arxiv.org/abs/2312.06607v1","url_pdf":"https://arxiv.org/pdf/2312.06607v1.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":"diad-a-diffusion-based-framework-for-multi","repo_url":"https://github.com/lewandofskee/DiAD","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"anomaly-detection","task_name":"Anomaly Detection"},{"task_slug":"denoising","task_name":"Denoising"},{"task_slug":"image-reconstruction","task_name":"Image Reconstruction"},{"task_slug":"multi-class-anomaly-detection","task_name":"Multi-class Anomaly Detection"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/multi-class-anomaly-detection-on-mvtec-ad","task":"Multi-class Anomaly Detection","dataset":"MVTec AD","model":"DiAD","rank_in_archive_order":12,"of":13,"metrics":{"Detection AUROC":"97.2","Segmentation AUROC":"96.8"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2312.06607","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2312.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/lewandofskee/DiAD","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":4,"ran_violates":2,"ran_draft_wrong":2,"unverified":3},"by_repo_kind":{"official":{"samples":11,"ran":8,"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":"aace8d0be1f68d91","entry":"data_transforms","repo":"lewandofskee/DiAD","repo_kind":"official","path":"mvtecad_dataloader.py","file_url":"https://github.com/lewandofskee/DiAD/blob/HEAD/mvtecad_dataloader.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"aace8d0be1f68d91"}},{"code_sha256_prefix":"424012cb37b31172","entry":"default","repo":"lewandofskee/DiAD","repo_kind":"official","path":"ldm/modules/attention.py","file_url":"https://github.com/lewandofskee/DiAD/blob/HEAD/ldm/modules/attention.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"424012cb37b31172"}},{"code_sha256_prefix":"aa5486a3650902d8","entry":"exists","repo":"lewandofskee/DiAD","repo_kind":"official","path":"ldm/modules/attention.py","file_url":"https://github.com/lewandofskee/DiAD/blob/HEAD/ldm/modules/attention.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"aa5486a3650902d8"}},{"code_sha256_prefix":"0dbf855dab1ab575","entry":"get_node_name","repo":"lewandofskee/DiAD","repo_kind":"official","path":"build_model.py","file_url":"https://github.com/lewandofskee/DiAD/blob/HEAD/build_model.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"0dbf855dab1ab575"}},{"code_sha256_prefix":"237671f7fa1d1c84","entry":"gt_transforms","repo":"lewandofskee/DiAD","repo_kind":"official","path":"mvtecad_dataloader.py","file_url":"https://github.com/lewandofskee/DiAD/blob/HEAD/mvtecad_dataloader.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"237671f7fa1d1c84"}},{"code_sha256_prefix":"b1368330cf0f5642","entry":"isimage","repo":"lewandofskee/DiAD","repo_kind":"official","path":"ldm/util.py","file_url":"https://github.com/lewandofskee/DiAD/blob/HEAD/ldm/util.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b1368330cf0f5642"}},{"code_sha256_prefix":"d72762b700feee6f","entry":"ismap","repo":"lewandofskee/DiAD","repo_kind":"official","path":"ldm/util.py","file_url":"https://github.com/lewandofskee/DiAD/blob/HEAD/ldm/util.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d72762b700feee6f"}},{"code_sha256_prefix":"9a299fe5ae09e407","entry":"uniq","repo":"lewandofskee/DiAD","repo_kind":"official","path":"ldm/modules/attention.py","file_url":"https://github.com/lewandofskee/DiAD/blob/HEAD/ldm/modules/attention.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9a299fe5ae09e407"}},{"code_sha256_prefix":"cfc17707f35e7ec4","entry":"get_state_dict","repo":"lewandofskee/DiAD","repo_kind":"official","path":"finetune_autoencoder.py","file_url":"https://github.com/lewandofskee/DiAD/blob/HEAD/finetune_autoencoder.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"cfc17707f35e7ec4"}},{"code_sha256_prefix":"df733a879693145d","entry":"load_state_dict","repo":"lewandofskee/DiAD","repo_kind":"official","path":"finetune_autoencoder.py","file_url":"https://github.com/lewandofskee/DiAD/blob/HEAD/finetune_autoencoder.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"df733a879693145d"}},{"code_sha256_prefix":"6b4c1a8ce5fb7282","entry":"log_txt_as_img","repo":"lewandofskee/DiAD","repo_kind":"official","path":"ldm/util.py","file_url":"https://github.com/lewandofskee/DiAD/blob/HEAD/ldm/util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"6b4c1a8ce5fb7282"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}