Towards Generalizable 3D Anomaly Detection via Relational Inconsistency Modeling¶
会议: NeurIPS2026
arXiv: 2609.35059
代码: https://github.com/VisualScienceLab-KHU/GRIM
领域: 3D 视觉 / 异常检测
关键词: 点云异常检测、关系不一致性、几何图、样本内聚类、伪异常监督
一句话总结¶
GRIM 用正常点云生成局部关系破坏作为监督,通过边感知图细化与样本内簇偏差建模学习缺陷判据,在 Anomaly-ShapeNet 达到 97.4/94.5 的物体级/点级 AUROC,直接迁移到 Real3D-AD 仍达到 83.6/89.6。
研究背景与动机¶
工业点云缺陷不一定表现为一个局部区域本身“从未见过”:一个表面片段单独看可能合理,却与周围表面的方向、曲率或连接关系不协调。现有方法通常只从无缺陷样本学习正常分布。重建方法用重建误差评分,特征匹配方法用测试特征与正常参考的距离评分;前者可能同时重建真实缺陷,后者可能把罕见但正常的结构判为异常。两者都没有直接教模型区分“正常变化”和“破坏结构关系的变化”。
这一问题在统一多类别训练中尤其突出。每类一个模型可以缩窄正常分布,但部署维护成本高;把不同物体交给同一个模型,又会让正常结构更加多样、分布互相交叠。跨域时类别、扫描条件和可见几何继续变化,单纯记住源域正常形状更难可靠迁移。本文因此不尝试列举全部缺陷外观,而是让模型学习较少依赖物体类别的几何不一致性。
伪异常在这里不是“真实缺陷数据库”的替代品,而是可控训练干预:只改变正常物体的一小块,保留周围结构,观察被改变区域与邻域及相似结构之间的兼容性。核心 idea:把异常从“离正常分布有多远”改写为“局部结构是否破坏几何关系”,用伪异常监督同时训练邻域关系表示和结构同伴中的相对偏差判别。
方法详解¶
整体框架¶
GRIM 的输入只有点云,输出为点级异常图和物体级异常分数。训练的真实数据全部是正常样本,不使用真实缺陷标签;伪异常生成器额外提供被修改点的二值掩码。统一训练将全部类别合并,不给模型类别标签,也不训练类别专属参数。
输入先经 FPS 选中心并收集邻域,由冻结的 PointMAE 提取局部特征。随后边感知图细化(EGR)让区域特征获得邻近结构关系;簇偏差建模(CDM)在当前样本内部寻找结构相似的同伴,将相对偏差嵌入与细化特征拼接,再交给共享分类器。推理复用 EGR、CDM 和分类器,但不生成伪异常,也不使用监督掩码。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["训练:真实正常点云"] --> B["伪异常关系监督"]
B -->|正常样本与伪异常| C["FPS 分组<br/>冻结 PointMAE"]
T["推理:测试点云"] --> C
C --> D["边感知图细化 EGR"]
D --> E["簇偏差建模 CDM"]
E --> F["共享分类器<br/>点图与物体分数"]
B -.->|仅训练:掩码与簇均衡 BCE| F
B -.->|仅训练:异常标签与偏差损失| E
关键设计¶
1. 伪异常关系监督:用局部干预教模型识别结构破坏
生成器随机选一个种子点,取近邻形成小片区,通常修改物体约 1% 的点。PCA 估计片区法向,并相对点云全局中心统一为朝外方向。凸起(bulge)沿法向向外推,凹陷(sink)沿反方向向内推;位移在片区中心较大、向边缘平滑衰减,尺度从 0.01–0.03 均匀采样。这样被修改区域仍保留物体语境,却破坏局部表面连续性和与邻域的几何关系。
孔洞(hole)不是简单删除点:它把中心点推向边界并略微向内移动,同时轻微扩张边界环,形成局部空腔式形变。所有被修改点得到异常标签,未修改点保持正常标签;生成后对点云整体随机旋转,掩码不变。三种原语分别提供向外、向内和局部表面支撑不足的监督,不构成完整缺陷 taxonomy。学习目标是提炼可迁移的关系破坏信号,而非让训练缺陷外观穷尽测试缺陷。
2. 边感知图细化 EGR:把局部形状放回邻域关系中判断
FPS 选择 2048 个代表中心,每组包含 128 个近邻点;先减去各组中心,再经在 ModelNet40 上预训练且冻结的 PointMAE 编码。每个组对应一个图节点,组质心之间建立有向 32-NN 图。局部编码负责“这块是什么形状”,图边则补上局部归一化后不再充分表达的相对位置与表面关系。
每组计算质心、逐坐标标准差、表面法向和曲率。法向取协方差矩阵最小特征值对应的特征向量,曲率取该最小特征值占全部特征值之和的比例。对从组 \(j\) 指向组 \(i\) 的边,8 维初始关系特征为:
这里分别表达相对位移、点分布宽度变化、法向不一致和曲率差异;法向内积取绝对值,避免法向正负号本身被误判为几何异常。注意它并非只按特征相似度连边,而是显式输入几何关系。
每层先把两端节点特征与当前边特征拼接,更新边表示;再用目标节点的查询与更新边表示计算注意力,对该节点所有入边归一化。源节点的投影特征经过注意力加权并求和,得到邻域消息,节点与边都通过残差连接更新。实现使用 2 层细化、4 个注意力头、384 维注意力表示。这样同一种局部表面在不同邻接关系下可以形成不同特征,检测依据不再只有片区的孤立外观。
3. 簇偏差建模 CDM:与当前物体中的结构同伴比较,而非检索正常库
邻域关系之外,还需要区分“与同类结构不兼容”和“只是属于另一种正常结构”。CDM 对一个样本的细化节点特征进行 \(\ell_2\) 归一化,用 k-means++ 初始化并迭代 8 次,形成 64 个簇。每个簇中心是成员特征均值再归一化;每个节点只与自己所属簇的中心比较。测试时也对每个测试样本执行同样的聚类,不保存跨样本正常 memory bank,也不从训练集检索中心。
节点与所属中心的余弦距离定义为:
随后在簇内用 0.1–0.9 分位数做 min–max 归一化,将相对距离转成 128 维正弦嵌入,温度为 10000、尺度为 10,再经线性投影。偏差嵌入与 EGR 细化特征拼接,输入隐藏维度为 [256, 128]、dropout 为 0.1 的共享 MLP 分类器。最终异常分数由分类器预测,不直接等于余弦距离;因此模型同时拥有结构内容和相对同伴偏差两类证据。原文未在此处充分说明分位数归一化的裁剪及退化簇处理,不补写这些实现细节。
分类器产生节点分数后,每个原始点继承最近采样中心的分数,再进行 Gaussian smoothing;平滑点图的最大值作为物体异常分数。取最大值前不对单个样本的节点或点分数做 min–max 归一化,以免每个正常物体也被强行拉出高分点。评估时仅在得到物体分数后,对每类别内的评估样本进行 min–max 归一化;这一评估处理应与不使用类别标签的模型训练区分。
一个完整示例¶
以一个局部表面有凹陷的测试物体为例,下面只是机制示意,不是新增实验。点云被组织为 2048 个组,凹陷附近的组虽然仍可能有常见局部表面特征,但与周围组的法向、曲率和位置关系发生变化;EGR 把这些不协调的信息传播到区域表示中。
CDM 接着在该物体内部形成 64 个结构同伴簇。若凹陷相关节点仍被分到大部分由正常表面构成的簇,其偏离中心的程度便成为额外判别证据。分类器结合细化特征和偏差嵌入给节点打分,最近中心映射与平滑把分数还原为点图,最后取最大点分数判定物体是否异常。若异常区域很大且内部一致、单独形成一个簇,偏差可能反而很小;这也是作者明确承认的适用边界。
损失函数 / 训练策略¶
组标签由其成员点标签取最大值得到:只要含一个伪异常点,该组就是异常组。分类损失先在每个簇内平均 BCE,再对簇平均,避免数量占优的正常结构簇垄断梯度。另一个偏差损失只作用于伪异常节点:当节点与所属中心的余弦相似度高于 margin \(\delta\) 时给予惩罚,使异常节点不能轻易靠近同伴中心。
\(\mathcal{G}_1\) 为异常节点集合。缓存给出 margin 的定义,但未给出其具体取值,不猜补。偏差损失塑造表示,偏差嵌入向分类器提供相对位置,两者作用不同,不能把 CDM 简化为普通聚类后直接用距离检测。
每个正常训练样本生成 4 个伪异常变体,bulge/sink/hole 的采样概率为 0.4/0.4/0.2。PointMAE 保持冻结,其余模型以 AdamW 训练 100 epochs,batch size 为 1,学习率与 weight decay 均为 \(10^{-4}\),使用 StepLR 衰减。单张 RTX 3090 上训练约 12 小时;跨域测试直接使用源域模型,不微调、不做目标域适配。
实验关键数据¶
主实验¶
Anomaly-ShapeNet 含 40 类、1600 个样本,每类 4 个正常训练样本;Real3D-AD 含 12 类,每类同样只有 4 个正常训练样本,且训练为 360° 捕获、测试为单视角扫描。下表取原文表 1–2,A 表示 Anomaly-ShapeNet,R 表示 Real3D-AD;数值为类别平均 AUROC(%),越高越好。
| 训练 → 测试 | 方法 / 设置 | O-AUROC | P-AUROC |
|---|---|---|---|
| A → A | MC3D-AD,统一模型 | 84.2 | 75.9 |
| A → A | GRIM,统一模型 | 97.4 | 94.5 |
| R → R | MC3D-AD,统一模型 | 78.2 | 76.8 |
| R → R | GRIM,统一模型 | 87.2 | 91.3 |
| A → R | MC3D-AD,无目标域适配 | 55.4 | 38.3 |
| A → R | GRIM,无目标域适配 | 83.6 | 89.6 |
| R → A | MC3D-AD,无目标域适配 | 78.3 | 48.8 |
| R → A | GRIM,无目标域适配 | 91.7 | 78.9 |
与各指标原有最优方法比较,GRIM 在 A 上的物体级增益是相对 PASDF 的 7.4 个百分点,点级增益是相对 PO3AD 的 4.7;在 R 上分别是相对 PASDF 的 7.0 和相对 Reg2Inv 的 3.5。这里的基线多数是每类单独训练,不应忽略与统一模型的协议差异;附录表 11–12 还提供 PO3AD、PASDF 统一重训练及跨域比较,方向上支持结论。
原文数值冲突:正文 §4.2 声称 R 上相对 MC3D-AD 的增益为 8.9/14.4,但表 1 的 78.2/76.8 与 87.2/91.3 算得 9.0/14.5 个百分点。这里保留原始表值并同时注明正文说法,不替作者改成一致。A 上的 13.2/18.6 则与表值一致。
A → R 时,GRIM 相对在 R 上训练的自身模型只下降 3.6/1.7;反向 R → A 下降 5.7/15.6,说明跨域点级定位依然存在明显方向差异。上述均为 AUROC,不是固定阈值 FPR/FNR;引言图 2 的误报漏报分析另采用固定 TPR/TNR,不能用这张表替代其阈值证据。
消融实验¶
下表摘取原文表 3 和附录表 10。表 3 比较模块组合,表 10 保持 CDM 聚类过程不变、拆分偏差损失与偏差嵌入,四列均为 AUROC(%)。
| 配置 | A → A 物体级 | A → A 点级 | A → R 物体级 | A → R 点级 |
|---|---|---|---|---|
| 骨干 + 分类器,无 EGR/CDM | 89.5 | 58.1 | 56.9 | 42.8 |
| 仅加 EGR | 94.3 | 86.4 | 59.4 | 53.0 |
| 仅加 CDM | 96.6 | 79.8 | 62.3 | 64.9 |
| EGR + 完整 CDM | 97.4 | 94.5 | 83.6 | 89.6 |
| 完整模型去掉偏差损失 | 96.6 | 92.1 | 79.3 | 84.1 |
| 完整模型去掉偏差嵌入 | 94.9 | 88.7 | 68.5 | 66.8 |
| 保留聚类,去掉损失与嵌入 | 94.3 | 86.4 | 59.4 | 53.0 |
仅 EGR 将 A → A 点级 AUROC 提升 28.3;仅 CDM 相对骨干将 A → R 点级提升 22.1。二者联合的跨域表现明显高于任一单模块;从完整模型去掉偏差嵌入,跨域点级下降 22.8,而去掉偏差损失下降 5.5,显示显式把相对偏差信息交给分类器尤其重要。
原文表 4 还表明,伪异常种类越多不意味着各指标单调提高。下表只保留能说明这一点的组合,不将三原语解释为缺陷覆盖清单。
| 训练伪异常 | A → A 物体级 | A → A 点级 | A → R 物体级 | A → R 点级 |
|---|---|---|---|---|
| sink | 98.5 | 95.9 | 81.2 | 81.8 |
| bulge + hole | 98.6 | 96.0 | 80.3 | 87.9 |
| sink + hole | 99.2 | 98.1 | 80.3 | 86.7 |
| bulge + sink + hole | 97.4 | 94.5 | 83.6 | 89.6 |
关键发现¶
- 三种原语联合在所测 A → R 设置下最好,但若只看 A → A,sink + hole 的 99.2/98.1 高于完整配置;互补监督与域内最优不是一回事。
- 附录表 9 在 R 上用 hole-only 训练得到 87.1/89.2,而真实测试缺陷为 bulge/sink,不含 hole;与三原语的 87.2/91.3 接近,为跨缺陷类型迁移提供有限但直接的证据。
- 图 5 中异常特征的平均中心距离为 0.73,全部特征平均为 0.48;“全部”包含异常,不是纯正常对照。附录表 8 的 broken/bending/scratch 也没有由生成器直接合成,不能把 concavity 当成完全未知类型,因为它与 sink 几何相近。
- 附录表 5 将簇数从 16、32 增至 64,A → R 点级 AUROC 为 73.3、79.0、89.6;只支持这个已测范围,不能外推为簇越多越好。表 6 中偏差权重 0.5/1.0/1.5 的跨域点级值为 88.4/86.7/89.6,同样不是单调序列。
- 附录表 7 在 RTX 3090、A 的 1312 个测试样本上测得平均推理时间 0.35 s,对比 MC3D-AD 的 0.84 s,参数量 34.0M 对 34.2M;这是特定硬件和数据设置,不是通用实时性保证。
亮点与洞察¶
- 监督对象从外观模板变成关系违例。伪异常不必与真实缺陷精确对应,也能迫使模型学习更容易跨类别复用的几何兼容性线索。
- EGR 与 CDM 提供不同参照系。前者看空间邻域是否协调,后者看当前物体中的结构同伴是否一致,联合消融比单模块更能说明互补价值。
- 偏差既是训练约束又是分类特征。保持聚类不变的拆分实验避免把收益误归因于一个新聚类算法,表明表示塑形和偏差注入分别有贡献。
局限与展望¶
- 作者明确指出 CDM 依赖异常相对稀疏。大而连贯的异常可能自成一簇,中心距离很小;分类器同时接收 EGR 特征并不能自动证明这种情况下仍鲁棒,减少簇数只是待验证方向。
- 只用几何会遗漏颜色变化等缺陷线索。作者建议融合 RGB-D;扩展时应同时验证多模态关系是否仍能跨域,而不是仅增加外观分支。
- 两个数据集及三个局部原语不足以覆盖工业缺陷全貌。薄结构、复杂拓扑和大范围形变下的法向估计、朝外定向及同伴簇可靠性仍需专门测试。
- AUROC 支持分数排序改善,不直接保证实际部署阈值下的低误报。后续应报告统一阈值、跨类别校准和固定召回率误报,并增加多随机种子与误差区间。
相关工作与启发¶
- vs MC3D-AD:同样采用统一模型,但 MC3D-AD 通过几何重建学习正常性;GRIM 用伪异常直接监督关系违例,跨域定位差距比域内更突出。
- vs PO3AD / R3D-AD:这些方法分别利用伪异常学习点偏移或重建;GRIM 不把合成形态覆盖率当作目标,而把合成变化用于训练关系判据。共同使用伪异常,不代表学习目标相同。
- vs 正常特征库方法:GRIM 的 CDM 中心来自当前点云内部,不是训练正常特征库。可迁移启发是在新的结构化异常任务中构造“当前样本内同伴”,同时显式检查异常自成群时的失效条件。
评分¶
- 新颖性: 4/5。关系违例视角与 EGR/CDM 联合设计有辨识度,但图消息传递和 k-means 本身不是新算法。
- 实验充分度: 4/5。双向跨域、模块拆分、缺陷类型及统一重训练证据较丰富,仍缺大异常压力测试与多次运行统计。
- 写作质量: 4/5。机制和边界解释清楚,但 Real3D-AD 增益存在正文与表格算术不一致,部分实现参数未充分给出。
- 价值: 4/5。为少正常样本的统一点云检测提供可复用路线,工业泛化价值仍取决于更广泛缺陷与扫描条件验证。