人工智能

异常GPT:使用大型视觉语言模型检测工业异常

mm

最近,像LLava和MiniGPT-4这样的大型视觉语言模型(LVLMs)已经展示了理解图像和在多个视觉任务中实现高准确率和效率的能力。虽然LVLMs在识别常见对象方面表现出色,这得益于它们庞大的训练数据集,但它们缺乏特定领域的知识,并且对图像中的局部细节理解有限。这限制了它们在工业异常检测(IAD)任务中的有效性。另一方面,现有的IAD框架只能识别异常的来源,并需要手动设置阈值来区分正常和异常样本,从而限制了它们的实际实施。

IAD框架的主要目的是检测和定位工业场景和产品图像中的异常。然而,由于现实世界图像样本的不可预测性和稀少性,模型通常只在正常数据上进行训练。它们根据样本与典型样本的偏差来区分异常样本。目前,IAD框架和模型主要为测试样本提供异常评分。此外,根据每个类别的正常和异常实例需要手动指定阈值,这使得它们不适合实际应用。

为了探索大型视觉语言模型在解决IAD框架挑战中的应用和实施,引入了一种新的IAD方法——异常GPT。异常GPT可以在不需要手动设置阈值的情况下检测和定位异常。此外,异常GPT还可以提供有关图像的相关信息,以便与用户进行交互式对话,允许他们根据异常或特定需求提出后续问题。

行业异常检测和大型视觉语言模型

现有的IAD框架可以分为两类。

  1. 基于重构的IAD。
  2. 基于特征嵌入的IAD。

在基于重构的IAD框架中,主要目标是将异常样本重构为其对应的正常样本,并通过重构错误计算来检测异常。SCADN、RIAD、AnoDDPM和InTra使用了从生成对抗网络(GAN)和自编码器到扩散模型和变换器的不同重构框架。

另一方面,在基于特征嵌入的IAD框架中,主要目标是关注正常数据的特征嵌入。像PatchSSVD这样的方法尝试找到一个可以紧密封装正常样本的超球体,而像PyramidFlow和Cfl这样的框架则使用正常化流将正常样本投影到高斯分布上。CFA和PatchCore框架建立了正常样本的内存库,并使用测试样本嵌入与正常嵌入之间的距离来检测异常。

这两种方法都遵循“单类单模型”的学习范式,这需要大量的正常样本来学习每个对象类别的分布。需要大量正常样本的要求使得它在新颖的对象类别中不切实际,并且在动态的产品环境中应用有限。另一方面,异常GPT框架使用对象类别的上下文学习范式,使其能够仅凭借少量正常样本进行推理。

继续讨论,我们有大型视觉语言模型或LVLMs。像LLMs或大型语言模型一样,它们在NLP行业中取得了巨大的成功,现在它们正在被探索用于视觉任务。BLIP-2框架利用Q-former将视觉特征从Vision Transformer输入到Flan-T5模型。另外,MiniGPT框架连接了BLIP-2框架的图像段和Vicuna模型,使用线性层,并使用图像-文本数据进行两阶段的微调过程。这些方法表明LLM框架可能对视觉任务有一些应用。但是,这些模型是训练在通用数据上的,并且它们缺乏广泛应用所需的特定领域专业知识。

异常GPT的工作原理

异常GPT在其核心是一个针对检测工业异常和使用图像定位异常的新型对话式IAD大型视觉语言模型。异常GPT框架使用LLM和预训练的图像编码器来将图像与其对应的文本描述对齐,使用模拟的异常数据。该模型引入了一个解码器模块和一个提示学习器模块,以增强IAD系统的性能,并实现像素级定位输出。

模型架构

上图显示了异常GPT的架构。模型首先将查询图像传递给冻结的图像编码器。然后,模型从中间层中提取patch级特征,并将这些特征输入图像解码器,以计算它们与异常和正常文本的相似度,获得定位结果。提示学习器然后将它们转换为适合作为LLM输入的提示嵌入,连同用户文本输入。LLM模型利用提示嵌入、图像输入和用户提供的文本输入来检测异常、定位异常,并为用户创建最终响应。

解码器

为了实现像素级异常定位,异常GPT模型部署了一个支持少样本IAD框架和无监督IAD框架的轻量级特征匹配基于图像解码器。异常GPT中使用的解码器的设计灵感来自WinCLIP、PatchCore和APRIL-GAN框架。模型将图像编码器分成4个阶段,并从每个阶段中提取中间patch级特征。

然而,这些中间特征尚未经过最终的图像-文本对齐,这就是为什么它们不能直接与特征进行比较的原因。为了解决这个问题,异常GPT模型引入了额外的层来投影中间特征,并将它们与代表正常和异常语义的文本特征对齐。

