会议 2024 CVPR
paper https://arxiv.org/pdf/2403.06495
Code https://github.com/mala-lab/InCTRL
目录
摘要
本文探讨了通用异常检测(GAD)问题,旨在训练一个单一的检测模型,该模型能够在不经过任何进一步的目标数据训练的情况下,推广到检测来自不同应用领域的不同数据集中的异常。最近的一些研究表明,像CLIP这样的大型预训练视觉语言模型(VLMs)在检测来自各种数据集的工业缺陷方面具有很强的泛化能力,但它们的方法严重依赖于关于缺陷的手工制作的文本提示,这使得它们难以推广到其他应用中的异常情况,例如医学图像异常或自然图像中的语义异常。在这项工作中,我们提出通过使用少量正常图像作为样本提示,即时训练一个用于不同数据集上的AD的GAD模型。为此,我们引入了一种新的方法,即学习用于GAD的上下文残差学习模型,称为InCTRL。它在一个辅助数据集上进行训练,以基于对查询图像和少量正常样本提示之间的残差的整体评估来区分异常和正常样本。无论数据集如何,根据异常的定义,异常的残差预计会比正常样本的残差大,从而使InCTRL能够在不经过进一步训练的情况下跨不同领域进行泛化。我们在九个AD数据集上进行了全面的实验,以建立一个GAD基准,该基准涵盖了工业缺陷异常检测、医学异常检测以及在一对多和多类设置下的语义异常检测,在这些数据集上,InCTRL表现最佳,显著优于最先进的竞争方法。代码可在https://github.com/mala-lab/InCTRL获取。
引言
异常检测(AD)是一项至关重要的计算机视觉任务,旨在检测与数据集中大多数样本有显著偏差的样本,由于其在工业检测、医学影像分析和科学发现等广泛的实际应用中具有重要意义[12, 37]。当前的AD范式专注于在每个目标数据集的训练数据(例如一组无异常样本)上单独构建一个模型,例如数据重建方法[2, 22, 32, 39, 44, 61, 64 - 66, 68 - 70]、一类分类[6, 15, 42, 49, 67]和知识蒸馏方法[8, 11, 19, 43, 52, 53, 71]。
尽管这些方法在各种AD基准上表现出了显著的检测性能,但它们需要大量的训练数据,并且需要针对每个数据集熟练地训练检测模型。因此,在由于数据隐私问题(例如由于在训练模型时使用这些数据而导致的机器遗忘[63])或在新应用的部署中缺乏大规模训练数据而不允许在目标数据集上进行训练的应用场景中,它们变得不可行。为了解决这些挑战,本文探索了学习通用异常检测(GAD)模型的问题,旨在训练一个单一的检测模型,该模型能够在不经过任何目标数据训练的情况下,推广到检测来自不同应用领域的不同数据集中的异常。
由于在网络规模的图像 - 文本数据上进行了预训练,像CLIP[40]这样的大型视觉语言模型(VLMs)近年来表现出了卓越的泛化能力,能够在不经过任何针对目标数据的微调或适应的情况下,在不同数据集上实现准确的视觉识别。更重要的是,最近的一些研究(例如WinCLIP[25])表明,这些VLMs也可以用于在不同的缺陷检测数据集上实现显著的泛化。然而,这些模型的一个显著限制是它们对大量特定于缺陷的手工制作提示的依赖。这种依赖限制了它们的适用性,使得将它们的使用扩展到检测其他数据领域中的异常情况(例如医学图像异常[10, 20, 43, 50, 51]或一对多或多类设置下的语义异常[11, 42])具有挑战性。
为了解决这个问题,我们提出训练一个GAD模型,旨在利用来自任何目标数据集的少量正常图像作为样本提示,即时支持GAD。少量样本设置是基于在实际应用中通常很容易获得少量正常图像这一事实而提出的。此外,这些少量样本不用于模型训练/微调;它们仅在推理期间用作样本提示,以实现对测试图像的异常评分。这种表述与当前的少量样本AD方法[5, 23, 45, 46, 57, 58, 62]根本不同,后者使用这些目标样本及其大量扩充版本来训练检测模型,这可能导致对目标数据集的过拟合,并且无法推广到其他数据集,如图1(底部)所示。
然后,我们引入了一种GAD方法,即InCTRL,这是同类方法中的第一种,它学习一种基于CLIP的上下文残差学习模型。它通过学习识别查询图像与来自辅助数据的一组少量正常图像之间的残差/差异来训练一个GAD模型,以区分异常和正常样本。这些少量正常图像,即上下文样本提示,作为正常模式的原型。根据异常的定义,在不同领域的数据集中,与正常样本相比,异常通常预计会有更大的残差,因此,所学习的上下文残差模型可以推广到检测跨领域的各种类型的异常。
为了更好地捕捉残差,InCTRL在图像和补丁级别对上下文残差进行建模,从而深入了解异常的构成。此外,我们的上下文残差学习还可以将正常/异常文本提示引导的先验知识无缝地融入到检测模型中,从文本 - 图像对齐的语义空间为检测提供额外的优势。
因此,我们做出了以下主要贡献。
- 我们引入了一个GAD任务,以评估AD方法在不需要在目标数据集上进行训练/微调的情况下识别各种场景中的异常的泛化能力。据我们所知,这是第一项致力于通用异常检测方法的研究,涵盖了工业缺陷、医学异常和语义异常。
- 然后,我们提出了一种用于GAD的上下文残差学习框架,称为InCTRL。它旨在通过即时检测测试图像与来自任何目标数据集的上下文少量正常样本提示之间的残差来区分异常和正常样本。InCTRL在辅助数据上进行优化,以实现“一模型适用于所有”的目标,即一个用于不同数据集上的AD的模型,而无需在目标数据上进行任何训练。
- 我们在九个不同的AD数据集上进行了全面的实验,以建立一个GAD基准,该基准封装了三种流行的AD任务,包括工业缺陷异常检测、医学图像异常检测以及在一对多和多类设置下的语义异常检测。我们的结果表明,InCTRL显著优于最先进的竞争方法。
2. 相关工作
2.1. 异常检测
异常检测。由于异常数据的稀缺性,现有的AD方法通常依赖于无监督学习。已经引入了许多方法。单类分类方法[6,15,42,49,67]专注于用支持向量紧凑地描述正常数据。基于重建的方法[2,22,32,39,44,61,64 - 66,68 - 70]训练模型来重建正常图像,其中通过更高的重建误差来识别异常。基于距离的方法[16,17,41]根据测试图像嵌入与存储的训练数据中的正常参考嵌入之间的距离来确定异常。知识蒸馏方法[8,11,19,43,52,53,71]专注于从预训练模型中提炼正常模式,并基于提炼后的特征与原始特征之间的差异来检测异常。上述方法旨在适应目标数据集进行AD,即一个数据集对应一个模型。我们的目标是一种通用模型设置。一个相关的研究方向是解决域或分布偏移下的AD问题[1,11,20,34,66,74],但它们通常假设源数据和目标数据具有较大的域相关性。此外,已经有许多同时进行的研究利用VLMs进行AD[59,60,73],但它们解决的设置与我们不同,例如弱监督AD[59,60]或零样本AD[73]。
少样本异常检测(FSAD)。FSAD旨在仅使用来自目标数据集的有限数量的正常样本来识别异常。传统的FSAD研究侧重于对这些少量正常样本的正态分布进行建模以检测异常[5,23,30,45,46,57,58,62]。然而,这些方法通常无法推广到新的领域,因为它们通常需要使用来自目标数据集的正常数据进行重新训练或微调。
基于距离的方法,如SPADE[16]、PaDiM[17]和PatchCore[41],通过充分利用少量样本的可用预训练表示来计算基于距离的异常分数而无需训练,从而提供了一种解决此问题的方案。最近,RegAD[23]被设计为一种在FSAD任务中无需对新数据进行训练或微调即可运行的模型,但它需要训练数据和测试数据之间具有域相关性才能良好工作。WinCLIP[25]通过将图像通过多尺度窗口移动和向CLIP提供文本提示来处理图像,开创了大型视觉语言模型(VLM)在零样本和少样本异常检测任务中的应用。在不使CLIP适应AD任务的情况下,WinCLIP使用其手工制作的文本提示在缺陷数据集上获得了令人印象深刻的零样本检测性能,但当文本提示无法捕获所需的异常语义时,它就无法很好地工作,这使得它难以很好地推广到各种异常检测任务。
2.2. 上下文学习
上下文学习是一种创新方法,有助于提高大型语言模型(LLMs)在自然语言处理(NLP)中的性能[3,9,21],它利用最少的上下文提示有效地使LLMs适应新任务。
最近,一些研究[13,14,26,33,54]试图通过使用语言或专门设计的离散标记作为任务提示将视觉问题转换为NLP问题,将上下文学习应用于视觉任务。另一方面,Amir等人[4]通过将一系列视觉任务视为网格修复问题,引入了一种用于上下文视觉提示的新方法。类似地,Painter[55,56]随后提出执行掩码图像修复。然而,这些方法更侧重于任务级别的泛化,因此它们不适用于更侧重于实例级差异的AD任务。
我们的工作重新设计了用于GAD的上下文学习。我们将图像提示重新定义为特定于数据集的正常模式,而不是特定任务的指令。通过捕获查询图像和少量正常提示之间的上下文残差,我们的模型可以对各种异常获得连贯的理解,从而为GAD实现出色的广义检测性能。
3. InCTRL:上下文残差学习
3.1. 问题陈述
GAD的目标是训练一个单一的AD模型,该模型能够在来自不同应用领域的测试数据集上很好地检测异常,而无需在目标数据上进行任何训练。因此,假设训练集是从与测试集不同的分布中抽取的。形式上,设 D t r a i n = { X t r a i n , Y t r a i n } D_{train} = \{X_{train}, Y_{train}\} Dtrain={Xtrain,Ytrain}是一个带有正常和异常类别标签的辅助训练数据集,其中 X t r a i n = { x i } i = 1 N X_{train} = \{x_i\}_{i = 1}^{N} Xtrain={xi}i=1N由 N N N个正常和异常图像组成, Y t r a i n = { y i } i = 1 N Y_{train} = \{y_i\}_{i = 1}^{N} Ytrain={yi}i=1N,其中 y i = 0 y_i = 0 yi=0表示正常, y i = 1 y_i = 1 yi=1表示异常。给定一个来自 M M M个不同应用领域且具有各种类型异常的测试集集合 T = { D t e s t 1 , D t e s t 2 , ⋯ , D t e s t M } T = \{D_{test}^{1}, D_{test}^{2}, \cdots, D_{test}^{M}\} T={Dtest1,Dtest2,⋯,DtestM},其中 D t e s t j = { X t e s t j , Y t e s t j } D_{test}^{j} = \{X_{test}^{j}, Y_{test}^{j}\} Dtestj={Xtestj,Ytestj}。测试集是从与 D t r a i n D_{train} Dtrain不同的分布中抽取的。然后目标是训练一个通用异常评分函数: D t r a i n → R D_{train} \to \mathbb{R} Dtrain→R,使得它为来自 T T T中任何测试数据集的异常样本分配比正常样本更大的异常分数。在具有少量正常样本的GAD背景下,在推理期间,可以从目标域随机抽取一小部分正常图像 P = { p 1 , p 2 , ⋯ , p K } P = \{p_1, p_2, \cdots, p_K\} P={p1,p2,⋯,pK}(其中 K K K通常是一个小数字,例如 K ≪ N K \ll N K≪N),但在通用检测模型的训练过程中, P P P以任何方式都不可用。
3.2. 我们的方法InCTRL概述
我们的方法InCTRL旨在有效地对查询图像和作为样本提示的少量正常图像之间的上下文残差进行建模,利用CLIP的泛化能力来检测来自不同应用领域的异常的不寻常残差。CLIP是一个由文本编码器
f
t
(
⋅
)
f_t(\cdot)
ft(⋅)和视觉编码器
f
v
(
⋅
)
f_v(\cdot)
fv(⋅)组成的VLM,通过在网络规模的文本 - 图像数据上进行预训练,这些编码器的图像和文本表示得到了很好的对齐。InCTRL通过在视觉编码器中进行上下文残差学习,并借助来自文本编码器的文本提示引导的先验知识进行增强,使用辅助数据
D
t
r
a
i
n
D_{train}
Dtrain进行优化。
更具体地说,如图2所示,我们首先模拟一个包含一个查询图像 x x x和一组少量正常样本提示 P ′ P' P′的上下文学习示例,它们都是从辅助数据 D t r a i n D_{train} Dtrain中随机采样的。然后,通过视觉编码器,我们执行多层补丁级和图像级残差学习,分别捕获查询图像和少量正常样本提示之间的局部和全局差异(第3.3节和第3.4节)。此外,我们的模型允许基于这些文本提示嵌入与查询图像之间的相似性,无缝地整合来自文本编码器的正常和异常文本提示引导的先验知识(第3.5节)。InCTRL的训练是为了优化一个连接到视觉编码器的少量投影/适应层,以学习为 D t r a i n D_{train} Dtrain中的异常样本分配比正常样本更大的异常分数,同时冻结两个编码器中的原始参数;在推理期间,一个测试图像与来自目标数据集的少量正常图像提示以及文本提示一起,通过我们基于CLIP的适应GAD网络进行前向传播,其输出是测试图像的异常分数(第3.6节)。下面我们详细介绍这些模块。
3.3. 多层补丁级残差学习
为了有效地捕获查询图像和正常图像提示之间的细粒度上下文残差,我们在InCTRL中引入了一个多层补丁级残差学习组件。通常,CLIP视觉编码器由一系列块层组成。从底层到顶层,视觉编码器逐渐学习不同抽象层次的视觉模式[40]。因此,该组件旨在从视觉编码器内多个块层获得的补丁标记嵌入中对补丁级上下文残差进行建模。
具体来说,假设视觉编码器由
n
n
n个块组成,对于给定的一组少量正常样本提示
P
′
P'
P′和一个训练查询图像
x
x
x,我们提取一系列补丁标记嵌入图
{
T
x
l
}
l
=
1
n
\{T_x^l\}_{l = 1}^{n}
{Txl}l=1n和
{
T
x
′
l
}
l
=
1
n
\{T_{x'}^{l}\}_{l = 1}^{n}
{Tx′l}l=1n,其中
T
(
⋅
)
l
∈
R
h
×
w
×
d
T_{(\cdot)}^l \in \mathbb{R}^{h×w×d}
T(⋅)l∈Rh×w×d且
x
′
∈
P
′
x' \in P'
x′∈P′,
h
h
h、
w
w
w和
d
d
d分别是特征图
T
T
T的高度、宽度和维度。在每一层
l
l
l,通过查询标记的嵌入与
P
′
P'
P′中所有图像提示的图像提示标记的嵌入之间的距离来捕获补丁级上下文残差。形式上,对于查询图像
x
x
x,其在层
l
l
l的多层补丁级上下文残差由残差图
M
x
l
∈
R
h
×
w
M_x^l \in \mathbb{R}^{h×w}
Mxl∈Rh×w建模,其中
x
x
x的每个补丁的残差值是根据其补丁嵌入和
P
′
P'
P′中所有图像的最近补丁嵌入计算的,如下所示:
M
x
l
(
i
,
j
)
=
1
−
⟨
T
x
l
(
i
,
j
)
,
h
(
T
x
l
(
i
,
j
)
∣
P
′
)
⟩
M_x^l(i, j) = 1 - \langle T_x^l(i, j), h(T_x^l(i, j) | P')\rangle
Mxl(i,j)=1−⟨Txl(i,j),h(Txl(i,j)∣P′)⟩,(1)
其中
h
(
T
x
l
(
i
,
j
)
∣
P
′
)
h(T_x^l(i, j) | P')
h(Txl(i,j)∣P′)返回
P
′
P'
P′中所有图像补丁中与
T
x
l
(
i
,
j
)
T_x^l(i, j)
Txl(i,j)最相似的补丁标记的嵌入,
⟨
⋅
⟩
\langle\cdot\rangle
⟨⋅⟩是余弦相似度函数。最终的补丁级残差图
M
x
∈
R
h
×
w
M_x \in \mathbb{R}^{h×w}
Mx∈Rh×w是在
n
n
n个层的残差图上平均得到的:
M
x
=
1
n
∑
l
=
1
n
M
x
l
M_x = \frac{1}{n} \sum_{l = 1}^{n} M_x^l
Mx=n1∑l=1nMxl。(2)
M x M_x Mx中的每个残差值类似于查询补丁到 P ′ P' P′中图像补丁集的最近邻距离异常分数。如先前的研究[16,17,35,36,41]所示,这种基于距离的异常分数可以有效地将异常与正常样本区分开来。因此,得到的残差图 M x M_x Mx为InCTRL中后续的异常分数学习提供了在多层分辨率下具有集体异常判别能力的特征集。
3.4. 图像级残差学习
除了局部补丁级残差的判别能力外,图像级的全局判别信息也很重要,并且作为补丁级特征的补充知识。
因此,我们引入一个图像级残差学习组件来捕获 x x x和 P ′ P' P′之间的更高级别差异。直观地说,使用视觉编码器最后一个块的类别标记嵌入作为特征输入,因为由于视觉编码器中自底向上的信息抽象,它捕获了最多的图像级判别信息。然而,需要注意的是,CLIP最初是为分类任务设计的,侧重于场景中对象的语义,这与异常检测任务不太匹配,因为在异常检测任务中,正常和异常样本通常来自同一类对象。为了解决这个问题,我们包括一个由 Θ ψ \Theta_{\psi} Θψ参数化的适配器层 ψ ( ⋅ ) \psi(\cdot) ψ(⋅),以进一步使图像表示适应异常检测,因此,我们基于适应后的图像特征学习图像级残差。此外,使用少量样本提示的原型特征而不是单个样本的特征来学习上下文残差,因为它们有助于捕获正常模式的更具代表性的特征。
具体来说,设
f
v
(
x
)
∈
R
d
′
f_v(x) \in \mathbb{R}^{d'}
fv(x)∈Rd′是视觉编码器中输入
x
x
x的类别标记嵌入,我们首先计算
P
′
P'
P′中图像提示的特征图的原型:
I
p
=
1
K
∑
x
k
′
∈
P
′
ψ
(
f
v
(
x
k
′
)
;
Θ
ψ
)
I_p = \frac{1}{K} \sum_{x_k' \in P'} \psi(f_v(x_k'); \Theta_{\psi})
Ip=K1∑xk′∈P′ψ(fv(xk′);Θψ),其中
I
p
∈
R
d
′
I_p \in \mathbb{R}^{d'}
Ip∈Rd′。
然后设
I
x
=
ψ
(
f
v
(
x
)
;
Θ
ψ
)
I_x = \psi(f_v(x); \Theta_{\psi})
Ix=ψ(fv(x);Θψ)是查询图像
x
x
x的适应特征,
x
x
x的上下文图像级残差特征
F
x
F_x
Fx通过对两个特征图进行逐元素减法得到:
F
x
=
I
x
⊖
I
p
F_x = I_x \ominus I_p
Fx=Ix⊖Ip,(4)
其中
⊖
\ominus
⊖表示逐元素减法。随后,这些上下文残差特征被输入到一个图像级异常分类学习器
η
:
F
x
→
R
\eta: F_x \to \mathbb{R}
η:Fx→R,由
Θ
η
\Theta_{\eta}
Θη参数化,通过二元分类损失进行优化:
L
I
R
L
=
1
N
∑
x
∈
X
t
r
a
i
n
L
b
(
η
(
F
x
;
Θ
η
)
,
y
x
)
\mathcal{L}_{IRL} = \frac{1}{N} \sum_{x \in X_{train}} \mathcal{L}_{b}(\eta(F_x; \Theta_{\eta}), y_x)
LIRL=N1∑x∈XtrainLb(η(Fx;Θη),yx),(5)
其中
L
b
\mathcal{L}_{b}
Lb是二元分类损失。在我们的模型中默认使用Focal loss[31]。
3.5. 融合基于文本提示的先验知识
上述两个组件侧重于基于视觉编码器的残差学习。InCTRL还允许轻松整合来自CLIP文本编码器的关于正常和异常的文本提示引导的先验知识。这有助于InCTRL利用CLIP预训练的图像 - 文本对齐嵌入空间中隐藏的正常和异常语义进行GAD。受此启发,InCTRL利用文本编码器提取文本提示引导的判别特征。由于WinCLIP[25]中设计的文本提示显示出显著的检测性能,InCTRL采用相同的文本提示模板及其集成策略,包括状态级和模板级文本提示。在状态级,使用通用文本描述来区分正常和异常对象,而模板级提供了一系列为异常检测量身定制的特定提示(附录B.3中提供了使用的详细文本提示)。
需要注意的是,与WinCLIP使用这些文本提示直接计算异常分数不同,InCTRL利用它们提取文本提示引导的特征,以补充通过视觉编码器获得的补丁级和图像级残差特征。
具体来说,设
P
t
n
P_t^n
Ptn是正常类的文本提示集,我们使用文本提示嵌入的原型来提供正常文本提示的代表性嵌入
F
n
=
1
∣
P
t
n
∣
∑
p
i
∈
P
t
n
f
t
(
p
i
)
F_n = \frac{1}{|P_t^n|} \sum_{p_i \in P_t^n} f_t(p_i)
Fn=∣Ptn∣1∑pi∈Ptnft(pi),其中
p
i
∈
R
d
′
p_i \in R^{d'}
pi∈Rd′;类似地,我们可以通过
F
a
=
1
∣
P
t
a
∣
∑
p
j
∈
P
t
a
f
t
(
p
j
)
F_a = \frac{1}{|P_t^a|} \sum_{p_j \in P_t^a} f_t(p_j)
Fa=∣Pta∣1∑pj∈Ptaft(pj)获得异常文本提示集
P
t
a
P_t^a
Pta的原型嵌入。然后,InCTRL基于查询图像
x
x
x与两个文本提示原型之间的相似性提取一个面向AD的判别特征:
s
a
(
x
)
=
e
x
p
(
F
a
⊤
f
v
(
x
)
)
e
x
p
(
F
n
⊤
f
v
(
x
)
)
+
e
x
p
(
F
a
⊤
f
v
(
x
)
)
s_a(x) = \frac{exp(F_a^{\top} f_v(x))}{exp(F_n^{\top} f_v(x)) + exp(F_a^{\top} f_v(x))}
sa(x)=exp(Fn⊤fv(x))+exp(Fa⊤fv(x))exp(Fa⊤fv(x)),(6)
其中
[
⋅
]
⊤
[\cdot]^{\top}
[⋅]⊤表示转置操作,
s
a
(
x
)
s_a(x)
sa(x)是输入
x
x
x被分类为异常的概率。
3.6. 训练和推理
上下文残差学习。在训练期间,InCTRL执行综合了补丁级和图像级残差信息并由文本提示引导的特征增强的整体残差学习。查询图像
x
x
x的整体上下文残差图定义为:
M
x
+
=
M
x
⊕
s
i
(
x
)
⊕
s
a
(
x
)
M_x^+ = M_x \oplus s_i(x) \oplus s_a(x)
Mx+=Mx⊕si(x)⊕sa(x),
其中
s
i
(
x
)
=
η
(
F
x
;
Θ
η
)
s_i(x) = \eta(F_x; \Theta_{\eta})
si(x)=η(Fx;Θη)是基于图像级残差图
F
x
F_x
Fx的异常分数,
⊕
\oplus
⊕表示逐元素加法。然后InCTRL基于
M
x
+
M_x^+
Mx+设计一个整体异常评分函数
ϕ
\phi
ϕ,由
Θ
ϕ
\Theta_{\phi}
Θϕ参数化,并将最终异常分数定义为:
s
(
x
)
=
ϕ
(
M
x
+
;
Θ
ϕ
)
+
α
s
p
(
x
)
s(x) = \phi(M_x^+; \Theta_{\phi}) + \alpha s_p(x)
s(x)=ϕ(Mx+;Θϕ)+αsp(x),
其中
ϕ
(
M
x
+
;
Θ
ϕ
)
\phi(M_x^+; \Theta_{\phi})
ϕ(Mx+;Θϕ)使用补丁级、图像级和文本提示引导的特征进行整体异常评分,而
s
p
(
x
)
=
m
a
x
(
M
x
)
s_p(x) = max(M_x)
sp(x)=max(Mx)是图像补丁级基于最大残差分数的细粒度异常分数。
将
s
p
(
x
)
s_p(x)
sp(x)添加到公式(8)中是因为这种补丁级异常分数对于检测局部异常区域至关重要,而基于
ϕ
\phi
ϕ的整体异常分数通常可能会忽略这些区域。
α
\alpha
α是一个超参数,用于调节补丁级残差分数的贡献。最后,我们使用
X
t
r
a
i
n
X_{train}
Xtrain优化最终异常分数
s
(
x
)
s(x)
s(x):
L
h
=
1
N
∑
x
∈
X
t
r
a
i
n
L
b
(
s
(
x
)
,
y
x
)
\mathcal{L}_{h} = \frac{1}{N} \sum_{x \in X_{train}} \mathcal{L}_{b}(s(x), y_x)
Lh=N1∑x∈XtrainLb(s(x),yx)。(9)
因此,通过最小化以下总体损失来优化整个InCTRL模型:
L
I
n
C
T
R
L
=
L
I
R
L
+
L
h
\mathcal{L}_{InCTRL} = \mathcal{L}_{IRL} + \mathcal{L}_{h}
LInCTRL=LIRL+Lh。(10)
推理。在推理期间,对于给定的测试图像 x t x_t xt和来自目标数据集的 K K K - shot正常图像提示集 P P P,它们通过视觉编码器和适配器层进行前向传播,得到 M x t M_{x_t} Mxt和 s i ( x t ) s_i(x_t) si(xt)。使用训练期间使用的文本提示集来获得 s a ( x t ) s_a(x_t) sa(xt)。最后,我们通过公式(8)获得 x t x_t xt的最终异常分数。
4. 实验
4.1. 实验设置
数据集:为了验证我们的方法InCTRL的有效性,我们在九个真实世界的AD数据集上进行了全面的实验,包括五个工业缺陷检测数据集(MVTec AD[7]、VisA[75]、AITEX[47]、ELPV[18]、SDD[48])、两个医学图像数据集(BrainMRI[43]、HeadCT[43])以及两个语义异常检测数据集:MNIST[28]和CIFAR - 10[27],在一对多和多类协议下[11,42]。在一对多协议下,一个类别被视为正常,其他类别被视为异常;而在多类协议下,MNIST中偶数类的图像和CIFAR - 10中与动物相关类别的图像被视为正常,其他类别的图像被视为异常(更多细节见附录A)。
为了评估GAD性能,将MVTec AD的完整数据集(包括训练集和测试集)用作辅助训练数据,在其上训练GAD模型,然后在其他八个数据集的测试集上进行评估,而无需任何进一步的训练。在评估MVTec AD的性能时,我们在VisA的完整数据集上训练模型。目标数据的少量正常提示是从目标数据集的训练集中随机采样的,并且对于所有模型保持相同,以进行公平比较。我们将少量正常提示集的数量设置为 K = 2 , 4 , 8 K = 2,4,8 K=2,4,8来评估性能。报告的结果是在具有不同随机种子的三次独立运行中平均得到的。
竞争方法和评估指标:由于我们的目标是实现一个通用的AD模型,因此比较集中在具有相似通用检测能力的检测器上。遵循[25],将InCTRL与三种传统的全样本AD方法进行比较,包括SPADE[16]、PaDiM[17]和PatchCore[41],所有这些方法都通过基于少量正常样本执行基于距离的异常评分来适应少样本设置。我们还与最先进的(SotA)传统少样本AD方法RegAD[23]和CLIP驱动的方法WinCLIP[25]进行比较。流行的提示学习方法CoOp[72]被用作额外的基线,它在辅助数据上与InCTRL一样进行训练,之后它使用WinCLIP中的少样本异常评分策略进行异常检测。
至于评估指标,遵循先前的工作[11,23,25,38,41],我们使用两个流行的指标AUROC(接收者操作特征曲线下面积)和AUPRC(精确召回曲线下面积)来评估AD性能。我们还评估了基于CLIP的方法的参数数量和每幅图像的推理时间,这在我们的附录C.1中给出。
实现细节:默认情况下,对于基于CLIP的模型,包括WinCLIP、CoOp和我们的InCTRL,我们在实验中采用相同的CLIP实现OpenCLIP[24]及其公开预训练的骨干网络ViT - B/16 + 。使用Adam作为优化器,默认初始学习率设置为1e - 3。InCTRL中使用的文本提示与WinCLIP完全相同。为了使模型能够识别正常和异常对象,同时防止过拟合,在单个GPU(NVIDIA GeForce RTX 3090)上,将训练轮数设置为10,批量大小设置为48。SPADE、PaDiM和WinCLIP使用与InCTRL相同的图像提示以进行公平比较,并采用PatchCore、RegAD和CoOp的官方实现。更多细节在附录B中提供。
4.2. 主要结果
表1和表2分别展示了InCTRL与六种最先进的竞争方法在九个真实世界AD数据集上的AUROC和AUPRC比较结果。请注意,MVTec AD、VisA以及MNIST和CIFAR - 10的一对多设置的结果代表了它们各自数据子集的平均结果(细分结果见附录C)。下面我们详细分析这些结果。
推广到工业缺陷:一般来说,对于五个工业缺陷AD数据集,InCTRL在几乎所有情况下都显著优于所有竞争模型,在三个少样本设置中都是如此。随着少量图像提示数量的增加,所有方法的性能通常都会提高。具体来说,Patchcore的表现优于SPADE、PaDiM和RegAD,但它们在这些数据集上的泛化能力都很差。WinCLIP由于CLIP的卓越识别能力,获得了相当好的泛化能力并超过了Patchcore。由于上下文残差信息在数据集之间具有良好的可迁移性,InCTRL表现出卓越的性能,在很大程度上优于最先进的模型,特别是在像ELPV和SDD这样具有挑战性的数据集上。因此,与最佳竞争方法相比,我们的InCTRL模型在AUROC上分别提高了高达11.3%、6.5%、3.7%,在AUPRC上分别提高了6.4%、5.6%、6%。
推广到医学图像异常:当应用于医学图像AD数据集时,InCTRL在所有少样本设置中始终优于最先进的模型。很明显,除了WinCLIP之外,所有竞争方法的表现都很差。令人印象深刻的是,尽管InCTRL没有在医学数据上进行任何训练,但仅使用两个正常图像提示,它在BrainMRI上的AUPRC就可以达到超过97.3%。平均而言,在 K = 2 , 4 , 8 K = 2,4,8 K=2,4,8的设置下,InCTRL分别在AUROC上比最佳竞争模型高出3.9%、3.4%、3.9%,在AUPRC上高出0.6%、1%、1%。
在一对多和多类设置下推广到语义异常:在检测语义异常方面,InCTRL再次始终优于所有最先进的模型。值得注意的是,当先前的最先进方法只能获得50% - 65%的AUROC时,InCTRL可以获得90%以上的AUROC,展示了非常有前途的GAD性能。值得注意的是,WinCLIP在CIFAR - 10上取得了良好的性能。相比之下,CoOp的性能明显下降,可能是因为在适应与语义AD任务差异很大的辅助数据时丢失了关键的语义知识。总体而言,与在 K = 2 , 4 , 8 K = 2,4,8 K=2,4,8设置下的最佳竞争者相比,我们的InCTRL分别在AUROC上实现了高达8.2%、5.1%、4.4%的改进,在AUPRC上实现了2.3%、1.9%、2.5%的改进。
4.3. InCTRL为何泛化良好?
消融研究:我们研究了InCTRL的三个关键组件对泛化的贡献:文本提示引导的特征 ( T ) (T) (T)、补丁级残差 ( P ) (P) (P)和图像级残差 ( I ) (I) (I),以及它们的组合。结果报告在表3中。实验结果表明,对于工业缺陷AD数据集,视觉残差特征与基于文本提示的特征相比发挥了更重要的作用,特别是在像ELPV[18]、SDD[48]和AITEX[47]这样的数据集上。在医学图像AD数据集上,视觉残差和文本知识都对性能提升有很大贡献,表现出互补关系。在语义AD数据集上,结果主要受补丁级残差和/或基于文本提示的特征的影响。重要的是,我们的三个组件通常是相互互补的,从而在数据集上实现了卓越的检测泛化能力。
上下文残差学习的重要性:为了评估InCTRL中学习残差的重要性,我们在多层补丁级和图像级残差学习中尝试了两种替代操作:用1)连接操作和2)平均操作替换残差操作,同时固定InCTRL的所有其他组件。如表3所示,上下文残差学习比其他两种替代方法泛化得更好,显著提高了模型在三个不同领域的GAD性能。
4.4. 失败案例
为了更好地理解InCTRL的结果,我们提供了InCTRL在ELPV[18]上成功检测和失败检测的可视化结果。如图3所示,错误识别的异常(假阳性示例)与两个正常图像提示相比显示出明显的纹理差异,导致与真阳性示例相似的大残差值。相比之下,当查询图像与正常图像提示非常相似时,残差值显然非常小,如真阴性示例所示。当图像提示包括与错误识别的异常相似的正常图像时,这些情况可能会得到改善。这个失败案例说明了仅使用少量图像提示进行GAD的挑战。
这种情况与少量正常样本提示的多样性有关,当正常数据复杂时,例如在我们的多类协议中有多个不同的正常模式时,这一点尤为重要。
为了严格研究这个问题,我们在多类协议下评估了两个数据集的性能,在八样本设置中,正常图像提示中包含不同数量的正常类别。如图4所示,当提示集包含来自更多正常类别的样本时,InCTRL的性能不断提高。
5. 结论
在这项工作中,我们引入了GAD任务来评估AD方法在各种场景下识别异常的泛化能力,而无需在目标数据集上进行任何训练。这是第一项致力于通用异常检测方法的研究,涵盖了工业缺陷、医学异常和语义异常。然后,我们提出了一种在少样本设置下解决此问题的方法,称为InCTRL。InCTRL通过整体上下文残差学习实现了卓越的GAD泛化能力。在九个AD数据集上进行了广泛的实验,为上述三个流行的AD任务建立了GAD评估基准,在多个少样本设置下,InCTRL显著且始终优于最先进的竞争模型。