{"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/g-2-sf-miad-geometry-guided-score-fusion-for","title":"G$^{2}$SF-MIAD: Geometry-Guided Score Fusion for Multimodal Industrial Anomaly Detection","arxiv_id":"2503.10091","date":"2025-03-13","proceeding":null,"authors":["Chengyu Tao","Xuanming Cao","Juan Du"],"abstract":"Industrial quality inspection plays a critical role in modern manufacturing by identifying defective products during production. While single-modality approaches using either 3D point clouds or 2D RGB images suffer from information incompleteness, multimodal anomaly detection offers promise through the complementary fusion of crossmodal data. However, existing methods face challenges in effectively integrating unimodal results and improving discriminative power. To address these limitations, we first reinterpret memory bank-based anomaly scores in single modalities as isotropic Euclidean distances in local feature spaces. Dynamically evolving from Eulidean metrics, we propose a novel \\underline{G}eometry-\\underline{G}uided \\underline{S}core \\underline{F}usion (G$^{2}$SF) framework that progressively learns an anisotropic local distance metric as a unified score for the fusion task. Through a geometric encoding operator, a novel Local Scale Prediction Network (LSPN) is proposed to predict direction-aware scaling factors that characterize first-order local feature distributions, thereby enhancing discrimination between normal and anomalous patterns. Additionally, we develop specialized loss functions and score aggregation strategy from geometric priors to ensure both metric generalization and efficacy. Comprehensive evaluations on the MVTec-3D AD dataset demonstrate the state-of-the-art detection performance of our method with low positive rate and better recall, which is essential in industrial application, and detailed ablation analysis validates each component's contribution.","url_abs":"https://arxiv.org/abs/2503.10091v1","url_pdf":"https://arxiv.org/pdf/2503.10091v1.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":[],"tasks":[{"task_slug":"anomaly-detection","task_name":"Anomaly Detection"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2503.10091","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2503.10091"}},"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":"deterministic:regex_extraction","url":"https://github.com/ctaoaa/G2SF","reach":null}],"summary":{"ran":1,"ran_draft_wrong":1,"ran_honours":2,"unverified":7},"by_repo_kind":{"found_in_text":{"samples":11,"ran":4,"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":"b292ef3ea5250431","entry":"WDSADMarginLoss","repo":"ctaoaa/G2SF","repo_kind":"found_in_text","path":"G2SF_GITHUB/Fusion/fusion_engine_v2.py","file_url":"https://github.com/ctaoaa/G2SF/blob/HEAD/G2SF_GITHUB/Fusion/fusion_engine_v2.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b292ef3ea5250431"}},{"code_sha256_prefix":"dab20c12aac5426b","entry":"get_scale","repo":"ctaoaa/G2SF","repo_kind":"found_in_text","path":"G2SF_GITHUB/Fusion/fusion_engine_v2.py","file_url":"https://github.com/ctaoaa/G2SF/blob/HEAD/G2SF_GITHUB/Fusion/fusion_engine_v2.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":"dab20c12aac5426b"}},{"code_sha256_prefix":"16199d8c3e9c8b3a","entry":"l1_regularization","repo":"ctaoaa/G2SF","repo_kind":"found_in_text","path":"G2SF_GITHUB/Fusion/fusion_engine_v2.py","file_url":"https://github.com/ctaoaa/G2SF/blob/HEAD/G2SF_GITHUB/Fusion/fusion_engine_v2.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"16199d8c3e9c8b3a"}},{"code_sha256_prefix":"3857baec9affd767","entry":"l2_regularization","repo":"ctaoaa/G2SF","repo_kind":"found_in_text","path":"G2SF_GITHUB/Fusion/fusion_engine_v2.py","file_url":"https://github.com/ctaoaa/G2SF/blob/HEAD/G2SF_GITHUB/Fusion/fusion_engine_v2.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3857baec9affd767"}},{"code_sha256_prefix":"120da69785b147cc","entry":"FusionModelV2","repo":"ctaoaa/G2SF","repo_kind":"found_in_text","path":"G2SF_GITHUB/Fusion/fusion_engine_v2.py","file_url":"https://github.com/ctaoaa/G2SF/blob/HEAD/G2SF_GITHUB/Fusion/fusion_engine_v2.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":"120da69785b147cc"}},{"code_sha256_prefix":"49e18d07c7924b81","entry":"LinearBlock","repo":"ctaoaa/G2SF","repo_kind":"found_in_text","path":"G2SF_GITHUB/Fusion/fusion_engine_v2.py","file_url":"https://github.com/ctaoaa/G2SF/blob/HEAD/G2SF_GITHUB/Fusion/fusion_engine_v2.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":"49e18d07c7924b81"}},{"code_sha256_prefix":"cf61e747b2182da7","entry":"MLPnet","repo":"ctaoaa/G2SF","repo_kind":"found_in_text","path":"G2SF_GITHUB/Fusion/fusion_engine_v2.py","file_url":"https://github.com/ctaoaa/G2SF/blob/HEAD/G2SF_GITHUB/Fusion/fusion_engine_v2.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":"cf61e747b2182da7"}},{"code_sha256_prefix":"44b75c572fb89506","entry":"MMScoringTrainer","repo":"ctaoaa/G2SF","repo_kind":"found_in_text","path":"G2SF_GITHUB/Fusion/fusion_engine_v2.py","file_url":"https://github.com/ctaoaa/G2SF/blob/HEAD/G2SF_GITHUB/Fusion/fusion_engine_v2.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":"44b75c572fb89506"}},{"code_sha256_prefix":"e89daa54904fb1fb","entry":"MultiModalGateNet","repo":"ctaoaa/G2SF","repo_kind":"found_in_text","path":"G2SF_GITHUB/Fusion/fusion_engine_v2.py","file_url":"https://github.com/ctaoaa/G2SF/blob/HEAD/G2SF_GITHUB/Fusion/fusion_engine_v2.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":"e89daa54904fb1fb"}},{"code_sha256_prefix":"7c4de0bc86a2ecd7","entry":"get_dataloader","repo":"ctaoaa/G2SF","repo_kind":"found_in_text","path":"G2SF_GITHUB/Fusion/fusion_engine_v2.py","file_url":"https://github.com/ctaoaa/G2SF/blob/HEAD/G2SF_GITHUB/Fusion/fusion_engine_v2.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":"7c4de0bc86a2ecd7"}},{"code_sha256_prefix":"163820e4f0bc74bd","entry":"get_sampler","repo":"ctaoaa/G2SF","repo_kind":"found_in_text","path":"G2SF_GITHUB/Fusion/fusion_engine_v2.py","file_url":"https://github.com/ctaoaa/G2SF/blob/HEAD/G2SF_GITHUB/Fusion/fusion_engine_v2.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":"163820e4f0bc74bd"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}