【Patchcore论文阅读】迈向工业异常检测的全面召回 | Towards Total Recall in Industrial Anomaly Detection

论文:https://ieeexplore.ieee.org/document/9879738

github:amazon-science/patchcore-inspection (github.com)

论文目的

提出patchcore,一种仅需要正常样本(无监督),便可以通过高效的记忆库和核集子采样实现最先进的冷启动异常检测和定位的异常检测方法。

摘要

在大规模工业制造中,能够发现有缺陷的零件是一个关键组成部分。本文解决了一个特别的问题,即冷启动问题:仅使用正常(无缺陷)样本图像来训练模型。虽然可以手工制作每个类别的解决方案,但目标是构建能够自动且同时在许多不同任务上表现良好的系统(即高鲁棒性与泛用性)。最佳的做法是将来自ImageNet模型的嵌入与异常检测模型结合起来。本文在这方面的工作基础上进行扩展,提出了PatchCore,它使用了具有最大代表性的正常区块特征记忆库。PatchCore在检测和定位方面实现了与现有技术水平相当的推理时间,同时取得了最先进的性能。在具有挑战性的、广泛使用的MVTec AD基准测试中,PatchCore实现了高达99.6%的图像级异常检测AUROC得分,其错误率比第二名竞争对手减少了一半以上。文章还报告了在另外两个数据集上的竞争性结果,并在少样本情况下也实现了有竞争性的结果。

1.介绍

能够检测图像中异常模式是人类认知中深深根植的一个特征。人类在仅见到少量正常实例后,就可以区分数据中的预期变化和异常情况。本文解决了这个问题的计算版本,即用于工业图像数据的视觉检查的冷启动异常检测问题。该问题在许多工业场景中出现,因为获取正常样本的图像很容易,但完整指定预期缺陷的变化却成本高且复杂。这个任务自然被视为一个分布外检测问题,其中模型需要区分训练数据分布内的样本和分布外的样本。工业视觉缺陷分类尤其困难,因为错误可能从细微的变化(如细小的划痕)到较大的结构性缺陷(如缺少组件)。图一展示了MVTec AD基准中的一些例子以及本文提出的方法的结果。现有的冷启动工业视觉异常检测工作依赖于通过自动编码方法、生成对抗网络(GANs)或其他无监督自适应方法来学习正常分布的模型。最近,有人提出利用来自ImageNet分类的通用深度表示,而无需适应目标分布。尽管缺少适应,这些模型提供了强大的异常检测性能,甚至能够实现稳健的缺陷空间定位。这些技术背后的关键原理是测试样本与正常样本之间的特征匹配,同时利用深度特征表示的多尺度特性。细微、精细的缺陷分割由高分辨率特征覆盖,而结构性偏差和整体图像级异常检测由更高抽象层次的特征覆盖。然而,这种非自适应方法的固有缺点是,在更高抽象层次上的匹配置信度有限:来自ImageNet训练的高层抽象特征与工业环境所需的抽象特征重合较少。此外,这些方法在测试时可用的正常上下文实际上受到可提取高层特征表示数量的限制。

图一 MVTecAD数据集下的patchcore分割结果

本文提出了PatchCore作为一种有效的解决方案,通过:

  1. 最大化测试时可用的正常信息。
  2. 减少对ImageNet类别的偏向。
  3. 保持高推理速度。

PatchCore通过利用局部聚合的中层特征补丁实现了基于单个区块异常即可以判断整个图像异常的事实这一目标。中层网络区块特征的使用使PatchCore能够在高分辨率下操作,并且对ImageNet类别的偏向最小化,而局部邻域特征聚合确保了足够的空间上下文保留,这产生了一个广泛的记忆库,使PatchCore能够在测试时最佳利用可用的正常上下文。

最后,为了实际应用,PatchCore还引入了贪婪核集子采样作为正常特征库的一个关键元素,以减少提取的区块级记忆库的冗余,并显著降低存储内存和推理时间,使PatchCore对实际工业应用非常有吸引力。(通过贪婪核集子采样以舍去部分局部特征从而提升性能)

