Paper Reading: EfficientAD:毫秒级延迟的准确视觉异常检测

news2024/10/23 10:20:11

EfficientAD

  • 简介
  • 方法
    • 高效的patch描述
      • PDN
      • 教师pretraining
    • 轻量级的师生模型
    • 逻辑异常检测
    • 异常图像的标准化
  • 实验
  • 局限性

在这里插入图片描述

EfficientAD: Accurate Visual Anomaly Detection at Millisecond-Level Latencies
EfficientAD:毫秒级延迟的准确视觉异常检测, WACV 2024
paper:https://arxiv.org/pdf/2303.14535v3
GitHub:(无官方code)
https://github.com/nelson1425/EfficientAD(个人推荐)
https://github.com/openvinotoolkit/anomalib/tree/main/src/anomalib/models/image/efficient_ad(paper with code推荐)

摘要:

在图像中检测异常是一项重要任务,尤其是在实时计算机视觉应用中。在本研究中,我们专注于计算效率,并提出了一种轻量级的特征提取器,该提取器在现代GPU上处理图像的时间不到一毫秒。随后,我们采用学生-教师方法来检测异常特征。我们训练一个学生网络,使其能够预测正常(即无异常)训练图像的提取特征。在测试时,通过学生网络无法预测其特征来检测异常。我们提出了一种训练损失,阻止学生模仿教师特征提取器超出正常图像的范围。这使得我们能够大幅降低学生-教师模型的计算成本,同时提高异常特征的检测能力。

此外,我们还解决了检测涉及正常局部特征无效组合的挑战性逻辑异常问题,例如物体错误排序。我们通过高效地结合一个分析图像全局的自动编码器来检测这些异常。我们评估了我们的方法,称为EfficientAD,在来自三个工业异常检测数据集集合的32个数据集上。EfficientAD为异常的检测和定位设定了新的标准。在延迟为两毫秒、吞吐量为每秒六百张图像的情况下,它能够快速处理异常。结合其低错误率,这使其成为现实世界应用的经济解决方案,并为未来的研究提供了坚实的基础。

在这里插入图片描述

图 1. NVIDIA RTX Aϋυυυ GPU 上的异常检测性能与每个图像的延迟。每个 AU-ROC 值是 MVTecAD、VisA 和 MVTec LOCO 数据集集合上图像级检测 AU-ROC 值的平均值。

简介

​ 提出了 EfficientAD,在工业异常检测领域实现了性能和推理运行时间的新标准。

​ 先引入了一种高效的网络架构,可以在现代 GPU 上以不到一毫秒的速度计算表达特征。

使用学生-教师方法,训练学生网络来预测教师网络(教师网络经过预训练)在正常(即无异常)训练图像上计算的特征。由于学生没有接受过异常图像方面的训练,因此通常无法在这些方面模仿老师。因此,教师和学生的输出之间存在较大距离,因此可以在测试时检测到异常情况。

为了进一步增强这种效果,我们以训练损失的形式提出损失引起的不对称性,阻碍了学生超越正常图像模仿老师。这种损失不会影响测试时的计算成本,也不会限制架构设计。它使我们能够为学生和教师使用高效的网络架构,同时改进异常特征的检测。

一个具有挑战性的问题是违反有关 正常对象的位置、大小、排列等的逻辑约束。 为了解决这个问题,EfficientAD 包含一个自动编码器,可以学习训练图像的逻辑约束并在测试时检测违规行为。我们将自动编码器与学生-教师模型有效地集成。提出了一种通过在合并自动编码器和学生-教师模型的检测结果之前校准它们的结果来提高异常检测性能的方法。

贡献总结如下:

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

方法

高效的patch描述

PDN

使用深度大大减少的网络作为特征提取器。它仅由 四个卷积层组成,如图 2 所示。每个输出神经元都有一个 33×33 像素的感受野,因此每个输出 特征向量描述一个 33×33 的块。由于这种明确 的对应关系,我们将该网络称为补丁描述网络 (PDN)。 PDN 是完全卷积的,可以应用于可 变大小的图像,以在单次前向传递中生成所有特征向量。

在这里插入图片描述

