Normal-Abnormal Guided Generalist Anomaly Detection¶
会议: NeurIPS 2025
arXiv: 2510.00495
代码: GitHub
领域: 异常检测 / 计算机视觉
关键词: 通用异常检测, 跨域迁移, 残差学习, 正常-异常参考, 元学习
一句话总结¶
NAGL 框架首次在通用异常检测(GAD)中引入正常+异常混合参考样本,通过残差挖掘(RM)和异常特征学习(AFL)两个注意力模块,在残差空间中学习可迁移的异常模式,仅用 1 个异常样本即可在跨域场景中大幅超越仅使用正常参考的方法。
研究背景与动机¶
视觉异常检测在工业质检和医学诊断中至关重要。通用异常检测(GAD)旨在在原始域训练统一模型,然后直接迁移到新目标域进行异常检测,解决目标域数据稀缺和隐私限制的问题。
现有 GAD 方法(如 InCTRL、ResAD)存在关键局限:
仅使用正常样本作为参考:模型缺乏对异常特征的直接认知,判别能力有限
忽视现实中可用的异常样本:实际场景中通常能获得少量异常样本(如缺陷零件、已诊断病例),这些样本包含宝贵的异常特征信息但未被利用
直觉上,引入异常参考应该有帮助,但简单方法行不通: - KNN 方法(远离正常 + 靠近异常 = 异常):训练无关,缺乏适应性,且实验发现存在严重的误激活问题——正常区域被错误地标记为异常 - 现有 GAD 方法基于查询与正常参考的残差来保证迁移性,但无法直接扩展到正常-异常混合参考场景
核心挑战在于:如何有效利用异常参考样本的信息而不引入噪声?NAGL 的关键洞察是——在残差空间中操作可以同时保持跨域迁移性和异常判别力。
方法详解¶
整体框架¶
NAGL 的推理流程:给定查询图像和正常+异常参考集 → 1. 预训练 ViT 骨干提取特征 2. 查询与正常参考做最近邻搜索 → 正常引导分数图 \(\mathcal{S}_n\) 3. RM 模块从正常-异常参考残差中挖掘异常模式 → 残差代理 4. AFL 模块将残差代理映射到查询图像 → 异常代理 → 异常引导分数图 \(\mathcal{S}_a\) 5. 合并两个分数图 \(\mathcal{S} = \mathcal{S}_n + \mathcal{S}_a\) 得到最终异常定位
关键设计¶
-
正常引导异常分数(Normal-Guided Score):采用 PatchCore 式的最近邻搜索。对查询特征 \(\mathcal{F}^q\) 中的每个 patch \(f_i^q\),在正常参考特征 \(\mathcal{F}^n\) 中找到最近邻 \(f_*^n\),异常分数为 \(\mathcal{S}_n^i = \mathbf{d}(f_i^q, f_*^n)\)(余弦距离)。这提供了基础的异常定位能力,但仅依赖正常参考的判别力有限。
-
残差挖掘模块(Residual Mining, RM):核心目标是从异常参考中提取可迁移的异常模式表示。首先计算异常参考与其最近正常参考之间的残差: $\(\text{Res}(\mathcal{F}^a, \mathcal{F}^n) = \mathcal{F}^a - \mathcal{F}_*^n\)$ 然后设计一个交叉注意力层,以可学习代理 \(\mathcal{P} \in \mathbb{R}^{M \times C}\) 为 Query,异常特征 \(\mathcal{F}^a\) 为 Key,残差为 Value: $\(\widetilde{\mathcal{P}} = \mathbf{SA}_1\left(\text{Softmax}\left(\frac{\mathbf{Q}_1 \mathbf{K}_1^T}{\sqrt{d}} + \mathcal{M}'\right) \mathbf{V}_1\right)\)$ 关键设计是注意力掩码 \(\mathcal{M}' = \alpha(1 - \mathcal{M}^a)\)(\(\alpha\) 为大负值),确保注意力仅聚焦于异常区域的残差。输出的残差代理 \(\widetilde{\mathcal{P}}\) 捕获了异常样本在残差空间中的变化模式——在残差空间操作保证了跨域迁移性,因为不同域的残差特征呈现相似分布。
-
异常特征学习模块(Anomaly Feature Learning, AFL):将残差代理应用于查询图像以发现潜在异常。以残差代理 \(\widetilde{\mathcal{P}}\) 为 Query,查询-正常残差 \(\text{Res}(\mathcal{F}^q, \mathcal{F}^n)\) 为 Key,查询特征 \(\mathcal{F}^q\) 为 Value: $\(\widehat{\mathcal{P}} = \mathbf{SA}_2\left(\text{Softmax}\left(\frac{\mathbf{Q}_2 \mathbf{K}_2^T}{\sqrt{d}}\right) \mathbf{V}_2\right)\)$ 核心思路是:通过比较参考异常-正常残差与查询-正常残差的相似性来发现查询中的异常区域。若查询的某区域残差模式与已知异常残差相似,对应的视觉特征就可能是异常。输出的异常代理 \(\widehat{\mathcal{P}} \in \mathbb{R}^{M \times C}\) 包含查询图像中最具判别性的特征。最终异常引导分数为: $\(\mathcal{S}_a^i = \frac{1}{M} \sum_{m=1}^M 1 - \mathbf{d}(f_i^q, \widehat{\mathcal{P}}_m)\)$
损失函数 / 训练策略¶
在原始域采用元学习策略训练,每个 episode 包含正常-异常参考集和查询图像。损失函数组合分割和分类任务: $\(\mathcal{L} = \mathcal{L}_{cls} + \lambda \mathcal{L}_{seg}\)$ 其中: - \(\mathcal{L}_{seg} = \text{Focal}(\mathcal{S}, \mathcal{M}^q) + \text{Dice}(\mathcal{S}, \mathcal{M}^q)\):像素级异常定位 - \(\mathcal{L}_{cls} = \text{BCE}(s, y^q)\):图像级异常分类,\(s = \mathcal{T}_{0.01}(\mathcal{S})\)(取分数图前 1% 均值) - \(\lambda = 1.0\)
实现细节:ViT-S 骨干(21M 参数,冻结),仅训练注意力模块(总 24.4M 参数)。AdamW 优化器,初始学习率 \(10^{-5}\),在 epoch 10 和 15 降低 10 倍。20 epoch 收敛,每 epoch 500 个 episode。输入分辨率 \(448 \times 448\),可学习代理数 \(M=25\)。正常参考 \(K_1 \in [1,2,4]\),异常参考 \(K_2 = 1\)。
实验关键数据¶
主实验¶
跨域评估:VisA 训练 → MVTecAD 测试,MVTecAD 训练 → VisA/BraTS 测试。
| 设置 | 方法 | MVTecAD Image AUROC | MVTecAD Pixel AUROC | VisA Image AUROC | VisA Pixel AUROC |
|---|---|---|---|---|---|
| \(N^1\) | PatchCore | 83.4 | 92.0 | 79.9 | 95.4 |
| \(N^1\) | WinCLIP | 93.1 | 95.2 | 83.8 | 96.4 |
| \(N^1\) | ResAD | 84.8 | 93.4 | 80.9 | 95.9 |
| \(N^1+A^1\) | Ours | 95.8 | 96.6 | 88.5 | 97.5 |
| \(N^4\) | WinCLIP | 95.2 | 96.2 | 87.3 | 97.2 |
| \(N^4+A^1\) | Ours | 97.1 | 97.0 | 91.2 | 97.8 |
跨域医学数据集(MVTecAD 训练 → BraTS 测试):
| 设置 | 方法 | Image AUROC | Pixel AUROC | Mean |
|---|---|---|---|---|
| \(N^2\) | ResAD | 66.2 | 91.5 | 78.9 |
| \(N^2+A^1\) | Ours | 82.1 | 96.8 | 89.5 |
| \(N^4\) | PatchCore | 71.2 | 95.9 | 83.6 |
| \(N^4+A^1\) | Ours | 84.9 | 97.1 | 91.0 |
消融实验¶
| 配置 | MVTecAD Image | MVTecAD Pixel | VisA Image | VisA Pixel | 平均 |
|---|---|---|---|---|---|
| i: 仅正常 NN | 93.2 | 94.5 | 81.5 | 95.3 | 91.1 |
| ii: 仅异常 NN | 70.1 | 83.3 | 58.8 | 84.5 | 74.2 |
| iii: 正常+异常 NN(无 NAGL) | 90.7 | 92.1 | 77.2 | 93.5 | 88.4 |
| iv: 正常+异常+NAGL(完整) | 95.8 | 96.6 | 88.5 | 97.5 | 94.6 |
效率对比:
| 方法 | 参数量 (M) | 训练时间 (H) | 推理速度 (FPS) |
|---|---|---|---|
| InCTRL | 117.5 | 0.7 | 1.2 |
| ResAD | 59.2 | 20.6 | 7.8 |
| Ours | 24.4 | 0.3 | 17.1 |
关键发现¶
- 1 个异常样本带来巨大提升:\(N^1+A^1\) 设置超越了使用 \(N^4\) 正常参考的最佳基线(MVTecAD: +0.6 Image AUROC, VisA: +1.2 Image AUROC),用更少参考获得更好效果
- 误激活问题验证:简单融合正常+异常参考(设置 iii)反而比只用正常参考(设置 i)更差(91.1→88.4),证实了朴素方法引入误导性噪声
- NAGL 有效解决误激活:设置 iv 比设置 iii 提升 6.2 平均 AUROC,证明残差空间操作能有效过滤噪声
- 跨域泛化优秀:在工业→医学跨域场景(BraTS)中,NAGL 以 \(N^2+A^1\) 超越 ResAD \(N^2\) 10.6 个百分点
- 效率卓越:参数量仅 InCTRL 的 1/5,训练速度是 ResAD 的 69 倍,推理速度是 InCTRL 的 14 倍
亮点与洞察¶
- 任务定义创新:首次将正常-异常混合参考引入 GAD,更贴近实际应用场景
- 残差空间是关键:直接在视觉空间融合异常参考会引入误激活,但在残差空间操作天然具有跨域迁移性,因为残差特征的分布在不同领域间更稳定
- 设计极简高效:冻结骨干 + 仅训练 2 个注意力模块,24.4M 参数实现 SOTA
- RM→AFL 的两阶段设计精巧:先在残差空间提取异常模式原型,再将原型映射回视觉空间定位具体异常
局限与展望¶
- 异常参考限制为 \(K_2=1\),更多异常参考是否能更进一步提升有待探索
- 假设每种异常类型有 1 个参考样本,若异常类型未覆盖则效果未知
- 可学习代理数 \(M=25\) 的选择缺乏自适应机制
- 未来可探索语言描述作为正常/异常参考的补充
- 可扩展到 3D 异常检测和视频异常检测场景
相关工作与启发¶
- 与 PatchCore 的对比说明:好的表示学习 + 异常指导 > 大量正常参考
- 残差特征的跨域一致性值得在其他迁移学习任务中进一步验证
- RM-AFL 架构可推广到其他 few-shot 检测任务
评分¶
- 新颖性: ⭐⭐⭐⭐ 首次在 GAD 中利用异常参考,任务和方法都有创新
- 实验充分度: ⭐⭐⭐⭐⭐ 工业+医学跨域评估,消融详尽,效率对比全面
- 写作质量: ⭐⭐⭐⭐ 动机清晰,图表配合好,RM-AFL 的解释到位
- 价值: ⭐⭐⭐⭐ 实用导向强,效率优势明显,适合实际部署
相关论文¶
- [AAAI 2026] RefineVAD: Semantic-Guided Feature Recalibration for Weakly Supervised Video Anomaly Detection
- [ICLR 2026] Towards Anomaly-Aware Pre-Training and Fine-Tuning for Graph Anomaly Detection
- [ACL 2025] AD-LLM: Benchmarking Large Language Models for Anomaly Detection
- [CVPR 2026] Weakly Supervised Video Anomaly Detection with Anomaly-Connected Components and Intention Reasoning
- [NeurIPS 2025] Rethinking Evaluation of Infrared Small Target Detection