【异常检测论文阅读 1】EfficientAD: Accurate Visual Anomaly Detection at Millisecond-Level Latencies


论文地址: https://arxiv.org/pdf/2303.14535.pdf
非官方复现地址: https://github.com/rximg/EfficientAD
annomalib同样也有复现: https://github.com/openvinotoolkit/anomalib/tree/main/src/anomalib/models/efficient_ad


论文题目:EfficientAD: Accurate Visual Anomaly Detection at Millisecond-Level Latencies (毫秒级延迟情况下的精确视觉异常检测)
作者:Kilian Batzner Lars Heckler Rebecca Konig
单位:MVTec Software GmbH (PS:著名Halcon软件、各种基准工业领域的数据集都是这家德国公司公开的,工业缺陷量检测领域的泰山)


一、摘要

检测图像中的异常是一个重要的任务,特别是在实时的计算机视觉应用中

  • 提出了一种轻量级的特征提取器,可以在现代GPU上不到一毫秒的时间内处理图像
  • 使用学生-教师的方法来检测异常特征

训练一个学生网络来预测提取的正常特征,在测试时,通过学生不能预测异常特征来检测异常。

  • 提出了一个训练损失,可以阻止学生模仿教师的特征提取器提取正常图像之外的特征(也就是,学生网络只能提取正常特征,提取不了异常特征,这样就可以把异常特征差分出来)

能够大大降低了学生-教师模型的计算成本,同时提高了对异常特征的检测

  • 通过有效地合并一个全局分析图像的自动编码器来检测逻辑异常

逻辑异常通常具有挑战性,通常涉及到正常局部特征的无效组合,比如,对象的错误排序。

最后,在来自三个工业异常检测数据集收集的32个数据集上进行了评估。

EfficientAD为异常的检测和定位制定了新的标准,在2毫秒的延迟和每秒600张图像的吞吐量下,它能够快速处理异常。再加上其低错误率,使其成为现实应用的经济解决方案,成为未来研究的富有成果的基础。

二、引言

在过去的几年里,深度学习方法不断地提高了计算机视觉应用领域的技术水平。
这一进展伴随着使神经网络结构更快、更高效的方面的进展。

例如,现代分类结构更关注于诸如延迟、吞吐量、内存消耗和可训练参数的数量等特征,这也确保了网络变得越来越又能力,计算要求更能适应真实世界的应用场景。

视觉异常检测领域在最近也取得了快速的进展,特别是在工业异常检测上,然而,最先进的异常检测方法往往会牺牲计算效率来提高异常检测性能。常见的技术时集成型的,如使用大的backbone,并将输入图像的分辨率提高到高达768×768像素。

真实世界的异常检测应用经常限制一种方法的计算要求,在某些情况下,发现异常现象太晚可能会造成巨大的经济损失:

  • 如农田中的金属物体进入联合收割机的内部
  • 人类的健康也有危险的情况,例如,如果机器操作员的肢体接近刀片
  • 此外工业设置通常涉及由高生产率造成的严格的运行时间限制

不遵守这些限制将降低各自应用的生产率,从而降低其经济可行性, 因此,必须注意异常检测方法的计算成本和经济成本,以使其更适合于实际的应用场景。

本文就提出了EfficicentAD,一种为异常检测性能和推理运行时设置新标准的方法,如图1所示。

在这里插入图片描述

  • 本文首先介绍了一种高效的网络架构,用于在现代GPU上不到一毫秒的时间内计算表达特征
  • 为了检测异常特征,使用了学生-教师方法:

训练一个学生网络来预测由预先训练好的教师网络计算出的正常特征,即无异常的训练图像。因为学生没有接受异常图像的训练,它通常不能模仿这些异常特征,所以教师和学生的输出之间有很大的距离,因此可以在测试时检测到异常。

