WinCLIP: Zero-/Few-Shot Anomaly Classification and Segmentation

**论文地址:**https://arxiv.org/abs/2303.14814
项目页面:(未开源,但有非官方复现。在此基础上,我修改主干为 CLIP-ViT-L/14@336,添加多数据集调度)
学术交流群:922230617
目录
[1. 引言](#1. 引言)
[3. 背景](#3. 背景)
[4. WinCLIP 与 WinCLIP+](#4. WinCLIP 与 WinCLIP+)
[4.1 语言驱动的零样本异常分类](#4.1 语言驱动的零样本异常分类)
[4.2 WinCLIP:零样本异常分割](#4.2 WinCLIP:零样本异常分割)
[4.3 WinCLIP+:少正常样本扩展](#4.3 WinCLIP+:少正常样本扩展)
[5. 实验](#5. 实验)
[5.1 数据集与评估指标](#5.1 数据集与评估指标)
[5.2 零样本/少样本异常分类](#5.2 零样本/少样本异常分类)
[5.3 零样本/少样本异常分割](#5.3 零样本/少样本异常分割)
[5.4 与多样本方法对比](#5.4 与多样本方法对比)
[5.5 消融研究](#5.5 消融研究)
1. 引言
视觉异常分类(anomaly classification,AC)与分割(anomaly segmentation,AS)分别对工业制造中的缺陷进行分类和定位,预测图像或像素为正常或异常。
本文的假设是:语言在零样本/少正常样本异常分类与分割中可能更为重要。这一假设源于多项观察。
- 首先,"正常" 与 "异常" 是物体的状态,依赖于具体语境,语言有助于厘清这些状态。例如,"布料上的洞" 可能是理想的也可能是不理想的,取决于生产的是做旧风格还是常规风格的衣服。语言能为宽泛的 "正常" 和 "异常" 状态带来语境和特异性。
- 其次,语言能提供额外信息来区分真正的缺陷与可接受的正常偏差。
本文的主要贡献如下:
-
提出 组合式提示集成(compositional prompt ensemble,CPE),显著提升了基于 CLIP 的零样本异常分类性能;
-
提出 WinCLIP,高效提取并聚合与语言对齐的多尺度空间特征,用于零样本异常分割,是首次探索语言引导的零样本异常分类与分割;
-
提出一种简单的 参考关联方法(reference association),应用于多尺度特征图,实现基于图像的少样本异常分割。WinCLIP+ 结合了语言引导和纯视觉方法,用于少正常样本异常识别;
-
在 MVTec-AD 和 VisA 基准上的大量实验表明,WinCLIP/WinCLIP+ 在零样本/少样本异常分类与分割上大幅超越此前最优方法。
3. 背景
异常分类与分割。
- 给定图像 x,异常分类(AC)是二分类问题,判断图像级是否存在异常;异常分割(AS)是其像素级扩展,输出异常的位置。实际中通常建模为预测异常分数。由于缺乏异常(正)样本,单类场景被广泛采用,即训练数据仅包含正常(负)样本。
- 本文遵循单类协议,特别关注少样本(K=1 到 4)和此前未被探索的零样本设置。
CLIP 零样本分类。
- CLIP 通过对比学习训练图像编码器和文本编码器,最大化图像与文本embedding之间的余弦相似度。
- 给定输入图像和一组自由文本,CLIP 可通过 k 路分类分布进行零样本分类。
- 对于一组类别词,使用提示模板(如 "a photo of a c")能提升准确率,对多个模板进行集成可进一步提升性能。
4. WinCLIP 与 WinCLIP+
4.1 语言驱动的零样本异常分类
二类设计。
- 本文提出二类零样本异常分类框架 CLIP-AC,使用两类提示:"normal o" vs. "anomalous o",其中 o 是物体级标签。
- 实验表明二类设计显著优于单类设计,证明:(a)CLIP 预训练提供了强大的表征;(b)对异常的明确定义对良好性能是必要的。
组合式提示集成(Compositional prompt ensemble,CPE)。
- 不同于物体级分类器,CLIP-AC 在物体的两种 "状态" 之间进行分类。
- 为更好地定义这两种抽象状态,本文提出组合式提示集成,生成预定义的 状态词列表 和 文本模板列表 的所有组合。
- 状态词包括大多数物体共有的通用状态(如 "flawless" / "damaged"),也可根据需要添加任务特定的状态词("bad soldering" on PCB)。同时专门为异常任务整理了模板列表(a photo of a c for visual inspection)。
- 获取所有组合后,对每类标签的文本embedding取平均,作为正常和异常类的表征。
- CPE 与 CLIP 的提示集成的关键区别在于,后者仅对物体标签进行模板扩增,而 CPE 对状态词和模板进行组合式扩增。
讨论。
- 本文的二类设计加 CPE 是定义异常的新颖方法。
- 异常检测本身是一个不适定问题,先前方法仅通过正常图像建模正常性,将任何偏离视为异常,难以区分真正的异常与可接受的正常偏差。而语言可以用具体的词汇来定义状态。
4.2 WinCLIP:零样本异常分割

基于 CPE 的语言引导异常评分模型,本文提出 Window-based CLIP(WinCLIP)用于零样本异常分割,预测像素级异常。
给定分辨率为 h×w 的图像和图像编码器 f,WinCLIP 生成 d 维特征图:
- 生成一组滑动窗口,每个窗口是局部激活的二进制掩码(mask,k × k);
- 对每个窗口,将掩码应用于图像后通过编码器 f 得到窗口embedding。

对于 ViT 架构,WinCLIP 可直接受益于丢弃被掩码的 patch,类似掩码自编码器的方式。
窗口的调和聚合。
- 每个局部窗口的零样本异常分数是窗口特征与 CPE 文本embedding之间的相似度,该分数分配给窗口内的每个像素。
- 每个像素处,对所有重叠窗口的分数进行 调和平均聚合,对趋向正常预测(零值)的分数赋予更高权重。

多尺度聚合。 核大小 k 控制计算特征时的上下文范围,影响局部细节与全局信息的平衡。为捕获从小到大的不同尺度缺陷,本文聚合多尺度特征:
- 小尺度(ViT patch 尺度 2×2,对应像素 32×32);
- 中尺度(ViT 3×3,对应像素 48×48);
- 图像尺度(ViT class token,通过自注意力捕获图像上下文)。
聚合同样采用调和平均。

4.3 WinCLIP+:少正常样本扩展
仅靠语言引导的零样本方法不足以处理某些缺陷------这些缺陷只能通过视觉参照而非文本来定义。例如 MVTec-AD 中的 "Metal-nut" 有一类异常是 "flipped upside-down",只能通过与正常图像相对比来识别。为此,本文提出 WinCLIP+,引入 K 张正常参考图像。
参考关联(reference association)。 通过余弦相似度存储和检索参考图像的特征。给定query图像的特征,异常分割预测为:特征与所有参考特征的最小距离。
WinCLIP+ 在三个不同尺度上构建参考记忆:
- 小尺度特征;
- 中尺度特征;
- 带全局上下文的最后层特征。
即使最后层特征未与语言对齐,对定义正常和异常仍然有用。将三个尺度的预测取平均得到视觉异常分割图,再与语言引导的预测进行融合。
异常分类则结合两个互补分数:
- 来自少样本参考空间特征的最大值;
- 通过语言检索的 CLIP 知识。

5. 实验
5.1 数据集与评估指标
实验基于 MVTec-AD 和 VisA 数据集。两者包含不同物体的多样化子集和高分辨率图像,并提供完整的像素级标注。
- 分类评估采用 AUROC、AUPR 和 F₁-max;
- 分割评估采用像素级 AUROC(pAUROC)、Per-Region Overlap(PRO)和像素级 F₁-max。
实现细节。 采用 OpenCLIP 实现及 LAION-400M 预训练的 CLIP(ViT-B/16+)。WinCLIP 在 ViT patch embedding上使用步长 1。
5.2 零样本/少样本异常分类

在零样本设置下,WinCLIP 显著优于 CLIP-AC 的两种朴素适配。
在少正常样本设置下,WinCLIP+ 在所有指标上均大幅超越先前工作。
具体地,在 1-shot MVTec-AD 上比 PatchCore 提升 9.7%,在 1-shot VisA 上提升 5.3%。
值得注意的是,零样本 WinCLIP 已优于先前工作的少样本版本;WinCLIP+ 的 1/2/4-shot 性能进一步提升,证明了参考正常图像的额外价值。
5.3 零样本/少样本异常分割

零样本异常分割尚无先前工作,本文适配了 Trans-MM 和 MaskCLIP 两种方法作为对比。
- WinCLIP 在 MVTec-AD 和 VisA 上均大幅超越这两种方法。
- 在少正常样本设置下,WinCLIP+ 在所有指标上均超越先前方法。
- 定性结果如图 5 所示。

5.4 与多样本方法对比

在 MVTec-AD 上,4-shot WinCLIP+ 与使用全量样本的 CutPaste 具有竞争力。零样本 WinCLIP 在 AC 上已超越 DiffenNet 和 TDG 等近期少样本方法(即使这些方法使用了超过 10 张样本)。4-shot WinCLIP+ 也超越了 RegAD 的聚合 4-shot 性能。
5.5 消融研究

WinCLIP 用于 AC(Table 3):
- "anomalous" 一词的文本监督对获得合理性能至关重要,证明 CLIP 具备关于 "异常" 的知识;
- 状态级和提示级文本的多样性是性能提升的关键来源,其中状态集成贡献更大;
- 多裁剪预测也能带来小幅提升。

WinCLIP 用于 AS(Table 8):
- 验证了 WinCLIP 提取局部特征的高效性,以及多尺度和调和平均对提升结果的有效性。
- 对比表明,patch token 未与语言对齐,而 Image tiling 计算开销巨大。WinCLIP 实现了加速推理且性能更优。
- 分割受益于图像级、中等和局部上下文的结合。

WinCLIP+ 用于 AC 和 AS(Table 5): 验证了将语言驱动预测与基于参考正常图像的纯视觉模型相结合的有效性。