CVPR 2023 首届视觉异常检测(Visual Anomaly and Novelty Detection,VAND)挑战赛 Zero-shot 赛道冠军

news2024/11/27 12:51:49

这篇文章主要介绍一下我们在 CVPR 2023 VAND Workshop 的挑战赛中所采用的模型和方案。在 Zero-shot 赛道中我们获得了冠军(Winner),在 Few-shot 赛道中,我们获得了第四名(Honorable Mentions)。
题目:A Zero-/Few-Shot Anomaly Classification and Segmentation Method for CVPR 2023 VAND Workshop Challenge Tracks 1&2: 1st Place on Zero-shot AD and 4th Place on Few-shot AD
论文:https://arxiv.org/abs/2305.17382
代码:https://github.com/ByChelsea/VAND-APRIL-GAN
研讨会:https://sites.google.com/view/vand-cvpr23/home
比赛:https://sites.google.com/view/vand-cvpr23/challenge?authuser=0

赛题介绍

在工业视觉异常检测领域,当前大多数的方法都需要大量的正常图像作为训练数据,而且需要为每个类别训练特定模型。然而,现实中的工业产品有数百万种,为每个对象收集大量的训练数据,并针对不同类别部署不同模型实行起来不仅周期较长且成本较高。因此,不使用(zero-shot)或使用少量(few-shot)图像构建冷启动模型在应用时显得尤为必要。构建一个可以在没有或只有少量正常图像的情况下,快速适应众多类别的模型是一种理想的解决方案,也是对社区中AD研究的公开挑战。因此AWS AI Labs联合众多高校、研究机构和MVTec数据集作者组织了两个相关方向的挑战赛道:
Track 1:Zero-shot Anomaly Detection (Anomaly Classification + Segmentation)
Track 2:Few-Shot Anomaly Detection (Anomaly Classification + Segmentation)

方案介绍

这里主要对我们在 Zero-shot 赛道的解决方案进行介绍,并简要介绍相应的 Few-shot 扩展。具体地,我们提出了一种基于预训练的 CLIP[1] 模型的 Zero-shot Anomaly Detection 方案,以 ViT[2] 作为 Backbone,但也可以轻松地扩展到其他架构。

异常分类

基于 WinCLIP[3] 异常分类框架,我们提出了一种文本提示集成策略。具体地,该集成策略包含 template-level 和 state-level 两部分:
1) 对于前者,我们从 CLIP Surgery[4] 中选定的85个模板提示中删掉了一些不适合AD任务的模板,如“a photo of the weird [obj.]“,最终筛选35个模板提示。
2) 对于后者,我们采用通用文本来描述正常/异常对象,如“flawless,damaged“等,而没有提供过于详细的描述以保证方法的普适性,如”chip around edge and corner“。最终使用7个正常提示和5个异常提示。
模板和状态提示与样本类别名称结合后,使用 CLIP 模型的文本编码器提取文本特征,并对正常和异常特征分别求平均值。最终,将正常与异常特征各自的平均值与图像特征进行对比,经过 softmax 后得到异常类别概率作为分类得分,见下图中蓝色 Zero-shot Anomaly Score 流程。
模型结构

异常分割

类比图像级别的异常分类方法到异常分割,一个自然而然的想法是将 Backbone 提取到的包含空间信息的特征(例如 ViT 中的 patch tokens)与文本特征进行相似度度量。然而,CLIP 模型是基于分类的方案进行设计的,即除了用于分类的抽象图像特征(例如 ViT 中的 class token)外,没有将其它图像特征映射到统一的图像/文本空间。因此我们提出了一个简单但有效的方案来解决这个问题:使用额外的线性层将这些特征映射到图像/文本联合嵌入空间中,见上图中蓝色 Zero-shot Anomaly Map 流程。具体地,我们还利用了不同层级的特征,即将不同层级的特征分别经由一个线性层进行联合嵌入特征空间变换,再将得到的变换后的特征与文本特征进行对比,得到不同层级的异常图。最后,将不同层级的异常图简单加和求得结果。
在官方的测试数据集上提出的方法在综合 F1-max 指标上达到 0.4589,相较于其他众多参赛队伍具有明显的优势,证明了所提方法的优越性和泛化性。
Zero-shot赛道最终排行

Few-shot 扩展

得益于简单的结构,我们结合基于 memory 的 PatchCore[7] 思路将方法扩展到 Few-shot 赛道,在不进行任何调参的基础上获得了积极竞争的结果,我们会在后续工作中进一步探究该方法在 Few-shot 上的应用潜力与价值。