为了进一步增加这种效应,Rudolph等人(AST方法)使用了教师和学生之间的不对称的结构。相反,我们以训练损失的形式引入损失引起的不对称,阻碍学生模仿正常图像之外的老师。这种损失不影响测试时的计算成本,也不限制架构设计。它允许我们为学生和教师使用高效的网络架构,同时实现对异常特征的准确检测。

识别异常的局部特征可以检测到在结构上与正常图像不同的异常,比如制成品上的污染或者污渍。
然后,一个具有挑战性的问题是违反了正常目标中的逻辑约束,如位置、大小、安排等。

为了解决这个问题, EfficientAD包括一个自动编码器。该自动编码器学习训练图像的逻辑约束,并在测试时检测违规行为。本文简化了自动编码器的架构和训练协议,并展示了如何有效地与学生-教师模型集成。此外,我们提出了一种提高异常检测性能的方法,通过校准检测结果的自动编码器和师生模型,然后结合他们的结果,本文主要贡献如下:

  • 大大提高了工业基准上检测和定位异常的技术水平,且延迟仅2ms,每秒超过600幅图像的吞吐量。
  • 提出了一种高效的网络架构,可以将特征提取的速度提高一个数量级
  • 引入了一种训练损失,显著提高了学生-教师模型的异常检测性能,而不影响它的推理运行时
  • 实现了一种有效的基于自动编码器的逻辑异常检测,并提出了一种与学生教师的结果校准组合的方法

三、相关工作

3.1 异常检测任务

视觉异常检测是一个快速发展的研究领域,具有多种应用范围,包括医学成像、自动驾驶和工业检测。
具体的应用中通常具有特定的特征,比如如监测数据集中的图像序列的可用性或医学成像数据集的不同模式(MRI 、CT 、x射线等)。本文则是聚焦于RGB或者GRAY图像来检测异常,使用工业异常检测数据集来确定本文提出的方法与现有方法的基准。

它包括15个独立的检查场景,每个场景包括一个训练集和一个测试集。每个训练集只包含正常图像,例如无缺陷的螺钉,而测试集也包含异常图像。这在现实应用中是一个常见的挑战,在异常检测系统的开发过程中,缺陷的类型和可能的位置是未知的。因此,当仅在正常图像训练条件下,取得很好的性能是一个重要的需求也是挑战。

  • 新的异常检测数据集:视觉异常数据集(VisA)和MVTec逻辑约束数据集(MVTec LOCO)都遵循MVTec AD的设计,分别包含12个和5个异常检测场景。

MVTec LOCO不仅包含结构异常,如污渍或划痕,而且还包括逻辑异常。这些都违反了逻辑约束(错误的排序或正常对象的错误组合)。我们将MVTec AD、VisA和MVTec LOCO称为数据集集合,因为每个场景都是一个单独的数据集,由一个训练集和一个测试集组成。这三种方法都提供了像素精确的缺陷分割掩模来评估一种方法的异常定位性能。

3.2 异常检测方法

传统的计算机视觉算法已经成功地应用于工业异常检测任务几十年。这些算法通常可以满足了在几毫秒内处理图像的要求。
然后就是有人评估了这些方法中的一些,发现当要求如良好对齐的对象无法满足时,它们就失败了。
基于深度学习的方法已被证明可以更稳健地处理这类情况。

近年来,一种成功的方法是在预训练和冻结的卷积神经网络(CNN)的特征空间中应用离群值检测和密度估计方法。如果特征向量可以映射到输入像素,则将其离群值值分配给各自的像素,从而得到像素异常值的二维异常图。常用的方法包括多元高斯分布、高斯混合模型、归一化流和k-最近邻(kNN)算法。

3.2.1 基于knn的方法

基于knn的方法的一个运行时瓶颈是在推理过程中寻找最近邻的向量。因此,PathCore中对特征向量数据库进行聚类,然后执行kNN。在MVTec AD上实现了最先进的异常检测结果。(PS:简单、但很牛逼的一种方法)

在我们的实验中,包括了PatchCore和FastFlow(最近提出的的基于标准化流的方法,具有相对较低的推理运行时间)

