深度学习论文: Segment Any Anomaly without Training via Hybrid Prompt Regularization
深度学习论文: Segment Any Anomaly without Training via Hybrid Prompt Regularization
Segment Any Anomaly without Training via Hybrid Prompt Regularization
PDF: https://arxiv.org/pdf/2305.10724.pdf
PyTorch代码: https://github.com/shanglianlm0525/CvPytorch
PyTorch代码: https://github.com/shanglianlm0525/PyTorch-Networks
1 概述
动机: 提出了一种新的框架,即Segment Any Anomaly + (SAA+),用于零样本异常分割,并通过混合提示正则化方法改善现代基础模型的适应性。现有的异常分割模型通常依赖于特定领域的微调,限制了它们在无数异常模式之间的泛化能力。
方法: 将不同的基础模型进行协同组装,以利用多模态先验知识来进行异常定位。为了适应非参数基础模型在异常分割中的应用,进一步引入了从领域专家知识和目标图像上下文中派生的混合提示作为正则化手段。
优势: 所提出的SAA+模型在多个异常分割基准测试数据集(包括VisA、MVTec-AD、MTD和KSDD2)中在零样本设置下实现了最先进的性能,克服了现有模型在异常模式泛化方面的局限性,并且能够检测与纹理相关的异常而无需任何标注。

2 SAA: Vanilla Foundation Model Assembly for ZSAS
针对用于异常分割的某个查询图像,我们首先使用语言提示作为初始输入,在基于语言驱动的视觉定位基础模型(如GroundingDINO)的支持下,通过异常区域生成器大致检索出粗糙的异常区域提议。然后,通过使用基于提示驱动的分割基础模型(如SAM)的异常区域细化器,将这些提议进一步细化为像素级别的高质量分割掩码。这种方法结合了语言和视觉信息,能够在异常分割任务中提供更准确的结果。
2-1 Anomaly Region Generator
最近,随着语言-视觉模型的快速发展,一些基础模型逐渐具备了通过语言提示在图像中检测对象的能力。例如,给定一个描述所需检测区域的语言提示,基础模型可以为查询图像生成相应的区域。为了实现这一目标,我们采用了一种基于文本引导的开放集目标检测架构,即GroundingDINO,该架构已经在大规模的语言-视觉数据集上进行了预训练。具体而言,该网络通过文本编码器和视觉编码器提取语言提示和查询图像的特征,并利用跨模态解码器以边界框的形式生成粗略的对象区域。通过使用边界框级别的区域集合和对应的置信度得分集合,我们可以定义异常区域生成器(Generator)模块:

2-2 Anomaly Region Refiner
为了生成像素级别的异常分割结果,我们提出了异常区域细化器,将边界框级别的异常区域候选者细化为异常分割掩码集合。为了实现这一目标,我们使用了一种用于开放世界视觉分割的复杂基础模型,即SAM。该模型主要由基于ViT的主干网络和一个受提示条件控制的分割解码器组成。具体而言,该模型在一个包含十亿个细粒度掩码的大规模图像分割数据集上进行了训练,从而在开放集分割设置下具备了高质量的掩码生成能力。受提示条件控制的分割解码器接受各种类型的提示作为输入。我们将边界框候选集视为提示,并生成像素级别的分割掩码。异常区域细化器模块可以被定义为

到目前为止,我们得到了一组以高质量分割掩码的形式表示的区域R,以及对应的置信度得分S。综上所述,我们将框架(SAA)总结如下

其中 T n T_{n} Tn 是一个类别无关的语言提示,例如 SAA中使用的“anomaly”。
3 SAA+: Foundation Model Adaption via Hybrid Prompt Regularization
为了解决SAA中的语言歧义问题并提高其在零样本异常检测上的能力,我们提出了升级版的SAA+。SAA+不仅利用了预训练模型所获得的知识,还结合了领域专家的知识和目标图像的上下文信息,以生成更准确的异常区域掩码。通过引入混合提示的方法,SAA+能够更好地处理语言的多义性,从而提高了模型的性能。

