CVPR2024 | PromptAD: 仅使用正常样本进行小样本异常检测的学习提示

news2024/12/27 11:40:53

PromptAD: 仅使用正常样本进行小样本异常检测的学习提示

论文名称:PromptAD: Learning Prompts with only Normal Samples for Few-Shot Anomaly Detection

论文地址:https://arxiv.org/pdf/2404.05231

研究背景

异常检测(Anomaly Detection)是计算机视觉中非常重要的任务,在工业和医学中的缺陷检测任务中得到了广泛的应用。本文聚焦于无监督工业异常检测任务,这提出了一个被称为一类分类(OCC)设置的挑战。在这个框架中,模型在训练期间只使用正常样本,但在测试阶段,正常样本和异常样本都会用于测试,模型需要能识别异常样本。由于工业异常检测通常为不同的工业生产线定制模型,因此使用少量样本快速训练模型的能力对实际应用具有重要意义。

提示学习(prompt learning)的目的是通过对比学习自动学习提示,以指导图像分类。但是,如图1(右)所示,由于异常检测的单类设置,使用上述提示学习方法作为基线的效果较差,不如在图像级结果上使用手动提示的WinCLIP。导致这种结果的主要的问题在于:1. 提示学习依赖于对比学习,如何在one-class环境中设计prompt来完成对比学习? 2.由于异常样本的缺乏,如何控制正常和异常prompt之间的边缘距离?

本文提出了一种只使用正常样本的单类提示学习异常检测方法PromptAD。为了解决以上的挑战1,本文提出了语义连接(SC),显然,将一个与提示语反义的文本和原始的提示连接可以改变这个提示的语义。基于这个想法,SC首先为正常样本设计了一个可学习的正常提示,例如[P1][P2] . . . [PEN ][obj.],接下来将正常提示与许多异常文本连接生成异常提示,例如[P1][P2] . . . [PEN ][obj.][with][flaw],并可在提示学习期间作为正常样本的负向提示使用。由于手动标注的异常文本有限,为了扩展异常信息的丰富性,SC也通过连接正常提示和可学习的token后缀设计了可学习的异常提示,例如[P1][P2] . . . [PEN ][obj.][A1][A2] . . . [AEA ],其中[Ai ] 是可学习的token。可学习的异常提示和手动设计的异常提示的分布是对齐的,从而确保可学习的异常提示学习更多正确的异常信息。

另外,在异常检测中异常样本不可用,因此不能通过对比损失明确控制正常和异常提示的边界。为了解决挑战2,本文提出了显式异常边缘(EAM)的概念,其中一个超参数确保正常特征和正常提示特征之间的距离小于正常特征和异常提示特征之间的距离。从而确保正常提示和异常提示之间有足够的间隔。

对比于WinCLIP和基线方法,在只使用10-20(下降~980和0)个提示的情况下,PromptAD图像级/像素级异常检测结果分别为91.3%(提高1.2%和9.8%)和92.5%(提高7.7%和3.7%)。

相关工作

Vision-Language Model

利用对比学习和vision transformer,一些视觉-语言模型(VLM)取得了巨大成功。CLIP是最常用的VLM之一,它在大规模的图像-文本对上进行预训练,展现出强大的零样本分类能力。基于预训练的CLIP和提示工程师,一些下游任务取得了巨大飞跃。受到自然语言处理(NLP)中提示学习成功的启发,近期出现了一些针对小样本图像分类任务的提示学习方法。这些方法旨在通过对比学习自动学习更好的提示,以指导基于CLIP的图像分类。

Anomaly Detection

大多数异常检测(AD)方法可以分为三种:基于特征嵌入的方法、基于知识蒸馏的方法和基于重建的方法。基于特征嵌入的异常检测方法通过神经网络提取图像的块特征,然后执行异常检测。基于知识蒸馏的异常检测方法让学生网络只学习教师网络的正常样本知识,并通过教师和学生之间的差异完成异常检测。基于重建的异常检测方法希望模型能够将异常图像重建为正常图像,并通过重建图像与异常图像之间的差异实现异常检测。

Few-Shot Anomaly Detection

TDG和RegAD是首先研究小样本异常检测方法的工作,PatchCore和DifferNet模型也在小样本设置中展示出较好的性能。WinCLIP和RWDA引入了CLIP模型进行异常检测,并在少样本设置中大幅提高了性能。最新的FastRecon通过带有分布正则化的回归重建异常特征,并取得了优异的性能。

