论文题目:SubspaceAD: Training-Free Few-Shot Anomaly Detection via Subspace Modeling(SubspaceAD:基于子空间建模的免训练少样本异常检测)
会议:CVPR 2026
摘要:工业检测中的视觉异常检测往往面临每个类别只有少量正常图像可用的情况。近期少样本方法借助基础模型特征取得了很强的结果,但通常仍依赖记忆库、辅助数据集,或对视觉-语言模型进行多模态调优。因此,作者提出一个直接的问题:当视觉基础模型已经能够提供高质量特征表示时,这些复杂机制是否仍然必要?为回答这一问题,论文提出 SubspaceAD,一种无需训练的方法。首先,使用冻结的 DINOv2 从少量正常图像中提取 patch 级特征;随后,用主成分分析(PCA)拟合这些特征,估计正常变化所在的低维子空间。推理时,通过测试特征相对于该子空间的重建残差检测异常,得到具有可解释性和统计依据的异常分数。尽管方法简单,SubspaceAD 在 one-shot 与 few-shot 设置下都取得了最先进的性能,同时不需要训练、Prompt Tuning 或 Memory Bank。在 one-shot 中,摘要报告其在 MVTec-AD 上的图像级和像素级 AUROC 分别为 98.0% 和 97.6%,在 VisA 上分别为 93.3% 和 98.3%。
源码与 Demo:GitHub – CLendering/SubspaceAD · GitHub
一、研究背景与核心问题
工业异常检测的现实难点是正常样本也可能非常少。Full-shot 方法需要大量无缺陷图像建立正常分布;Zero-shot 方法可以依赖 CLIP 一类视觉语言模型和文本 Prompt,但细小裂纹、污染、缺件等非语义异常并不总能被语言准确描述。因此,论文聚焦 k ∈ {1, 2, 4} 的 Few-Shot 场景:每个类别只给极少量正常图像,让模型定义“什么是正常”。
现有方法要么训练重建模型,要么保存大量正常 patch 构建 Memory Bank,要么引入 Prompt、辅助数据和多模态调优。SubspaceAD 的核心问题很直接:如果 DINOv2 已经提供了足够好的特征空间,还需要这么复杂的后端吗?论文最终选择彻底放弃 Memory Bank 和 Prompt Tuning,转而用 PCA 直接刻画正常特征的变化空间。

论文 Figure 1 :仅使用 1 张正常参考图像时,SubspaceAD 在 MVTec-AD 15 个类别上的异常分割结果
Figure 1 先给出一个直观结论:只用一张正常图像,方法依然能在对象和纹理类别上定位多种缺陷。论文真正想强调的是“强表征 + 简单统计模型”可能已经足够。
二、方法整体框架:DINOv2 + PCA

论文 Figure 2 :SubspaceAD 的 Fitting 与 Inference 两阶段整体流程
Figure 2 概括了方法。Fitting 阶段只使用正常样本:冻结的 DINOv2-G 提取 patch token,对多个中间层特征做平均,再用所有正常 patch 特征拟合 PCA。Inference 阶段执行同样的特征提取,把每个测试 patch 投影到正常子空间;投影前后差得越多,该位置越异常。
正常图像 → DINOv2 多层特征 → PCA 正常子空间;测试图像 → 子空间投影 → 重建残差 → 异常图
这里的 Training-Free 指不进行梯度训练,也没有可学习检测头或类别 Prompt。PCA 直接通过统计量建立正常子空间,每个类别最终只需保存均值向量 μ 和子空间基矩阵 C。
三、特征表示:为什么平均 DINOv2 中间层
SubspaceAD 的关键并不只是“使用 DINOv2”,而是使用哪一层。DINOv2-G 把图像划分为 14 × 14 patch,作者选择第 22–28 层,在同一空间位置进行均值聚合:

其中 (
) 是第 (l) 个 Transformer Block 在位置 (p) 的特征。中间层同时保留语义与局部结构,而最深层更偏类别级抽象;异常检测恰恰依赖划痕、边缘破坏等细节,因此最后一层未必最佳。
Few-Shot 下,一两张正常图像也不足以稳定估计协方差。论文为每张正常图生成 Na = 30 个随机旋转视图,范围为 0°–345°,再把原图和增强图的 patch 一起用于 PCA,以覆盖常见几何变化。方向敏感的 transistor 类别不使用旋转增强。
四、核心机制:异常就是离开正常子空间
PCA 假设正常 patch 虽处在 D 维特征空间中,但主要变化集中在更低维的线性子空间。论文将正常特征写为 (
),其中 C 由协方差矩阵前 r 个特征向量组成。r 不固定,而由累计解释方差决定:

推理时,(
),并用 (
) 作为 patch 异常分数。
也就是说,模型不是寻找“最近的正常 patch”,而是判断“该特征能否被正常变化的主方向解释”;无法解释的正交残差就是异常证据。
图像级分数使用 TVaR,即取异常图最高 1% patch 分数的平均值,减少单个噪声极值的影响。像素级结果由 patch 异常图双线性上采样,再用 σ = 4 的 Gaussian Filter 平滑;可视化使用 Min-Max 归一化,而 AUROC、PRO 计算使用原始分数。
五、实验结果与消融分析
5.1 实验设置
实验使用 MVTec-AD 和 VisA,图像级指标为 AUROC、AUPR,像素级指标为 AUROC、PRO。默认设置为 DINOv2-G、22–28 层均值、672 px 输入、τ = 0.99、TVaR ρ = 1%;1/2/4-shot 均运行 5 个随机种子。
5.2 Few-Shot 主实验

