目录
- 简介
- 动机/目标
- 相关工作
- 基于特征嵌入的方法 feature embedding-based
- 基于重建的方法 reconstruction-based
- 方法
- 3.1 模型架构
- 3.2 译码器和提示学习器
- 3.3 图像-文本对齐数据
- 异常生成
- 3.4 损失函数
- 实验
- 比较
- 消融
- 总结
- Appendix
- A. 现有IAD方法的更多实验结果
- B. 正常与异常文本
- C. 详细的图像描述
- D. 更多定性示例
简介
- 题目:《AnomalyGPT: Detecting Industrial Anomalies Using Large Vision-Language Models》,AnomalyGPT:利用大型视觉-语言模型检测工业异常, AAAI 2024 Oral
- 日期:2023.12.28
- 单位:中国科学院自动化研究所,中国科学院大学,中科视语(北京)科技有限公司,武汉人工智能研究院
- 论文地址:https://arxiv.org/abs/2308.15366
- GitHub:https://github.com/CASIA-IVA-Lab/AnomalyGPT
- 作者
Zhaopeng Gu,计算机视觉、异常检测、多模态学习
(其他作者略)Bingke Zhu, Guibo Zhu, Yingying Chen, Ming Tang(唐明), Jinqiao Wang(王金桥)
- 摘要
大型视觉语言模型(LVLMs),如MiniGPT-4和LLaVA,已展示了理解图像的能力,并在各种视觉任务中取得了显著的表现。尽管由于广泛的训练数据集,它们在识别常见物体方面具有强大的能力,但它们缺乏特定领域的知识,对物体内部局部细节的理解较弱,这限制了它们在工业异常检测(IAD)任务中的有效性。另一方面,大多数现有的IAD方法仅提供异常分数,并需要手动设置阈值以区分正常样本和异常样本,这限制了它们的实际应用。在本文中,我们探讨了利用LVLM解决IAD问题,并提出了AnomalyGPT,这是一种基于LVLM的新型IAD方法。我们通过模拟异常图像并为每个图像生成相应的文本描述来生成训练数据。我们还采用了解码器提供细粒度的语义,并设计了一个学习器,通过提示嵌入对LVLM进行微调。我们的AnomalyGPT消除了手动调整阈值的需要,因此可以直接评估异常的存在和位置。此外,AnomalyGPT支持多轮对话,并展示了令人印象深刻的少量样本上下文学习能力。在仅用一个正常样本的情况下,AnomalyGPT在MVTec-AD数据集上达到了最先进的性能,准确率为86.1%,图像级AUC为94.1%,像素级AUC为95.3%。
动机/目标
现有的IAD方法和LVLM都无法很好地解决IAD问题,因此我们引入了AnomalyGPT,这是一种基于LVLM的新型IAD方法。AnomalyGPT可以在不需要手动设置阈值的情况下,检测异常的存在和位置。此外,可以提供有关图像的信息,并允许用户进行互动参与,使用户能够根据自己的需求和提供的答案提出后续问题。AnomalyGPT还可以通过少量正常样本进行上下文学习,从而快速适应之前未见过的对象。
如图1和表1所示
图1. AnomalyGPT与现有的IAD方法和现有的LVLM的比较。现有的IAD方法只能提供异常评分,并需要手动设置阈值,而现有的LVLM无法检测图像中的异常。AnomalyGPT不仅可以提供有关图像的信息,还可以指示异常的存在和位置。
表1. AnomalyGPT与现有方法在各项功能上的比较。表中的“传统IAD方法”指的是“单类单模型”方法,例如PatchCore、InTra和PyramidFlow。“少样本IAD方法”指的是能够进行少样本学习的方法,如RegAD 、Graphcore 和 WinCLIP 。“LVLMs”代表一般的大型视觉-语言模型,如MiniGPT-4 、LLaVA 和PandaGPT 。“异常得分”表示仅提供异常检测的得分,而“异常判断”则直接评估异常的存在。
具体而言,AnomalyGPT专注于使用合成的异常视觉-文本数据对LVLM进行微调,将IAD知识整合到模型中。然而,直接使用IAD数据进行训练面临诸多挑战。
首先是数据稀缺。像LLaVA 和PandaGPT 这样的方法是在160k张图像及其对应的多轮对话上进行预训练的。然而,现有的IAD数据集仅包含几千个样本,这使得直接微调容易导致过拟合和灾难性遗忘。为了解决这个问题,我们使用提示嵌入对LVLM进行微调,而不是对参数进行微调。在图像输入后添加额外的提示嵌入,将补充的IAD知识引入LVLM。
第二个挑战与细粒度语义有关。AnomalyGPT提出了一种轻量级的基于视觉-文本特征匹配的解码器,以生成像素级的异常定位结果。解码器的输出通过提示嵌入与原始测试图像一起引入LVLM,这使得LVLM能够利用原始图像和解码器的输出进行异常判断,从而提高判断的准确率。
相关工作
先前的IAD任务方法主要分为两类
基于特征嵌入的方法 feature embedding-based
- 教师-学生网络方法
通常选择在大规模数据集上预训练的主干网络的部分层作为固定参数的教师模型。在训练过程中,教师模型向学生模型传授提取正常样本特征的知识。在推断过程中,教师网络和学生网络从测试集中提取的正常图像特征是相同的,而从测试集中提取的异常图像特征则截然不同。通过比较两个网络生成的特征图,可以生成相同大小的异常得分图。然后,通过将异常得分图放大到与输入图像相同的比例,可以获得各个输入图像位置的异常得分。在此模型的依据下,可以判断测试图像是否异常
- 单分类:例如PatchSVDD(Yi and Yoon 2020)的方法通过建立包裹正常样本的超球面(hypersphere)
- 分布图:PyramidFlow(Lei et al. 2023)使用正则化流将正常样本投影到高斯分布上。
- 记忆库:CFA(Lee, Lee, and Song 2022)建立正常样本patch的embedding,比较测试样本的embedding与正常样本的距离,实现异常检测。
基于重建的方法 reconstruction-based
基于重建的目的是将异常样本重建为相应的正常样本,并通过计算重建误差来检测异常,使用的网络架构包括但不限于:自动编码器和,GAN,Transformer和扩散模型。
原理:假设是仅基于正常样本训练的模型可以重构正常区域,但无法重构异常区域。
方法
AnomalyGPT是一种新型的对话式异常检测视觉语言模型,主要用于检测工业工件图像中的异常并确定其位置。我们利用预训练的图像编码器和大语言模型,通过模拟异常数据对齐异常检测图像及其相应的文本描述。我们引入了一个解码器模块和一个学习器模块,以增强异常检测性能并实现像素级定位输出。采用提示调优和与预训练数据的交替训练,保持了大语言模型的迁移性并防止了灾难性遗忘。我们的方法表现出强大的少样本迁移能力,仅需提供一个正常样本即可实现对之前未见物品的异常检测和定位。
3.1 模型架构
图2展示了AnomalyGPT的架构。在给定查询图像x ∈ RH×W ×C的情况下,通过图像编码器提取的最终特征Fimg ∈ RC1经过线性层处理后,得到图像嵌入Eimg ∈ RCemb,随后输入到大语言模型(LLM)中。
在无监督情景下,通过图像编码器中间层提取的块级特征与文本特征一起输入到解码器,以生成像素级的异常定位结果。
在少样本情景下,来自正常样本的块级特征被存储在记忆库中,定位结果可以通过计算查询块与记忆库中最相似对应块之间的距离获得。随后,定位结果通过提示学习器转换为提示嵌入,作为大语言模型输入的一部分。大语言模型利用图像输入、提示嵌入和用户提供的文本输入来检测异常并识别其位置,从而生成对用户的响应。
图2. AnomalyGPT的架构。查询图像被传递给冻结的图像编码器,从中间层提取的块级特征被输入到图像解码器中,以计算它们与正常和异常文本的相似度,从而获得定位结果。图像编码器提取的最终特征被输入到一个线性层,然后与定位结果一起传递给提示学习器。提示学习器将它们转换为适合输入到大语言模型的提示嵌入,连同用户文本输入一起。在少样本情景中,正常样本的块级特征被存储在记忆库中,定位结果可以通过计算查询块与记忆库中最相似对应块之间的距离来获得。
3.2 译码器和提示学习器
为了实现像素级的异常定位,采用了一种轻量级的基于特征匹配的图像解码器
为了利用图像中的细粒度语义并保持大语言模型与解码器输出之间的一致性,我们引入了一个学习器,它将定位结果转化为提示嵌入。此外,学习器中还融入了与解码器输出无关的可学习基提示嵌入,以为IAD任务提供额外的信息。最后,这些嵌入连同原始图像信息一起输入到大语言模型中。如图2所示,学习器由可学习的基提示嵌入Ebase ∈ Rn1×Cemb和一个卷积神经网络组成。该网络将定位结果M ∈ RH×W转换为n2个提示嵌入Edec ∈ Rn2×Cemb。Ebase和Edec形成一组n1 + n2个提示嵌入Eprompt ∈ R(n1 + n2)×Cemb,这些嵌入与图像嵌入结合后输入到大语言模型中。
3.3 图像-文本对齐数据
造训练需要的异常数据
异常生成
与之前的IAD方法一致,仅使用这些数据集中的正常数据进行训练。为了模拟异常样本,作者使用poisson(泊松)图像编辑,相较于Cut-paste(裁剪-粘贴),对于边缘处理更平滑。
Cut-paste通常会导致明显的不连续性,如图3所示。泊松编辑方法旨在通过求解泊松偏微分方程将一个图像中的对象无缝克隆到另一个图像中。
图3. 剪切-粘贴与泊松图像编辑的比较示意图。剪切-粘贴的结果显示出明显的不连续性,而泊松图像编辑的结果则更加自然。
为了对LVLM进行提示调优,我们基于模拟的异常图像生成相应的文本查询。具体而言,每个查询由两个部分组成。第一部分涉及对输入图像的描述,提供有关图像中存在的物体及其预期属性的信息,例如“这是一张皮革的照片,应该是棕色的,并且没有任何损坏、瑕疵、缺陷、划痕、孔洞或破损部分。”第二部分则查询物体内部的异常,即“图像中是否存在异常?”LVLM首先回应是否存在异常。如果检测到异常,模型将继续具体说明异常区域的数量和位置,例如“是的,图像中存在异常,位于图像的左下角。”或者“没有,图像中没有异常。”我们将图像划分为3 × 3个不同区域,以便LVLM能够口头指示异常的位置,如图4所示。关于图像的描述性内容为LVLM提供了输入图像的基础知识,有助于模型更好地理解图像内容。然而,在实际应用中,用户可以选择省略此描述性输入,模型仍然能够仅基于提供的图像输入执行IAD任务。每个类别的详细描述见附录C。
图4. 图像的3 × 3网格示意图,用于让大语言模型口头指示异常位置。
3.4 损失函数
实验
数据集:主要在MVTecAD 和VisA 数据集。
MVTec-AD数据集包含3629张训练图像和1725张测试图像,涵盖15个不同类别,是异常检测(IAD)最受欢迎的数据集之一。训练图像仅由正常图像组成,而测试图像则包含正常和异常图像。图像分辨率从700×700到1024×1024不等。VisA是一个新引入的IAD数据集,包含9621张正常图像和1200张异常图像,涵盖12个类别,分辨率大约为1500×1000。与之前的IAD方法一致,我们仅使用这些数据集中的正常数据进行训练。
评估指标
根据现有的IAD方法,我们采用接收者特征曲线下面积(AUC)作为评估指标,其中图像级和像素级AUC分别用于评估异常检测和异常定位性能。然而,我们提出的方法独特之处在于能够在不需要手动设定阈值的情况下确定异常的存在。因此,我们还利用图像级准确率来评估我们方法的性能。
实施细节
我们利用 ImageBind-Huge 作为图像编码器,使用 Vicuna-7B 作为推理的大语言模型,通过线性层连接。我们使用 PandaGPT 的预训练参数初始化我们的模型。我们将图像分辨率设置为 224×224,并将 ImageBind-Huge 的图像编码器第 8、16、24 和 32 层的输出输入到图像解码器中。训练在两台 RTX-3090 图形处理器上进行,总共 50 个周期,学习率设为 1e-3,批量大小为 16。采用线性预热和一次性余弦学习率衰减策略。我们使用 PandaGPT 的预训练数据和我们的异常图像-文本数据进行交替训练。只有解码器和提示学习器会进行参数更新,其余参数均保持不变。
比较
少样本工业异常检测
我们将我们的工作与先前的少样本 IAD 方法进行比较,选择 SPADE、PaDiM、PatchCore和 WinCLIP 作为基准。结果如表 2 所示。在两个数据集中,我们的方法在图像级 AUC 方面显著优于以前的方法,并且在像素级 AUC 和准确率上也达到了竞争水平。
表2. MVTec-AD和VisA数据集上的少样本IAD结果。结果列出了5次运行的平均值,表现最佳的方法用粗体字标出。
无监督工业异常检测
在具有大量正常样本的无监督训练情景中,由于我们的方法在数据集中的所有类别样本上训练单个模型,我们选择了在相同设置下训练的 UniAD 作为比较基准。此外,我们还在相同统一情景下将我们的模型与 PaDiM 和 JNLD 进行了比较。MVTec-AD 数据集上的结果如表 3 所示。
表3. MVTec-AD数据集上的无监督异常检测结果。表现最佳的方法用粗体标出。
消融
为了验证每个提出模块的有效性,我们在MVTec-AD和VisA数据集上进行了广泛的消融实验。我们主要关注四个方面:解码器、学习器、大语言模型在推断中的使用,以及利用LoRA对大语言模型进行微调。
主要结果见表4。在MVTec-AD数据集上进行了无监督的训练和测试,而在visa数据集上评估了one-shot性能。可以观察到,解码器在像素级异常定位性能上表现出色。与手动设置的阈值相比,大语言模型展示了更高的推断准确率,并提供了额外的功能。此外,在准确率和可迁移性方面,提示调优优于LoRA。
表4. 消融研究结果。在“解码器”和“学习器”列中的✓表示模块的包含。在“LLM”列中的✓表示是否使用大语言模型进行推断,而“LoRA”列中的✓表示是否使用LoRA对大语言模型进行微调。在不使用大语言模型的设置中,正常样本的最大异常得分被用作分类阈值。在不使用解码器的设置中,由于大语言模型仅提供文本输出,我们无法计算图像级和像素级的AUC。
图5展示了我们在无监督异常检测中AnomalyGPT的性能,而图6则展示了1-shot情景学习中的结果。我们的模型能够指示异常的存在,确定其位置,并提供像素级的定位结果。用户可以参与与图像内容相关的多轮对话。在1-shot情景学习情境中,由于缺乏训练,模型的定位性能略低于无监督情境。更多的定性示例可以在附录D中找到。
图5. AnomalyGPT在无监督情景下的定性样例。AnomalyGPT能够检测异常,定位其位置,提供像素级的定位结果,并回答关于图像的问题。
图6. 在单样例情景下AnomalyGPT的定性样例。由于缺乏参数训练,其定位性能与无监督情景相比略有降低。
总结
我们介绍了AnomalyGPT,这是一种新颖的对话式异常检测视觉语言模型,利用了大规模视觉语言模型的强大能力。AnomalyGPT能够判断图像中是否包含异常,并准确定位这些异常的位置,而无需手动指定阈值。此外,AnomalyGPT支持针对异常检测的多轮对话,并在少量实例的上下文学习中表现出色。AnomalyGPT的有效性在两个常见数据集上得到了验证。我们的工作探讨了大规模视觉语言模型在异常检测中的潜在应用,为工业异常检测领域提供了新思路和可能性。
Appendix
A. 现有IAD方法的更多实验结果
图7. PatchCore 在不同阈值下对 MVTec-AD 数据集中各类别的实验结果。每个物体类别的最佳阈值差异显著。
图8. 在不同阈值下,WinCLIP 在 MVTec-AD 数据集各类别上的实验结果。最佳阈值在每个类别中差异显著。
如论文所述,现有的IAD方法仅为测试样本提供异常得分。然而,仅凭异常得分无法让用户判断是否存在异常,因为他们不知道区分正常样本和异常样本的阈值。对于每种对象类别,阈值差异很大。只有同时获得每个对象类别的正常样本和异常样本,以及它们各自的异常得分,用户才能确定最佳分类阈值,这与IAD任务的初衷相悖,后者仅使用正常数据。
解决这一问题的一种潜在方案是利用训练集中每个类别正常样本的最大异常得分作为阈值。然而,这种方法仅适用于“单类单模型”方法,这些方法专门设计用于在特定环境中检测某一类别的对象。当面临一个以前未见过的测试样本时,模型仍然不确定应应用哪个阈值进行决策。因此,需要一个适用于所有类别的统一阈值,这对现有的IAD技术来说具有挑战性。
我们对两种具有代表性的IAD方法进行了实验,分别是PatchCore 和WinCLIP 。PatchCore 在MVTec-AD数据集上实现了99.3%的图像级AUC,而WinCLIP 是少样本IAD的最先进方法。我们评估了这两种方法在不同阈值下的各个类别的准确率。可以观察到,阈值对这两种方法的性能产生了显著影响。此外,单一阈值在不同类别间的效果差异显著。因此,除非在包含每个类别异常样本的测试集上进行实验,否则很难确定最佳阈值。图7和图8展示了PatchCore 和WinCLIP 在不同阈值设置下对MVTec-AD 数据集中每个类别的结果。
B. 正常与异常文本
表5. 本文考虑的多层次文本列表,以呈现正常和异常语义。
根据WinCLIP ,我们利用组合提示集成来获取呈现正常性和异常性的文本。具体来说,我们考虑两个层次的文本:(a) 状态层次,(b) 模板层次。完整文本可以通过将模板层次文本中的词元[c]替换为状态层次文本中的一个,并将词元[o]替换为对象的名称来组成。当项目的名称不可用时,采用“object”作为该项目的名称。表5提供了多层次文本的详细列表。
C. 详细的图像描述
表6. MVTec-AD数据集中每个类别的详细图像描述。该描述将在训练过程中添加到相应类别的提示中,以提供输入图像的基础知识。
如论文中所述,输入给大语言模型的提示通常遵循以下格式:### 人类:<图像> Eimg </图像> Eprompt [图像描述] 图像中是否存在任何异常? ### 助手: [图像描述] 部分涉及对输入图像的描述,提供有关图像中存在的对象及其预期属性的信息。这种描述为LVLM提供了输入图像的基础知识,有助于模型更好地理解图像内容。MVTec-AD 和VisA 数据集中每个类别的详细描述可以在表6和表7中找到。请注意,用户可以省略此描述性输入,模型仍然能够仅基于提供的图像输入执行IAD任务。
D. 更多定性示例
图9. AnomalyGPT、PandaGPT、LLaVA和MiniGPT-4之间的比较。输入图像是一个正常瓶子的俯视照片。AnomalyGPT能够检测异常,准确定位其位置,提供像素级的定位结果,并回答关于图像的问题。
我们将我们的方法与几种现有的LVLM进行比较,特别选择了PandaGPT、MiniGPT-4和LLaVA进行对比分析。我们在正常样本和异常样本的不同类别上进行了实验。结果展示在图9、图10、图11、图12、图13和图14中。可以观察到,只有我们的方法在准确回答与异常检测相关的问题和图像内容相关的问题方面表现出色。相比之下,其他模型在识别异常的存在及其精确位置方面表现不佳。值得注意的是,PandaGPT和LLaVA明显倾向于将所有样本错误分类为异常。相反,MiniGPT-4则倾向于采取谨慎态度,主要将样本标记为正常。
部分参考:https://www.cnblogs.com/zh-jp/p/18526426,侵删