跳转至

UniVAD: A Training-free Unified Model for Few-shot Visual Anomaly Detection

会议: CVPR 2025
arXiv: 2412.03342
代码: https://github.com/FantasticGNU/UniVAD
领域: 医学图像
关键词: 视觉异常检测, 免训练, few-shot, 跨领域统一模型, 组件分割

一句话总结

本文提出 UniVAD,一个免训练的统一少样本视觉异常检测方法,通过上下文组件聚类(C3)模块实现精准组件分割,结合组件感知的 patch 匹配和图增强组件建模,仅需少量正常样本即可在工业、逻辑和医学三个领域实现 SOTA 异常检测。

研究背景与动机

领域现状:视觉异常检测(VAD)旨在识别图像中偏离正常模式的异常样本,应用于工业缺陷检测、逻辑异常检测和医学异常检测三大领域。现有方法如 PatchCore 在工业场景表现优异,但针对不同领域需要专门设计模型架构和检测算法。

现有痛点:(1)现有 VAD 方法高度领域特化——PatchCore 在 MVTec-AD 上 1-shot AUC 达 84.0%,但在逻辑异常数据集 MVTec LOCO 上骤降至 62.0%;(2)即使在同一领域内,大多数方法采用"one-category-one-model"范式,每个类别训练独立模型,泛化能力差;(3)组件分割方法在 few-shot 场景下面临粒度控制困难,SAM 产出的分割要么过细要么过粗。

核心矛盾:不同领域的异常类型差异巨大——工业异常是局部缺陷,逻辑异常是组件的错误组合,医学异常是病理区域——用统一方法检测这些不同语义层次的异常是一个根本性挑战。

本文目标:构建一个免训练、跨领域、统一的 few-shot 异常检测模型,在测试时仅需少量正常参考样本即可检测工业、逻辑和医学领域的异常。

切入角度:作者观察到所有异常都可以分为两类:结构异常(patch 级别特征偏差)和逻辑异常(组件级别关系偏差),可以用两个互补模块分别处理,再聚合结果。

核心 idea:通过视觉基础模型(SAM、RAM)+聚类实现精确组件分割,然后在组件内做 patch 匹配检测结构异常、在组件间做图建模检测逻辑异常,两路结果融合实现统一检测。

方法详解

整体框架

UniVAD 的输入是查询图像和 \(K\) 张正常参考图像。首先用 C3 模块对所有图像进行组件分割得到组件 mask,然后提取 patch 级特征和组件级特征。patch 特征送入 CAPM 模块检测结构异常,组件特征送入 GECM 模块检测逻辑异常,最终将两类异常分数加权融合得到统一异常检测结果。