Fig2.EfficientAD-S 的补丁描述网络 (PDN) 架构。以完全卷积方式将其应用于图像可以在一次前向传递中产生所有特征。

通过所提出的 PDN,我们能够在 NVIDIA RTX A6000 GPU 上在不到 800 μs 的时间内获得尺寸 为 256×256 的图像的特征。

教师pretraining

为了使 PDN 生成富有表现力的特征,将深度预训练分类网络提炼到其中。使用与 WideResNet-101中的 PatchCore相同的预训练特征。通过最小化PDN输出与从预训练网络中提取的特征之间的均方差来训练来自 ImageNet的图像。

PDN 还有另一个好处。根据设计,PDN 生成的特征向量仅取决于其各自 33×33 块中的像素。预训练分类器的特征向量表现出对图像其他部分的远程依赖性。 如图 3 所示,以 PatchCore 的特征提取器为例。 PDN 定义明确的感受野确保图像某一部分的异常 不会触发其他远处部分的异常特征向量,从而损害异常的定位。

在这里插入图片描述

Fig3. 上:位于输出中心的单个特征向量相对于每个输入像素的绝对梯度,在输入和输出通道上取平 均值。

下:来自 ImageNet的 1000 张随机选择图像的第一个输出通道的平均特征图。这些图像的平均值显示在左侧。 DenseNet 和 WideResNet 的特征图表现出很强的伪影。

轻量级的师生模型

PDN这种轻量级的学生-教师对缺乏以前的方法所使用的技术来提高异常检测性能。因此,我们引入了训练损失,可以显着改善异常 检测,而不会影响测试时的计算要求。

我们的目标是向学生展示足够的数据,以便其能够在正常图像上充分模仿教师,同时避免泛化到异常图像。与 Online Hard Example Mining (在线硬样本挖掘)类似,我们因此将学生的损失限制在图像中最相关的部分。这些是学生目前模仿老师最少的patch。 提出了一种硬特征损失,它只使用损失最高的输出元素进行反向传播。

将每个元组 (c, w, h) 的平方差计算为(教师 T 和学生 S 应用于训练图像 I)
在这里插入图片描述

基于挖掘因子phard ∈ [0, 1],然后我们计算 D 元素的 phard分位数。 给定 phard分位数 dhard ,计算训练损失 Lhard 作为所有 Dc,w,h ≥ dhard的均值。将 phard设置为零会产生原始的 S-T 损失。在实验中,我们将 phard设置为 0.999,这相当于平均使用 D 的三个维度中每个维度的 10% 的值进行反向传播。图 4 可视化了 phard = 0.999 时硬特征损失的影响。

在这里插入图片描述

Fig4. 训练期间由硬特征损失生成的随机选取的损失掩码。掩模像素的亮度指示相应特征向量的多少维被选择用于反向传播。学生网络已经在背景上很好地模仿了老师,因此专注于学习不同旋转螺钉的特征。

除了硬特征损失之外,我们在训练 期间使用损失惩罚,进一步阻止学生在不属于正 常训练图像的图像上模仿老师。在标准 S-T 框架 中,教师在图像分类数据集上进行预训练,或者 它是此类预训练网络的精炼版本。学生没有接受 预训练数据集的训练,而仅接受应用程序的正常 图像的训练。我们建议还使用教师在训练期间预训练的图像来训练学生模型。具体来说,我们在每个训练步骤中从预 训练数据集中(在我们的例子中为 ImageNet)中 采样随机图像P。我们将学生的损失计算为
在这里插入图片描述

这种惩罚 会阻碍学生将对老师的模仿推广到分布外的图像。

逻辑异常检测

什么是逻辑异常:

逻辑异常不仅仅是物理上的缺陷(如划痕、凹陷等),而是涉及到产品的组装错误、部件缺失或位置错误等问题。这要求IAD算法不仅要识别图像上的异常模式,还需要理解产品的组装逻辑或结构逻辑

逻辑IAD更加依赖于全局特征的提取,因为识别逻辑异常需要对整个产品或其组成部分的全局布局和关系有一个综合理解。这与那些主要依赖局部特征来识别物理缺陷的传统IAD方法有所不同。

