跳转至

ADPretrain: Advancing Industrial Anomaly Detection via Anomaly Representation Pretraining

会议: NeurIPS 2025
arXiv: 2511.05245
代码: xcyao00/ADPretrain
领域: self_supervised, anomaly_detection
关键词: 异常表示预训练, 对比学习, 残差特征, 工业异常检测, 特征预训练
机构: 上海交通大学, 南京农业大学

一句话总结

首次提出面向工业异常检测的专用表示预训练框架 ADPretrain,通过角度和范数导向的对比损失在大规模异常检测数据集 RealIAD 上学习残差特征表示,替换五种主流嵌入式 AD 方法的原始特征后在五个数据集、五个骨干网络上取得一致性提升。

研究背景与动机

  1. 现有 AD 方法高度依赖 ImageNet 预训练特征:当前主流和 SOTA 的异常检测方法几乎全部建立在 ImageNet 预训练的特征网络之上(如 PaDiM、PatchCore、UniAD 等),但 ImageNet 预训练过程中并无"正常 vs 异常"的概念,预训练目标与异常检测目标不匹配。
  2. 自然图像与工业图像存在分布偏移:ImageNet 中的自然图像与 AD 场景下的工业图像在数据分布上有明显差异,直接使用预训练特征会导致性能受限。
  3. 从头学习表示的困境:在仅有正常样本的无监督训练范式下,(a) 容易出现"模式坍塌"——正常和异常特征变得相似;(b) 传统 AD 数据集规模有限,制约了表示学习质量。
  4. 微调方法不通用:PANDA、MeanShift 等微调方法虽然试图将预训练特征适配到 AD 数据,但微调后的网络仅适用于训练数据集,不具有通用性。
  5. 大规模 AD 数据集的出现提供了契机:RealIAD 数据集包含 151,050 张图像(99,721 正常 + 51,329 异常),且提供 ground-truth mask,为 AD 专用预训练提供了数据基础。
  6. 关键学术空白:此前尚无工作专门研究面向异常检测任务的表示预训练问题(anomaly representation pretraining),这是该领域的首次探索。

方法详解

整体框架

ADPretrain 的核心思路:在大规模 AD 数据集 RealIAD 上,以残差特征为基础表示,通过角度和范数导向的对比损失学习判别性预训练特征。预训练后,Feature Projector 输出的特征可直接替换现有嵌入式 AD 方法中的原始特征。

整个流程: - 输入图像 → 固定骨干网络提取多层级特征 → 与正常参考特征匹配并相减得到残差特征 → Feature Projector 变换 → 对比损失优化

关键设计 1:基于残差特征的基础表示

  • 动机:希望预训练特征具有"领域不变性",即使下游 AD 数据集与预训练数据集的分布不同,正常/异常表示分布也能保持一致
  • 做法:采用 ResAD 中提出的残差特征 \(r_{h,w}^l = x_{h,w}^l - x_n^*\),其中 \(x_n^*\) 是从正常参考特征库中匹配到的最近邻特征
  • 关键细节:训练时对每个样本随机选择参考样本以增加残差特征的多样性;测试时每张图配 8 个参考样本
  • 实验验证残差特征比骨干网络直接提取的普通特征更适合作为预训练 AD 表示(尤其在 FeatureNorm 基线下差异显著)

关键设计 2:角度与范数导向的对比损失

角度导向对比损失(Angle-Oriented Contrastive Loss)

  • 基于 InfoNCE,但做了两项关键修改:
  • (a) 仅在正常与异常之间做对比:负例仅包含与 anchor 标签不同的特征(通过 \(\mathbb{I}_{[m_k \neq m_i]}\) 控制),避免了标准对比学习中同类特征被错误推远
  • (b) 以正常特征中心为参考点计算余弦相似度:受 MeanShift 启发,先减去正常特征中心 \(c\) 得到 \(\bar{x}_i = x_i - c\),再计算余弦相似度,避免特征均匀分布在原点超球面上
  • 仅使用原始图像特征作为 anchor,不使用增强图像特征做 anchor(避免增强图像与异常数据的对比)