在多样的MVTec AD以及专门的磁性瓷砖缺陷(MTD)工业异常检测基准上的深入实验展示了PatchCore在工业异常检测中的强大能力。它在MVTec AD和MTD上实现了最先进的图像级检测得分,在MVTec AD上几乎达到完美的得分(AUROC高达99.6%),将之前方法的检测错误减少了一半以上,同时在工业异常定位性能上也达到最先进水平。PatchCore在不需要对现有数据集进行训练的情况下实现了这一点,使其在工业异常检测的实际应用中非常有吸引力。

2.相关工作

文章在这部分总结了当时工业异常检测的一些先进方法,研究方向以及该领域的总体情况:

  • 名义数据表示学习:大多数异常检测模型通过自动编码、GANs和归一化流等方法学习名义数据的表示。
  • 检测与定位方法:异常检测主要通过重建误差、最近邻距离或一类分类模型进行,定位则基于像素级误差或显著性方法。
  • 工业场景应用:工业图像数据面临特定挑战,使用预训练模型(如ImageNet)在工业异常检测中表现良好,但必须通过一些方法减少对ImageNet类别的偏向。
  • PatchCore:结合SPADE(利用包括各种特征层次的记忆库进行细粒度的基于kNN的异常分割和图像级异常检测)和PaDiM(利用局部约束的特征袋方法,估计补丁级特征分布矩来进行补丁级马氏距离测量)优点,使用邻域感知的补丁级特征记忆库和核集子采样,提高检测性能并降低推理成本。

3.方法

PatchCore 方法由几个部分组成,这里将按顺序描述:聚合到记忆库的局部区块特征感知(3.1),核集缩减方法以提高效率(3.2),以及最终实现检测和定位决策的完整算法(3.3)。

图二 patchcore的概览

3.1 局部区块特征感知

这部分主要介绍了patchcore从ImageNet的预训练模型中选取哪些特征层构建记忆库 𝑀,同时为了增强patchcore对小空间差异的鲁棒性以及增大其感受野而对patchcore进行特征局部邻域聚合。

首先说patchcore的最终选择,其选择中间特征层组成记忆库,如ResNet框架中的2和3层。

为什么不选择更深层次呢?文中给出了两点原因:

  1. 深层丢失了更多局部化的名义信息。由于测试时遇到的异常类型是未知的,这对下游异常检测性能有害。
  2. ImageNet 预训练网络中的深层和抽象特征倾向于自然图像分类任务,这与工业异常检测任务和评估数据的重叠较少。

即对于异常目标检测这种需要对局部,细节进行检测的任务,过深的层次会导致特征过抽象,从而丧失了原本应该保留的局部特征信息。

接下来为patchcore如何实现局部特征聚合,这部分包含了很多公式,下面为这些公式与其对应的解释:

定义邻域:

其中N_{p}^{(h,w)}表示在位置 (ℎ,𝑤)附近大小为 𝑝×𝑝 的邻域。

聚合邻域特征:

其中f_{agg}是一个聚合函数,将位置 (ℎ,𝑤)附近邻域N_{p}^{(h,w)}的特征𝜙{i,j}聚合起来。

对于f_{agg},patchcore选择的是自适应平均池化(adaptive average pooling),其作用类似于对每个特征图进行局部平滑操作。

局部感受区块集合

其原理如下:

  • 公式通过聚合特定位置 (ℎ,𝑤)及其邻域的特征,创建一组局部感知特征。这里,步长参数 𝑠 控制在特征图上选取位置的间隔(通常设置为1),从而保留特征图的分辨率。
  • 邻域大小 𝑝 确定每个位置的局部感受野,这样可以在不同位置上聚合特征,以捕获更多局部上下文信息。

记忆库定义:

对于所有规范的训练样本x_{i}\epsilon X_{N},PatchCore 记忆库 𝑀 定义为:

通过聚合训练样本的局部感受区块特征集合,创建一个包含丰富上下文信息和局部特征的记忆库。

