
做零样本异常检测,一定要用文本提示吗?VisualAD 给出了一个意外的答案:把 CLIP 的文本编码器整个去掉,只靠两个可学习的视觉 token,参数量砍掉 99%,效果反而更好。在 MVTec AD、VisA 等 13 个基准上取得 SOTA,非 MVTec 数据集上的优势尤为明显(BTAD 超 AnomalyCLIP 6.2 个百分点,KSDD2 超 6.1 个百分点)。
论文标题:VisualAD: Language-Free Zero-Shot Anomaly Detection via Vision Transformer 作者:Yanning Hou, Peiyuan Li, Zirui Liu, Yitong Wang, Yanran Ruan, Jianfeng Qiu, Ke Xu(通讯作者) 机构:安徽大学人工智能学院、安徽大学光电信息获取与防护技术国家重点实验室、国防科技大学智能科学与技术学院 发表:CVPR 2026 代码:https://github.com/7HHHHH/VisualAD
现有零样本异常检测方法(AnomalyCLIP、WinCLIP、AdaCLIP 等)的标准范式是:用 CLIP 的文本编码器生成"正常"和"异常"的语义锚点,然后计算图像特征与这两个锚点的相似度来判断异常。

VisualAD 的作者首先做了一个探索性实验:把 AnomalyCLIP 的文本编码器完全去掉,只保留两组可学习的视觉向量(分别代表正常和异常),直接在视觉空间中做对比。结果发现:
这个发现引出了核心问题:"如果最终决策只由两组潜在向量——正常和异常——控制,那么语言模态真的不可或缺吗?"
作者的回答是:不需要。异常本质上是纹理、形状、颜色的结构性/统计性偏差,这些信息完全可以在视觉域内捕获,不需要跨模态对齐。

VisualAD 的架构非常简洁:
输入序列:在冻结 ViT 的输入中插入两个可学习 token:
这两个 token 与图像 patch token 一起经过 ViT 的多层自注意力,逐步获取高层次的正常/异常语义,同时引导 patch token 凸显异常相关的视觉线索。
但仅靠两个 token 和冻结 ViT 还不够——token 缺乏空间感知能力,patch 特征也没有经过异常检测的适配。因此引入两个轻量模块:
解决的问题:全局 token 需要"知道"空间信息才能定位异常。
做法:使用 4 个可学习的锚点查询(anchor queries),通过交叉注意力从带位置编码的 patch token 中提取空间信息,再通过 token 引导的门控机制注入到正常/异常 token 中。
消融实验显示,去掉 SCA 后图像级 AUROC 从 84.7% 暴跌至 50.5%(接近随机),说明空间感知是零样本异常检测的关键。
解决的问题:冻结 ViT 的 patch 特征没有为异常检测做过适配。
做法:每层加一个轻量 MLP(单隐层),重新校准 patch 特征。
效果很直观:PCA 可视化显示,加 SAF 后第一主成分方差从 9.0% 提升到 89.1%,异常簇变得更紧凑,与正常簇的距离更远。

对 SAF 校准后的 patch 特征,计算其与异常 token 和正常 token 的余弦相似度之差作为逐像素异常分数。多层融合(从第 6、12、18、24 层提取),图像级分数取 top 1% 像素的均值。
数据集 | 指标 | VisualAD (CLIP) | AnomalyCLIP | AdaCLIP |
|---|---|---|---|---|
MVTec AD | 图像 AUROC | 92.2 | 91.6 | 92.0 |
MVTec AD | 像素 AUROC | 90.8 | 91.0 | — |
MVTec AD | 像素 F₁-max | 43.9 | 38.9 | — |
VisA | 图像 AUROC | 84.7 | 81.0 | 79.7 |
BTAD | 图像 AUROC | 94.9 | 88.7 | 90.0 |
KSDD2 | 图像 AUROC | 98.0 | 91.9 | 94.9 |
DAGM | 图像 AUROC | 99.5 | 98.0 | 98.3 |
在 VisA 上超 AnomalyCLIP 3.7 个百分点,BTAD 上超 6.2 个百分点,KSDD2 上超 6.1 个百分点——越是非 MVTec 的数据集,VisualAD 的优势越明显,说明纯视觉方法的泛化能力更强。
数据集 | 指标 | VisualAD (CLIP) | VisualAD (DINOv2) | AnomalyCLIP |
|---|---|---|---|---|
OCT17 | 图像 AUROC | 88.9 | 91.2 | 63.7 |
BrainMRI | 图像 AUROC | 96.7 | 93.8 | 96.4 |
OCT17 上 VisualAD (DINOv2) 超 AnomalyCLIP 27.5 个百分点,差距非常显著。
VisualAD 可以适配不同的视觉骨干:
这意味着用户可以根据场景需求选择骨干——需要判断"有没有缺陷"用 CLIP,需要定位"缺陷在哪里"用 DINOv2。
配置 | 图像 AUROC | 图像 AP |
|---|---|---|
完整 VisualAD | 84.7 | 87.6 |
去掉 SCA | 50.5 | 58.9 |
去掉 SAF | 82.3 | 85.4 |
两个都去掉 | 48.0 | 56.1 |
SCA 是命脉(去掉后接近随机),SAF 提供稳定的性能增益(+2.4 AUROC)。
锚点数 | 像素 F₁-max | 图像 AUROC |
|---|---|---|
1 | 33.3 | 84.7 |
4 | 34.6 | 84.7 |
16 | 33.5 | 84.9 |
32 | 32.4 | 84.5 |
4 个锚点是最佳平衡点,更多反而引入冗余。
层 | 像素 AUROC | 图像 AUROC |
|---|---|---|
{18} 单层 | 95.2 | 82.4 |
{6,12,18,24} 四层 | 95.8 | 84.7 |
多层融合捕获互补尺度的信息,四层组合效果最好。
VisualAD 的核心贡献:
值得关注的局限性:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。