使用自动编码器来学习训练图像的逻辑约束并 检测对这些约束的违反。图 5 描述了 EfficientAD 的异常检测方法。它由上述的学生-教师对和一个自动编码器组成。自动编码器经过训练来预测教师的输出。
在这里插入图片描述

Fig5.EfficientAD应用于MVTec LOCO的两个测试图像。正常输入图像包含一个水平电缆,连接任意高度的两个拼接连接器。左边的异常是一个外来物体,其形式是一根小金属在电缆的末端。在本地异常图中可见,因为学生和教师的输出不同。右边的逻辑异常是第二个电缆的存在。自动编码器无法在教师的特征空间的右侧重建两条电缆。除了老师之外,学生还预测自动编码器的输出。因为它的感受野仅限于图像的小块,所以它不受附加红色电缆的存在的影响。这导致自动编码器和学生的输出不同。

”Diff”是指计算两个输出特征图集合之间的元素平方差异,并计算其跨特征图的平均值。为了获得像素异常分数,使用双线性插值调整异常图以匹配输入图像。

使用标准的卷积自动编码器,包括编码器中的跨步卷积和解码器中的双线性上采样。与基于patch的学生相比,自动编码器必须通过 64 个潜在维度的 bottleneck 对完整图像进行编码和解码。对于具有逻辑异常的图像,自动编码器通常无法生成正确的潜在代码来重建教师特征空间中的图像。然而,它的重建在正常图像上也存在缺陷,因为自动编码器通常难以重建细粒度模式。这是图 5 中背景网格的情况。在这些情况下,使用教师输出和自动编码器重建之间的差异作为异常图会导致误报检测。

我们将学生网络的输出通道数量加倍,并训练它来预测自动编码器的输出以及教师的输出

学生的附加损失:在这里插入图片描述
学生学习自动编码器在正常图像上的系统重建误差,例如模糊重建。同时,它不会学习异常的重建错误,因为这些不是训练集的一部分。这使得自动编码器的输出和学生的输出之间的差异非常 适合计算异常图。

与学生-教师对类似,异常图是两个输出之间的平方差,跨通道平均。我们将 异常图称为全局异常图,并将由学生-教师对生成 的异常图称为局部异常图。我们对这两个异常图进行平均以计算组合异常图,并使用其最大值作为图像级异常得分。因此,组合异常图包含学生-教师对的检测结果和自动编码器-学生对的检测结果。在这些检测结果的计算中共享学生的隐藏层使方法能够保持较低的计算要求,同时能够检测结构和逻辑异常。

异常图像的标准化

​ 局部和全局异常图必须先标准化为相似的比例,然后再对其进行平均以获得组合异常图。这对于仅在其中一张 map 中检测到异常的情况非常重要,否则 一张 map 中的噪声可能会使另一张 map 中的准确检测在组合 map 中无法辨别。

为了估计正常图像中噪声的规模,我们使用验证图像,即训练集中未见过的图像。对于两种异常图类型中 的每一种,我们计算验证图像上所有像素异常分数的集合。然后,为每个集合计算两个 p-分位数:qa 和 qb ,分别表示 p = a 和 p = b。我们确定一个线性变换,将 qa 映射到异 常分数 0,将 qb 映射到分数 0.1。

在测试时,局部和全局异常图通过各自的线性变换进 行归一化。通过使用分位数,归一化对于正常图像上的异常分数的分布变得鲁棒,该分布可能因场景而异。qa 和 qb之间的分数是否呈正态分布或混合高斯分布或遵循其他分布对归 一化没有影响。

我们的实验包括对 a 和 b 值的 消融研究。映射目标值 0 和 0.1 的选择对异常检测指标没有影响,选择 0 和 0.1 是因为它们生成适合标准零到一颜色比例的maps。

实验

数据集:MVTec AD、VisA 、MVTec LOCO

比较方法:AST、DSR、Fast-Flow、GCAD、PatchCore、SimpleNet、 S–T

评估指标:AU-ROC、AU-PRO、AU-sPRO

