M3DM多模态工业异常检测:教学大纲(系列开篇)
目录
- 📚 M3DM 多轮教学大纲
- 第一轮:工业异常检测全貌——你在解决什么问题?
- 第二轮:M3DM 的前置基石——PatchCore 与记忆库
- 第三轮:M3DM 的两个“眼睛”——预训练特征提取器
- 第四轮:M3DM 总览——三大模块的数据流
- 第五轮:PFA(Point Feature Alignment)点特征对齐
- 第六轮:UFF(Unsupervised Feature Fusion)无监督特征融合
- 第七轮:DLF(Decision Layer Fusion)决策层融合
- 第八轮:论文实验解读与代码复现指引
- 结语
📚 M3DM 多轮教学大纲
本系列计划用 8 轮内容,带你从零基础工业视觉一路走到能读懂、复现并迁移 M3DM(Multimodal Industrial Anomaly Detection via Hybrid Fusion)这篇工作。如果你是做 2.5D/深度图异常检测的同学,也能从中获得把 M3DM 思想迁移到自己数据上的思路。
第一轮:工业异常检测全貌——你在解决什么问题?
- 什么是工业异常检测(IAD)?和分类、检测任务的区别
- 为什么工业场景下“只有正常样本、没有缺陷样本”?→ 引出无监督/单类学习
- 2D 异常检测的局限:颜色上看不出来的缺陷怎么办?
- 3D 点云能带来什么额外信息?(几何形状、深度、表面起伏)
- 你的 2.5D(深度图/RGB-D)和 M3DM 的 3D 点云有什么关系?
- MVTec 3D-AD 数据集介绍:有哪些类别、数据格式、评价指标(I-AUROC, P-AUROC, AUPRO)
第二轮:M3DM 的前置基石——PatchCore 与记忆库
因为 M3DM 的决策层直接继承了 PatchCore 的思想,必须先懂这个。
- 传统思路:训练一个模型 → 有参数更新
- PatchCore 的“反直觉”思路:不训练,只记住
- Memory Bank(记忆库)是什么?怎么构建?怎么查?
- Coreset Sampling(核心集采样):内存太大怎么办?
- 异常分数怎么算?最近邻距离
- 和你之前跑过的 PatchCore 联系起来
第三轮:M3DM 的两个“眼睛”——预训练特征提取器
M3DM 自己不训练特征提取网络,而是用别人预训练好的模型。为什么?
- DINO(自监督视觉 Transformer):让模型自己学图像特征
- 什么是自监督学习?和 supervised 的区别
- ViT(Vision Transformer)基础:图片切成 patch 做注意力
- PointMAE(点云掩码自编码器):3D 点云的特征怎么提?
- 点云和图像的本质区别:不规则、无序、稀疏
- MAE(Masked Autoencoder)思想:遮住一部分,重建出来
- 预训练模型的“迁移学习”逻辑:站在巨人肩膀上
第四轮:M3DM 总览——三大模块的数据流
终于进入正题,先建立一个全局地图。
- M3DM 整体架构图:输入 → PFA → UFF → DLF → 输出
- 为什么叫“混合融合”(Hybrid Fusion)?
- 直接拼接特征的问题:不同模态互相干扰
- M3DM 的两层融合策略:特征层融合(UFF) + 决策层融合(DLF)
- 数据流走一遍:一张 RGB 图 + 一个点云 → 异常分数 + 异常分割图
- 三个记忆库(RGB / Point / Fused)各司其职
第五轮:PFA(Point Feature Alignment)点特征对齐
解决“RGB 像素和 3D 点不在同一个坐标系”的问题。
- 为什么需要对齐?RGB 是 2D 网格,点云是 3D 散点
- 最远点采样(FPS):从 N 个点中选 M 个代表点
- 点特征提取:Point Transformer 怎么工作(简化版)
- 特征插值:反距离权重,把 M 个中心点特征还原到所有点
- 投影到 2D:用相机参数把 3D 点映射到图像平面
- 最终输出:和 RGB 一样大小的 2D 特征图,可以逐 patch 对比
第六轮:UFF(Unsupervised Feature Fusion)无监督特征融合
M3DM 最核心的创新,用对比学习让两种模态“互相交流”。
- 什么是对比学习(Contrastive Learning)?
- 正样本对(同一个位置的 RGB patch 和 Point patch)→ 拉近
- 负样本对(不同位置的 patch)→ 推远
- InfoNCE 损失的直观理解:让相似的更相似,不相似的更不相似
- 逐片对比损失(Patch-wise Contrastive Loss)的设计细节
- MLP 投影头的作用:把两种模态特征映射到同一个对比空间
- 融合特征的生成:对比学习后的特征拼接
第七轮:DLF(Decision Layer Fusion)决策层融合
三个记忆库 + 两个分类器,做最终决定。
- 为什么要三个记忆库?而不是只保留融合特征?
- 信息丢失问题:融合过程中可能丢掉单模态的关键线索
- 有些缺陷只在 RGB 可见,有些只在 3D 可见
- 每个记忆库独立做异常检测:RGB 库、Point 库、Fused 库
- OCSVM(一类支持向量机):把三个库的异常分数综合起来
- 两个 OCSVM 分别做什么:D_a 负责异常评分,D_s 负责异常分割
- 最终的异常分数公式和分割公式
第八轮:论文实验解读与代码复现指引
- MVTec 3D-AD 上的定量结果:和 SOTA 比怎么样?
- 消融实验(Ablation Study):每个模块的贡献有多大?
- 可视化结果:M3DM 能检测到什么类型的缺陷?
- 官方代码结构走读(GitHub: nomewang/M3DM)
- 环境配置要点:DINO、PointMAE 怎么加载
- 给你 2.5D 场景的启发:M3DM 的思想怎么迁移到你的深度图数据上?
结语
这八轮内容会从“为什么做”讲到“怎么做”,最后再落到“怎么用到自己的数据上”。希望这篇大纲能帮你建立一条清晰的学习路线,后续每一轮会陆续发布,敬请期待。