3.2.2 学生-教师方法(S-T):

Bergmann等人通过S-T框架,来实现异常检测。
其中教师是一个预先训练的冻结后的CNN。他们使用了三个不同的老师,他们有不同的接受域大小。对于每个老师,他们训练三个学生网络来模拟各自的老师在训练图像上的输出。由于学生在训练过程中没有看到异常图像,他们通常无法预测教师对这些图像的输出,从而实现了异常检测。使用学生的输出的方差和他们与他们的教师网络的输出的距离来计算异常分数。

还有一些方法提出了对S-T的各种修改。Rudolph等人通过将教师限制为一个可逆的神经网络,达到了与PatchCore差不多的的异常检测性能。本文分别于不对称学生老师(AST)方法和原始的S-T方法进行了对比实验。

3.2.3 生成式方法

自动编码器和GANs 等生成模型已被广泛用于异常检测。最近的基于自动编码器的方法依赖于正常图像的精确重建和异常图像的不准确重建,这样就可以通过将重建结果与输入图像进行比较来检测异常情况。

一个常见的问题是由正常图像的不准确重建引起的假阳性检测,例如,模糊重建。为了避免这种情况,伯格曼等人让一个自动编码器在一个预先训练好的网络的特征空间中重建图像。此外,他们训练一个神经网络来预测自动编码器的输出,从而预测正常图像上的系统重建误差。

本文实验中包括了他们提出的方法,称为GCAD,因为它在MVTec LOCO的逻辑异常上大大优于其他方法。本文还包括DSR ,它使用一个预先训练的自动编码器的潜在空间,并在其中生成合成异常。

四、本文方法

在文章后面部分描述 EfficientAD的组成部分。

  • 首先从预先训练的神经网络中有效提取特征开始,
  • 在测试时使用一个简化的学生-教师模型来检测异常特征,
    如第3.2节所述。一个关键的挑战是在保持整体运行时较低的同时实现具有竞争力的异常检测性能,
  • 为此,引入了一种新的损失函数来训练师生对,它提高了对异常的检测,而不影响推理过程中的计算消耗,
  • 再解释如何使用基于自动编码器的方法有效地检测逻辑异常,
  • 最后,提供了一个对自动编码器的检测结果进行校准和结合的解决方案。

4.1 Efficient Patch Descriptors (高效的patch描述器)

最近的异常检测方法通常使用深度预训练网络的特征,如WideResnet-101, 本文使用一个深度大大减少的网络作为特征提取器。

它只由四个卷积层组成,如下图所示。每个输出神经元都有一个33×33像素的接受域,因此每个输出特征向量描述了一个33×33像素的补丁。由于这种明确的对应关系,我们将该网络称为补丁描述网络(PDN)。PDN是完全卷积的,可以应用于可变大小的图像,可以在一次向前传递中生成所有的特征向量。
在这里插入图片描述

现代分类结构通常在早期执行降采样来减少特性映射的大小,从而减少运行时和内存需求。我们在PDN中通过在第一层和第二卷积层之后的平均池层来实现这一点。通过所提出的PDN,能够在NVIDIA RTX A6000 GPU上,小于800µs的时间内,获取尺寸为256×256的图像的特征。

  • 在训练过程中,PDN是由一个WideResNet-101在ImageNet数据集蒸馏来的,损失函数是MSE。

为了进行比较,本文使用了WideResNet-101(和PatchCore相同的预训练特征),通过最小化它的输出和从预训练的网络中提取的特征之间的均方差,然后在来自ImageNet [54]的图像上训练PDN。

如此设计的好处如下:

  • 除了更高的效率,与深度网络相比还有另一个好处
  • 由PDN生成的特征向量仅依赖于其各自的33×33补丁中的像素
  • PDN定义明确的感受场保证了图像中一部分的异常不能触发其他遥远部分的异常特征向量

预训练过的分类器的特征向量对图像的其他部分有着长范围的依赖。如下图所示,使用PatchCore的特征提取器为例:

在这里插入图片描述

4.2 Reduced Student-Teacher (简化的教师学生网络)

简化了S-T网络: 仅使用一个teacher 和 一个student,都是来自4.1中蒸馏后的PDN网络。
为啥使用PDN: 快、毫秒级别的响应、低延迟
并没有使用以前的技术: 如集成多个教师网络和学生网络、如金字塔层特征、如S-T架构的不对称性

本文观察到标准S-T架构的缺点:

  • 增加训练图片的个数,可以提高异常图像的模拟能力,但损失异常检测的性能;
  • 减少数据,又抑制了正常图像的重要信息

本文的目标是向学生展示足够的数据,使它能够在正常图像上充分地模仿教师,同时避免泛化到异常图像。

类似于在线困难样本挖掘,本文因此将损失限制在图像的最相关的部分,提出了困难loss, 仅使用损失最大输出元素的特征来进行反向传播。

在这里插入图片描述
上图为计算损失的流程图

一些公式的定义, 教师网络 T T T, 学生网络 S S S, 训练图像 I I I,

  • step1. 训练图像 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 ;
  • step2. 对每一个 ( c , w , h ) (c, w, h) (c,w,h),计算欧氏距离, D c , w , h = ( T ( I ) c , w , h − S ( I ) c , w , h ) 2 D_{c,w,h}=(T(I)_{c,w,h}-S(I)_{c,w,h})^2 Dc,w,h=(T(I)c,w,hS(I)c,w,h)2
  • step3. 定义一个 p h a r d p_{hard} phard系数, D c , w , h ≥ p h a r d D_{c,w,h} ≥ p_{hard} Dc,w,hphard 参与反向转播的计算,本文 p h a r d = 0.999 p_{hard}=0.999 phard=0.999,即距离最远的 0.1 % 0.1\% 0.1% 的特征来计算损失
  • step4. 在推理阶段, M w , h = C − 1 Σ c D c , w , h M_{w,h}=C^{-1}Σ_cD_{c,w,h} Mw,h=C1ΣcDc,w,h 作为最终的异常分数。

目的:通过使用困难特征计算损失,避免了在正常图像上的异常分数中的异常值,减少了假阳性的检测。

标准的 S − T S-T ST网络,教师网络通常是一个预训练模型(来自图像分类任务),或者是蒸馏出来的网络模型,学生网络仅使用正常的样本进行训练 (注:没有在预训练的数据上进行训练)

本文特殊之处,除了困难特征损失,在训练期间,还增加了一个损失,主要用来阻止学生网络在非正常数据上模拟教师网络的输出。

具体操作如下:

  • 学生网络训练时,同样输入了预训练数据中的样本(本文是ImageNet), 数据记作 P P P
  • 学生网络的输出为 S ( P ) S(P) S(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}Σ_c||S(P)_c||^2_F LST=Lhard+(CWH)1Σc∣∣S(P)cF2

物理意义上理解,为了使损失收敛, L h a r d L_{hard} Lhard会趋近于 0 0 0, 小尾巴 ( C W H ) − 1 Σ c ∣ ∣ S ( P ) c ∣ ∣ F 2 (CWH)^{-1}Σ_c||S(P)_c||^2_F (CWH)1Σc∣∣S(P)cF2 也要趋近于一个常数,因此当输入其他数据时(如ImageNet数据),学生网络的输出不会引起多大的变化,这就阻止了学生网络在非正常数据上模拟教师网络的输出。

4.3 Logical Anomaly Detection (逻辑异常检测)

4.4 Anomaly Map Normalization

五、实验

结论

  • 提出了EfficientAD, 高性能高精度
  • 为结构异常、逻辑异常检测设定了新标准
  • 低延迟、高通量适合现实场景
  • 未来,高效的patch 提取器,可以应用在其他异常检测中

最后~

码字不易~~

独乐不如众乐~~

如有帮助,欢迎点赞+收藏~~


  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值