3-1 Prompt Generated from Domain Expert Knowledge
SAA+利用了专家知识生成更准确的异常区域掩码,包括异常语言提示(Anomaly Language Expression)和异常属性提示(Anomaly Object Property)。对于异常语言提示(Anomaly Language Expression),SAA+通过使用类别无关(Class-agnostic prompts )和类别特定的提示(Class-specific prompts)来进一步细化"异常"这一提示。而对于异常属性提示(Anomaly Object Property),SAA+考虑了异常的位置(Anomaly Location)和面积信息(Anomaly Area)。通过结合这两种多模态提示,SAA+在异常分割任务中能够获得更精确的结果。这种综合利用领域专家知识和多模态提示解决语言歧义问题的方法,使得SAA+在异常区域掩码生成方面具有更高的准确性和鲁棒性。
3-2 Prompts Derived from Target Image Context
利用从目标图像上下文中衍生的多模态提示来提高异常区域检测准确性的方法。其中,异常显著性提示(Anomaly Saliency Prompt)通过使用显著性图来校准基础模型的置信度分数,从而提高异常区域的检测效果。而异常置信度提示(Anomaly Confidence Prompt)则通过选择具有最高置信度的候选区域来确定最终的异常区域检测结果。通过综合利用这两种多模态提示,可以提高异常区域检测的准确性和可靠性。这种方法能够更好地利用目标图像的上下文信息,从而提高异常区域检测的性能。
4 Experiments

