{"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-2509-02101","title":"SALAD -- Semantics-Aware Logical Anomaly Detection","arxiv_id":"2509.02101","date":"2025-09-02","proceeding":"ICCV","authors":["Matic Fučka","Vitjan Zavrtanik","Danijel Skočaj"],"abstract":"Recent surface anomaly detection methods excel at identifying structural anomalies, such as dents and scratches, but struggle with logical anomalies, such as irregular or missing object components. The best-performing logical anomaly detection approaches rely on aggregated pretrained features or handcrafted descriptors (most often derived from composition maps), which discard spatial and semantic information, leading to suboptimal performance. We propose SALAD, a semantics-aware discriminative logical anomaly detection method that incorporates a newly proposed composition branch to explicitly model the distribution of object composition maps, consequently learning important semantic relationships. Additionally, we introduce a novel procedure for extracting composition maps that requires no hand-made labels or category-specific information, in contrast to previous methods. By effectively modelling the composition map distribution, SALAD significantly improves upon state-of-the-art methods on the standard benchmark for logical anomaly detection, MVTec LOCO, achieving an impressive image-level AUROC of 96.1%. Code: https://github.com/MaticFuc/SALAD","url_abs":"https://arxiv.org/abs/2509.02101","url_pdf":"https://arxiv.org/pdf/2509.02101","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=2509.02101","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2509.02101"}},"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/MaticFuc/SALAD","reach":null}],"summary":{"ran":6,"unverified":2},"by_repo_kind":{"found_in_text":{"samples":8,"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":"d2a4d53bcd5e498f","entry":"AutoEncoder","repo":"MaticFuc/SALAD","repo_kind":"found_in_text","path":"ae.py","file_url":"https://github.com/MaticFuc/SALAD/blob/HEAD/ae.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d2a4d53bcd5e498f"}},{"code_sha256_prefix":"24ae4e9568205245","entry":"Decoder","repo":"MaticFuc/SALAD","repo_kind":"found_in_text","path":"ae.py","file_url":"https://github.com/MaticFuc/SALAD/blob/HEAD/ae.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"24ae4e9568205245"}},{"code_sha256_prefix":"b4454cfb0d4d9a77","entry":"DownBlock","repo":"MaticFuc/SALAD","repo_kind":"found_in_text","path":"ae.py","file_url":"https://github.com/MaticFuc/SALAD/blob/HEAD/ae.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b4454cfb0d4d9a77"}},{"code_sha256_prefix":"702a4dec7df1f104","entry":"Downsample","repo":"MaticFuc/SALAD","repo_kind":"found_in_text","path":"ae.py","file_url":"https://github.com/MaticFuc/SALAD/blob/HEAD/ae.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"702a4dec7df1f104"}},{"code_sha256_prefix":"28a46dd5dd43bb92","entry":"Encoder","repo":"MaticFuc/SALAD","repo_kind":"found_in_text","path":"ae.py","file_url":"https://github.com/MaticFuc/SALAD/blob/HEAD/ae.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"28a46dd5dd43bb92"}},{"code_sha256_prefix":"9dfec007fc2d8f36","entry":"Upsample","repo":"MaticFuc/SALAD","repo_kind":"found_in_text","path":"ae.py","file_url":"https://github.com/MaticFuc/SALAD/blob/HEAD/ae.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9dfec007fc2d8f36"}},{"code_sha256_prefix":"f8f33b1e961ecdca","entry":"ConvBlock","repo":"MaticFuc/SALAD","repo_kind":"found_in_text","path":"ae.py","file_url":"https://github.com/MaticFuc/SALAD/blob/HEAD/ae.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":"f8f33b1e961ecdca"}},{"code_sha256_prefix":"e9961b404f0444f1","entry":"UpBlock","repo":"MaticFuc/SALAD","repo_kind":"found_in_text","path":"ae.py","file_url":"https://github.com/MaticFuc/SALAD/blob/HEAD/ae.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":"e9961b404f0444f1"}}]},"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}