跳转至

Beyond Normal References: Discriminative Few-Shot Anomaly Detection

会议: NeurIPS2026
arXiv: 2605.23231
代码: https://github.com/mala-lab/IDEAL
领域: 目标检测(视觉异常检测与定位)
关键词: 少样本异常检测、正常变化抑制、本征偏差、交叉注意力、未见异常

一句话总结

IDEAL 利用固定的少量正常与带掩码异常参考,先消除正常局部变化,再提取多样的本征偏差方向并进行投影评分,在无需目标域重训练的条件下改善已见及未见异常检测;MVTecAD 的 N1A1 设置达到 96.3 / 96.8 的图像级 / 像素级 AUROC。

研究背景与动机

少样本异常检测通常把少量正常图像作为参考,判断待测图像是否偏离正常外观。专用方法仍需为每个目标类别拟合模型,而 InCTRL、ResAD 等通用方法在辅助数据上训练一次,再通过目标类别的正常参考跨数据集部署。正常参考告诉模型“正常是什么”,却没有直接指出哪些偏离值得关注:照明、纹理和视角差异可能产生较大的特征距离,并不一定对应真实缺陷。

实际部署往往也能获得一两张已确认异常图像,但异常具有很强的异质性。一张划痕参考并不能代表孔洞、缺件或污染,直接把异常参考当作匹配模板,会把“长得像这张异常图”误当成“异常”的定义。问题因此不是简单地增加一个异常近邻库,而是如何从极少的异常中提取可迁移的判别证据,同时不让模型只识别参考里出现过的缺陷类型。

本文把任务定义为判别式少样本异常检测:辅助训练集提供正常、异常及其监督,目标域推理提供固定的正常与异常参考,异常参考默认还带一次性标注的区域掩码。参考来自一个随机选定的异常类型,并供所有测试查询复用;这比按查询异常类型重新抽取参考更接近实际部署。核心 idea:不匹配异常的绝对外观,而是先抑制正常变化,再从异常相对正常的残差中学习多样的本征偏差方向,用查询偏差与这些方向的对齐程度识别异常。

方法详解

整体框架

输入是查询图像、少量正常参考、少量异常参考及异常参考掩码,输出是异常热图和图像级异常分数。冻结的视觉编码器提取 patch 特征后,正常变化擦除器(NVE)把异常参考和查询分别转为去噪的正常相对残差;本征偏差编码器(IDE)只从参考侧提取一组偏差方向,投影互补评分再判断查询偏差是否沿着这些方向展开。

三个阶段依次是“正常变化擦除器”“本征偏差编码器”“投影互补评分”。前两个阶段并不把查询标签当作推理输入:训练时才用辅助查询的区域掩码和图像标签监督结果,并对参考侧偏差方向施加判别性与正交约束。目标域部署不更新模型参数,但仍需要目标域参考及其异常区域信息。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    R["正常/异常参考<br/>异常参考掩码"] --> F["冻结编码器"]
    Q["查询图像"] --> F
    F --> N["正常变化擦除器"]
    N -->|参考偏差作为value| I["本征偏差编码器"]
    F -->|原异常特征作为key| I
    R -->|异常参考掩码| I
    N -->|查询偏差| P["投影互补评分"]
    I -->|本征偏差方向| P
    P --> O["异常热图<br/>最高1%聚合"]
    S["仅训练:辅助查询<br/>掩码与图像标签"] -.->|Focal / Dice / BCE| P
    I -.->|仅训练:判别与正交约束| I

关键设计

1. 正常变化擦除器:先减去正常内容,再抑制正常也会出现的变化

第一步不是让异常参考互相聚类,而是逐 patch 寻找最接近的正常参考特征,并用异常特征减去这个正常近邻。匹配在正常参考特征库中进行,不要求两张图像在同一位置严格对齐。相减把“这个物体本来长什么样”尽量抵消,留下相对正常的偏差,因此比直接使用异常图像的绝对特征更有希望跨类别迁移。

不过,残差仍可能包含正常外观的变化。NVE 围绕每个异常 patch 检索 12 个最近的正常特征,对这些邻居中心化并做局部 PCA,保留前 4 个主方向。这里估计的是该局部外观附近的正常变化子空间,不是全数据集共享的一组固定主成分;相似正常 patch 间的照明或纹理差异,可以在这个子空间里解释。

令正常近邻为 \(f_{i,\min}^{n}\),局部正交基为 \(U_i\),核心操作可写为:

\[ f_{i,\mathtt{res}}^{a}=f_i^{a}-f_{i,\min}^{n},\qquad f_{i,\mathtt{den}}^{a}=f_{i,\mathtt{res}}^{a}-\alpha U_iU_i^{\top}f_{i,\mathtt{res}}^{a}. \]

