深度学习论文: WinCLIP: Zero-/Few-Shot Anomaly Classification and Segmentation

news2025/1/16 7:58:36

深度学习论文: WinCLIP: Zero-/Few-Shot Anomaly Classification and Segmentation
WinCLIP: Zero-/Few-Shot Anomaly Classification and Segmentation
PDF: https://arxiv.org/pdf/2303.14814.pdf
PyTorch代码: https://github.com/shanglianlm0525/CvPytorch
PyTorch代码: https://github.com/shanglianlm0525/PyTorch-Networks

1 概述

WinCLIP是一种基于CLIP(Contrastive Language-Image Pretraining)模型的方法,用于零样本和少样本的异常分类和分割任务。该方法结合了文本编码器和图像编码器,利用CLIP模型的文本-图像关联能力来实现准确的异常识别和定位。

WinCLIP的核心思想是通过将不同状态和模板转换为文本嵌入,然后与图像编码器生成的图像嵌入进行关联,学习到异常和正常样本之间的关系。为了实现这一目标,WinCLIP引入了参考关联的概念。它将参考关联应用于基于视觉的异常评分图,通过文本引导评分的小样本AS/AC聚合而来。参考关联有助于捕捉异常样本的特征,并实现准确的分类和分割。

在实验中,WinCLIP在多个数据集上进行了评估,包括MVTec AD、CIFAR-10、MNIST等。实验结果显示,WinCLIP在零样本和少样本的异常分类和分割任务上表现出了优秀的性能。它超过了其他先进方法,并且在不同的异常类型和样本数量下都展现出了鲁棒性和泛化能力。

在这里插入图片描述

2 WinCLIP and WinCLIP+

通过CLIP文本编码器将各种状态和模板合成并转换为两个文本嵌入,作为类原型。类原型与WinCLIP中零样本AC/AS的CLIP图像编码器的多尺度特征相关。WinCLIP+将小窗口/中窗口补丁上的参考关联(patch/WindowAssociation)应用于基于视觉的异常评分图,这些异常评分图是为具有文本引导评分的小样本AS/AC聚合的。
在这里插入图片描述

2-1 Language-driven zero-shot AC

论文提出一个一个名为CLIP-AC的框架,以改善基于初始CLIP的零样本分类,并在零样本设置下改进异常分类。

为了更准确地定义对象的两个抽象状态,引入了一个组合提示集合(Compositional Prompt Ensemble),用于生成预定义的(a)每个标签的状态词列表和(b)文本模板的所有组合,而不是自由编写定义。状态词包括大多数对象共享的常见状态,例如正常的“flawless”和异常的“damaged”。此外,我们可以根据先前对缺陷的了解,选择性地添加特定于任务的状态词,例如PCB上的“bad soldering”。此外,我们还为异常任务精心策划了一个模板列表,例如“a photo of a [c] for visual inspection”。通过这种方式,我们能够更好地定义对象的状态,并提供更准确可靠的异常分类。

  • CPE(Contextual Prompt Engineering)与CLIP Prompt Ensemble是不同的。CLIP Prompt Ensemble不解释对象标签(例如“cat”),只通过试错选择模板来增强对象分类,其中包括一些不适合异常任务的模板,例如“a cartoon [c]”。因此,CPE中的文本与CLIP的联合嵌入空间中的图像更加对齐,适用于异常任务。

  • 采用CPE(Compositional Prompt Ensemble)的双类设计,与标准的单类方法相比,是一种新颖的定义异常的方法。由于异常检测是一个开放性问题,因此它具有不适定性。以往的方法仅通过正常图像来建模正常性,将任何与正常性偏离的情况视为异常。然而,这种解决方案很难区分真正的异常和可接受的正常性偏差,例如"scratch on circuit"与"tiny yet acceptable scratch"之间的区别。但是,语言可以用具体的词语来明确定义状态。通过使用CPE,双类设计能够更准确地定义异常情况,并提供更可靠的异常检测结果。