论文 Table 1:MVTec-AD 与 VisA 上 1/2/4-shot 的图像级检测和像素级定位对比
Table 1 是核心定量证据。1-shot 时,SubspaceAD 在 MVTec-AD 上达到 97.1% 图像级 AUROC、97.5% 像素级 AUROC 和 93.7% PRO;在 VisA 上达到 93.4% 图像级 AUROC、98.2% 像素级 AUROC 和 93.5% PRO。VisA 图像级 AUROC 相比 AnomalyDINO 的 87.4% 高 6.0 个百分点。
4-shot 时,MVTec-AD 的 PRO 为 94.3%,VisA 图像级 AUROC 达到 94.7%。但并非所有指标都第一,例如 VisA 4-shot PRO 为 93.8%,略低于 AnomalyDINO 的 94.1%。因此准确说法是:SubspaceAD 在绝大多数指标上达到或超过现有方法,而不是“全面第一”。
需要注意的是,论文摘要中的 one-shot 数字与 Table 1 的五次随机运行均值略有差异:摘要给出 MVTec-AD 98.0% / 97.6%、VisA 93.3% / 98.3%,而主实验表采用上述 mean ± std 结果。本文实验解读统一以 Table 1 为准。

论文 Figure 3 :SubspaceAD、PromptAD 与 AnomalyDINO 在 VisA / MVTec-AD 上的 1-shot 定性对比
Figure 3 中,SubspaceAD 的热力图更集中在真实缺陷区域,背景误激活更少,边界也更清晰,与“异常由子空间外残差体现”的设计逻辑一致。
5.3 Batched 0-Shot

论文 Table 2:Batched 0-shot 场景下的图像级 AUROC 对比
作者进一步假设整批未标注测试图中“大多数 patch 正常”,直接用全部测试 patch 拟合 PCA。VisA 上 SubspaceAD 达到 94.1% AUROC,与 MuSc 并列最好;MVTec-AD 为 96.6%,低于 MuSc 的 97.8%,但高于两种 AnomalyDINO-S 配置。
这个实验很有意思,因为它说明 PCA 并不只能工作在 Few-Shot:只要异常相对稀疏、正常变化占据主导方向,主成分仍有机会从混合数据中提取出主要正常结构。
5.4 消融:性能主要由特征质量决定

论文 Table 3:不同 DINOv2 层聚合策略的 4-shot 消融
只用最后一层时,VisA 图像级 AUROC 为 89.1%、PRO 为 88.3%;使用 22–28 层 Mean-pool 后提升到 94.7% 和 93.8%。Concat(Middle-7) 在 MVTec-AD 图像级 AUROC 上更高,但 Mean-pool(Middle-7) 在两个数据集上更均衡。

论文 Figure 4 :输入分辨率 256–672 px 对性能的影响
Figure 4 显示,分辨率从 256 px 增大后性能明显提升,但 448–672 px 逐渐饱和,672 px 整体最好。也就是说,足够的空间细节很重要,但继续增加分辨率并不会带来线性收益。

论文 Figure 5:DINOv2 ViT-S/B/L/G 不同 Backbone 规模对性能的影响
Figure 5 的趋势很清楚:Backbone 越大,整体性能越强。SubspaceAD 的上限主要由 Foundation Model 的表示能力决定;如果更关注边缘部署,也可以使用更小的 DINOv2-S/14。

论文 Table 4:PCA 累计解释方差阈值 τ 的消融
τ 在 0.95–0.99 之间时整体较稳定,但 τ = 1.00 时性能突然崩溃,例如 MVTec-AD 1-shot 图像级 AUROC 降到 45.3%,VisA 降到 38.6%。当 PCA 把全部方差都纳入“正常空间”时,异常也更容易被重建,正交残差信号因此消失。这是论文“异常主要存在于残差子空间”这一假设最直观的一组证据。
效率方面,每个类别的 PCA 模型通常小于 1 MB;单张 H100 上处理 672 × 672 图像约 300 ms,其中约 226 ms 是 DINOv2-G 前向,子空间投影和打分约 74 ms。真正的计算瓶颈仍是 Backbone,而不是 PCA。
六、总结与思考
如果把 SubspaceAD 压缩成一句话:用 DINOv2 构造高质量特征空间,用 PCA 找到正常变化的主方向,再把无法被这些方向解释的残差当作异常。
这篇论文有意思的地方不在于 PCA 本身,而在于它重新回答了“强 Foundation Model 时代,后端还需要多复杂”这个问题。实验表明,在 Few-Shot 工业异常检测中,一个无梯度训练、无 Memory Bank、无 Prompt Tuning 的线性子空间模型已经能与复杂方法竞争,并在多数指标上更好。
从方法设定上看,Training-Free 也不等于零成本:DINOv2-G 仍是大 Backbone,Few-Shot 拟合还要进行旋转增强和多次特征提取,速度与显存主要由编码器决定。但这反而强化了论文的核心洞察——异常检测后端可以很简单,真正决定效果上限的,可能是特征表征本身。
网硕互联帮助中心



评论前必须登录!
注册