默认 \(\alpha=0.8\),即削弱残差沿正常变化子空间的分量,而不是把整个残差缩小,也不是完全删除该子空间。保留 20% 的相关分量意味着真实异常若与正常变化共享部分方向,不会在这一步被一刀切掉;附录的强度消融也显示完全消除未必最好。

查询侧使用同样的正常近邻检索和局部抑制过程,得到查询相对正常的去噪偏差。这种对称处理很重要:若参考去噪而查询仍带有大量正常变化,后续对齐会混入不一致的噪声。NVE 本身没有目标域梯度更新,局部 PCA 根据当前正常参考计算。

2. 本征偏差编码器:用原异常特征寻址,用去噪残差提供判别内容

去噪后的参考残差仍只覆盖少量已见异常,直接拿它们做最近邻匹配仍可能过拟合。IDE 用 45 个可学习向量作为交叉注意力的 query,从参考残差提取 45 个本征偏差向量;这些向量随输入参考形成,不应理解成部署时一成不变的异常类别原型。

注意力的 key 来自原始异常参考特征,value 来自 NVE 输出的去噪残差。两者分工不同:原始特征保留局部语义,帮助可学习 query 找到合适的区域;value 则携带相对正常的差异,避免把对象背景重新灌入偏差表示。换言之,网络在原外观上决定“看哪里”,在残差上决定“取出什么”。

异常参考并非每个 patch 都异常。作者把参考掩码下采样到特征网格,在注意力 logits 中强烈压低正常 patch 的权重,使聚合集中于标注异常区域。因而默认方法不仅需要异常图像的类别标签,还利用其区域掩码;目标查询本身在推理时不需要掩码。注意力之后经过前馈网络,论文公式为简洁省略了残差路径,不能把它理解为没有残差连接的完整实现。

仅靠注意力不能保证 45 个输出学到不同东西。判别性约束要求每个标注异常 patch 的去噪残差靠近其最近的本征偏差向量;正交约束则惩罚不同向量之间的平方余弦相似度。前者防止方向与参考中的真实异常脱节,后者减少重复方向,让有限容量覆盖更多偏差模式。

“正交”是损失鼓励的性质,不是通过精确正交化强制得到的数学保证。方向也不必等同于划痕、孔洞等人工异常类别,而是辅助训练中学出的判别方向。它们能否覆盖新缺陷,最终要由未见异常实验检验,不能仅凭命名为“本征”就推断无条件泛化。

3. 投影互补评分:衡量查询偏差的异常对齐,同时保留正常匹配证据

查询的去噪残差被分别投向 IDE 提供的本征偏差方向,再把各方向分量相加。论文定义的投影为:

\[ \tilde f_{i,\mathtt{den}}^{q}=\sum_{m=1}^{M} \frac{\langle f_{i,\mathtt{den}}^{q},t_m\rangle}{\langle t_m,t_m\rangle}t_m. \]

这个操作不要求查询像某张异常参考,而是问它相对正常的偏差能否被学到的异常方向保留。未见缺陷的外观即使不同,只要沿着部分共享的判别方向偏离正常,仍可能产生较高响应;与这些方向不相关的正常变化则被削弱。由于方向仅被正则为近似正交,严格来说,上式是作者定义的方向投影之和,不必然等于任意非正交基下的精确子空间正交投影。

评分也不是只看投影长度。它把去噪残差与投影结果的方向一致性,以及查询原特征与最近正常特征的距离,按等权组合:

\[ A_i^{q}=\frac{1}{2}\left(1-\mathbf d_{\mathrm{cos}}(f_{i,\mathtt{den}}^{q},\tilde f_{i,\mathtt{den}}^{q})+\mathbf d_{\mathrm{cos}}(f_i^{q},f_{i,\min}^{n})\right). \]

这里保留原文式(9)的组合形式;\(\mathbf d_{\mathrm{cos}}\) 在近邻选择和评分语境中按余弦距离理解。缓存正文没有明确给出其缩放、截断和零向量处理,因此不由该式额外推导精确数值范围或补造实现细节。机制上,第一项提供异常方向对齐,第二项提供正常不匹配,两种证据互补,避免单凭很小但方向一致的残差判异常。

最终把 patch 分数上采样回图像尺寸做定位,取最高 1% 的 patch 分数平均作为图像级分数。这样的局部高分聚合允许小面积缺陷决定图像判断,同时比只取一个最大 patch 更少依赖单个偶然峰值。

一个完整示例