提示学习器

异常GPT框架引入了一个提示学习器,尝试将定位结果转换为提示嵌入,以从图像中利用细粒度语义,并且保持解码器和LLM输出之间的语义一致性。此外,模型将可学习的提示嵌入纳入提示学习器中,为IAD任务提供额外信息。最后,模型将嵌入和原始图像信息输入LLM。

提示学习器由可学习的基础提示嵌入和一个卷积神经网络组成。网络将定位结果转换为提示嵌入,并形成一个提示嵌入集,然后将其与图像嵌入合并到LLM中。

异常模拟

异常GPT模型采用NSA方法来模拟异常数据。NSA方法使用Cut-paste技术,利用Poisson图像编辑方法来缓解粘贴图像段引入的不连续性。Cut-paste是一种在IAD框架中常用的生成模拟异常图像的技术。

Cut-paste方法涉及从图像中随机裁剪一个块区域,并将其粘贴到另一个图像的随机位置,从而创建一个模拟异常的部分。这些模拟异常样本可以增强IAD模型的性能,但它们经常会产生明显的不连续性。Poisson编辑方法旨在通过求解Poisson偏微分方程来无缝地克隆一个对象从一个图像到另一个图像。

上图展示了Poisson和Cut-paste图像编辑之间的比较。如图所示,Cut-paste方法存在明显的不连续性,而Poisson编辑的结果看起来更自然。

问题和答案内容

为了在大型视觉语言模型上进行提示调优,异常GPT模型根据异常图像生成相应的文本查询。每个查询由两个主要部分组成。查询的第一部分是输入图像的描述,提供有关图像中对象及其预期属性的信息。查询的第二部分是检测图像中的异常的存在,或者检查图像中是否存在异常。

LVLM首先响应图像中是否存在异常的查询。如果模型检测到异常,它会继续指定异常区域的位置和数量。模型将图像划分为3×3网格的不同区域,以便LVLM可以用语言指示异常的位置,如下图所示。

LVLM模型被输入有关输入的描述性知识,有助于模型更好地理解图像组件。

数据集和评估指标

模型主要在VisA和MVTec-AD数据集上进行实验。MVTech-AD数据集包含3629张用于训练的图像和1725张用于测试的图像,跨越15个不同的类别,因此它是IAD框架中最流行的数据集之一。训练图像仅包含正常图像,而测试图像包含正常和异常图像。另一方面,VisA数据集包含9621张正常图像和大约1200张异常图像,跨越12个不同的类别。

继续讨论,像现有的IAD框架一样,异常GPT模型使用AUC(接收者操作特性曲线下的面积)作为其评估指标,使用像素级和图像级AUC来评估异常定位性能和异常检测。然而,模型还使用图像级准确率来评估其所提出方法的性能,因为它允许在不需要手动设置阈值的情况下确定异常的存在。

结果

量化结果

少样本工业异常检测

异常GPT模型将其结果与PaDiM、SPADE、WinCLIP和PatchCore等先前的少样本IAD框架进行比较作为基线。

上图比较了异常GPT模型与少样本IAD框架的结果。在两个数据集上,异常GPT所采用的方法在图像级AUC方面优于以前的模型,并且在准确率方面也表现良好。

无监督工业异常检测

在大量正常样本的无监督训练设置中,异常GPT在所有类别内的数据集上训练一个单一模型。异常GPT的开发者选择了UniAD框架作为比较基线,因为它是在相同的设置下训练的。此外,模型还将其性能与JNLD和PaDim框架进行比较,使用相同的统一设置。

上图比较了异常GPT与其他框架的性能。

定性结果

上图展示了异常GPT模型在无监督异常检测方法中的性能,而下图则展示了模型在1-shot上下文学习中的性能。

异常GPT模型能够指示异常的存在,标记其位置,并提供像素级定位结果。当模型处于1-shot上下文学习方法中时,其定位性能略低于无监督学习方法,因为缺乏训练。

结论

异常GPT是一种新型的对话式IAD视觉语言模型,旨在利用大型视觉语言模型的强大功能。它不仅可以识别图像中的异常,还可以定位异常的确切位置。此外,异常GPT还可以促进多轮对话,专注于异常检测,并在少样本上下文学习中展示出色的性能。异常GPT探索了大型视觉语言模型在异常检测中的潜在应用,引入了新的想法和可能性,丰富了IAD行业。

专业为工程师,心为作家。 Kunal是一名技术作家,对AI和ML有着深厚的热爱和理解,致力于通过其引人入胜和信息丰富的文档来简化这些领域中的复杂概念。