不看异常,怎么学会识别异常?用“异常”指导异常检测!——NAGL方法解析(附代码地址)

在工业质检、医疗诊断等领域,异常检测技术一直面临着巨大挑战。传统的异常检测模型通常只使用正常样本进行训练,但当遇到全新场景时,检测效果往往大打折扣。更重要的是,在实际应用中,我们通常能够获得少量异常样本,如何充分利用这些宝贵信息一直是个难题。

今天我们要介绍一项创新研究------ 《Normal-Abnormal Guided Generalist Anomaly Detection》 ,它提出了一种全新的思路:同时使用正常和异常样本作为参考 ****,打造真正实用的通用型异常检测系统。

为什么需要新范式?

现有的通用异常检测方法主要存在两个问题:

  • 仅使用正常样本:模型缺乏对异常特征的直接理解,判别能力有限
  • 无法充分利用异常样本:现实中获取的少量异常样本(如次品、病变案例)往往被闲置

直接应用基于KNN的方法虽然简单,但容易产生误报,且缺乏数据驱动的自适应能力。

NAGL 框架核心思路

NAGL(Normal-Abnormal Generalist Learning)主要由两个模块组成:

  • Residual Mining(RM)

提取"正常-异常"差异,构建可迁移的异常表征。

模型通过计算残差(Residual)来捕捉异常样本与正常样本之间的偏离模式,这些"差异特征"成为后续检测的关键指导信号。

  • Anomaly Feature Learning(AFL)

让模型学会在查询图片中定位异常。

通过残差映射,模型能自适应地找到图像中与异常特征相似的区域,实现实例级的异常定位。

简单来说,NAGL先挖掘"异常的规律",再用它来指导模型在新场景中更精准地找出异常。

技术亮点

双参考模式:首次在通用异常检测中同时使用正常和异常样本作为参考

高效设计:

  • 参数仅24.4M,比之前最佳方法小5倍
  • 训练速度提升69倍
  • 推理速度达17.1 FPS,比之前方法快2-14倍
  • 实验结果

在MVTecAD、VisA和BraTS等多个基准测试中,该方法全面超越现有技术:

  • 在MVTecAD上,仅用1个正常+1个异常样本,图像级AUROC达到95.8%,比使用4个正常样本的最佳基线还高0.6%
  • 在医疗数据集BraTS上,平均AUROC达到89.5%,比之前方法提升10.6个百分点
  • 随着正常样本数量增加,性能持续提升,展现良好扩展性
  • 可视化效果对比

从可视化结果可以看出,我们的方法能够更准确地定位异常区域,减少误报,特别是在复杂背景下仍能保持稳定的检测性能。

跨领域潜力与应用

NAGL 不仅在单一领域表现突出,更在跨域检测中展现出强泛化能力------

例如从金属零件检测到脑部影像识别,模型无需重新训练,就能稳定识别异常。

这意味着它非常适合:

  • 智能制造: 缺陷检测、质量控制
  • 医学影像: 肿瘤分割、病灶识别
  • 交通/安防: 异常事件检测

未来研究方向还包括结合自然语言提示(Prompt)或多模态特征,让异常检测具备更丰富的语义理解能力。

结语

NAGL的提出为异常检测开辟了一条全新思路:

不再回避"异常样本太少"的现实,而是学会用有限的异常教模型识别未知的异常

在智能制造、医学诊断、甚至无人巡检领域,这样的通用检测范式,或将成为AI落地的新关键。

代码及论文地址

ruby 复制代码
论文链接:https://arxiv.org/pdf/2510.00495
代码地址:https://github.com/JasonKyng/NAGL
相关推荐
仙俊红11 小时前
LeetCode487周赛T2,删除子数组后的最终元素
数据结构·算法
-dzk-17 小时前
【代码随想录】LC 59.螺旋矩阵 II
c++·线性代数·算法·矩阵·模拟
大山同学17 小时前
图片补全-Context Encoder
人工智能·机器学习·计算机视觉
风筝在晴天搁浅17 小时前
hot100 78.子集
java·算法
Jasmine_llq17 小时前
《P4587 [FJOI2016] 神秘数》
算法·倍增思想·稀疏表(st 表)·前缀和数组(解决静态区间和查询·st表核心实现高效预处理和查询·预处理优化(提前计算所需信息·快速io提升大规模数据读写效率
薛定谔的猫198217 小时前
十七、用 GPT2 中文对联模型实现经典上联自动对下联:
人工智能·深度学习·gpt2·大模型 训练 调优
超级大只老咪17 小时前
快速进制转换
笔记·算法
m0_7066532318 小时前
C++编译期数组操作
开发语言·c++·算法
故事和你9118 小时前
sdut-Java面向对象-06 继承和多态、抽象类和接口(函数题:10-18题)
java·开发语言·算法·面向对象·基础语法·继承和多态·抽象类和接口
qq_4232339018 小时前
C++与Python混合编程实战
开发语言·c++·算法