本文方法

概述

本文提出的PromptAD模型结构如图2所示。PromptAD建立在VV-CLIP之上,其视觉编码器用于提取全局和局部的特征。本文提出的语义串联(SC)用来设计提示。具体来说,将N个可学习的普通前缀与目标名称串联起来获得普通提示(NPs),然后将这N个普通提示分别与M个手动设置的异常后缀和L个可学习的异常后缀串联,以获得N×M个异常提示(MAPs)和N×L个可学习的异常提示(LAPs)。视觉特征和提示特征用于通过对比损失和本文提出的显式异常边界(EMA)损失来完成提示学习。EMA可以通过超参数控制正常提示特征和异常提示特征之间的显式边际。最后,通过提示学习获得的提示被用于提示引导的异常检测(PAD)。

除了PAD,参考WinCLIP+ ,本文还引入了视觉引导的异常检测(VAD)。具体来说,如图2所示,在训练期间,视觉编码器输出的第i层特征(不包括CLS特征)被存储为正常的视觉记忆,记为R。在测试阶段,将查询图像的第i层特征图与R进行比较,以获得异常分数图:

在实践中,本文使用两层的中间特征作为记忆,为每个查询图像获得两个分数图,然后将这两个分数图平均,以得到最终的视觉引导分数图。

Semantic Concatenation

由于在训练过程中只有正常的样本可以使用,导致了没有负样本用于引导提示学习从而影响了方法的性能。本文发现提示的语义可以通过连接来改变。例如,a photo of cable是正常的语义,当把这个提示和一个后缀连接后,a photo of cable with flaw就转换成了一个异常的语义。通过这种方法,本文提出了语义连接,可以通过将正常的提示与异常后缀连接将正常提示转换为异常提示,从而基于可学习的正常提示构造充足的对比样本。具体来说,遵循CoOp的格式,可学习的正常提示设计如下:

其中E_N代表可学习的正常前缀的长度,[obj.] 代表了被检测的物体的名字。具体来说,本从数据集的异常标签中生成异常后缀,例如[] with color stain, [] with crack等,然后将这些文本与正常提示连接起来,以获得异常提示:

其中前缀是可训练的正常提示,而后缀是手动设置的异常文本。此外,本文将正常提示与一个可学习的标记后缀结合起来,设计出可学习的异常提示:

这里表示可学习异常后缀的长度。需要注意的是,由相同的普通前缀或异常后缀连接得到的提示的参数是共享的。在训练过程中,NP(正常提示)会向正常视觉特征靠近,而MAP(手动异常提示)和LAP(可学习异常提示)则会远离正常视觉特征。提示学习的训练损失与CLIP的训练损失一样,公式如下:

由于更多的异常样本可以产生更好的对比学习效果,每一个异常提示特征都会和视觉特征进行对比。

在传统的提示学习中,由于缺乏异常样本,系统只能设计出能够识别正常样本的提示,这在进行对比学习时存在较大的局限。本文提出的语义连接方法将原本代表正常样本的提示转换为代表异常样本的提示。通过共享参数,异常提示能够复用正常提示的语义信息,同时学习到异常的特征,从而在对比损失中更好地区分正常样本和异常样本。

Explicit Anomaly Margin

由于模型在训练中缺乏有异常的样本,MAP(手动异常提示)和LAP(可学习异常提示)只能将正常的视觉特征作为对比的负样本,并且在正常提示和异常提示之间缺少明确的边界。因此,本文提出了显式异常边界(EAM),它能够控制正常提示特征和异常提示特征之间的边界。实际上,EAM是通过边界超参数实现的正则化损失,其定义如下:

其中_d_(·, ·)代表欧氏距离,是所有异常提示特征的原型:

在CLIP中,最终的特征都被投影到单位超球面上,因此中的特征也进行了归一化,并且边界被固定为零。与对比损失()相比,EMA损失确保了正常样本与异常原型之间的距离大于正常样本与正常原型之间的距离,从而实现了正常和异常原型之间的明确区分。此外,由于MAP包含足够的异常信息,而LAP在初始化时没有任何语义指导,对齐它们有助于LAP模仿MAP的分布。具体来说,本文使用平方的L2范数对两种分布的均值进行对齐:

其中和分别是MAPs和LAPs的特征均值,_λ_ 是控制MAPs和LAPs对齐程度的超参数。

Anomaly Detection

在测试阶段,作为正常原型,作为异常原型来完成提示引导的异常检测任务。图像级的得分和像素级得分图通过以下公式计算:

