摘要
https://arxiv.org/pdf/2505.09926
通用视觉异常检测旨在无需额外微调的情况下,从新颖或未见过的视觉域中识别异常,这在开放场景中至关重要。最近的研究表明,预训练的视觉-语言模型(如CLIP)仅需零个或少量正常图像就展现出强大的泛化能力。然而,现有方法在设计提示模板、复杂的标记交互或需要额外微调方面存在困难,导致灵活性受限。在本工作中,我们提出了一种简单而有效的方法,称为AdaptCLIP,基于两个关键见解。首先,自适应的视觉和文本表示应交替学习而非联合学习。其次,查询图像和正常图像提示之间的对比学习应同时结合上下文和对齐的残差特征,而非仅依赖残差特征。AdaptCLIP将CLIP模型视为基础服务,仅在其输入或输出端添加三个简单的适配器:视觉适配器、文本适配器和提示-查询适配器。AdaptCLIP支持跨域的零/少样本泛化,并且在基础数据集上训练后,在目标域上具有无需训练的特性。AdaptCLIP在来自工业和医疗领域的12个异常检测基准测试中达到了最先进的性能,显著超越了现有的竞争方法。
我们将在https://github.com/gaobb/AdaptCLIP提供AdaptCLIP的代码和模型。
1. 引言
通用视觉异常检测(AD)旨在在单一基础或已见数据集上学习单个模型后,从新颖或未见过的视觉对象中识别异常图像并分割异常像素。这是一个更具挑战性的任务,因为它在面对跨域数据集时需要强大的泛化能力。同时,这也是一个更实用的话题,因为人们在现实场景中更关注快速适应能力,特别是在数据有限的情况下(即少样本甚至零样本)。例如,在医学图像诊断和工业视觉质量检测中,由于固有的稀缺性和隐私保护,很难收集大规模数据集。
最近,开发通用视觉AD引起了越来越多的关注,因为现有的无监督AD方法,无论是分离的[8, 25, 34]还是统一的模型[11, 48],在未见对象上表现不佳,尽管在已见对象上表现良好。
为了解决这一碎片化问题,最近的工作尝试设计通用模型来识别未见对象的异常。它们通常基于视觉-语言模型(即CLIP[29]),受益于强大的泛化能力。WinCLIP[16]在密集的图像块窗口上计算异常分数。这带来了巨大的计算成本和内存负担,限制了高分辨率输入或大型预训练模型的使用。AnomalyCLIP[53]学习类别无关的提示嵌入以对齐图像块标记,从而避免了密集窗口操作。它通过将可学习标记连接到CLIP的中间层进一步优化了原始CLIP。AdaCLIP[6]进一步将视觉知识整合到文本提示嵌入中。然而,这些方法可能会破坏CLIP的固有表示。因此,我们希望探索是否可以在保持CLIP原始能力的同时,实现相同甚至更好的AD性能。
相反,当输入明显偏离存储在我们大脑中的那些正常模式时,人类会感知到异常。神经科学中有证据支持这一观点[31]。PatchCore[34]构建了一个存储正常特征的记忆库,PaDiM[7]学习正常特征的多元高斯分布。在推理时,通过将输入特征与记忆库或学习的分布进行比较来识别异常。然而,这些方法通常需要一定数量的正常图像,因此在通用(即开放世界)场景中受到限制。最近的两项工作,即InCtrl[54]和PromptAD[23],研究了如何通过少样本正常图像进一步提高性能。然而,InCtrl只考虑异常分类,而PromptAD需要为每个类别学习一个新模型。与它们不同,我们希望全面探索一个通用AD模型,旨在无需在目标域上进行任何训练的情况下,从跨域中检测图像级和像素级的任何异常。
为此,我们提出了一种简单而有效的通用视觉异常检测框架,称为AdaptCLIP。AdaptCLIP的理念是"更少更简单可能更好",它包含三个由两个关键见解设计的适配器:首先,自适应的视觉和文本表示应交替学习而非联合学习。其次,查询图像与其对应的正常图像提示之间的对比学习应同时结合查询的上下文特征和提示与查询之间对齐的残差特征,而非仅依赖残差特征。我们的贡献总结如下。
- 我们提出了一种简单而有效的基于视觉-语言CLIP模型的通用视觉异常检测框架,能够在无需在目标域上进行任何训练的情况下,从跨域数据集中检测图像级和像素级的任何视觉异常。
- 我们提出了视觉和文本适配器,并发现它们应该在CLIP模型强大的视觉-语言表示指导下,交替学习自适应的视觉和文本表示。
- 我们提出了一个提示-查询适配器,旨在基于查询的上下文特征和提示与查询之间对齐的残差特征的联合分布,捕获查询图像和对应正常图像提示之间的元感知能力。
- AdaptCLIP在8个工业和4个医疗基准测试中优于零样本和少样本AD方法,如图5所示。同时,AdaptCLIP具有更简单的适配器、更少的参数和具有竞争力的效率。
2. 相关工作
无监督ADs的目标是在给定足够正常训练图像的情况下识别异常。大多数无监督AD方法大致可分为三类:基于嵌入、基于判别和基于重建的方法。基于嵌入的方法,如PaDiM[7]、MDND[32]、PatchCore[34]、CS-Flow[35]和PyramidFlow[19],假设从预训练模型中提取的离线特征保留了判别信息,从而有助于将异常与正常样本分开。基于判别的方法,如CutPaste[21]、DRAEM[50]和SimpleNet[25],通常通过引入伪(合成)异常样本来将无监督AD转换为有监督AD。基于重建的ADs,如自编码器[2, 12, 14, 40]、生成对抗网络[27, 45, 49]和重建网络[24, 33, 51],假设异常区域无法被正确重建,因此会产生高重建误差,因为它们在正常训练样本中不存在。最近的知识蒸馏[4, 8, 36, 42, 43]或特征重建方法[11, 46, 48, 52]训练学生或重建网络以匹配固定预训练教师网络,在有效性和效率之间取得了良好的平衡。然而,所有这些方法都局限于识别已见类别的异常,但在未见类别上通常表现不佳。对于新场景,人们必须先收集足够的正常图像,然后重新训练模型。这是低效的,缺乏实际应用所需的快速适应性。
零样本ADs通过利用大型视觉-语言模型(如CLIP[29])取得了令人印象深刻的性能。WinCLIP[16]设计了两类文本提示,并引入了多尺度图像块窗口以实现准确的异常分割。但它带来了巨大的计算成本和内存负担,限制了高分辨率输入或大型预训练模型的使用。AnomalyCLIP[53]学习类别无关的提示嵌入以对齐图像块标记,从而避免了密集窗口操作。此外,AnomalyCLIP通过将一些可学习标记附加到CLIP的中间层来优化原始CLIP表示。最近,AdaCLIP[6]和VCP-CLIP[28]利用类似的思想,进一步将视觉知识整合到文本提示嵌入中。我们认为,这些额外操作使模型更加复杂,可能会损害CLIP的原始能力。与视觉-语言模型不同,ACR[20]和MuSc[22]执行零样本AD仅需要批量级和完整测试图像,但它们在隐私保护场景中可能受到限制。与这些方法不同,我们探索是否可以在保留CLIP原始能力的同时,无需任何测试数据分布信息,实现相同甚至更好的AD性能。
少样本ADs主要关注学习或仅使用有限数量的正常图像,如TDG[37]、RegAD[15]、GraphCore[44]和FastRecon[10]。有些工作[9, 47]考虑另一种少样本设置,其中给定有限数量的异常图像样本。这些方法的性能落后于无监督ADs。最近,通过视觉-语言模型,少样本AD性能得到了显著提高。WinCLIP+[16]是第一个将CLIP模型应用于少样本AD的工作,它将正常标记存储到记忆库中,然后使用余弦相似度为每个查询标记检索最近的标记,最后使用最近距离计算异常图。InCtrl[54]进一步整合了多级信息,包括图像块级残差图和图像级残差特征,以及使用两类文本提示的先验知识分数,以学习用于异常分类的整体评分函数。它不考虑像素级异常分割。PromptAD[23]引入了显式异常边距的概念,这缓解了由于缺少异常训练图像而导致的训练挑战。然而,当应用于目标数据集时,它需要重新训练模型。相比之下,我们探索在统一模型中联合优化异常分类和分割,该模型可以快速适应新场景,仅给定少样本正常图像提示,不涉及额外的重新训练。
3. 方法
问题公式化:我们的目标是学习一个通用AD模型,该模型可以在无需在目标数据集上进行任何训练的情况下,从多样域中检测任何异常。因此,一个合理的假设是训练集和测试集之间存在不同的分布。正式地,令Dbase={Xi,Yi,yi}i=1ND_{base}=\{X_i, Y_i, y_i\}_{i=1}^NDbase={Xi,Yi,yi}i=1N为训练数据集,包含NNN个正常和异常图像,Xi∈Rh×w×3X_i \in \mathbb{R}^{h\times w\times 3}Xi∈Rh×w×3是第iii个图像,Yi∈Rh×wY_i \in \mathbb{R}^{h\times w}Yi∈Rh×w和yi={0,1}y_i = \{0, 1\}yi={0,1}是对应的异常掩码和异常标签,其中yi=0y_i = 0yi=0表示正常,yi=1y_i = 1yi=1表示异常。测试集TTT可能包含具有各种对象和异常类型的多个不同域。这里,我们将第ttt个新域表示为Dtnovel={Xi,Yi,yi}i=1NtD_{t}^{novel}=\{X_i, Y_i, y_i\}_{i=1}^{N_t}Dtnovel={Xi,Yi,yi}i=1Nt。在少样本设置下,从目标域的每个类别中随机抽取少量正常图像Pc={Xi}i=1kP_c=\{X_i\}_{i=1}^kPc={Xi}i=1k,其中ccc是类别索引,kkk通常是一个小数字,例如k={1,2,4}k=\{1, 2, 4\}k={1,2,4}。值得注意的是,PcP_cPc仅在推理期间可用,在训练阶段不能以任何方式使用。
概述:如图2所示,视觉适配器使用固定的两类文本提示嵌入来适应图像块和图像标记。文本适配器学习两类提示嵌入,以与固定的图像块和图像标记对齐。提示-查询适配器以单提示元学习方式运行,利用查询上下文特征和提示与查询之间对齐的残差特征的联合分布。在零样本场景中,使用文本和视觉适配器可以获得图像级异常分数和像素级异常图(第3.2节)。在少样本场景中,异常分数和图是通过集成来自零样本和提示-查询适配器的预测得出的(第3.3节)。下面我们将详细介绍它们。
3.1 重新审视CLIP用于异常检测
对于查询图像Xq∈Rh×w×3X_q \in \mathbb{R}^{h\times w\times 3}Xq∈Rh×w×3,我们将其输入到视觉编码器F(⋅)F(\cdot)F(⋅)中,获得局部图像块标记{Fiq∈Rd}i=1hw/p2\{F_i^q \in \mathbb{R}^d\}_{i=1}^{hw/p^2}{Fiq∈Rd}i=1hw/p2和全局图像标记fq∈Rdf^q \in \mathbb{R}^dfq∈Rd,其中ppp是图像块大小。
WinCLIP[16]引入了描述正常和异常状态的两类提示。例如,“a photo of a normal object”(正常对象的照片)和"a photo of a damaged object"(损坏对象的照片)。在实际应用中,可以为正常和异常状态设计多个文本描述。将这些正常和异常描述输入到文本编码器T(⋅)T(\cdot)T(⋅)中,我们可以获得正常wn∈Rdw^n \in \mathbb{R}^dwn∈Rd和异常wa∈Rdw^a \in \mathbb{R}^dwa∈Rd的嵌入。像素级异常图是通过测量所有图像块标记与文本嵌入之间的余弦相似度计算的,即
Y^=[exp(⟨wa,Fiq⟩)exp(⟨wa,Fiq⟩)+exp(⟨wn,Fiq⟩)],(1)\hat{Y}=[\frac{\exp(\langle w^a, F_i^q\rangle)}{\exp(\langle w^a, F_i^q\rangle)+ \exp(\langle w^n, F_i^q\rangle)}], \quad (1)Y^=[exp(⟨wa,Fiq⟩)+exp(⟨wn,Fiq⟩)exp(⟨wa,Fiq⟩)],(1)
其中⟨⋅⟩\langle\cdot\rangle⟨⋅⟩表示余弦相似度,[⋅][\cdot][⋅]表示所有图像块预测分数根据其空间位置重新排列并插值到原始输入分辨率。在方程1中用fqf^qfq替换FiqF_i^qFiq,我们可以获得XqX_qXq的图像级异常分数y^\hat{y}y^,即
y^=exp(⟨wa,fq⟩)exp(⟨wa,fq⟩)+exp(⟨wn,fq⟩).(2)\hat{y}=\frac{\exp(\langle w^a, f^q\rangle)}{\exp(\langle w^a, f^q\rangle)+ \exp(\langle w^n, f^q\rangle)}. \quad (2)y^=exp(⟨wa,fq⟩)+exp(⟨wn,fq⟩)exp(⟨wa,fq⟩).(2)
3.2 具有交替学习的AdaptCLIP
为了将CLIP适配用于通用视觉异常检测,我们设计了视觉和文本适配器,以交替学习视觉和文本表示。具体来说,当固定两类静态文本提示嵌入(waw^awa和wnw^nwn)时,视觉适配器学习自适应的视觉标记(Fiq′F_i^{q'}Fiq′和fq′f^{q'}fq′),而当固定视觉标记(FiqF_i^qFiq和fqf^qfq)时,文本适配器学习两类文本提示嵌入(wa′w^{a'}wa′和wn′w^{n'}wn′)。
视觉适配器使用固定的文本嵌入(waw^awa和wnw^nwn)来适应视觉标记(FiqF_i^qFiq和fqf^qfq)。它由两个分支组成,全局和局部,分别转换全局图像标记和局部图像块标记。在架构上,全局和局部分支使用简单的残差多层感知器(MLP)实现,即
Fiq′=Fiq+MLP(Fiq;θvl);fq′=fq+MLP(fq;θvg),(3)F_i^{q'}= F_i^q+\text{MLP}(F_i^q; \theta_v^l); \quad f^{q'}= f^q+\text{MLP}(f^q; \theta_v^g), \quad (3)Fiq′=Fiq+MLP(Fiq;θvl);fq′=fq+MLP(fq;θvg),(3)
其中θvl\theta_v^lθvl和θvg\theta_v^gθvg是可学习参数。在方程1和2中用Fiq′F_i^{q'}Fiq′和fq′f^{q'}fq′替换FiqF_i^qFiq和fqf^qfq,我们获得像素级异常图Y^v\hat{Y}_vY^v和图像级异常分数y^v\hat{y}_vy^v。
文本适配器旨在直接学习两类提示θa,θn∈Rr×d\theta^a, \theta^n \in \mathbb{R}^{r\times d}θa,θn∈Rr×d,没有提示模板,其中r>0r>0r>0是提示的长度。我们将它们输入到CLIP的冻结文本编码器T(⋅)T(\cdot)T(⋅)中,获得对应的嵌入wa′w^{a'}wa′和wn′w^{n'}wn′,即
wa′=T(θa),wn′=T(θn).(4)w^{a'} = T(\theta^a), \quad w^{n'} = T(\theta^n). \quad (4)wa′=T(θa),wn′=T(θn).(4)
然后,我们在方程1和2中用可学习的提示嵌入wa′w^{a'}wa′和wn′w^{n'}wn′替换静态的waw^awa和wnw^nwn,以推导局部和全局异常预测Y^t\hat{Y}_tY^t和y^t\hat{y}_ty^t。
交替学习还是联合学习?一个可能的问题是我们是否可以联合学习视觉和文本表示。也就是说,在方程1和2中,我们同时用可学习的提示嵌入(wa′w^{a'}wa′和wn′w^{n'}wn′)和自适应视觉标记(Fiq′F_i^{q'}Fiq′和fq′f^{q'}fq′)替换固定的文本嵌入和视觉标记。实际上,当有大规模图像-文本数据集可用时,这种联合对齐机制是成功的。然而,我们经验发现它在AD领域效果不佳,如表5所示(第3行与第4行对比)。这并不奇怪,因为可用的训练数据规模仍然相对较小,并且缺乏细粒度的文本注释。联合学习容易过拟合,并导致在新数据集上的泛化能力差。相比之下,交替学习帮助我们充分利用CLIP模型的先验知识,从而提高跨域泛化能力。
3.3 具有对比学习的AdaptCLIP
与静态或可学习的文本提示相比,使用正常图像作为视觉提示更直观。因此,我们希望学习查询图像XqX_qXq与其对应正常提示XpX_pXp之间的比较能力,这种能力可以很好地泛化到未见对象。我们发现应用多层特征会产生更好的结果。为简单起见,我们在以下内容中使用单层特征。
空间对齐:一种简单的方法是通过其残差特征的绝对值直接测量它们之间的差异,即∥Fiq−Fip∥\|F_i^q - F_i^p\|∥Fiq−Fip∥,其中FiqF_i^qFiq和FipF_i^pFip分别是XqX_qXq和XpX_pXp的图像块标记。如果查询和提示图像在像素空间中未对齐(例如,由于旋转和平移),这可能会失败。因此,我们必须对齐查询和提示标记以进行有效比较。对于任何查询标记FiqF_i^qFiq,我们使用欧几里得距离在所有正常标记{Fjp}j=1hw/p2\{F_j^p\}_{j=1}^{hw/p^2}{Fjp}j=1hw/p2中搜索最近的一个,即
Fip′=Fkp,k=argminj∥Fiq−Fjp∥2.(5)F_i^{p'}= F_k^p, \quad k=\arg\min_j \|F_i^q - F_j^p\|_2. \quad (5)Fip′=Fkp,k=argjmin∥Fiq−Fjp∥2.(5)
然后,我们将Fip′F_i^{p'}Fip′作为FiqF_i^qFiq的对齐提示标记。现在,我们可以推导出对齐的残差特征,即∥Fiq−Fip′∥\|F_i^q - F_i^{p'}\|∥Fiq−Fip′∥。
联合上下文和对齐的残差特征:对齐的残差特征很好地突出了差异或异常区域。然而,它可能会丢失上下文信息或引入噪声。直观上,上下文信息对于识别异常至关重要。因此,我们通过元素级求和聚合原始查询标记和对齐的残差特征,
Fˉi=Fiq+∥Fiq−Fip′∥.(6)\bar{F}_i= F_i^q + \|F_i^q - F_i^{p'}\|. \quad (6)Fˉi=Fiq+∥Fiq−Fip′∥.(6)
提示-查询适配器:最终目标是实现像素级异常分割和图像级异常分类。因此,我们提出了一个轻量级分割头G(⋅;θpl)G(\cdot; \theta_p^l)G(⋅;θpl),它将联合特征Fˉ\bar{F}Fˉ映射到异常图,即
Y^p=G(Fˉ;θpl),(7)\hat{Y}_p = G(\bar{F}; \theta_p^l), \quad (7)Y^p=G(Fˉ;θpl),(7)
其中θpl\theta_p^lθpl是其参数。具体来说,分割头由几个转置卷积块组成,后面跟着一个1×11\times11×1卷积层。这里,每个转置卷积块将输入特征上采样2倍,它由一个3×33\times33×3卷积、一个批归一化、一个ReLU和一个2×22\times22×2反卷积组成。
同时,我们需要获得全局图像级预测。首先,我们在联合特征Fˉ\bar{F}Fˉ上沿空间维度执行平均池化和最大池化,然后取它们的加权平均作为全局图像表示。然后,使用一个简单的MLP将全局特征映射到图像级预测分数,即
y^p=MLP((AvgPool(Fˉ)+MaxPool(Fˉ))/2;θpg),(8)\hat{y}_p=\text{MLP}((\text{AvgPool}(\bar{F})+ \text{MaxPool}(\bar{F}))/2; \theta_p^g), \quad (8)y^p=MLP((AvgPool(Fˉ)+MaxPool(Fˉ))/2;θpg),(8)
其中θpg\theta_p^gθpg是参数。
3.4 训练和推理
在训练期间,我们对全局图像异常分类使用交叉熵损失,对局部图像块异常分割使用Focal和Dice损失,这与AnomalyCLIP[53]完全相同。对于零样本推理,我们平均来自视觉和文本适配器的预测。对于少样本推理,我们融合(即平均)来自三个适配器的所有结果,即提示-查询、视觉和文本适配器,作为AdaptCLIP的最终预测。图3显示了AdaptCLIP像素级推理的PyTorch伪代码,其中W=[waT;wnT]W=[w^{aT}; w^{nT}]W=[waT;wnT],Wa=[wa′T;wn′T]W_a=[w^{a'T}; w^{n'T}]Wa=[wa′T;wn′T],FqF_qFq和FpF_pFp表示固定的FiqF_i^qFiq和FipF_i^pFip,FqaF_{qa}Fqa和FpaF_{pa}Fpa指的是自适应的Fiq′F_i^{q'}Fiq′和对齐的Fip′F_i^{p'}Fip′。这里,我们省略了图像级推理,因为它可以通过用全局图像标记替换局部图像块标记轻松获得。
4. 实验
4.1 实验设置
数据集:我们在来自工业和医疗领域的多个数据集上全面评估AdaptCLIP。对于工业领域,我们使用MVTec[3]、VisA[55]、BTAD[26]、MVTec3D[5]、DTD[1]、KSDD[38]、MPDD[17]和大规模Real-IAD[41]。在医疗领域,我们利用脑肿瘤检测数据集Br35H[13]和COVID-19[30],以及胃肠道息肉数据集Kvasir[18]和Endo[39]。这些数据集的详细介绍可在附录中找到。
评估指标:遵循先前的工作,我们在主论文中使用AUROC进行图像级异常分类,使用AUPR进行像素级异常分割。这里,我们强调AUPR更适合异常分割,因为在正常和异常像素之间存在极端不平衡问题[55]。在附录中,我们还使用所有指标提供详细比较,包括AUROC、AUPR和F1max。
训练和测试协议:遵循AnomalyCLIP[53],我们使用MVTec的测试数据训练AdaptCLIP,并在其他数据集上评估零/少样本性能。对于MVTec的评估,我们使用VisA的测试数据训练AdaptCLIP。为了公平比较,所有模型都使用相同的协议进行训练和评估。
竞争方法:我们将AdaptCLIP与各种最先进的零/少样本AD方法进行比较,包括零样本WinCLIP[16]、AnomalyCLIP[53]、AdaCLIP[6],以及少样本WinCLIP+[16]、InCtrl[54]和AnomalyCLIP+。这里,AnomalyCLIP+是我们基于AnomalyCLIP[53]构建的一个强大基线,通过添加类似WinCLIP+的图像块级特征关联。有关AdaptCLIP和竞争方法的更多实现细节可在附录中找到。
4.2 与零/少样本方法的比较
表1和表2展示了AdaptCLIP与竞争的零/少样本方法在8个真实工业和4个医疗AD数据集上的图像级异常分类和像素级异常分割比较结果。请注意,由于缺乏像素级注释,我们只使用图像级指标评估Br35H和Covid,由于这些两个数据集中不包含正常图像,我们只使用像素级指标报告Kvasir和Endo的结果。下面我们将详细分析这些结果。
工业域泛化:总体而言,AdaptCLIP在几乎所有工业数据集上的三种少样本设置(1样本、2样本和4样本)中都显著优于所有竞争模型。随着更多图像提示,所有方法的性能通常会更好。具体来说,InCtrl[54]由于在基础训练数据集上额外微调而超越WinCLIP[16]。AnomalyCLIP[53]进一步实现了更好的泛化,这验证了学习对象无关提示的重要性。
AdaptCLIP表现出卓越的性能,特别是在具有挑战性和大规模数据集(如VisA和Real-IAD)上,比AnomalyCLIP[53]高出很大差距(像素AUPR约10%+,图像AUROC约2%+)。这揭示了基于查询上下文特征和提示与查询之间对齐残差特征的联合分布的对比学习对于通用异常检测的能力。在零样本设置下,AdaptCLIP-Zero在异常分类方面显著优于最先进的AdaCLIP[6],尽管它在工业异常分割方面显示出轻微的弱点。然而,AdaptCLIP更简单,需要更少的可学习参数(0.6M vs. 10.7M,见表3),并且在工业到医疗领域的泛化能力更好。此外,如果我们只有一个正常图像提示可用,我们的单样本AdaptCLIP轻松超越零样本AdaCLIP[6]。
医疗域泛化:无论是在零样本还是少样本设置下,当应用在工业数据集(即MVTec)上训练的相同模型时,我们的AdaptCLIP在医疗AD上表现强劲。令人惊讶的是,它在图像异常分类(即AUROC提高6.3%)和像素异常分割(即AUPR提高8.6%)方面显著优于最先进的AdaCLIP。值得注意的是,即使将正常图像提示替换为异常图像,我们的方法仍然有效。这对于某些不包含任何正常图像的特殊数据集(如Kvasir和Endo)很有意义。这里,这一成功主要归功于提出的空间对齐机制,以及一个强大的先验假设,即异常像素大多是稀疏的。
效率比较:我们通过参数数量和前向推理时间来衡量复杂性和效率,如表3所示。评估在一个V100 GPU上使用批量大小32执行。AdaCLIP和AnomalyCLIP的参数数量分别是我们的AdaptCLIP的17倍和9倍。与最先进的方法相比,AdaptCLIP实现了具有竞争力的推理时间,同时具有更好的AD性能。从零样本扩展到单样本时,AnomalyCLIP+和我们的AdaptCLIP几乎不需要额外的推理时间,不像早期的WinCLIP。
定性结果:图4展示了一些从工业和医疗测试图像中选择的可视化结果,使用AdaptCLIP。总体而言,少样本正常图像提示帮助AdaptCLIP更准确地分割异常,并产生比零样本方式更少的误报。
4.3 与多样本方法的比较
在表4中,我们将少样本AdaptCLIP与多样本和完整样本统一AD模型进行比较。可以看出,AdaptCLIP优于早期的多样本方法,如RegAD[15],并且与最新的PromptAD[23]相当。值得注意的是,PromptAD[23]需要使用少样本正常图像重新训练,而我们的方法在目标域上保持无需训练。此外,我们的方法优于完整样本方法,如SimpleNet[25]和UniAD[48],并且也与最新的OneNIP[11]具有竞争力。简而言之,我们的方法表现出色,特别是在开放世界场景中用于通用异常检测,尽管与最先进的完整样本方法相比仍然存在一些小差距。
4.4 消融研究
为了证明AdaptCLIP中提出的三个适配器(TA:文本适配器,VA:视觉适配器,PQA:提示-查询适配器)以及两个主要见解(交替学习,以及基于查询上下文特征和提示与查询之间对齐残差特征的联合分布的对比学习)的有效性,我们在MVTec和VisA上进行实验,并在表5中报告结果。
简单但有效的基线。第一个基线是朴素CLIP(第0行),它仅使用两类文本提示进行零样本异常检测,简单有效。然而,它在像素级异常分割方面仍然较弱。单独的文本适配器和视觉适配器是两个额外的基线。具体来说,文本适配器可以看作是AnomalyCLIP[53]的极端简化,移除了文本提示模板和文本提示调优。简单的文本适配器在异常分类方面比原始AnomalyCLIP和朴素CLIP表现更好,尽管它在异常分割方面略逊一筹(第0行与第1行对比)。视觉适配器学习自适应的局部图像块标记和全局图像标记,以对齐CLIP中的文本表示,包括图像块和图像级别。这显著改善了像素级异常分割(第0行与第2行对比)。
交替学习优于联合学习。我们探索交替学习和联合学习策略对AdaptCLIP性能的影响。交替学习独立地适应视觉或文本表示,而联合学习同时优化两种表示。如表5所示(第3行与第4行对比),交替学习策略与联合学习相比显著增强了AdaptCLIP的性能。交替学习不仅充分利用了CLIP视觉和文本表示的强大先验指导,还减轻了由于在小训练数据集上微调而导致的过拟合风险。此外,我们观察到,单独的视觉适配器在异常分割方面表现出色(第2行),而单独的文本适配器在异常分类方面表现更好(第1行)。通过将交替学习整合到视觉和文本适配器中,AdaptCLIP通常实现卓越的异常检测性能(第4行)。
上下文信息和对齐残差特征的联合优于仅残差特征。对齐的残差特征捕获了异常特征与其对应正常特征之间的区别。它有效地消除了与单个对象相关的特征,可能会提高泛化能力。然而,我们意识到孤立的残差特征可能会丢失视觉对象的上下文信息,导致模型性能下降甚至训练失败(第5行)。因此,我们提出基于上下文和对齐残差特征的联合特征学习,这进一步显著提升了模型性能(第6行与第5行对比)。这意味着上下文信息对异常识别同样重要。值得注意的是,当集成所有提出的组件时,AdaptCLIP实现了最佳性能(第7行)。
对预训练CLIP模型的影响。我们在表6中报告了使用不同CLIP模型的AdaptCLIP的零样本和单样本结果。可以看出,更大的预训练模型总是带来更好的性能,特别是在图像级分类方面。此外,配备轻量级模型(ViT-B-16+240)的方法使我们能够实现具有竞争力的异常分割性能。
5. 结论
在本文中,我们介绍了一种通用异常检测任务,该任务专注于在域之间(如工业和医疗)以及在开放场景(如零样本或少样本设置)中泛化异常检测模型。一旦训练了通用异常检测模型,就不需要在目标数据集上进行任何微调。与单一零样本或少样本AD模型相比,通用异常检测模型更灵活,支持通过固定或可学习的文本提示和少量正常图像提示进行零/少样本推理,同时提供图像级和像素级异常预测。我们提出了一种通用异常检测框架AdaptCLIP,它交替学习自适应的视觉表示和文本提示嵌入,以及基于查询图像的上下文信息和查询与提示之间对齐残差特征的联合学习比较。在8个标准工业和4个医疗数据集上的大量实验表明,AdaptCLIP在多种设置下显著优于当前的竞争模型。
局限性:AdaptCLIP仅在给定零/少样本正常图像提示的情况下实现了良好的AD性能。然而,当我们提供异常图像作为正常图像提示时,它可能会导致模型混淆正常和异常实例,最终导致性能下降。幸运的是,在实际应用中,正常图像通常相对容易获得。此外,即使使用异常图像作为视觉提示,它也可能有效,因为即使在异常图像中,大多数像素也可能是正常的。
附录
6. 数据集详情
为了验证我们方法的有效性,我们在12个公开的异常检测数据集上进行了全面实验,涵盖两个领域(工业和医疗)以及三种模态(包括摄影、放射学和内窥镜)。我们仅使用两个测试数据集进行模型预训练和在其他测试数据集上的泛化评估,相关数据在表7中报告。具体来说,我们使用MVTec的测试数据训练模型,并在其他数据集上评估零样本/少样本性能。对于MVTec的评估,我们使用VisA的测试数据进行模型训练。
需要注意的是,Real-IAD是最大的工业异常检测数据集,包含多样类别(30个对象)和大规模图像(15万张),在所使用的数据集中规模最大。对于医疗领域,我们找不到同时包含图像级和像素级注释的公开2D医疗AD数据集。因此,我们仅在Br35H和Covid上报告图像级分类性能,而在Kvasir和Endo上提供像素级异常分割性能。
此外,我们注意到MPDD和所有四个医疗数据集都是姿态无关的,KSDD可能包含噪声。我们经验发现,在这些数据集上,少样本AD方法的性能可能受限,有时甚至可能比零样本方法更差。我们认为这是所有基于少样本正常图像提示方法的缺点。
7. 实现细节
我们使用预训练的CLIP(ViT-L/14@336)作为默认CLIP模型,并从层{6,12,18,24}\{6, 12, 18, 24\}{6,12,18,24}提取局部图像块标记,从最后一层{24}\{24\}{24}提取全局图像标记。所有图像都被调整为518×518518\times518518×518分辨率进行训练和测试。关于视觉和文本适配器,我们只使用CLIP视觉编码器最后一层(即24层)的特征,而对于提示-查询适配器,我们使用所有4层的特征。视觉适配器是一个两层MLP,其隐藏层维度是输入层的1/41/41/4,输出层维度与输入层保持相同。文本适配器中可学习文本提示嵌入的长度rrr设置为12。对于提示-查询适配器,第一个隐藏层的维度设置为128,然后下一层维度减半,直到最后一层在轻量级分割头和全局MLP中都设置为2。我们以0.001的学习率训练模型15个epoch。所有实验都使用PyTorch在单个NVIDIA V100 GPU上进行。
7.1. 竞争方法
为了公平比较,我们使用相同的训练协议和少样本正常图像提示,将最先进的零样本方法(如WinCLIP[16]、AnomalyCLIP[53]和AdaCLIP[6])以及少样本方法(如WinCLIP+[16]、InCtrl[54]、AnomalyCLIP+和PromptAD[23])与我们的AdaptCLIP进行比较。值得注意的是,原始的InCtrl[54]只支持图像级少样本AD,我们对其进行了适当扩展以允许像素级少样本AD。此外,AnomalyCLIP+是AnomalyCLIP的扩展,引入了WinCLIP+中的特征关联。在表8中,我们从能力(包括零样本、少样本、图像级异常分类、像素级异常分割、统一或分离模型和原始CLIP能力)和复杂性(包括预训练、目标数据集上的后微调、滑动窗口、类别名称、可学习提示和少样本正常图像提示)方面对这些方法进行了定性分析。我们详细总结如下。
WinCLIP[16]是第一个基于视觉-语言模型(即CLIP)的零样本异常检测方法。WinCLIP设计了两类文本提示,并引入多尺度图像块窗口以实现准确的异常分割。然而,它带来了巨大的计算成本和内存负担,限制了高分辨率输入或大型预训练模型的使用。需要注意的是,WinCLIP没有官方实现,我们的结果基于非官方实现。
WinCLIP+[16]结合语言引导和视觉引导的预测,以获得更好的异常分类和分割。语言引导预测与WinCLIP中的相同。对于视觉引导预测,它首先简单地将来自少样本正常图像的多尺度特征存储到记忆库中,然后使用距离或相似度测量每个查询特征与记忆库中最近特征之间的异常分数。最终的异常分数通过对这两个分数取平均得到。
AnomalyCLIP[53]学习对象无关的文本提示,这些提示捕获图像中与前景对象无关的通用正常和异常状态。然而,AnomalyCLIP需要在包含正常和异常图像的辅助领域数据集上进行微调。AnomalyCLIP是一种零样本异常检测方法,能够识别任何异常。我们使用官方模型报告异常分类和分割的性能。
AnomalyCLIP+是我们的基线之一。注意,原始的AnomalyCLIP只支持零样本异常检测。为了实现少样本异常检测,我们在AnomalyCLIP中引入了基于记忆机制的特征关联,类似于WinCLIP+。最终的异常结果也是由可学习文本提示引导的零样本预测和少样本正常图像提示引导的少样本预测的平均值。
InCtrl[54]整合了多级信息,包括图像块级残差图、图像级残差特征和使用两类文本提示的先验知识分数,以学习用于异常分类的整体评分函数。然而,它不考虑像素级异常分割。在本文中,我们简单地使用图像块级残差图作为像素级异常预测,这本质上类似于WinCLIP+。值得注意的是,InCtrl为不同的样本数量提供了多个模型。我们使用其官方模型进行广泛评估。此外,由于它没有提供1样本模型,我们使用2样本模型评估1样本性能。
AdaCLIP[6]进一步将来自查询图像的视觉知识整合到文本提示嵌入中,以增强视觉特征和文本提示嵌入之间的交互。与AnomalyCLIP不同,AdaCLIP使用更多辅助数据集(包括工业和医疗)训练基础模型,这不利于跨域评估。为了公平比较,我们使用与AnomalyCLIP相同的训练协议重新训练AdaCLIP模型,并在多个数据集上对零样本异常检测进行全面评估。
PromptAD[23]引入了显式异常边距的概念,以缓解由于缺少异常训练图像而导致的训练挑战。与AnomalyCLIP和AdaCLIP中的统一范式(即一个模型用于所有类别)不同,PromptAD使用分离范式(即一个类别一个模型)。因此,当应用于目标数据集的每个类别时,它需要使用少样本正常图像重新训练模型。此外,图像级异常分类和像素级分割模型也需要分别训练。在本文中,由于它涉及针对目标数据集每个类别的微调,我们只在MVTec和VisA上将PromptAD与我们的方法进行比较。
8. 完整实验结果
在我们的主论文中,我们使用AUROC进行图像级异常分类,使用AUPR进行像素级异常分割,将最先进的方法与我们的AdaptCLIP进行比较。这里,我们提供了更全面的比较,包括表9和表10中的图像级异常分类(AUPR和F1max),以及表11和表12中的像素级异常分割(AUROC和F1max)。为了更直观地显示零样本和少样本方法在不同数据集上的性能趋势,我们使用所有三个指标(AUROC、AUPR和F1max)展示了图像级异常分类和像素级异常分割的全面比较,如图5所示。此外,在主论文中,我们只为每个数据集报告所有类别的平均结果。这里,我们还为MVTec、VisA、MVTec3d、DTD、MPDD、Real-IAD、BTAD、KSDD、Br35H、Covid、Kvasir和Endo上的每个类别提供了更详细的报告,分别如表13、14、15、16、17、18、19、20、21和22所示。
9. 更多可视化结果
在我们的主论文中,我们只可视化了来自MVTec、VisA、Real-IAD、Kvasir和Endo的一些选定示例,以比较零样本和少样本AdaptCLIP。这里,我们在图6、7、8、9、10、11、12、13、14和15中展示了来自8个工业和2个医疗数据集共91个类别的更多可视化结果。