论文使用的 Contextual Prompt Engineering 如下:
在这里插入图片描述

2-2 WinCLIP for zero-shot AS

使用预训练的CLIP模型,并提出了WinCLIP,它可以有效地提取和聚集与语言一致的多尺度空间特征,用于零样本异常分割。

给定CPE的语言引导异常评分模型,提出了用于零样本异常分割的基于窗口的CLIP(WinCLIP)用于零样本异常分割方法,以预测像素级异常。WinCLIP提取具有良好语言对齐和x局部细节的密集视觉特征,然后在空间上应用 a s c o r e 0 ascore_{0} ascore0来获得异常分割图。具体地,给定分辨率为h×w的图像x和图像编码器f,WinCLIP获得d维特征图 F W ∈ R h × w × d F^{W}∈R^{h×w×d} FWRh×w×d的映射,如下所示:

1.生成一组滑动窗口{wij}ij,其中每个窗口 w i j ∈ 0 , 1 h × w w_{ij}∈{0,1}^{h×w} wij0,1h×w是一个二进制掩码,对于(i, j)周围的k×k核是局部活动的。

2.收集每个输出嵌入 F i j W F^{W}_{ij} FijW,根据应用每个 w i j w_{ij} wij后x的有效面积计算,定义为: F i j W : = f ( x ⊙ w i j ) F^{W}_{ij}: =f(x⊙w_{ij}) FijW:=f(xwij),其中⊙是元素乘积(见下图)。
在这里插入图片描述
Harmonic aggregation of windows:
对于每个局部窗口,零样本异常得分 M 0 , i j W M^{W}_{0,ij} M0,ijW是窗口特征 F i j W F^{W}_{ij} FijW与合成提示集成的文本嵌入之间的相似性。该分数被分布到本地窗口的每个像素。然后,在每个像素,聚合来自所有重叠窗口的多个分数,以通过谐波平均改进分割,对分数进行更多加权,以实现预测。
在这里插入图片描述
Multi-scale aggregation:
内核大小k对应于计算WinCLIP方程中每个位置的周围上下文的数量。它控制着分割中局部细节和全局信息之间的平衡。为了捕捉尺寸从小到大的缺陷,我们聚合了多尺度特征的预测。具体而言,我们使用了以下尺度的特征:

  • ( a ) 小尺度:在ViT的补丁尺度中为2×2,对应于像素中的32×32。
  • ( b ) 中尺度:在ViT中为3×3,对应于像素中的48×48。
  • ( c ) 图像尺度特征:由于自注意力机制而捕获图像上下文的ViT类token。

为了聚合这些多尺度特征,我们采用了谐波平均的方法。这种方法可以平衡不同尺度特征之间的重要性,从而获得更全面的预测结果。

2-3 WinCLIP+ with few-normal-shots

对于一个全面的异常分类和分割,文本引导的零样本方法是不够的,因为某些缺陷只能通过视觉参考而不仅仅是文本来定义。为了更准确地定义和识别异常,我们提出了WinCLIP的扩展:WinCLIP+,通过合并K个正常参考图像 D : = ( x i , − ) i = 1 K D:={(x_{i},−)}^{K}_{i=1} D:=(xi)i=1K。WinCLIP+结合了文本引导和基于视觉的方法的互补预测,以实现更好的异常分类和分割。

在这里插入图片描述
首先引入了一个关键模块,称为参考关联模块,用于合并给定的参考图像。该模块可以简单地存储和检索基于余弦相似性的记忆特征R。通过将查询图像提取的特征F(例如,patch-level2)与这样的模块结合,我们可以进行异常分割的预测M。预测结果M是一个h×w的矩阵,其中每个元素的值在0到1之间。这种预测结果可以提供关于图像中异常区域的概率估计,值越接近1表示越可能是异常区域。
在这里插入图片描述
在小样本的情况下,我们从三个不同的特征构建了单独的reference memories:(a) 小尺度特征FW的WinCLIP特征,(b) 中等尺度特征的WinCLIP特征,以及© 具有全局上下文的倒数第二个特征FP。即 RWs、RWm和RP。然后,对给定查询进行了多尺度预测并进一步平均得到查询的异常分割
在这里插入图片描述