范数导向对比损失(Norm-Oriented Contrastive Loss)

  • 借鉴 OCC 学习思想,但进行了对比式改造:
  • 正常特征:通过收缩损失 \(\mathcal{L}_{con}\) 将正常特征压缩到以原点为中心、半径 \(r=0.4\) 的超球内
  • 异常特征:引入边界 \(\Delta r=0.75\),将异常特征推到半径 \(r'=r+\Delta r\) 的超球外;已在超球外的异常特征不再继续推远(防止预训练过拟合)
  • 使用 pseudo-Huber 距离 \(\sqrt{\|x_i\|_2^2 + 1} - 1\) 作为更鲁棒的范数度量
  • 梯度分析显示该损失能自适应地给超球外的特征分配更大梯度

关键设计 3:可学习 Key/Value 注意力的 Feature Projector

  • 架构基于 Transformer,但将自注意力替换为可学习 Key/Value 注意力(LKV-Attn)
  • 随机初始化 \(N_r=2048\) 个可学习参考特征表示 \(\mathcal{R} \in \mathbb{R}^{N_r \times C}\),作为所有注意力层的 Key 和 Value
  • 输入特征作为 Query,与可学习参考做交叉注意力
  • 残差连接使用减法而非加法:注意力输出主要包含学习到的正常模式,通过减法进一步消除残差特征分布中的正常成分,增强正常与异常的判别性
  • 实验证明 LKV-Attn 优于 Linear/MLP Projector、自注意力、交叉注意力等替代方案

总损失函数

\[\mathcal{L} = \frac{1}{2N} \sum_{i=1}^{2N} \lambda \cdot \mathbb{I}_{[i \leq N]} \cdot \mathcal{L}_{angle}(x_i) + \mathcal{L}_{norm}(x_i)\]

其中 \(\lambda=1\)(默认值),角度损失仅对原始图像特征计算,范数损失对所有 2N 个特征计算。

实验关键数据

主实验(Tab.1)

在 5 个骨干(DINOv2-Base/Large、CLIP-Base/Large、ImageBind)× 5 个 AD 方法(PaDiM、PatchCore、CFLOW、GLASS、UniAD)× 5 个数据集(MVTecAD、VisA、BTAD、MVTec3D、MPDD)上全面验证:

场景 典型提升(AUROC/PRO)
DINOv2-Base + PatchCore + MVTecAD +3.5/+4.7
DINOv2-Base + UniAD + MVTecAD +26.0/+9.7
CLIP-Base + PatchCore + MPDD +10.1/+28.7
ImageBind + UniAD + MPDD +32.9/+42.7
DINOv2-Large + PaDiM + MPDD +6.8/+3.3
  • 对于原始特征表现较差的组合(如 UniAD + DINOv2-Base),预训练特征带来的提升尤其显著
  • FeatureNorm 基线:原始特征几乎无法用范数区分正常/异常(AUROC~50%),而预训练特征仅用范数即可达到 90%+ 的 AUROC

消融实验(Tab.2,VisA + ImageBind)

组件 PaDiM (AUROC/PRO) PatchCore FeatureNorm
原始特征(无预训练) 92.6/86.3 91.6/81.3 49.2/44.5
非残差 + 角度&范数损失 93.5/86.1 93.6/85.1 82.9/83.9
残差 + 角度&范数损失(完整) 95.4/88.7 94.6/87.0 94.2/89.0
仅角度损失 93.9/85.2 93.2/83.8 83.9/83.0
仅范数损失 93.7/85.3 90.9/84.5 92.4/85.1

关键发现

  1. 残差特征 vs 普通特征:残差特征在 FeatureNorm 下优势巨大(94.2 vs 82.9),说明残差特征具有更好的类不变性
  2. 两种损失互补:角度损失擅长 PaDiM/PatchCore 等依赖特征距离的方法;范数损失在 FeatureNorm 上表现突出;组合后全面最优
  3. 骨干网络必须固定:可学习骨干导致严重性能退化(如残差特征 + 可学习骨干在 PatchCore 上仅 78.4/32.1,对比固定骨干 94.6/87.0)
  4. 样本效率(Tab.3a):仅用 10% 正常训练样本时,预训练特征带来更大提升(如 PaDiM + MVTecAD: +15.4, PaDiM + MPDD: +28.3)
  5. 噪声鲁棒性(Tab.3b):训练集混入 10% 异常噪声时,预训练特征仍能带来稳定提升,且提升幅度更大

亮点与洞察

  1. 问题定义新颖:首次系统化地提出并解决"异常表示预训练"问题,填补了 AD 领域的重要空白
  2. 角度 + 范数的双维度对比:从特征向量的两个正交维度(方向和大小)同时优化判别性,理论上完备且实验互补
  3. FeatureNorm 基线极具说服力:仅用特征范数就能达到高性能的 AD,直观证明了预训练特征的质量(原始特征做不到这一点)
  4. 即插即用的通用性:预训练特征可直接替换 5 种不同架构的 AD 方法的原始特征,无需修改下游方法本身
  5. 残差连接用减法的巧妙设计:在 Feature Projector 中用减法残差连接,使注意力模块主动学习并消除正常模式,与整体"关注正常-异常差异"的目标一致

局限性

  1. 依赖大规模标注 AD 数据集:预训练需要 RealIAD 的像素级 mask 标注获取特征标签,而这类大规模标注数据在实际工业场景中获取成本高
  2. 全骨干预训练失败:实验表明在 RealIAD 上微调整个骨干网络会导致性能崩溃,说明当前 AD 数据规模仍不足以支撑全参数预训练
  3. 预训练数据集单一:仅在 RealIAD 上预训练,未探索多数据集联合预训练或数据增强策略来进一步扩大预训练数据的多样性
  4. 计算开销未充分讨论:需要对每张图片计算残差特征(匹配最近邻参考样本),这在大规模应用中可能成为瓶颈
  5. 未探索非工业场景的泛化:所有下游数据集均为工业制造场景,对医学图像、遥感等其他 AD 应用领域的泛化能力未知

相关工作

方向 代表工作 与本文关系
基于预训练特征的 AD PaDiM, PatchCore, CFLOW, UniAD 作为下游验证方法,直接受益于预训练特征的替换
特征适配/微调 PANDA, MeanShift, FYD, GaussianFineTune 微调只适用于训练集,不具有通用性;本文的预训练特征更通用
残差特征 ResAD 本文借用了残差特征的概念,但动机和目标不同(预训练 vs 下游检测)
对比学习 SimCLR, MoCo, InfoNCE 本文在标准对比学习基础上做了 AD 特化改造(中心偏移 + 标签感知负例)
OCC 学习 DeepSVDD, FCDD 范数损失借鉴了超球约束思想,但增加了对比式异常推远机制

评分

  • 新颖性: ⭐⭐⭐⭐ — 首次定义并系统解决异常表示预训练问题,角度+范数双维度对比设计有理论支撑
  • 实验充分度: ⭐⭐⭐⭐⭐ — 5个骨干×5种方法×5个数据集的全面验证,消融实验覆盖所有关键组件,额外做了样本效率和鲁棒性分析
  • 写作质量: ⭐⭐⭐⭐ — 动机清晰,数学推导严谨,损失函数梯度分析增加了可解释性
  • 价值: ⭐⭐⭐⭐⭐ — 提供了即插即用的预训练特征,对整个 AD 社区有直接应用价值,FeatureNorm 基线揭示了预训练表示的潜力