相关文章:
深度学习论文: Segment Any Anomaly without Training via Hybrid Prompt Regularization
深度学习论文: Segment Any Anomaly without Training via Hybrid Prompt Regularization Segment Any Anomaly without Training via Hybrid Prompt Regularization PDF: https://arxiv.org/pdf/2305.10724.pdf PyTorch代码: https://github.com/shanglianlm0525/CvPytorch Py…...
【算法训练-字符串】一 最长无重复子串
废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是最长无重复子串或最长无重复子数组,这类题目出现频率还是很高的。 最长无重复子串【MID】 先来看字符串数据结构的题目 题干 解题思…...
【数据结构】手撕顺序表
一,概念及结构 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储; 在数组上完成数据的增删查改。 1, 静态顺序表:使用定长数组存储元素。 2.,动态顺序表࿱…...
景联文科技数据标注:人体关键点标注用途及各点的位置定义
人体关键点标注是一种计算机视觉任务,指通过人工的方式,在指定位置标注上关键点,例如人脸特征点、人体骨骼连接点等,常用来训练面部识别模型以及统计模型。这些关键点可以表示图像的各个方面,例如角、边或特定特征。在…...
typescript基础之never
TypeScript 的 never 类型是一种特殊的类型,它表示的是那些永远不存在的值的类型。例如,一个抛出异常或无限循环的函数的返回值类型就是 never,因为它们永远不会返回任何值。never 类型是所有类型的子类型,也就是说,任…...
电子电路学习笔记之NCP304LSQ37T1G ——超低电流电压检测器
超低电流电压检测器是一种专门用于检测极小电流值的设备。它们常用于电子元件或电路中,用于监测电流的存在和程度。这些检测器通常具有高灵敏度和高精度,能够测量微安级别或更小的电流。 超低电流电压检测器的应用领域广泛,例如电池管理系统…...
【计算机组成原理】一文快速入门,很适合JAVA后端看
作者简介: CSDN内容合伙人、CSDN新星计划导师、JAVA领域优质创作者、阿里云专家博主,计算机科班出身、多年IT从业经验、精通计算机核心理论、Java SE、Java EE、数据库、中间件、分布式技术,参加过国产中间件的核心研发,对后端有…...
10万字智慧政务大数据平台项目建设方案222页[Word]
导读:原文《10万字智慧政务大数据平台项目建设方案222页[Word]》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 1.1 项目建设目标 推进市一级政府搭建数字政府建设的规划要求,结合市一级政府“互联网+政务服务”建设…...
Python-主线程控制子线程-4
需求:在Python-主线程控制子线程-3的基础上,新增使用UDP接收指令功能,代替从键盘输入指令 # 修改后的程序,主线程可以获取子线程的结果 import threading import time import queue import tracebackfrom loguru import logger i…...
设计模式二十二:策略模式(Strategy Pattern)
定义一系列算法,将每个算法封装成独立的对象,并使这些对象可互相替换。这使得在运行时可以动态地选择算法,而不必改变使用算法的客户端代码。策略模式的主要目标是将算法的定义与使用分离,使得客户端可以根据需要灵活地选择和切换…...
【c语言】结构体内存对齐,位段,枚举,联合
之前学完结构体,有没有对结构体的大小会很疑惑呢??其实结构体在内存中存储时会存在内存对齐,捎带讲讲位段,枚举,和联合,跟着小张一起学习吧 结构体内存对齐 结构体的对齐规则: 第一个成员在与结…...
干货丨软件测试行业迎来新时代,AI将成为主流技术?
随着科技日新月异的发展,人工智能正逐渐渗透到我们生活的各方各面,从智能语音助手到自动驾驶汽车、从智能家居到人脸识别技术,AI正以其卓越的智能和学习能力引领着新时代的发展方向。 在这个快速演进的时代中,软件测试领域也受到了…...
MacOS goland go1.21 debug问题
安装dlv brew install dlv 安装之后在终端会显示所在目录 类似/usr/local/Cellar/delve/1.21.0/bin 配置goland 在文件系统中找到goland 右击选择show package contents -> Contents -> plugins -> go 尝试替换 其中对应系统 的 dlv 结果还是不行 然后打开应用gol…...
python 笔记(1)——基础和常用部分
目录 1、print 输出不换行 2、格式化输出字符串 3、浮点数的处理 4、进制转换和ASCII与字符间的转换 5、随机数 6、字符串截取和内置方法 6-1)字符串截取 6-2)字符串内置方法 7、元组、列表,及其遍历方式 7-1)列表常用内…...
kafka架构和原理详解
Apache Kafka 是一个分布式流数据平台,用于高吞吐量、持久性、可扩展的发布和订阅消息。它具有高度的可靠性,被广泛用于构建实时数据流处理、日志收集和数据管道等应用。 基本架构 1. 主题(Topic): 主题是消息的逻辑分类生产者将消息发布到特定的主题中,而消费者可以订阅…...
wsl Ubuntu中非root的普通用户怎么直接执行docker命令
docker需要root权限,如果希望非root用户直接使用docker命令,而不是使用sudo,可以选择将该用户加入到docker用户组。 sudo groupadd docker:添加到groupadd用户组(已经有docker用户组,所以可以不用再新增do…...
Web开发模式、API接口、restful规范、序列化和反序列化、drf安装和快速使用、路由转换器(复习)
一 Web开发模式 1. 前后端混合开发模式 前后端混合开发模式是一种开发方式,将前端和后端的开发工作结合在一起,以加快项目的开发速度和 提高协作效率。这种模式通常用于快速原型开发、小型项目或敏捷开发中。在前后端混合开发模式中,前端和…...
<AMBA总线篇> AXI总线协议介绍
目录 01 AXI协议简介 AXI协议特性 AXI协议传输特性 02 AXI协议架构 AXI协议架构 write transaction(写传输) read tramsaction(读传输) Interface and interconnect 典型的AXI系统拓扑 03 文章总结 大家好,这里是程序员杰克。一名平平无奇的嵌入式软件工程…...
一个简单的Python网络爬虫教程
网络爬虫是一种自动获取网页内容的程序,它可以从互联网上的网站中提取数据并进行分析。本教程将带您逐步了解如何使用 Python 构建一个简单的网络爬虫。 注意:在进行网络爬虫时,请遵守网站的使用条款和法律法规,避免对目标网站造…...
YARN资源管理框架论述
一、简介 为了实现一个Hadoop集群的集群共享、可伸缩性和可靠性,并消除早期MapReduce框架中的JobTracker性能瓶颈,开源社区引入了统一的资源管理框架YARN。 YARN是将JobTracker的两个主要功能(资源管理和作业调度/监控)分离&…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