以工业表面检测为例,假设目标类别固定提供 1 张正常参考、1 张带划痕掩码的异常参考,查询出现参考未覆盖的另一类缺陷。这是说明机制的示例,不对应某张实验图的定量测量。

正常参考先建立 patch 特征库。划痕参考的每个 patch 减去最近正常特征,并由 12 个正常邻居估计的 4 个 PCA 方向抑制正常变化;IDE 利用划痕掩码排除背景,从剩余去噪残差生成 45 个偏差方向。

查询同样减正常近邻并去噪。真正的缺陷若与这些方向共享判别偏差,即使不与划痕绝对特征相似,也能在投影互补评分中响应;正常纹理波动若主要位于局部正常子空间,响应则受到抑制。热图最高 1% 的 patch 再共同决定图像级分数。

这个流程解释的是为什么可能跨异常类型工作,而不是保证所有新异常都能被覆盖。若新缺陷偏差几乎落在已学方向之外,或正常参考没有代表性,该机制仍可能失败。

损失函数 / 训练策略

模型在辅助数据上按 episode 训练,每个 episode 包含查询、正常参考和来自单一异常类型的异常参考。附录 C.3 默认从辅助数据的测试划分随机选取 600 个正常/异常样本作为训练查询;这是辅助源域的监督训练,不是拿目标测试查询标签训练。评估其他数据集时用 MVTecAD 作源域,评估 MVTecAD 时改用 VisA。

像素级 Focal 与 Dice 损失监督查询热图,图像级 BCE 监督最高 1% 聚合后的分数,再加入参考偏差的判别性和正交损失:

\[ \mathcal L_{\mathrm{train}}=\mathcal L_{\mathrm{Focal}}+\mathcal L_{\mathrm{Dice}}+\mathcal L_{\mathrm{BCE}}+\mathcal L_{\mathrm{Dual}}. \]

其中判别项权重为 \(\lambda_1=1.0\),正交项权重为 \(\lambda_2=0.8\)。默认冻结 ViT-S/14,只更新 IDE 参数;输入为 448×448,AdamW 初始学习率 0.001,训练 20 个 epoch,batch size 为 16。附录补充前 2 个 epoch 的学习率预热、权重衰减 0.0001,以及 384 维、12 头交叉注意力和隐藏维度 1536 的前馈网络。

正常 shots 测试 1、2、4、8,异常 shots 测试 1、4,另做 0、2 的分析。作者原则上强调正常参考更多,但实际包含 N1A1;因此这是不同预算下的实验网格,不应声称全部实验严格满足正常数量大于异常数量。

泛化分析采用有界 episode 损失、独立同分布源域 episode、有限容量等假设,把目标风险联系到源经验风险、容量项、源目标分布差异和联合最优风险。只有再假设目标 episode 分布等于源域加权混合、存在低联合风险模型,才能简化目标项;它不是对任意工业或医学目标域的无条件风险保证。

实验关键数据

主实验

共评估 5 个工业数据集和 3 个医学影像数据集,结果为 3 次独立运行平均。下表选取原文表 1 的 N1A1,所有数值为图像级 / 像素级 AUROC(%);最后一列是 IDEAL 相对 NAGL 的百分点差值。

数据集 NAGL,N1A1 IDEAL,N1A1 提升(图像 / 像素)
MVTecAD 95.1 / 96.1 96.3 / 96.8 +1.2 / +0.7
VisA 88.5 / 97.5 90.8 / 97.8 +2.3 / +0.3
AITEX 71.6 / 75.5 75.8 / 82.7 +4.2 / +7.2
MPDD 77.1 / 96.5 78.5 / 97.9 +1.4 / +1.4
BTAD 92.0 / 95.8 93.4 / 97.0 +1.4 / +1.2
BraTS 67.7 / 93.7 74.9 / 94.8 +7.2 / +1.1

General 使用完整测试集,同时包含与参考同类型及不同类型异常。Hard 删除参考所属异常类型的测试样本,只评估未见异常类型;两者测试组成不同,下降不是对同一组查询的直接配对测量。

原文表 2 中,N1A1 的 MVTecAD Hard 结果为 IDEAL 95.8 / 96.4、NAGL 93.2 / 94.0;MPDD 为 IDEAL 74.5 / 97.2、NAGL 63.7 / 91.8。相对 General,MPDD 图像 AUROC 分别下降 4.0 和 13.4 个百分点,说明 IDEAL 更少依赖参考异常外观,但未见类型仍有明显难度。

不能把 N1A1 对正常-only N1 的优势全部算作架构提升:前者多得到异常图像及区域信息。DRA/AHL 还使用全量正常数据、需要目标专用训练,其他方法的骨干和输入分辨率也不同;同预算、固定参考下的 NAGL 对比及内部消融更能支持具体机制的贡献。