关键设计

  1. 上下文组件聚类模块(Contextual Component Clustering, C3):

    • 功能:在 few-shot 条件下实现精确的组件分割
    • 核心思路:先用 Recognize Anything Model(RAM)识别图像中的物体标签,再用 Grounded SAM 生成初始 mask。如果只有一个 mask 且覆盖面积超过 \(\gamma\%\),视为纹理表面,输出全图 mask;如果有多个 mask,则用 K-means 聚类正常图像的特征得到 \(N\) 个聚类中心,生成聚类 mask \(M_{\text{cluster}}\),过滤背景后得到 \(N'\) 个有效 mask。最后用 IoU 将 SAM 的细粒度 mask 映射到聚类 mask 上,合并同一聚类标签的 SAM mask 作为最终输出。
    • 设计动机:单独使用 SAM 会产生粒度不一致的问题(过细或过粗),聚类可以提供正确的语义粒度;单独聚类在 few-shot 下需要大量样本。两者结合既利用了 SAM 的精确边界,又通过聚类控制了分割粒度。
  2. 组件感知 Patch 匹配模块(Component-Aware Patch Matching, CAPM):

    • 功能:检测结构异常(局部缺陷、纹理变化、病理区域)
    • 核心思路:使用预训练的 CLIP 和 DINOv2 编码器提取 patch 特征 \(P_q\)\(P_n\)。在标准 patch 匹配基础上(计算查询 patch 到所有正常 patch 的最小余弦距离),增加两个改进:(a)组件感知匹配——利用 C3 的组件 mask 将 patch 分组,只在同一组件内进行匹配 \(Score_{\text{aware}}(P_{qi}^j) = \min(\text{distance}(P_{qi}^j, P_{ni}))\),避免跨组件的误匹配;(b)图文匹配——用 CLIP 文本编码器编码"正常"和"异常"描述,计算 patch 与文本的相似度 \(Score_{\text{vl}}\)。三项分数等权加权得到结构异常图。
    • 设计动机:标准 patch 匹配无法区分前景/背景,也无法区分不同组件——颜色相似的不同组件区域容易被误匹配导致漏检。组件约束把匹配限制在语义相同的区域内,大幅降低误匹配。
  3. 图增强组件建模模块(Graph-Enhanced Component Modeling, GECM):

    • 功能:检测逻辑异常(组件缺失、多余、位置错误)
    • 核心思路:对组件级特征建图——每个组件是一个节点,组件间余弦相似度为边权重,构建邻接矩阵 \(A\),通过图注意力操作聚合上下文信息得到增强的组件嵌入 \(E_q = G(A_q, F_{qc})\)。然后计算深层异常分数 \(Score_{\text{deep}}(E_q^i) = \min(\text{distance}(E_q^i, E_n))\)。同时提取几何特征(面积、颜色、位置)计算几何异常分数 \(Score_{\text{geo}}\)。两者加权融合得到逻辑异常分数。
    • 设计动机:patch 匹配无法检测"内容正确但组合错误"的逻辑异常——图建模可以捕捉组件之间的关系模式,发现组件的增减或位移。

损失函数 / 训练策略

UniVAD 是免训练方法,不需要损失函数和训练过程。使用 CLIP-L/14@336px 和 DINOv2-G/14 作为冻结的特征提取器。所有超参数(\(\alpha, \beta, \gamma\) 各 1/3,\(\phi, \psi\) 各 0.5,\(\delta, \eta\) 各 0.5)在所有数据集上统一设置。图像统一缩放到 448×448。

实验关键数据

主实验

1-shot 设置下跨领域异常检测(Image-level AUC):

数据集 PatchCore AnomalyGPT WinCLIP UniVAD 提升
MVTec-AD 84.0 94.1 93.1 97.8 +3.7
VisA 74.8 87.4 83.8 93.5 +6.1
MVTec LOCO 62.0 60.4 58.0 71.0 +8.8
BrainMRI 73.2 73.1 55.4 80.2 +7.0
LiverCT 44.9 60.3 60.3 70.0 +9.7
RESC 56.3 82.4 72.9 85.5 +3.1

4-abnormal-shot 设置下与专用医学方法对比:

数据集 DRA BGAD MVFA UniVAD
BrainMRI 80.6 83.6 92.4 94.1
LiverCT 59.6 72.5 81.2 87.5
RESC 90.9 86.2 96.2 97.3

消融实验

C3 模块不同实现方式对比(Image AUC, Pixel AUC):

配置 MVTec-AD VisA MVTec LOCO BrainMRI
仅聚类 (97.3, 96.1) (92.5, 98.0) (67.5, 70.9) (73.9, 96.7)
仅 Grounded-SAM (97.5, 96.1) (92.1, 97.7) (67.8, 74.9) (74.5, 94.9)
C3(聚类+SAM) (97.8, 96.5) (93.5, 98.0) (71.0, 75.1) (80.2, 96.8)

关键发现

  • UniVAD 在所有 9 个数据集上均超越了各领域的专用方法,尤其在逻辑异常(MVTec LOCO +8.8%)和医学异常(LiverCT +9.7%)上提升显著
  • C3 模块的聚类+SAM 组合明显优于单独使用任一方法,尤其在 BrainMRI(+6.3%/+1.9%)和 MVTec LOCO(+3.5%/+0.2%)上
  • 作为免训练方法,UniVAD 甚至在 4-abnormal-shot 设置下超越了需要训练的 MVFA
  • 图增强组件建模对逻辑异常检测贡献最大,组件感知 patch 匹配对工业和医学异常贡献最大

亮点与洞察

  1. "结构+逻辑"双路检测范式:将异常检测分解为两个语义层次,各用最适合的方法处理,巧妙地统一了不同领域的异常类型
  2. 免训练的跨领域泛化:不需要在目标领域做任何训练,所有超参数统一设置,证明视觉基础模型的预训练特征已经足够丰富
  3. C3 模块的"粗+细"组合策略:聚类控制粒度、SAM 确保边界精度,这种互补设计思路可迁移到其他需要层次化分割的任务

局限与展望

  • 依赖 RAM、SAM、CLIP、DINOv2 等多个大模型,推理开销较高
  • 对极少组件的简单物体(如螺丝),GECM 模块的图建模可能无法充分发挥作用
  • 超参数虽然统一但可能不是每个场景的最优解
  • 未来可以引入自适应权重融合来替代固定的分数加权

相关工作与启发

  • vs PatchCore:PatchCore 是纯 patch 匹配方法,无法处理逻辑异常;UniVAD 添加组件级建模,覆盖了更高语义层次
  • vs ComAD:ComAD 也基于组件但需要大量样本做聚类分割;UniVAD 通过 SAM 实现 few-shot 下的精确分割
  • vs AnomalyGPT:AnomalyGPT 利用 LLM 推理但在逻辑异常上表现较差(60.4%);UniVAD 的图建模更适合捕捉组件关系
  • 免训练+模块化设计的思路可以作为构建通用异常检测系统的蓝图

评分

  • 新颖性: 7/10 — 各模块单独来看不算全新,但统一框架的设计和跨领域免训练的定位很有价值
  • 实验充分度: 9/10 — 9 个数据集涵盖三大领域,1-shot 和 4-shot 两种设置,消融全面
  • 写作质量: 8/10 — 结构清晰,图示直观,伪代码详尽
  • 价值: 8/10 — 首个免训练统一跨领域 VAD 方法,为异常检测领域的标准化做出重要贡献