公式中的 \phi_{j}(x_{i})\displaystyle 表示从第 𝑗j层特征图中提取的特征,通过选择适当的层次(中间层次),确保记忆库中的特征既包含低层次的细节信息,也包含高层次的抽象信息。

总体来说,通过选取特定层次以及局部特征聚合,PatchCore 能够在保持高分辨率和高精度的同时,提高对空间变化和噪声的鲁棒性,从而实现更有效的异常检测和定位。

3.2 核集缩减局部特征记忆库

这一节主要解释patchcore是如何处理记忆库中的内容,在尽量保持性能的同时大幅减少其存储需求并提高性能。

随着 X_{N} 的不断增大,记忆库𝑀也在不断增大,从而导致评估新测试数据的推理时间和所需存储空间都显著增加。所以本文提出通过找到一个𝑀的子集𝑀c,使𝑀c能够保持对原始记忆库的良好表示,同时极大缩小其对存储的需求以及推理时间。而实现方法,由于随机子采样,尤其是大幅度采样,会丢失 𝑀M 中编码的名义特征覆盖范围中的大量信息,所以本文提出采用核集子采样机制来缩减𝑀。

由于 PatchCore 使用最近邻计算,我们使用了一种最小最大设施位置核集选择方法,以确保 𝑀c核集在区块级特征空间上的覆盖范围与原始记忆库 𝑀 的覆盖范围大致相同:

公式通过最小化在 𝑀 中每个特征向量 𝑚 到 𝑀c 中最近特征向量 𝑛 的最大距离,来确保 𝑀c​ 能够很好地代表整个𝑀。

本文提到由于(exact computation of M∗ C is NP-Hard ,我不太理解),所以建议使用迭代贪婪近似算法来进一步减少核集选择时间。同时为进一步减少核集选择时间,研究者使用 Johnson-Lindenstrauss 定理,通过随机线性投影减少 𝑀 中元素的维度:

ψ 是一个随机线性投影函数,将 𝑑 维空间中的点投影到 𝑑∗ 维空间,其中 𝑑∗<𝑑。

核集选择和维度降低的结合,使得 PatchCore 方法能够在保持高性能的同时,大幅减少记忆库的大小和推理时间。这不仅提高了模型的实际应用性,还确保了在处理大规模数据时的效率和效果。

图三 不难看出,使用核集记忆库子采样相较于随机子采样,能够更好的代表整个记忆库,其中上一行为核集记忆子采样得到的结果,下一行为随机子采样得到的结果,蓝色代表原记忆库,红色为相应方法处理后的结果。

3.3 使用patchcore进行异常检测

这一节解释了patchcore如何通过计算最大距离得分来进行异常检测。

通过利用正常局部区块特征库M,patchcore通过计算最大距离得分s^{*}来估计测试图像x^{test}的图像级异常得分s\in \mathbb{R},该得分表示测试区块特征集合P(x^{test})=P_{sp}(\phi _{j}(x^{test}))中区块特征与其在 𝑀中各自最近邻特征 𝑚∗之间的最大距离:

最大距离得分 𝑠∗ 用于衡量测试图像中最不匹配的区块特征,从而标识出可能存在的异常区域。

为了获得s,patchcore使用对𝑠∗的缩放来考虑邻近区块的行为:如果记忆库中与异常候选m^{test,*}最接近的特征 𝑚∗ 本身与其邻近样本之间的距离很大,因此已经是一个罕见的正常情况,则增加异常得分:

这种重新加权方法增加了对罕见正常情况的检测能力,使得模型在面对边缘情况时更加鲁棒。

总体来说,通过实验者设计的计算方法与公式,使得 PatchCore 在检测和定位工业异常时表现出色,能够处理大规模图像数据,提供高精度和高效的异常检测解决方案。

4.实验

4.1 实验细节

patchcore主要在MVTecAD上进行的实验(数据集链接),图像被调整大小并中心裁剪为256 × 256 和 224 × 224。没有应用数据增强,因为这需要对保留类别的增强方法有先验知识。

文中还介绍了patchcore在其他数据集包括MTD数据集,mSTC数据集上进行冷启动异常定位基准测试,这里不过多赘述。