其中是图像/像素级异常检测的全局/局部图像特征。

最终,将视觉引导的和提示引导的融合以获得像素级异常得分图,将和的最大值融合以获得图像级的异常得分:

本文使用的融合方法是调和平均值,它对较小的值更为敏感。

实验

本文在1、2和4-shot的设置下完成了PromptAD与最新方法之间的对比实验,这些实验包括了图像级别和像素级别的结果。此外,本文还比较了many-shot和full-shot方法,以展示PromptAD强大的few-shot性能。最后,本文进行了消融实验,以验证通过所提出的SC(语义串联)和EAM(显式异常边界)对提示学习改进的效果,并展示了不同CLIP变换方法和超参数的影响。

数据集

MVTec-AD

该数据集模拟了真实的工业生产场景,填补了无监督异常检测的空白。它包含 5 种纹理和 10 种物体,共计 5,354 张来自不同领域的高分辨率图像。训练集包含 3,629 张仅有无异常样本的图像。测试集包含 1,725 张图像,包括正常和异常样本。提供了像素级标注用于异常定位评估。

VisA

该数据集包含共计 10,821 张高分辨率图像,包括 9,621 张正常图像和1,200 张带有 78 种异常的图像。VisA 数据集由 12 个子集组成,每个子集对应一个。

评估指标

本文图像级别和像素级别异常检测的评估指标均采用接收者操作特征曲线下面积(Area Under the Receiver Operation Characteristic,AUROC)。

实现细节

本文使用了OpenCLIP实现的CLIP及其预训练参数,以及超参数τ的默认值。参考WinCLIP,本文使用了基于LAION-400M的CLIP,配备ViT-B/16+。

图像级对比实验

PromptAD和当前方法的图像级别比较实验结果如表1所示。实验结果显示,PromptAD在1、2和4-shot的少样本设置下,相比于其他传统方法和基于CLIP的方法,如WinCLIP+ 和 RWDA,都有显著的性能提升。特别是在MVTec和VisA数据集上,PromptAD的性能提升百分比在1.3%到2.9%之间,这表明PromptAD在少样本异常检测方面具有强大的能力。此外,PromptAD在实现这些性能提升的同时,使用的提示数量还少于对比方法,这进一步证明了其效率和有效性。

像素级对比实验

作者比较了PromptAD与其他方法在像素级别异常检测任务上的性能,实验结果如表4所示。实验结果表明,虽然基于CLIP的方法在像素级别的改进不如图像级别显著,但PromptAD在1-shot和2-shot的少样本设置下在MVTec和VisA数据集上均取得了最佳性能,较WinCLIP+有小幅提升。在4-shot设置下,PromptAD在VisA上保持了第一名,而在MVTec上以微弱差距位居第二。此外,通过可视化的异常定位结果,作者展示了PromptAD在定位小面积异常方面的高准确性,这表明PromptAD在像素级别的异常检测任务上具有较高的精确度和鲁棒性。这些结果进一步证实了PromptAD在少样本异常检测领域的有效性和优越性。

异常定位的定量结果如图3所示。PromptAD在1-shot设置中对对象和纹理具有更好的异常定位能力。此外,PromptAD还可以非常准确地定位一些非常小的异常区域。

与many-shoy方法的对比

在少样本设置下PromptAD与其他many-shot/full-shot设置下的方法的比较结果,如表2所示。实验结果显示,PromptAD不仅在少样本设置下表现出色,其图像级别的异常检测结果优于其他多次射击方法,而且在像素级别上也展现出了有竞争力的性能。这表明PromptAD在处理只有少量样本可用的情况时,依然能够有效地进行异常检测。

消融实验

本文在MVTec和VisA数据集上,在1-shot设置下,对PromptAD的不同模块对整体性能的影响进行了实验验证。包括语义串联(SC)和显式异常边界(EAM)。同时,本文还验证了视觉引导的异常检测(VAD)的效果。消融研究的结果如表3所示:

不同 CLIP 变换的结果

实验结果如表5所示:

超参数分析

本文分析了N、L和λ对PromptAD的影响。λ是损失的超参数,控制MAP和LAP特征分布的对齐程度。N是NP的数量。L是异常提示后缀的数量,N×L是LAP的数量。图4说明了N和L对PromptAD的影响。在图像级结果中,N影响不大,N = 1和N = 4之间没有明显差异。而L有显著的影响,较大的L可以得到更好的结果。在像素级结果中,N和L的影响都相对较小,较大的L略微改善了结果。