此外,为了进行异常分类,结合 M W M^{W} MW的最大值和WinCLIP零样本分类得分。这两个分数具有互补的信息,特别是(a)一个来自小样本参考的空间特征,以及(b)另一个来自通过语言检索的CLIP知识:
在这里插入图片描述

3 Experiments

Zero-/few-shot anomaly classification
在这里插入图片描述

Zero-/few-shot anomaly segmentation
在这里插入图片描述

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

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

相关文章

hexo优化bilibili显示

首发博客地址 https://blog.zysicyj.top/ It has been 1086 days since the last update, the content of the article may be outdated. 这篇文章属于转载,原地址为Hexo博客引用B站视频并自动适配 在进行引用B站用iframe方式引入视频时发现,通过默认的方…

Python科研绘图--Task02

目录 图形元素 画布 (fifigure)。 坐标图形 (axes),也称为子图。 轴 (axis) :数据轴对象,即坐标轴线。 刻度 (tick),即刻度对象。 图层顺序 轴比例和刻度 轴比例 刻度位置和刻度格式 坐标系 直角坐标系 极坐标系 地理…

[oneAPI] 基于BERT预训练模型的SQuAD问答任务

[oneAPI] 基于BERT预训练模型的SQuAD问答任务 Intel Optimization for PyTorch and Intel DevCloud for oneAPI基于BERT预训练模型的SQuAD问答任务语料介绍数据下载构建 模型 结果参考资料 比赛:https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517 Int…

多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测

多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测。 模型描…

算法通关村第九关——中序遍历与搜索树

1 中序遍历和搜索树原理 二叉搜索树按照中序遍历正好是一个递增序列。其比较规范的定义是: 若它的左子树不为空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不为空,则右子树所有节点的值均大于它的根节点的值&…

17.2 【Linux】通过 systemctl 管理服务

systemd这个启动服务的机制,是通过一支名为systemctl的指令来处理的。跟以前 systemV 需要 service / chkconfig / setup / init 等指令来协助不同, systemd 就是仅有systemctl 这个指令来处理而已。 17.2.1 通过 systemctl 管理单一服务 (s…

升级还是不升级?iPhone 15和iPhone 14 Plus性能比较

预览iPhone 15 Pro Max与三星Galaxy S23 Ultra之战是有正当理由的。显然,三星的旗舰智能手机为2023年的所有其他旗舰产品定下了基调——由于其超长的电池寿命和一流的摄像头,证明了它是最受欢迎的产品。 毫不奇怪,Galaxy S23 Ultra不仅是最好的照相手机之一,也是花钱能买到…

docker之DockerFile与网络

目录 DockerFile 构建步骤 基础知识 指令 实战:构建自己的centos 第一步:编写dockerfile文件 第二步:构建镜像文件 docker网络 原理 功能 网络模式 host模式 container模式 none模式 bridge模式 DockerFile dockerfile 是用来…

wireshark进行网络监听

一、实验目的: 1)掌握使用CCProxy配置代理服务器; 2)掌握使用wireshark抓取数据包; 3)能够对数据包进行简单的分析。 二、预备知识: 包括监听模式、代理服务器、中间人攻击等知识点&#xf…

【广州华锐视点】VR教学课件编辑工具有哪些用处?

随着科技的不断发展,教育领域也在不断地进行创新。在众多的创新技术中,虚拟现实(VR)技术的应用为教育带来了前所未有的变革。广州华锐视点开发的VR教学课件编辑工具作为一种新型的教育工具,可以为我们的教学提供许多支持,从而提升…

redis基本介绍以及在node中使用