对于评估指标,图像级异常检测性能通过AUROC来衡量,使用生成的异常分数。在与先前工作的对应下,研究者在 MVTec 上计算类别平均 AUROC。而为了衡量分割性能,研究者选择使用像素级 AUROC 和 PRO 指标。PRO 分数考虑了连接异常组件的重叠和恢复,以更好地解释 MVTec AD 中变化的异常大小。

如果不了解这些指标,可以参考文章:缺陷异常检测及定位性能评价指标–AUROC,PRO(per-region-overlap)-CSDN博客

4.2 在 MVTec AD 上的异常检测

文章展示了patchcore在MVTec AD数据集上的测试结果,记录了不同记忆库子采样级别(25%、10% 和 1%)的结果。在所有情况下,PatchCore 在所有子数据集上均实现了显著更高的平均图像异常检测性能,并在所有子数据集上保持了一致的高性能。请注意,从 PaDiM 的 2.1% 错误率减少到 PatchCore-25% 的 0.9% 意味着错误率减少了 57%。在工业检测环境中,这是一个相关且显著的减少,同时以最优 F1 阈值计算,仅有 1725 张图像中的 42 张被错误分类,且三分之一的类别完全正确解决。

由于核集记忆库子采样的有效性,在补充材料中patchcore通过应用更高分辨率的图像进一步提升了性能,同时还有更多的补充说明与结果,可以查看原文。这里不进行展示,只提供在MVTec AD上的测试结果:

图四、五  MVTecAD数据集下的patchcore测试结果与其他方法对比,上图展示其在F1阈值下判断的准确率,下图为异常分割准确率。

4.3 推理时间

这部分主要比较patchcore的推理时间,直接上图:

图六  patchcore与不同方法的推理时间比较

4.4 消融研究
4.4.1 局部感知区块特征和层次结构

这部分通过评估不同邻域大小对异常检测性能的影响,研究了局部感知区块特征的重要性。下图的结果很重要,其解释了patchcore对于邻域大小的选择结果以及为什么选择骨干网络的中间特征层(2,3层)作为记忆库

上图可以看出局部性和全局上下文之间的最佳平衡,从而激发了邻域大小 𝑝=3 的选择,而下图中展示了不同层特征的测试结果,尽管通过向下移动网络层次结构,也可以获得更多全局上下文,但代价是分辨率降低和更严重的 ImageNet 类别偏差。可以看出,层次结构的第 2 层特征已经可以实现最先进的性能,但从后续层次(2 + 3)提取的额外特征图受益,所以被选择为patchcore的默认设置。

4.4.2 核集子采样的重要性

下图比较了不同记忆库 𝑀M 子采样方法:核集子采样、随机子采样和对应于子采样目标百分比 P_{target}的基准代理学习(这个方法的原理原文有介绍,即灰色线)。

 其中核集子采样的准确率远远高出其他两种,同时无子采样的性能与大小小两个数量级的核集缩减记忆库的性能相当,且子采样的记忆库包含的冗余要少得多。

 

4.5 4.6少样本目标检测和其他基准的评估

同样如题所示,直接展示结果

 

图七、八  上图为少样本异常检测结果,下图为在mSTC和MTD数据集的测试结果

5. 结论

直接原文翻译:

本文介绍了用于冷启动异常检测的 PatchCore 算法,该算法仅利用名义样本的知识来在测试时检测和分割异常数据。PatchCore 在测试时通过使用由从 ImageNet 预训练网络中提取的局部感知名义区块级特征表示组成的记忆库,保持最大量的名义上下文,并通过核集子采样实现最小运行时间之间取得了平衡。结果是一个最先进的冷启动图像异常检测和定位系统,在工业异常检测基准上具有低计算成本。在 MVTec 上,我们实现了超过 99% 的图像异常检测 AUROC,在相关的少样本环境中具有最高的样本效率。

更广泛的影响