图5记录了不同λ的图像级/像素级结果。可以看出,当λ等于或大于0时,结果更差。这表明 MAP 和 LAP 的分布需要对齐,但不能过度对齐,这会降低异常提示的多样性,从而降低模型对异常图像特征的感知。

可视化结果

为了量化 PromptAD 的效果,本文对 L2 归一化后的视觉和文本特征进行了可视化。图 6 显示了可视化结果,可以看出正常提示特征和异常提示特征之间的区分非常明显,正常提示特征与正常视觉特征之间的重叠度非常高,证明了 PromptAD 的有效性。

结论

本文提出了一种新的异常检测方法PromptAD,可以在小样本异常检测场景中只使用正常样本自动地学习prompt。首先,为了解决one-class任务的挑战,本文提出了semantic concatenation通过连接mnormal prompt和anomaly suffixe构建anomaly prompt从而引导prompt learning。其次,本文提出了明确的异常边缘损失,通过超参数确定了正常和异常prompt的特征。最后,对于图像级/像素级异常检测,PromptAD在11/12个小样本任务中达到第一。

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

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

相关文章

CNN代码实战

CNN的原理 从 DNN 到 CNN (1)卷积层与汇聚 ⚫ 深度神经网络 DNN 中,相邻层的所有神经元之间都有连接,这叫全连接;卷积神经网络 CNN 中,新增了卷积层(Convolution)与汇聚&#xff08…

Java 操作 Redis和redis持久化

一、Jedis 我们要使用 Java 来操作 Redis&#xff0c;Jedis 是 Redis 官方推荐的 java连接开发工具&#xff01; 使用Java 操作 Redis 中间件&#xff01; 1.导入对应的依赖 https://mvnrepository.com/artifact/redis.clients/jedis <dependency><groupId>redi…

【学习笔记】Matlab和python双语言的学习(最小生成树——Kruskal算法、Prim算法)

文章目录 前言一、最小生成树树的一些概念关键特性最小生成树和最短路径的主要区别常用算法1. Kruskal算法(适合点多边少的图)2. Prim算法(适合边多点少的图) 二、示例三、代码实现----Matlab四、代码实现----python1. Kruskal算法2. Prim算法 总结 前言 通过模型算法&#xf…

硬件模拟的基本原理是什么?

具体来说&#xff0c;这种设计方法减少了集成电路 (IC) 设计和开发的设计迭代次数&#xff0c;并且广泛适用于所有电力电子设计。我详细介绍了我在快速上市 IC 开发方面的经验&#xff0c;并将该方法与其他旨在缩短产品开发时间的技术进行了对比。 产品开发流程 图 1&#xff…

三菱定位控制(三,步进电机与定位模块的接线详情)

相信大家对前面的学习已经对前面的内容有所了解&#xff0c;下面就来看看步进电机&#xff0c;步进电机驱动器还有定位模块之间是如何接线的吧&#xff01; 一&#xff0c;将定位模块转换为端子排 首先&#xff0c;我们肯定是无法之间再定位模块上直接进行接线的。所以我们需要…

基于Java中的SSM框架实现家政预约管理系统项目【项目源码+论文说明】

基于Java中的SSM框架实现家政预约管理系统演示 摘要 随着线上预约服务应用的不断普及&#xff0c;为了给用户提供更加便捷的服务&#xff0c;很多行业都实行了线上预约制&#xff0c;比如医疗行业的线上挂号以及交通行业预约购票等&#xff0c;预约服务可以帮助人们节约大量排…

Ubuntu 安装 mysql 与 远程连接配置

1、安装 mysql ubuntu 默认安装 8.0 版本&#xff1a; sudo apt install mysql-server安装过程中 提示 是否继续操作 y 即可 2、使用ubuntu 系统用户 root 直接进入 mysql 切换至 系统用户 su root 输入命令 可直接进入 mysql: mysql3、创建一个允许远程登录的用户 创建 …

使用国内镜像站点安装Qt6 for Mac

使用国内镜像站点安装Qt6 for Mac 从下列网址下载在线安装包 Index of /archive/online_installers (qt.io) 双击前述dmg文件&#xff0c;在终端执行语句 使用一句命令行语句&#xff1a; open qt-unified-macOS-x64-4.6.1-online/qt-unified-macOS-x64-4.6.1-online.app --…

【leetcode】回文链表-25-3