消融实验

下表选取原文表 3 左侧,数值仍为图像级 / 像素级 AUROC(%)。第一行仅异常参考,不能与后面的双参考行混称为同一输入设置。

配置 MVTecAD VisA BraTS
仅 A1,直接匹配 72.4 / 88.0 61.3 / 85.6 39.7 / 83.3
N1A1,直接匹配 90.1 / 92.2 77.8 / 92.7 57.6 / 87.5
N1A1 + NVE,去噪偏差匹配 93.9 / 94.3 82.7 / 95.3 63.6 / 92.0
N1A1 + IDE,使用未去噪残差 94.5 / 96.0 87.3 / 96.5 70.1 / 92.9
N1A1 + NVE + IDE,完整模型 96.3 / 96.8 90.8 / 97.8 74.9 / 94.8

完整模型相对不含 NVE 的 IDE 行,在 VisA 增加 3.5 / 1.3 个百分点;相对 NVE 匹配行增加 8.1 / 2.5。两者支持去噪与方向学习的互补作用,但不能把不同评分机制之间的全部差值归因于一个孤立算子。

关键发现

  • 增加正常参考仍有收益:N4A1 的 IDEAL 在 MVTecAD、MPDD 达到 98.2 / 97.5、87.6 / 98.5,不能把 N1A1 当作所有预算下的结果。
  • 掩码质量是实际条件。表 6 用正常/异常特征距离最高 1% 生成伪掩码后,IDEAL 在 VisA 从 90.8 / 97.8 降至 89.8 / 97.6;这支持减轻标注的可能性,不等于默认方法完全不需要异常区域信息。
  • 附录 E 的偏差向量数量曲线在 45 附近收益趋于饱和;过强的正交损失会强行分开相关异常模式。方向数量和多样性约束都不是越大越好。
  • VisA 效率实验报告 IDEAL 23.83M 参数、训练 0.5 小时、21.9 FPS;骨干与完整管线计时口径不同,不应把所有效率比值当作严格同模型的算子加速。

亮点与洞察

  • 正常残差不是天然纯净的异常表示。用局部正常邻居估计“正常能怎样变化”,再有选择地抑制这些方向,是比直接增大异常参考库更具体的噪声处理。
  • key/value 分工把外观寻址与偏差表达拆开。异常原特征有利于识别区域语义,残差 value 则避免把被检索区域的绝对外观误当作异常本质。
  • 固定单类型参考配合 Hard 评估直接触及覆盖不足问题。它比仅在含已见异常的完整测试集上报告平均值更能检验模型是否过度依赖异常模板。

局限与展望

  • 默认目标域需要异常参考及其区域掩码,辅助训练也使用监督,不能定位为纯无监督、零样本或只需正常图像的方法。伪掩码实验只验证一种替代方案。
  • 局部 PCA 依赖极少正常参考的覆盖;真实异常与正常变化方向重叠时也可能被抑制。可进一步检查参考污染、照明分布变化和不同缺陷面积下的失效情况。
  • Soft 正交约束未必产生严格正交基,方向投影之和的数值行为值得与显式正交化或一般子空间投影比较。此处是分析建议,并非作者已完成的实验。
  • 作者只在图像异常数据上验证,表格和时序数据的推广尚待实验;医学影像结果也不能替代临床部署验证。

相关工作与启发

  • vs InCTRL / ResAD:这些方法主要利用正常参考和残差实现通用检测;IDEAL 增加异常参考,将残差先去噪,再转为判别偏差方向。收益伴随额外参考信息,不能忽略设置差别。
  • vs NAGL:同样利用正常与异常参考,但本文强调固定参考、单异常类型覆盖以及超越异常外观匹配的方向学习。论文评估中为需要异常参考的方法统一构造固定参考,不能把此处 NAGL 数值直接视为其原始动态参考协议的结果。
  • vs RegAD / PromptAD:前者按目标类别拟合,IDEAL 在辅助数据训练后不再目标重训练;通用部署节省适配成本,但并不消除收集参考和异常标注的成本。

评分

  • 新颖性: 4/5 — 局部正常变化抑制与判别方向学习组合明确,超越双参考直接匹配。
  • 实验充分度: 4/5 — 八数据集、Hard 设置及多类消融有支撑,参考采样和监督差异仍需谨慎解释。
  • 写作质量: 4/5 — 问题与模块衔接清楚,余弦记号和投影实现细节还可进一步明确。
  • 价值: 4/5 — 适用于能收集少量已确认异常的跨域视觉检测,而非完全没有异常证据的场景。