由于自动化工业异常检测是计算机视觉最成功的应用之一,通过 PatchCore 获得的改进对于该领域的从业者可能具有显著兴趣。由于我们的工作专注于工业异常检测,负面的社会影响有限。尽管该基本方法可以在更有争议的领域中用于检测系统,但我们认为我们的改进不足以改变此类系统的社会应用。

限制

尽管 PatchCore 在工业异常检测中表现出高度的有效性,而无需特定地适应当前的问题域,其适用性通常受限于预训练特征的可迁移性。可以通过将 PatchCore 的有效性与利用特征的适应性结合起来解决这一问题。我们将此有趣的扩展留待未来工作。

在理解源码后再次阅读patchcore的论文又有了新的收获,便记录一下学习的过程。

  • 26
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: "朝着工业异常检测全面回忆迈进"是指致力于实现在工业生产过程中对异常情况的全面回溯和记录。这样的系统可以帮助企业快速识别和解决异常情况,提高生产效率和质量。实现这样的系统需要采集大量的生产数据,并利用先进的算法进行处理和分析。同时,还需要建立可靠的数据存储和管理系统,确保数据的完整性和安全性。总的来说,实现工业异常检测全面回溯需要跨学科的协作和技术的支持。 ### 回答2: 在工业系统中,异常检测是一个非常关键的任务,一旦异常被检测到,可以及时采取措施来避免生产线的停滞和工业事故的发生。为了提高异常检测的准确性和效率,研究人员正在不断尝试将人类的记忆方式应用到机器学习中,实现“完全回忆”。 目前,工业异常检测中常用的方法是基于统计学的方法,但这些方法的缺点是需要大量的数据和专业知识,而且无法处理复杂和多变的数据。相反,人类的大脑能够准确地理解环境中的各种信号,并快速地做出反应。为了实现这种类似于人类的记忆功能,人工智能领域提出了不同的方法,如深度学习、神经网络等。 其中,深度学习已经被证明是在工业异常检测中最有效的方法之一,尤其是在处理大量数据时。深度学习模型可以通过输入工业数据和异常数据进行训练,在预测生产过程中的异常时表现出色。但是,为了实现“完全回忆”,还需要解决模型在面对新型异常时的适应问题。 一个可能的解决方案是构建一个基于迁移学习的模型,该模型可以从已有的异常数据中学习到经验,并在发现新型异常时自动适应。此外,研究人员可以尝试使用更加先进的人工智能技术,如注意力机制和增强学习,来提高模型的准确性和可靠性。 总之,通过应用类似于人类记忆功能的深度学习模型和其他人工智能技术,工业异常检测可以更加准确、高效,并可以实现“完全回忆”。这将对工业生产的安全和效率有着积极的影响。 ### 回答3: 近年来,随着物联网技术的快速发展,大量的传感器数据被收集并用于工业异常检测异常检测工业生产中非常重要的一个环节,它能帮助企业实时识别和处理生产过程中的异常情况,从而提高生产效率、降低成本、提升产品质量。但工业环境下存在各种噪声、复杂运行条件和复杂的生产过程等挑战,因此确保工业异常检测的精确性至关重要。 为了实现更精确的工业异常检测,研究人员提出了“全面回忆”的概念,旨在通过利用所有可用信息来识别一些异常情况。具体来说,全面回忆从三个方面着手:一是从数据收集开始,尽可能多地收集机器的输出数据。二是利用深度学习等技术有效地处理这些数据,从而进行分类和聚类分析。三是结合专家领域知识,利用额外的信息来完成异常识别和分析。 实现全面回忆的目标需要考虑多个方面的技术挑战。首先,需要设计创新的数据集、流水线和算法,以捕获复杂工业环境中的多方面信息和随时间变化的变化情况。其次,需要利用大规模的计算机资源来实现高效的数据处理和模型训练。此外,还需要设计到位的专家领域知识建模和融合策略,以确保高准确度和高鲁棒性的异常检测。 总之,全面回忆是工业异常检测研究领域的一个重要方向,它将为挖掘大量生产数据提供强有力的支持,有望为工业生产的智能化和智能化水平提高做出重要贡献。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值