结语

技术报告及技术海报已被 CVPR 2023 VAND 研讨会收录,将于June 18th 11:50 AM - 12:00 PM进行相关Talk和QA(https://sites.google.com/view/vand-cvpr23/schedule)。

参考文献

[1] Radford, Alec, et al. “Learning transferable visual models from natural language supervision.” International conference on machine learning. PMLR, 2021.
[2] Dosovitskiy, Alexey, et al. “An image is worth 16x16 words: Transformers for image recognition at scale.” arXiv preprint arXiv:2010.11929 (2020).
[3] Jeong, Jongheon, et al. “Winclip: Zero-/few-shot anomaly classification and segmentation.” Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2023.
[4] Li, Yi, et al. “Clip surgery for better explainability with enhancement in open-vocabulary tasks.” arXiv preprint arXiv:2304.05653 (2023).
[5] Bergmann, Paul, et al. “MVTec AD–A comprehensive real-world dataset for unsupervised anomaly detection.” Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2019.
[6] Zou, Yang, et al. “SPot-the-Difference Self-supervised Pre-training for Anomaly Detection and Segmentation.” Computer Vision–ECCV 2022: 17th European Conference, Tel Aviv, Israel, October 23–27, 2022, Proceedings, Part XXX. Cham: Springer Nature Switzerland, 2022.
[7] Roth, Karsten, et al. “Towards total recall in industrial anomaly detection.” Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2022.

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

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

相关文章

怎么安装anaconda?anaconda安装详解!

Anaconda Navigator 是 Anaconda 的图形化管理界面,点击它即可进入 Anaconda 的图像化管理界面。许多小伙伴可能被朋友或者小编安利过Anaconda而跃跃欲试,今天小编就将Anaconda安装详解分享给大家。心动的小伙伴们赶紧安装起来吧! 下载 官方…

1分钟教你配置好你的python环境

欢迎来到我们的系列博客《Python360全景》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系…

不能发现BUG的测试用例不是好的测试用例吗?

一般情况下技术岗面试都需要经历面试和笔试部分,面试过程中主要采用问答的形式,一般没有完全固定的回答,主要是根据自己的工作经验应答面试官的问题,而笔试部分更注重基础知识以及问题的常规解决方案。下面IT技术宅男为大家整理了…

C++案例

目录 一、while循环猜数组 二、 水仙花数 三、for循环敲桌子游戏 四、99乘法表 五、一维数组--元素逆置 六、冒泡排序 七、封装一个函数--利用冒泡排序,实现对整型数组的升序排序 八、结构体嵌套结构体 九、结构体排序 一、while循环猜数组 说明&#x…

经验总结:13 条自动化测试框架设计原则

1.代码规范 测试框架随着业务推进,必然会涉及代码的二次开发,所以代码编写应符合通用规范,代码命名符合业界标准,并且代码层次清晰。特别在大型项目、多人协作型项目中,如果代码没有良好的规范,那么整个框…

使用@Schedule注解实现定时任务,多线程执行定时任务,Cron表达式详解

Schedule注解实现定时任务,多线程执行定时任务,Cron表达式详解 使用Schedule注解实现定时任务Scheduled注解多线程执行定时任务Cron表达式Cron中的通配符 使用Schedule注解实现定时任务 1、首先,在项目启动类上添加 EnableScheduling 注解&am…

Vue CLI 全局事件总线 消息的订阅与发布

3.10. 全局事件总线(GlobalEventBus) 一种可以在任意组件间通信的方式,本质上就是一个对象,它必须满足以下条件 所有的组件对象都必须能看见他这个对象必须能够使用$on $emit $off方法去绑定、触发和解绑事件 使用步骤 定义全…

MySQL数据库基础 12

第十二章 MySQL数据类型 1. MySQL中的数据类型2. 整数类型2.1 类型介绍2.2 可选属性2.2.1 M2.2.2 UNSIGNED2.2.3 ZEROFILL 2.3 适用场景2.4 如何选择? 3. 浮点类型3.1 类型介绍3.2 数据精度说明3.3 精度误差说明 4. 定点数类型4.1 类型介绍 5. 位类型:BI…

CSS--Java EE

在前端的代码中&#xff0c;CSS 相关的代码写在什么位置呢&#xff1f; CSS 可以写在<style>标签中外部引入&#xff1a;输入 link: css写在 div 标签中 目录 一、选择器的种类 1 基础选择器 1.1 类选择器 1.2 id选择器 1.3 标签选择器 1.4 通用选择器 小结 2 …

Spring Security6 全新写法,大变样!

文章目录 1. WebSecurityConfigurerAdapter2. 使用 Lambda3. 自定义 JSON 登录3.1 自定义 JSON 登录3.1.1 自定义登录过滤器3.1.2 自定义登录接口 3.2 原因分析3.3 问题解决 Spring Security 在最近几个版本中配置的写法都有一些变化&#xff0c;很多常见的方法都废弃了&#x…

Java-IO流基础知识

目录 1.File类与路径知识 1.File类 2.Java中的路径知识 3.创建File类的实例 4.File类的方法使用 5.File类使用的注意点 2.IO流知识 1.IO流原理 2.文件的读入 3.read()的重载方法&#xff1a;难点 4.文件的写出 1.写出的说明 2.写出操作的具体步骤 5.文件的复制&am…

测试工程师如何有效的编写bug报告?

为什么要求有效的缺陷报告&#xff1f; 缺陷报告是测试过程中最重要的部分&#xff0c;对产品的质量有较大的影响&#xff0c;是测试人员价值的终极体现。好的缺陷报告可以减少研发部门的二次缺陷率、提高研发修改缺陷的速度、提高测试部门的信用度、增强测试和研发部门的协作…

Resful API是什么

文章目录 摘要1、RESTful API是什么&#xff1f;2、RESTful是什么&#xff1f;参考资料 摘要 RESTful是整个网络应用程序设计风格和开发方式。而RESTful API是其中API的设计风格。 1、RESTful API是什么&#xff1f; API接口在设计命名时&#xff0c;由版本/操作资源名称/操…

【Spring Boot 初识丨六】依赖注入

上一篇讲了 Spring Boot 的beans 本篇来讲一讲 依赖注入 Spring Boot 初识&#xff1a; 【Spring Boot 初识丨一】入门实战 【Spring Boot 初识丨二】maven 【Spring Boot 初识丨三】starter 【Spring Boot 初识丨四】主应用类 【Spring Boot 初识丨五】beans 依赖注入 一、 定…

攻防世界-Crypto-easychallenge

题目描述&#xff1a;将文件下载下来&#xff0c;只有一个pyc文件 1. 思路分析 先向chatgpt问下什么是pyc文件&#xff1a; OK&#xff0c;这里简单总结下&#xff1a; 1. pyc文件是python源码编译后的生成的二进制文件 2. 通过一些库可以逆向出pyc的源代码 那么我们需要做…

数组题目总结 -- 单调栈问题

目录 零. 单调栈一. Next Greater Element(单调栈问题模板)题目简述&#xff1a;思路和代码&#xff1a;I. 思路II. 代码 二. Next Warmer Weather题目简述&#xff1a;思路和代码&#xff1a;I. 思路II. 代码 三. Next Greater Elements&#xff08;循环数组&#xff09;题目简…

UG\NX二次开发 装配下的点坐标

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: UF_CURVE_create_point 创建一个点 UF_CSYS_create_temp_csys 创建临时坐标系 以上两个函数都有一个点坐标输入,而且都是输入的绝对坐标系下的点坐标值。下面验证在装配下两个绝对坐标值具体指 “当…

【三维视觉】空间点集的最小包围盒计算

0 问题描述 假设有一个空间点集&#xff0c;不重合的点数有N个。 N1时&#xff0c;最小包围盒是一个点&#xff1a;中心为其本身&#xff0c;半径无穷小 N2时&#xff0c;最小包围盒是一个圆&#xff1a;中心为连线中点&#xff0c;半径为边长一半 N3时&#xff0c;不共线的三…

【C#】并行编程实战:任务并行性(上)

在 .NET 的初始版本中&#xff0c;我们只能依赖线程&#xff08;线程可以直接创建或者使用 ThreadPool 类创建&#xff09;。ThreadPool 类提供了一个托管抽象层&#xff0c;但是开发人员仍然需要依靠 Thread 类来进行更好的控制。而 Thread 类维护困难&#xff0c;且不可托管&…

优惠券超发问题该怎么测试?

在拼夕夕面试中&#xff0c;面试官问了一连串经典的问题&#xff1a;“优惠券库存是怎么扣减的&#xff1f;开发为了解决超发优惠券问题而设计的方案&#xff0c;你了解过吗&#xff1f;你又是如何测试的呢&#xff1f;” 当时听到这些问题还挺懵的&#xff0c;没遇到过超发问…