表 1 报告了每种方法的总体异常检测性能。 EfficientAD 实现了强大的异常图像级检测和像素级定位。可靠地定位图像中的异常可提 供可解释的检测结果,并允许发现检测中的虚假 相关性。它还支持灵活的后处理,例如根据大小排除缺陷分割。

在这里插入图片描述

Tab1. 异常检测和异常定位性能与延迟和吞吐量的比较。每个 AU-ROC 和 AU-PRO 百分比分别是 MVTec AD、VisA 和 MVTec LOCO 上平均 AU-ROC 和平均 AU-PRO 的平均值。对于 EfficientAD,我们报告五次运行的平均值和标准差。

表 2 将总体异常检测性能分解为 三个数据集集合。结果表明,EfficientAD 在逻辑异常和结构异常方面的性能在 MVTec LOCO 上同等领先。

在这里插入图片描述

Tab2. 每个数据集集合的平均异常检测 AU-ROC 百分比 (左)以及 MVTec LOCO 的逻辑和结构异常 (右)。对于 EfficientAD,我们报告五次运行的平均值。仅在 MVTec AD(MAD) 上执行方法开发很容易导致设计选择过度拟合少数剩余的错误分类测试图像。

在表 3 中,我们评估了 EfficientAD 对不同超参数的鲁棒性。此外,还测量了推理过程中每种方法的计算成本。

在这里插入图片描述

Tab3. 当改变分位数位置时,EfficientAD-M 在 MVTec AD、VisA 和 MVTec LOCO 上的平均异常检测 AU-ROC。这些是基于分位数的map归一化和挖掘因子 phard 的两个采样点 a 和 b。将 phard 设置为零会禁用所提出的硬特征丢失。我们实验中使用的默认值以粗体突出显示。

如上所述,参数数量可能是卷积架构延迟和吞吐量的误导性代理指标,因为它没有考虑卷积输入特征图的分辨率,即前向传递中使用参数的频率。 同样,浮点运算(FLOP)的数量可能会产生误导,因为它没有考虑并行计算的容易程度。为了透明起见,我们在补充材料中报告了参数数量、 FLOP 数量以及每个方法的内存占用量。

在这里,我们重点关注与异常检测应用程序最相关的指标:延迟和吞吐量。

我们测量批量大小为 1 时 的延迟和批量大小为 16 时的吞吐量。表 1 报告 了每种方法在 NVIDIA RTX A6000 GPU 上的测量结果。图 6 显示了我们实验设置中每个 GPU 上每种方法的延迟。

在这里插入图片描述

Fig6. 每个 GPU 的延迟。每个 GPU 上的方法排名 相同,但 DSR 比 FastFlow 稍快的两种情况除外。

在图 7 中,我们显示了 EfficientAD 在 VisA 数据集集合上随机采样的定性结果。

在这里插入图片描述

Fig7. EΩcientAD onVisA 的非精选定性结果。对于 12 个场景中的每一个,我们都展示了随机采样的缺陷图像、 地面实况分割掩模以及 EΩcientAD-M 生成的异常图。

在表 4 和表 5 所示的消融研究中检查 了 EfficientAD 组件的效果。

评估了两个提出的损失项用于训练学生-教师对的效果。在表 4 中,硬特征损失将异常检测 AU-ROC 提高了 1.0%。 仅此一项改进就大于或等于表 1 中 FastFlow、DSR、PatchCore、PatchCore Ens 和 AST 连续行之间的每个改进幅度。

在这里插入图片描述

Tab4. 累积消融研究,其中技术逐渐组合以形成 EfficientAD。每个 AU-ROC 百分比是 MVTec AD、 VisA 和 MVTec LOCO 上平均 AU-ROC 的平均值。

学生对预训练图像的惩罚进一步提高了异常检测性能。值得注意的是,所提出的地图归一化、硬特征损失和预训练惩罚使 EfficientAD 的计算要求保持较低,同时创造了可观的裕度。异常检测性能。

在这里插入图片描述

Tab5. 单独的消融研究,其中的技术是从 EfficientAD-S 中单独删除的。

对于没有提出的 基于分位数的图归一化的实验,我们使用相反,基于高斯的map归一化作为基线。计算线性变换参数,使得验证集上的像素异常得分的平均值为零,方差为一。此基线标准化对验证异常分数的分布很敏感,该分数可能因场景而异。基于分位数的归一化与 qa 和 qb 之间的分数如何分布无关,并且表现明显优于基线。