文章目录 引言一、什么是redis1. redis简介2. redis的特点3. redis的应用场景 二、redis在windows下安装1. 下载安装2.验证是否安装成功3. 配置环境变量 三、redis-cli常用命令介绍1. redis-cli2. keys *3. set key value4. get key5. exists key6. del key7. info8. flushdb9.…

硬件知识累计 TVS管选型 防止浪涌

1. 首先了解 浪涌 1.1 浪涌是什么 浪涌(electrical surge),顾名思义就是瞬间出现超出稳定值的峰值,它包括浪涌电压和浪涌电流。 浪涌也叫突波,顾名思义就是超出正常工作电压的瞬间过电压。本质上讲,浪涌是…

数据结构--递归与分治

汉诺塔分析&#xff1a; 以三层进行分析&#xff0c;大于三层分析情况是一样的。 #include <stdio.h>void move(int n,char x,char y,char z) {if(1 n){printf("%c---------->%c\n",x,z);}else{move(n-1,x,z,y);//将第n-1个盘子从x借助z移动到y printf(&q…

HBuilderX学习--运行第一个项目

HBuilderX&#xff0c;简称HX&#xff0c;是轻如编辑器、强如IDE的合体版本&#xff0c;它及轻巧、极速&#xff0c;强大的语法提示&#xff0c;提供比其他工具更优秀的vue支持大幅提升vue开发效率于一身(具体可看官方详细解释)… 一&#xff0c;HBuilderX下载安装 官网地址 …

前端基础(ES6 模块化)

目录 前言 复习 ES6 模块化导出导入 解构赋值 导入js文件 export default 全局注册 局部注册 前言 前面学习了js&#xff0c;引入方式使用的是<script s"XXX.js">&#xff0c;今天来学习引入文件的其他方式&#xff0c;使用ES6 模块化编程&#xff0c;…

浅谈泛在电力物联网发展形态与技术挑战

安科瑞 华楠 摘 要&#xff1a;泛在电力物联网是当前智能电网发展的一个方向。首先&#xff0c;总结了泛在电力物联网的主要作用和价值体现&#xff1b;其次&#xff0c;从智能电网各个环节概述了物联网技术在电力领域的已有研究和应用基础&#xff1b;进而&#xff0c;构思并…

Java接入支付宝支付

本文只接入了支付宝中的APP支付&#xff0c;如果要拓展更多支付方式的的话&#xff0c;请看文末补充 项目支付流程 前端发起创建订单请求后端接受请求创建订单&#xff0c;并将订单参数进行支付宝对应签名并返回前端拿到签名后调起支付宝支付 本文主要写的就是2的过程 前期准…

09 数据库开发-MySQL

文章目录 1 数据库概述2 MySQL概述2.1 MySQL安装2.1.1 解压&添加环境变量2.1.2 初始化MySQL2.1.3 注册MySQL服务2.1.4 启动MySQL服务2.1.5 修改默认账户密码2.1.6 登录MySQL 2.2 卸载MySQL2.3 连接服务器上部署的数据库2.4 数据模型2.5 SQL简介2.5.1 SQL通用语法2.3.2 分类…

【卷积神经网络】经典网络之 LeNet-5, AlexNet 与 VGG-16

随着计算机硬件的升级与性能的提高&#xff0c;运算量已不再是阻碍深度学习发展的难题。卷积神经网络&#xff08;Convolution Neural Network&#xff0c;CNN&#xff09;是深度学习中一项代表性的工作&#xff0c;其雏形是 1998 年 LeCun 提出的 LeNet-5 模型。如今&#xff…

Java后端开发面试题——微服务篇总结

Spring Cloud 5大组件有哪些&#xff1f; 随着SpringCloudAlibba在国内兴起 , 我们项目中使用了一些阿里巴巴的组件 注册中心/配置中心 Nacos 负载均衡 Ribbon 服务调用 Feign 服务保护 sentinel 服务网关 Gateway Ribbon负载均衡策略有哪些 ? RoundRobinRule&…