摘要
图像异常检测是一个重要的任务,尤其是在实时计算机视觉应用中。在这项工作中,我们聚焦于计算效率,并提出一个轻量化的特征提取器,它可以在现代GPU上在不到一毫秒的时间内处理图像。然后,我们使用学生-教师的方法来检测异常特征。
我们训练一个学生网络来预测正常(即无异常)训练图像的提取特征。通过学生网络未能预测其特征,从而在测试时检测到异常。
我们提出了一种训练损失,它阻碍学生在正常图像之外模仿教师的特征提取器。它使我们能够大幅降低学生-教师模型的计算成本,同时改进异常特征的检测。
我们进一步解决了具有挑战性的逻辑异常的检测问题,这些异常涉及正常局部特征的无效组合,例如,对象的错误排序。我们通过有效地结合一个可全局分析图像的自动编码器来检测这些异常。
我们在三个工业异常检测数据集的32个数据集上评估了我们的方法,称为EfficientAD。EfficientAD为异常的检测和定位设定了新的标准。在两毫秒的延迟和每秒600张图像的吞吐量下,它能够快速处理异常。加上其低错误率,这使其成为现实世界应用的经济解决方案,并为未来的研究奠定了富有成果的基础。
1 Introduction
在过去的几年里,深度学习方法在广泛的计算机视觉应用中不断提高了技术水平。这进一步伴随着在使得神经网络架构更快、更高效这方面的发展[47,63,65,68]。例如,现代分类体系结构侧重于延迟、吞吐量、内存消耗和可训练参数数量等特性[34,35,58,63,64,68]。这确保了随着网络功能的增强,它们的计算需求仍然适用于现实世界的应用。视觉异常检测领域最近也取得了快速进展,特别是在工业异常检测基准方面[7,9,51,54]。然而,最先进的异常检测方法往往会牺牲计算效率来提高异常检测性能。常见的技术包括集成学习、使用大型主干以及将输入图像分辨率增加到最多768×768像素。
现实世界中的异常检测应用程序经常对方法的计算需求施加约束。在某些情况下,过晚检测到异常可能会造成巨大的经济损失,例如农田中的金属物体进入联合收割机的内部。在其他情况下,甚至人类健康也面临风险,例如,如果机器操作员的肢体靠近刀片。此外,工业环境通常涉及由高生产率引起的严格的运行时间限制[4]。不遵守这些限制将降低相应应用的生产率,从而降低其经济可行性。因此,必须注意异常检测方法的计算和经济成本,以使其适用于现实世界的应用。
在这项工作中,我们提出了EfficientAD,这是一种在异常检测性能和推理运行时间上都树立新标准的方法,如图1所示。
们首先介绍了一种高效的网络架构,用于在现代GPU上在不到一毫秒的时间内计算表达功能。为了检测异常特征,我们使用学生-教师方法[10,54,66]。我们训练一个学生网络来预测由预先训练好的教师网络在正常(即无异常)训练图像上计算出的特征。因为学生没有在异常图像上进行训练,它通常无法模仿教师网络的输出。因此,教师和学生输出之间的大距离使得在测试时可以检测到异常。为了进一步增加这种效果,Rudolph等人[54]使用教师和学生之间的结构不对称。我们提出了一种以训练损失形式出现的损失诱导不对称,这种训练损失阻碍学生在正常图像之外模仿教师。这种损失不影响测试时的计算成本,也不限制架构设计。它允许我们对学生和教师都使用我们的高效网络架构,同时提高异常特征的检测效率。
我们的贡献总结如下:
- 我们在工业基准上大幅提高了异常检测和定位的技术水平,延迟为2毫秒,吞吐量超过每秒600张图像。
- 我们提出了一种有效的网络架构,与最近使用的特征提取器[51, 54, 69]相比,将特征提取速度提高了一个数量级。
- 我们引入了一个训练损失,在不影响推理运行时的情况下显著提高了学生-教师模型的异常检测性能。
- 我们实现了一种高效的基于自动编码器的逻辑异常检测,并提出了一种将检测结果与学生-教师模型的检测结果进行校准组合的方法。
2 Related Work
2.1. Anomaly Detection Tasks
视觉异常检测是一个快速发展的研究领域,具有多种多样的应用,包括医学成像[3, 19, 38]、自动驾驶[13, 24, 32]和工业检测[7, 18, 43]。应用通常具有特定的特点,例如在监控数据集中可用的图像序列[31, 37, 72]或医学成像数据集的不同模式(MRI[5],CT[3],X射线[27]等)。这项工作专注于检测RGB或灰度图像中的异常,而不是基于一系列图像进行预测。我们使用工业异常检测数据集来对我们提出的方法与现有方法进行基准测试。
MVTec AD数据集的引入[7,9]催化了工业应用方法的发展。它包含15个独立的检查场景,每个场景都由一个训练集和一个测试集组成。每个训练集只包含正常图像,例如无缺陷的螺丝,而测试集还包含异常图像。这代表了一个在现实世界应用中常见的挑战,即在异常检测系统开发过程中,缺陷的类型和可能的位置是未知的。因此,仅在正常图像上训练时方法表现良好是一个具有挑战性但至关重要的要求。
最近,已经引入了几个新的工业异常检测数据集[8, 11, 26, 28, 39, 74]。Visual Anomaly (VisA) 数据集[74]和 MVTec Logical Constraints (MVTec LOCO) 数据集[8]遵循了 MVTec AD 的设计,分别包含十二个和五个异常检测场景。它们包含的异常在实验上比 MVTec AD 的异常更具挑战性。此外,MVTec LOCO 不仅包含结构性异常,如污点或划痕,还包含逻辑异常。这些是逻辑约束的违反,例如,正常对象的错误排序或错误组合。我们将 MVTec AD、VisA 和 MVTec LOCO 称为数据集集合,因为每个场景都是由训练集和测试集组成的单独数据集。所有这三个都提供像素精确的缺陷分割掩码,用于评估方法的异常定位性能。
2.2. Anomaly Detection Methods
传统的计算机视觉算法已经成功地应用于工业异常检测任务几十年了[62]。这些算法通常满足在几毫秒内处理一张图像的要求。Bergmann等人[7]评估了其中一些方法,并发现当不满足如物体良好对齐等要求时,这些方法会失败。基于深度学习的方法已被证明可以更稳健地处理这类情况[7, 8]。
近期一个成功的方法是在预训练且冻结的卷积神经网络(CNN)的特征空间中应用异常检测和密度估计方法。如果特征向量可以映射到输入像素上,将它们的异常分数分配给相应的像素,就可以产生一个2D异常图,显示每个像素的异常分数。常见的方法包括多变量高斯分布[16, 30, 49]、高斯混合模型[39, 73]、规范化流[22,48,52,53,69]和k-最近邻(kNN)算法[14, 40, 41, 51]。对于基于kNN的方法来说,一个运行时的瓶颈是在推理过程中搜索最近邻居。因此,Roth等人通过PatchCore[51]在一个简化的特征向量聚类数据库上执行kNN。他们在MVTec AD上实现了最先进的异常检测结果。在我们的实验中,我们包括了PatchCore和FastFlow[69],后者(FastFlow)是一种最新的基于规范化流的方法,具有相对较低的推理运行时间。
Bergmann等人[10]提出了一种基于学生-教师(S-T)框架的异常检测方法,其中教师是一个预训练的冻结CNN。他们训练学生网络模仿教师在训练图像上的输出。因为学生在训练期间没有看到异常图像,它们通常无法预测这些图像上教师的输出,这使得可以进行异常检测。已经提出了S-T的各种改进[54, 57, 66]。Rudolph等人[54]通过限制教师为一个可逆的神经网络,在MVTec AD上达到了竞争性的异常检测性能。我们将我们的方法与他们的不对称学生教师(AST)方法以及原始的S-T方法(Uninformed Students)[10]进行比较。
像自动编码器[6, 8, 12, 20, 33, 44, 56]和GANs[2, 21, 46, 59, 60]这样的生成模型被广泛用于异常检测。最近基于自动编码器的方法依赖于对正常图像的准确重构和对异常图像的不准确重构[8, 12, 20, 44]。这使得通过比较重构和输入图像来检测异常成为可能。一个常见的问题是由于对正常图像的不准确重构(例如,模糊的重构)导致的误报。为了避免这种情况,GCAD[8]让自动编码器在预训练网络的特征空间中重构图像。另一个最近的基于重构的方法是DSR[71],它使用预训练自动编码器的潜在空间并在其中生成合成异常。类似地,最近提出的SimpleNet[36]在预训练的特征空间中生成合成异常,以训练一个判别网络来检测异常特征。在我们的实验中,我们包括了GCAD、DSR和SimpleNet。
3 Method
我们在以下小节中描述了EfficientAD的组成部分。它从第3.1节的预训练神经网络的高效特征提取开始。我们在测试时使用轻量级的学生-教师模型检测异常特征,如第3.2节所述。一个关键挑战是在保持总体运行时间低的同时,实现竞争性的异常检测性能。为此,我们引入了一个用于训练学生-教师模型的新颖损失函数。在第3.3节,我们解释了如何使用基于自动编码器的方法高效地检测逻辑异常。最后,在第3.4节,我们提供了一种校准和组合自动编码器与学生-教师模型的检测结果的解决方案。
3.1. Efficient Patch Descriptors
最近的异常检测方法通常使用深度预训练网络的特征,如WideResNet-101[51, 70]。我们使用深度大幅减少的网络作为特征提取器。它仅由四个卷积层组成,如图2所示。每个输出神经元具有33×33像素的感受野,因此每个输出特征向量描述一个33×33的patch。由于这种明确的对应关系,我们将该网络称为块描述网络(PDN)。PDN是完全卷积的,并且可以应用于可变大小的图像以在单个前向通过中生成所有特征向量。
为了让PDN生成富有表现力的特征,我们将一个深度预训练的分类网络的知识蒸馏到它里面。为了进行可控的比较,我们使用与PatchCore [51]相同的预训练特征,即来自WideResNet-101的特征。我们通过最小化其输出与从预训练网络提取的特征之间的均方差,在ImageNet[55]图像上训练PDN。附录A.2中提供了完整的训练超参数列表。除了更高的效率外,PDN与最近方法使用的深层网络相比还有另一个优点。根据设计,PDN生成的特征向量只依赖于其对应的33×33像素块中的像素。另一方面,预训练分类器的特征向量表现出对图像其他部分的长距离依赖性,这一点在图3(使用PatchCore的特征提取器作为例子)中得到了展示。PDN明确定义的感受野确保了图像的一个部分中的异常不能触发其他远处部分的异常特征向量,即不会损害异常的定位。
【在图3中,第一行表示相对于每个输入像素,位于输出中心的单个特征向量的绝对梯度,在输入和输出通道上取平均值。第二行表示ImageNet[55]中随机选择的1000张图像中第一个输出通道的平均特征图。这些图像的平均值显示在左侧。DenseNet[25]和WideResNet的特征图显示出强烈的伪影。】
3.2. Lightweight Student–Teacher
为了检测异常特征向量,我们采用了一种学生-教师(S-T)方法,其中教师由我们蒸馏的PDN担任。由于我们可以在不到一毫秒的时间内执行PDN,因此我们也使用其架构作为学生,从而实现了低整体延迟。然而,这种轻量级的学生-教师配对缺乏以前方法使用的那些技术来提高异常检测性能:组合多个教师和学生[10],使用来自层级金字塔的特征[66],以及使用学生和教师网络之间的架构不对称性[54]。因此,我们引入了一种训练损失,它在不影响测试时的计算需求的情况下,显著提高了异常检测的性能。
我们观察到,在标准的学生-教师(S-T)框架中,增加训练图像的数量可以提高学生模拟教师对异常情况的能力。这会恶化异常检测的性能。同时,故意减少训练图像的数量可能会抑制关于正常图像的重要信息。我们的目标是向学生展示足够的数据,使其能够在正常图像上充分模仿教师,同时避免泛化到异常图像上。类似于在线难例挖掘(Online Hard Example Mining)[61],因此我们将学生的损失限制在图像的最相关部分,即学生当前模仿教师最少的Patch【“currently mimics the teacher theleast”意味着这是当前学生最难以正确模仿教师输出的图像区域,即模型当前表现最差的部分】。我们提出了一种硬特征损失,它只使用具有最高损失的输出元素进行反向传播。
形式上,我们对一个训练图像
I
I
I 应用一个教师
T
T
T 和一个学生
S
S
S ,得到
T
(
I
)
∈
R
C
×
W
×
H
T(I)∈R^{C×W×H}
T(I)∈RC×W×H 和
S
(
I
)
∈
R
C
×
W
×
H
S(I)∈R^{C×W×H}
S(I)∈RC×W×H 。我们计算每个元组
(
c
,
w
,
h
)
(c,w,h)
(c,w,h) 的平方差异为
D
=
(
T
(
I
)
c
,
w
,
h
−
S
(
I
)
c
,
w
,
h
)
2
D=(T(I)_{c,w,h}−S(I)_{c,w,h})^2
D=(T(I)c,w,h−S(I)c,w,h)2。基于一个挖掘因子
p
h
a
r
d
∈
[
0
,
1
]
p_{hard}∈[0,1]
phard∈[0,1],我们计算
D
D
D 的元素的
p
h
a
r
d
p_{hard}
phard-分位数。给定
p
h
a
r
d
p_{hard}
phard-分位数
d
h
a
r
d
d_{hard}
dhard,我们计算训练损失
L
h
a
r
d
L_{hard}
Lhard 为所有
D
c
,
w
,
h
≥
d
h
a
r
d
D_{c,w,h}≥d_{hard}
Dc,w,h≥dhard 的平均值。将
p
h
a
r
d
p_{hard}
phard 设为零将产生原始的S–T损失。在我们的实验中,我们将
p
h
a
r
d
p_{hard}
phard 设为
0.999
0.999
0.999,这相当于在反向传播时平均使用
D
D
D 的每个维度中十分之一的值。图4展示了
p
h
a
r
d
=
0.999
p_{hard}=0.999
phard=0.999 时硬特征损失的效果。在推理时,2D异常分数图
M
∈
R
W
×
H
M∈R^{W×H}
M∈RW×H 由
M
w
,
h
=
C
−
1
∑
c
D
c
,
w
,
h
M_{w,h}=C^{−1}\sum_cD_{c,w,h}
Mw,h=C−1∑cDc,w,h 给出,即通过平均
D
D
D 的通道得到。它为每个特征向量分配一个异常分数。通过使用硬特征损失,我们避免了在正常图像上异常分数的离群值,即误报检测。
L
hard
=
1
N
hard
∑
c
,
w
,
h
D
c
,
w
,
h
≥
d
hard
D
c
,
w
,
h
L_{\text{hard}} = \frac{1}{N_{\text{hard}}} \sum_{\substack{c,w,h \\ D_{c,w,h} \geq d_{\text{hard}}}} D_{c,w,h}
Lhard=Nhard1∑c,w,hDc,w,h≥dhardDc,w,h
【图4展示了训练期间由硬特征损失生成的随机挑选的损失掩码。掩码像素的亮度表示相应特征向量的维度中有多少被选中用于反向传播。学生网络已经在背景上很好地模仿了教师,因此集中于学习不同旋转角度螺钉的特征。】
除了硬特征损失外,我们在训练过程中还使用了一种损失惩罚,这进一步阻碍学生在不属于正常的训练图像部分上模仿教师。在标准的学生-教师(S-T)框架中,教师要么是在图像分类数据集上预训练的,要么是预训练网络的蒸馏版本。学生则不是在预训练数据集上训练的,而只在应用的正常图像上训练。我们建议在学生网络训练时也使用教师网络的预训练图像。具体来说,在每个训练步骤中,我们从预训练数据集(本案例中是ImageNet)中随机抽取一张图像 P P P。我们计算学生的损失为 L S T = L h a r d + ( C W H ) − 1 ∑ c ∣ ∣ S ( P ) c ∣ ∣ F 2 L_{ST} = L_{hard}+(CWH)^{-1}\sum_c||S(P)_c||^2_F LST=Lhard+(CWH)−1∑c∣∣S(P)c∣∣F2 。这种惩罚阻碍学生将其对教师的模仿泛化到分布之外的图像上。
3.3. Logical Anomaly Detection
有许多类型的逻辑异常,例如丢失、错位或多余的对象,或者违反几何约束,例如螺钉的长度。根据MVTec-LOCO数据集[8]的作者的建议,我们使用自动编码器来学习训练图像的逻辑约束,并检测违反这些约束的情况。图5描述了EfficientAD的异常检测方法。它由前面提到的师生网络对和一个自动编码器组成。自动编码器被训练来预测老师的输出。形式上,我们将自动编码器
A
A
A 应用于训练图像
I
I
I ,得到
A
(
I
)
∈
R
C
×
W
×
H
A(I)∈R^{C×W×H}
A(I)∈RC×W×H,计算损失为
L
A
E
=
(
C
W
H
)
−
1
∑
c
∣
∣
T
(
I
)
c
−
A
(
I
)
c
∣
∣
F
2
L_{AE} = (CWH)^{-1}\sum_c||T(I)_c-A(I)_c||^2_F
LAE=(CWH)−1∑c∣∣T(I)c−A(I)c∣∣F2 。我们使用标准卷积自动编码器,包括编码器中的跨步卷积和解码器中的双线性上采样。我们在附录A中提供了其层的详细超参数。
【EfficientAD应用于MVTec LOCO的两个测试图像。正常输入图像包含一根水平电缆,该电缆在任意高度连接两个拼接连接器。左侧的异常是电缆末端的一个小金属垫圈形式的异物。它在局部异常图(local anomaly map)中可见,因为学生和老师的输出不同。右边的逻辑异常是第二根电缆的存在。自动编码器无法在教师的特征空间中重建右侧的两条电缆。除了老师的输出,学生还预测自动编码器的输出。因为它的感受野仅限于图像的小块,所以它不受额外红色电缆的影响。这导致自动编码器和学生的输出不同。“Diff”是指计算两个输出特征图集合之间的元素平方差,并计算其在特征图上的平均值。为了获得像素异常分数,使用双线性插值调整异常图的大小以匹配输入图像。】
与基于patch的学生网络不同,自动编码器必须通过64个潜在维度(隐层)的bottleneck对整张图像进行编码和解码。在具有逻辑异常的图像上,自编码器通常无法生成正确通过隐层在教师的特征空间中重建图像。然而,在正常图像上,它的重建也存在缺陷,因为自编码器通常难以重建细粒度特征[12,17]。这种情况在图5中对背景网格的检测上也有出现。使用教师输出和自编码器重建之间的差异作为异常特征,将导致这些情况下的假正例【指模型错误地将正常情况识别为异常】【当自动编码器无法准确重构正常图像中的细节时,任何重构误差都可能被误解为异常。例如,如果一个正常的图像由于其复杂的纹理而未能被自动编码器准确重构,这个区域的重构误差可能会被错误地识别为异常,从而产生误报。】。取而代之的是,我们将学生网络的输出通道数量增加一倍,并对其进行训练,以预测自动编码器的输出以及教师的输出。设 S ′ ( I ) ∈ R C × W × H S'(I)∈R^{C×W×H} S′(I)∈RC×W×H 表示学生的附加输出通道。使用教师输出和自动编码器重构之间的差异作为异常映射图将导致这些情况下的误报。因此,我们将学生网络的输出通道数翻倍,并训练它除了预测教师的输出外,还预测自动编码器的输出。让 S ′ ( I ) ∈ R C × W × H S′(I)∈R^{C×W×H} S′(I)∈RC×W×H 表示学生额外的输出通道。然后学生的额外损失是 L S T A E = ( C W H ) − 1 ∑ ∥ A ( I ) c − S ′ ( I ) c ∥ F 2 L_{STAE}=(CWH)^{−1}\sum∥A(I)_c−S'(I)_c∥_F^2 LSTAE=(CWH)−1∑∥A(I)c−S′(I)c∥F2。总的训练损失是 L_AE,L_ST,和 L_STAE 的和。 L t o t a l = L A E + L S T + L S T A E L_{total}=L_{AE}+L_{ST}+L_{STAE} Ltotal=LAE+LST+LSTAE
学生网络学习了自动编码器在正常图像上的系统性重构错误,例如模糊的重构。同时,它没有学习到异常的重构错误,因为这些不是训练集的一部分。这使得自动编码器的输出和学生的输出之间的差异非常适合用来计算异常映射图。类似于学生-教师对,异常映射图是两个输出之间的平方差异,通过通道平均得到。我们将这个异常映射图称为全局异常映射图,并将学生-教师对生成的异常映射图称为局部异常映射图。我们平均这两个异常映射图来计算组合异常映射图,并使用其最大值作为图像级别的异常分数。组合异常映射图因此包含了学生-教师对和自动编码器-学生对的检测结果。在这些检测结果的计算中共享学生的隐藏层,使我们的方法能够保持低计算要求,同时能够检测结构性和逻辑性异常。【学生网络共用在两种检测任务(与教师网络和自动编码器的比较)中的隐藏层,节约了计算资源,且提高了检测的灵活性,因为结构性异常通常由学生-教师对发现,而逻辑性异常则由自动编码器-学生对发现。】
3.4. Anomaly Map Normalization
在对局部和全局异常图进行平均以获得组合异常图之前,必须将其归一化为相似的尺度。这对于那些异常只在其中一个映射图中被检测到的情况非常重要,比如在图5中所示的案例。否则,一个映射图中的噪声可能会使另一个映射图中准确的检测在组合映射图中变得不明显。为了估计正常图像中噪声的尺度,我们使用验证图像,即训练集中未见过的图像。对于两种类型的异常映射图,我们计算所有验证图像中所有像素异常分数的集合。然后我们为每个集合计算两个p分位数:分别是
q
a
q_a
qa 和
q
b
q_b
qb ,对应于
p
=
a
p=a
p=a 和
p
=
b
p=b
p=b。我们确定一个线性变换,将
q
a
q_a
qa 映射到异常分数0,将
q
b
q_b
qb 映射到分数0.1。在测试时,局部和全局异常映射图分别用相应的线性变换进行规范化。
【局部和全局异常映射图可能会有不同的值范围,直接平均这两个映射图可能会导致误解或掩盖某些异常检测结果。为了解决这个问题,使用了一个基于验证图像集的统计方法来估计噪声水平,并确定了一个线性变换,该变换将异常分数的特定分位数映射到预定义的新分数上。】
- 为什么要基于验证图像集?
- 如何进行变换的?
通过使用分位数,规范化变得对正常图像上异常分数的分布更加稳健,而这些分数在不同的场景中可能会有所不同。无论 q a q_a qa 和 q b q_b qb 之间的分数是正态分布、高斯混合分布,还是其他分布,都不会影响规范化过程。我们的实验包括了对a和b值进行消融研究。将映射目标值设为0和0.1对异常检测度量如接收者操作特征曲线(ROC)下面积(AU-ROC)没有影响。这是因为AU-ROC仅依赖于分数的排名,而不依赖于它们的规模。我们选择0和0.1是因为它们生成的映射图适合用标准的从零到一的颜色尺度来显示【即为了可视化成便于人眼观察的映射图】。
4 Experiments
我们将EfficientAD与AST[54]、DSR[71]、Fast-Flow[69]、GCAD[8]、PatchCore[51]、SimpleNet[36]和S–T[10]进行了比较,并在可用的情况下使用官方实现。我们在附录B中提供了所有评估方法的配置细节。
GCAD由两个使用不同特征提取器的异常检测模型组成的集成体系构成。我们发现,两个集成成员中的一个在平均表现上优于组合后的集成体系,因此我们报告了这一成员的结果。这将报告的GCAD延迟减少了两倍。
对于SimpleNet,我们能够复制官方结果,但发现SimpleNet在针对特定场景的测试图像上调整了训练时长。在训练过程中,模型会反复在所有测试图像上进行评估,训练后报告所有获得的测试分数的最大值。我们禁用了这种技术,因为它高估了模型对未见图像的实际性能。实际操作中,这还需要一个包含异常图像的验证集。MVTec AD、VisA和MVTec LOCO的训练和验证集中不包括异常图像,以避免对特定缺陷类型的超参数进行调整。因此,对于SimpleNet,我们评估最终训练好的模型,遵循常见做法。【即,评估SimpleNet的性能时,训练集和验证集不包含异常图像。这是为了避免对特定类型的缺陷进行过度调整,确保模型评估的公平性和适用性,以及模型在实际应用中对各种类型的异常都具有较好的检测能力。】
对于PatchCore,我们包括两种变体:默认的单个模型变体,作者报告其延迟最低;集成变体,由PatchCor_Ens表示。我们可以复制官方结果,但为了进行公平的比较,禁用了76.6%的输入图像的中心裁剪。在MVTec AD的情况下,99.9%的缺陷完全或部分位于该裁剪区域内。在实际应用中,异常也可能发生在该区域之外。我们禁用自定义裁剪,因为这意味着了解测试集中的异常情况。
对于FastFlow,我们使用基于WideResNet-50-2功能提取器的版本,因为它类似于PatchCore、SimpleNet和我们的方法使用的WideResNet。我们使用Intel anomalib[1]提供的实现,但禁用早停,即测试图像上训练持续时间的特定场景调整,类似于SimpleNet。在启用早期停止的情况下,EfficientAD本身在MVTec AD上实现了99.8%的图像级检测AU-ROC。
对于我们的方法,我们评估了两种变体:EfficientAD-S和EfficientAD-M。EfficientAD-S为教师和学生使用图2中显示的架构。对于EfficientAD-M,我们将教师和学生的隐藏卷积层中的核数增加一倍。此外,我们在第二个池化层和最后一个卷积层之后插入1×1卷积。我们在附录A.1中提供了一份实施细节清单,如学习率时间表。
我们在MVTec AD、VisA和MVTec LOCO的32个异常检测场景上评估每种方法。方法的异常检测性能通过基于其预测的图像级异常分数的AU-ROC(受试者操作特征曲线下的面积)来衡量。我们根据[7]的推荐,使用AU-PRO(异常定位性能评估指标)分割度量来衡量异常定位性能,直到30%的假阳性率。对于MVTec LOCO,我们使用AU-sPRO度量[8],这是AU-PRO度量的泛化,用于评估逻辑异常的定位。附录D提供了额外的异常检测度量的结果,如精确度-召回曲线下的面积以及基于像素异常分数计算的像素级AU-ROC。
- AU-ROC:这是一种常用的评估分类器性能的度量,尤其是在异常检测任务中。它衡量的是模型在不同阈值下假阳性率和真阳性率的关系,反映了模型区分异常和正常情况的能力。
- AU-PRO:这是专门用于评估模型在定位图像中的异常区域性能的度量。它关注的是在给定的假阳性率(在本例中为30%)下模型定位异常的能力。
- AU-sPRO:这是AU-PRO的泛化,特别用于评估逻辑异常的定位性能。逻辑异常通常更难以检测和定位,因为它们涉及到图像内容的更高级语义。
在报告数据集集合的AU-ROC或AU-PRO时,我们遵循数据集作者的策略。对于每个集合,我们评估每个场景的相应指标,然后计算各个场景的平均值。对于MVTec LOCO,我们使用官方评估脚本,该脚本在计算的度量中给逻辑和结构异常赋予了相等的权重。在报告三个数据集的平均AU-ROC或AU-PRO时,我们计算这三个数据集中的平均值。因此,一个总体平均分数大约以六分之一和五分之六的比例分别权衡逻辑异常和结构异常。【因为只有MVTec LOCO有逻辑异常。】我们在附录中分别提供了32个异常检测场景的评估结果,以便使用自定义权重进行评估。
表1报告了每种方法的总体异常检测性能。EfficientAD实现了强大的图像级检测和像素级异常定位。它可靠地定位图像中的异常提供了可解释的检测结果,并允许在检测中发现虚假相关性。它还实现了灵活的后处理,例如根据缺陷的大小排除缺陷分割。在图像中可靠地定位异常能够提供可解释的检测结果,并允许发现检测中的虚假相关性。它还使得灵活的后处理成为可能,比如根据缺陷分割的大小来排除某些分割。
表1 与延迟和吞吐量相比,异常检测和异常定位的性能。每个 AU-ROC 和 AU-PRO 百分比分别是 MVTec AD、 VisA 和 MVTec LOCO 上平均AU-ROC 和平均AU-PRO 的平均值。对于 EfficientAD,我们报告了5次运行的平均值和标准差。
表2将异常检测的整体表现分为三个数据集。结果表明,EfficientAD 在 MVTec LOCO 上的领先地位与其在逻辑异常和结构异常方面的性能相当。在表3中,我们评估了 EfficientAD 对不同超参数的稳健性。
【对于EfficientAD,我们报告了五次运行的平均值。仅仅在MVTec AD(MAD)上进行方法开发,容易导致过度拟合设计选择到少数剩余的被误分类的测试图像上。】没看懂什么意思。。。。。。
此外,我们还测量了推理过程中每种方法的计算成本。如上所述,参数的数量可能是卷积架构的延迟和吞吐量的误导性代理指标,因为它没有考虑卷积的输入特征图的分辨率,即参数在前向传递中使用的频率。类似地,浮点运算(FLOP)的数量可能会产生误导,因为它没有考虑到并行计算的容易程度。为了透明起见,我们在附录E中报告了每个方法的参数数量、FLOP数量和内存占用。在这里,我们重点关注异常检测应用程序中最相关的指标:延迟和吞吐量。我们测量了batch size为1的延迟和batch size为16的吞吐量。表1报告了NVIDIA RTX A6000 GPU上每种方法的测量结果。图6显示了我们实验设置中每个GPU上每个方法的延迟。附录E详细描述了我们的计时方法。
在图7中,我们展示了在VisA数据集上随机采样的EfficientAD的定性结果。附录F还提供了其他评估方法和数据集的定性结果。
【随机采样的异常图像;ground truth的分割掩码;EfficientAD-M生成的异常图】
我们在消融研究中检查了EfficientAD成分的影响,如表4和表5所示。对于没有提出的基于分位数的映射归一化的实验,我们使用基于高斯的映射归一化作为基线。在那里,我们计算线性变换参数,使得验证集上的像素异常分数的平均值为零,方差为一。这种基线归一化对验证异常分数的分布很敏感,这些分数可能因场景而异。基于分位数的归一化与qa和qb之间的分数如何分布无关,并且表现明显好于基线。
我们还评估了两个提出的损失项对训练师生对的影响。在表4中,硬特征损失使异常检测AU-ROC增加了1.0%。仅此一项改进就大于或等于表1中 FastFlow、 DSR、 PatchCore、 PatchCoreEns 和 AST 的连续行之间的每一项改进幅度。学生对预训练图像的惩罚进一步提高了异常检测性能。值得注意的是,所提出的映射归一化、硬特征损失和预训练惩罚使EfficientAD的计算要求保持在较低水平,同时为异常检测性能创造了可观的裕度。
Conclusion
在本文中,我们介绍了EfficientAD,这是一种具有强异常检测性能和高计算效率的方法。它为检测结构异常和逻辑异常设定了新的标准。EfficientAD-S和EfficientAD-M在异常的检测和定位方面都大大优于其他方法。与第二好的方法AST相比,EfficientAD-S将延迟减少了24倍,吞吐量增加了15倍。其低延迟、高吞吐量和高检测率使其适用于现实世界中的应用。对于未来的异常检测研究,EfficientAD是一个重要的基线和富有成果的基础。例如,其高效的补丁描述网络也可以用作其他异常检测方法中的特征提取器,以减少其延迟。
局限性 学生-教师模型和自动编码器被设计用于检测不同类型的异常。自动编码器检测逻辑异常,而学生-教师模型检测粗略和细粒度的结构异常。然而,细粒度的逻辑异常仍然是一个挑战——例如,两毫米长的螺钉。为了检测这些,从业者必须使用传统的计量方法[62]。至于与其他最近的异常检测方法相比的局限性:与基于kNN的方法相比,我们的方法需要训练,特别是对于自动编码器来说,以学习正常图像的逻辑约束。在我们的实验设置中,这需要20分钟。
附录B 其他评估方法的实施细节
接下来,我们提供了这些方法的实现和配置细节:Asymmetric Student–Teacher (非对称学生-教师网络 AST) [54], DSR [71], FastFlow [69], GCAD [8], PatchCore [51], SimpleNet [36], and Student–Teacher [10]。
B.1. AST
我们使用Rudolph等人[54]的官方实现。我们使用未经修改的默认配置,但无法完全再现AST论文中报告的结果。AST论文报告了MVTec AD的平均图像水平检测AU-ROC为99.2%,在五次运行中平均。我们在五次跑步中获得了98.9%的AU-ROC。
B.2. DSR
我们使用Zavrtanik等人[71]的官方实现。我们在MVTec AD上使用未经修改的默认配置来再现结果。我们在MVTec AD上获得了98.1%的平均图像水平检测AU-ROC,这接近作者报告的98.2%。在包含比MVTec AD更多训练图像的VisA场景中,我们将epoch的数量更改为50,目的是将训练迭代的总数保持在相似的范围内。
B.3.FastFlow
我们使用Akcay等人[1]的实现。我们使用基于WideResNet-50-2特征提取器的FastFlow版本,因为它类似于PatchCore、SimpleNet和我们的方法使用的WideResNet。我们使用默认配置,但禁用早停(测试图像上训练持续时间的特定场景调整)。相反,我们选择了一个恒定的训练持续时间(200步),该持续时间平均适用于所有评估的数据集。
B.4. GCAD
我们实现了Bergmann等人所描述的 GCAD[8]。我们能够重现作者报告的结果,但将GCAD调整为在我们的实验中表现更好的配置。GCAD由使用不同特征提取器的两个异常检测模型的集合组成。第一个成员使用的特征提取器对大小为17 × 17的补丁进行操作,而第二个成员使用的特征提取器对大小为33 × 33的补丁进行操作。我们发现第二个成员的平均表现要好于组合的合奏,因此在主论文中报告了该成员的结果。关于MVTec LOCO的逻辑异常,单个模型的图像级检测AU-ROC得分为83.9%,而作者使用的集合模型的AU-ROC为86.0%。然而,MVTec LOCO的总体异常检测性能保持不变。
- 了解异常检测评价指标
B.5. PatchCore
我们使用Roth等人[51]的官方实现,并能够重现MVTec AD报告的结果。如主要论文中所述,为了进行公平的比较,我们禁用了76.6%的输入图像的中心裁剪。对于PatchCore的单一模型变体,我们使用PatchCore的配置,作者报告其延迟最低。具体而言,这意味着将核心集子采样率设置为1%,将图像大小设置为224×224像素,并将特征提取主干设置为WideResNet-101。对于集成变体,我们使用作者在MVTec AD上报告最佳检测AU-ROC的配置。我们使用WideResNet-101、ResNeXT-101[67]和DenseNet-201[25]作为主干,将核心集子采样率设置为1%,并使用大小为320×320像素的图像。
B.6. SimpleNet
我们使用刘等人[36]的官方实现,并能够重现报告的结果。正如主要论文中所解释的,为了进行公平的比较,我们禁用了测试图像上训练持续时间的特定场景调整
B.7. Student–Teacher
我们实现了Bergmann等人[10]所述的原始多尺度学生-教师(S–T)方法。我们使用默认的超参数设置而不进行修改。我们的实现在MVTec AD上实现了比作者报告的更好的异常定位结果,但与[7]中报告的结果相匹配。