局限性

学生-教师模型和自动编码器旨在检测不同类型的异常。自动编码器检测逻辑异常, 而学生-教师模型检测粗粒度和细粒度的结构异 常。然而,细粒度的逻辑异常仍然是一个挑战,例如,螺丝太长了两毫米。为了检测这些,从业者必须使用传统的计量方法。至于与其他最近的异常检测方法相比的局限性:与基于 kNN 的方法相比,我们的方法需要训练,特别是让自动编码器学习正常图像的逻辑约束。在我们的实验设置中这需要二十分钟。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1843279.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1.4自然语言的分布式表示-word2vec实操

文章目录 0写在前面1数据准备2CBOW模型结构的实现3交叉熵损失函数的前向计算3.1关于cross_entropy_error的计算3.2关于softmax 0写在前面 代码都位于:nlp;其他相关内容详见专栏:深度学习自然语言处理基础_骑着蜗牛环游深度学习世界的博客-CS…

家有老人小孩,室内灰尘危害大!资深家政教你选对除尘空气净化器

哈喽,各位亲爱的朋友们!今天我们来聊聊每次大扫除时最让人头疼的问题——灰尘。你有没有发现,两天不打扫,桌子上就能积上一层灰;阳光一照,地板上的灰尘都在跳舞;整理被子的时候,空气…

ONLYOFFICE 文档 8.1 现已发布:功能全面的 PDF 编辑器、幻灯片版式等等

最新版本的 ONLYOFFICE 在线编辑器已经发布,整个套件带来了30多个新功能和432个 bug 修复。阅读本文了解全部更新。 什么是 ONLYOFFICE 文档 ONLYOFFICE 文档是一套功能强大的文档编辑器,支持编辑处理文本文档、电子表格、演示文稿、可填写的表单、PDF&…

基 CanMV 的 C 开发环境搭建(Linux,Ubuntu篇)

不论是使用 CanMV 提供的基于 C 语言和 FreeRTOS 的应用开发方式开发应用程序或是编译 CanMV 固件,都需要搭建基于 CanMV 的 C 开发环境,用于编译 CanMV 源码。 1. 开发环境搭建说明 CanMV 提供了基于 C 语言和 FreeRTOS 的应用开发…

IO-LiNK简介

什么是IO-Link? IO-Link( IEC 61131-9 )是一种开放式标准串行通信协议,允许支持 IO-Link 的传感器、设备进行双向数据交换,并连接到主站。 IO-Link 主站可以通过各种网络,如现场总线进行传输。每个 IO-L…

ComfyUI 作者辞职搞开源

ComfyUI 作者发文表示,已从 Stability AI,并与其它开源开发者合作成立了一个致力于迭代和改进 ComfyUI 的开源组织:Comfy Org 目前其生态已经有: node 管理器node registrycomfy 命令行工具自动化测试文档 作者表示&#xff0c…

CCAA:认证通用基础(理解、掌握、应用合格评定功能法的基本概念)

5.合格评定技术 一、合格评定功能法 5.1合格评定功能法 合格评定被视为是一项对与标准相关的规定要求满足程度的一系列技术评价与证明的活动。当需要表明某客体(或特定的对象)是否满足规定要求时使用合格评定功能法所作出的证实能够使之更为切实可 信,可增加使用…

【React Native】measureInWindow在安卓上无法正确获取View在屏幕上的布局信息

问题描述: 在React Native中,我们可以使用measureInWindow的方式去获取一个View在屏幕中的位置信息: 下面这个Demo中,我们写了一个页面HomePage和一个列表项组件ListItemA,我们期望每过5s监测一次列表中每一项在屏幕中…

uniapp 实人认证

首先Dcloud创建云服务空间,开启一键登录并充值 下一步 1. 右键项目 》 创建uniCloud云开发环境 》右键uniCloud》关联云服务空间 2. cloudfunctions右键 新建云函数,任意命名(例:veify),然后右键项目》管…

33.获取入口点