方法&#xff1a;快慢指针递归遍历 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) …

超吸睛!用AI绘画做沙雕图文号,有趣又解压!轻松吸粉变现!

大家好&#xff0c;我是画画的小强 小强可谓是小某书资深用户&#xff0c;最近突然刷到了某篇主打沙雕日常文案的 AI手绘插画图文号&#xff0c;不仅篇篇笔记上千点赞量&#xff0c;重点&#xff01;这类图文号植入的均是报价贼高的软广&#xff0c;我的老天鹅&#xff01;一搜…

基于vue框架的爱购电商平台256tr(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,商家,商品分类,商品信息 开题报告内容 基于Vue框架的爱购电商平台 开题报告 一、研究背景与意义 随着互联网技术的迅猛发展和消费者购物习惯的深刻变革&#xff0c;电子商务已成为推动全球经济增长的重要力量。然而&#xff0c;…

分销商城小程序系统渠道拓展

线上卖货渠道很多&#xff0c;想要不断提高营收和新客获取&#xff0c;除了自己和工具本身努力外&#xff0c;还需要其他人的帮助来提高商城店铺的整体销量。 搭建saas商城系统网站/小程序&#xff0c;后台上货&#xff0c;设置支付、配送、营销、精美模板商城装修等内容&…

网络研讨会 | Unlock your SAP Data:用新一代 SAP 集成方案加速释放企业核心数据价值

伴随着业务的快速发展&#xff0c;企业对 SAP 系统的使用逐渐深化。为了更好释放数据价值&#xff0c;有效驱动商业决策&#xff0c;将 SAP 数据与其他数据系统集成打通&#xff0c;已成为企业数字化发展的必然趋势。 然而&#xff0c;由于 SAP 系统的独特性&#xff0c;企业想…

Lesson 59 Is that all?

Lesson 59 Is that all? 词汇 envelope n. 信封 复数&#xff1a;envelopes 例句&#xff1a;在红色信封里有一封书信。 There is a letter in the red envelope. writing paper n. 信纸【不可数】 构成&#xff1a;write v. 写 writer n. 作家    相关&#xff1a;hand…

SQL SERVER 2008多表关联查询,关联条件用(*=、=*)无法使用,高版本数据库不兼容,报错“*=”附近有语法错误!

专业问题&#xff0c;已经习惯了先问AI 下图是百度AI的回复 下图是讯飞星火的回复 下面是SQL SERVER 2022数据库引擎&#xff0c;查询使用&#xff01; 报错&#xff1a;“*”附近有语法错误。 查询数据库版本语法 SELECT VERSION 得到数据库版本&#xff1a;SQL Server 202…

【CVE-2024-38077】修复Windows 远程桌面授权服务远程代码执行漏洞记录

官方漏洞指南&#xff1a;Security Update Guide - Microsoft Security Response Center 受影响版本&#xff1a; Windows Server 2012 R2 (Server Core installation) Windows Server 2012 R2 Windows Server 2012 (Server Core installation) Windows Server 2012 Windows …

AI时代来临,程序员歇业在家,如何利用AI来赚钱?

我没有团队&#xff0c;就一个人&#xff0c;能不能用AI来赚点小钱&#xff1f; 当然可以&#xff0c;单打独斗并非阻碍&#xff0c;AI技术完全可以助您拓展收入来源。接下来&#xff0c;我将为您详细介绍10种个体利用AI提升收入的有效途径。 首先&#xff0c;您可以通过以下…

PRVF-4037 : CRS is not installed on any of the nodes

描述&#xff1a;公司要求替换centos&#xff0c;重新安装ORACLE LINUX RAC的数据库做备库&#xff0c;到时候切换成主库&#xff0c;安装Linux7GRID 19C 11G Oracle&#xff0c;顺利安装grid 19c&#xff0c;安装11G数据库软件的时候检测报如题错误&#xff1a;**PRVF-4037 …

显卡刷坏BIOS黑屏怎么办_万能救砖恢复方法来了!

电脑显卡刷bios黑屏不开机无显示无信号&#xff0c;是因为显卡vbios刷错文件了&#xff0c;找到正确的显卡BIOS文件刷回去就行了。但是黑屏进不去系统如何刷显卡BIOS呢。给大家推荐个万能刷显卡BIOS工具&#xff0c;名字是《离线刷bios设备》&#xff0c;用免拆夹子直接连接显卡…

49-DRC的设置及检查

1. DRC设置入口 2.如下设置 3.运行DRC