上一个内容:32.双击列表启动目标游戏 前置知识 25.入口点注入(查看pe头)、32.双击列表启动目标游戏 以它的代码为基础进行修改 效果图: 代码实现:原理通过读文件流的方式把文件加载到内存中然后解析pe结构 void CWnd…

ReF:斯坦福提出的新型语言模型微调方法

随着预训练语言模型(LMs)在各种自然语言处理(NLP)任务中的广泛应用,模型微调成为了一个重要的研究方向。传统的全参数微调方法虽然有效,但计算成本高昂,尤其是在大型模型上。为了解决这一问题&a…

CSS样式、选择器、盒子模型

标题 文章目录 一、CSS样式内联样式内部样式外部样式 二、选择器三、颜色四、盒子模型(内边距padding、边框border、外边框margin) 一、CSS样式 可分为:内联样式、内部样式、外部样式 优先级: 内联样式 >内部样式 >外部样式…

2024-6-20 Windows AndroidStudio SDK(首次加载)基础配置,SDK选项无法勾选,以及下载失败的一些解决方法

2024-6-20 Windows AndroidStudio SDK(首次加载)基础配置,SDK选项无法勾选,以及下载失败的一些解决方法 注意:仅仅是SDK这种刚安装时的配置的下载,不要和开源库的镜像源扯到一起!!!! 最近想玩AndroidStudio的JNI开发, 想着安装后…

机器人阻抗控制相关文献学习(阻抗实现)

机器人阻抗是一个描述机器人与环境交互时动态特性的概念。 定义: 阻抗在机器人领域中,通常用来描述机器人与其环境之间的相互作用。当机器人与环境接触时,环境对机器人施加一个作用力,而机器人也会对环境施加一个反作用力。这个反…

【机器学习】从理论到实践:决策树算法在机器学习中的应用与实现

📝个人主页:哈__ 期待您的关注 目录 📕引言 ⛓决策树的基本原理 1. 决策树的结构 2. 信息增益 熵的计算公式 信息增益的计算公式 3. 基尼指数 4. 决策树的构建 🤖决策树的代码实现 1. 数据准备 2. 决策树模型训练 3.…

Studying-代码随想录训练营day15| 222.完全二叉树的节点个数、110.平衡二叉树、257.二叉树的所有路径、404.左叶子之和

第十五天,二叉树part03💪,编程语言:C 目录 257.完全二叉树的节点个数 110.平衡二叉树 257.二叉树的所有路径 404.左叶子之和 总结 257.完全二叉树的节点个数 文档讲解:代码随想录完全二叉树的节点个数 视频讲解…

Mistral AI 发布 Codestral-22B,精通 80+ 编程语言,22B 参数超越 70B Code Llama

前言 大型语言模型 (LLM) 在代码生成领域展现出巨大的潜力,但现有的模型在支持的编程语言数量、生成速度和代码质量方面仍存在局限性。法国 AI 独角兽 Mistral AI 近期发布了其首款代码生成模型 Codestral-22B,宣称在多项指标上超越了 GPT-4 和 Llama3&…

计算机网络:应用层 - 万维网 HTTP协议

计算机网络:应用层 - 万维网 & HTTP协议 万维网 WWW统一资源定位符 URL 超文本传输协议 HTTP非持续连接持续连接非流水线流水线 代理服务器HTTP报文 万维网 WWW 万维网是一个大规模的、联机式的信息储藏所。万维网用链接的方法能非常方便地从互联网上的一个站点…

企业的差旅费用还能更节省吗?

对于多数企业而言,差旅成本是仅次于人力资源成本的第二大可控成本。 差旅成本除了差旅产品采购费用、差旅服务费用这些显性成本外,还有预订时间消耗、审批环节、报销流程、票据核查等隐性成本。 据调研数据显示:企业对于专业差旅管理的认知度…

测试服务器端口是否打开,服务器端口开放异常的解决方法

在进行服务器端口开放性的测试时,我们通常使用网络工具来验证目标端口是否响应特定的协议请求。常用的工具包括Telnet、Nmap、nc(netcat)等。这些工具可以通过发送TCP或UDP数据包到指定的IP地址和端口,然后分析返回的数据包&#…