当前位置: 首页 > news >正文

UniAD:实现多类别异常检测的统一模型

来源:投稿 作者:Mr.Eraser
编辑:学姐

论文标题:用于多类异常检测的统一模型

论文链接:https://arxiv.org/abs/2206.03687

论文贡献:

  • 提出UniAD,它以一个统一框架完成了多个类别的异常检测。

  • 提出分层的查询解码器来帮助建立多类分布的模型。

  • 采用邻居屏蔽的注意力模块,以进一步避免从输入特征到重构输出特征的信息泄漏。

  • 提出一种特征抖动策略,即使在有噪声输入的情况下也能敦促模型恢复正确的信息

1.引言

异常检测在制造业缺陷检测、医学图像分析和视频监控中得到了越来越广泛的应用。考虑到高度多样化的异常类型,一个常见的解决方案是对正常样本的分布进行建模,然后通过寻找离群值来识别异常样本。因此,学习正常数据的紧凑边界至关重要,如图a所示。

当涉及到多类情况时,我们希望模型能同时捕捉到所有类别的分布,这样它们就能像图b那样共享同一个边界。但是如果我们专注于某一特定类别,比如说图b中的绿色类别,那么其他类别的所有样本都应该被视为异常,无论它们本身是正常的(即蓝圆圈)还是异常的(即蓝三角形)。从这个角度来看,如何准确地对多类分布进行建模变得至关重要。

综上所述,本文摆脱了传统的为每一类训练一个模型的范式(图c ),并设法用一个统一的框架(图d)完成对各种类的异常检测。

2.相关工作分析

MLP, CNN, Transformer和提出的UniAD在MVTec-AD数据集上的比较:图a表示训练损失(蓝色), 异常检测(绿色)和定位(红色)的测试AUROC。在MLP, CNN和Transformer的训练过程中,正常样本的重建误差不断变小,但在异常情况下的性能在达到峰值后却严重下降。这是由于模型学习了一个 “相同的捷径”,它倾向于直接复制输入作为输出,不管它是正常的还是异常的。图b“捷径”的视觉解释,异常样本可以被很好地恢复,因此变得很难从正常样本中检测出来。

相比之下,UniAD克服了上述问题,并设法将异常样本重建为正常样本。值得注意的是,所有的模型都是为特征重建而学习的,并且采用了一个单独的解码器来渲染来自特征的图像。这个解码器只用于可视化。

3.UniAD 方法概览

UniAD 的框架如下,由一个Neighbor Masked Encoder (NME)和一个Layer-wise Query Decoder (LQD)组成。LQD的每一层都采用了可学习的查询嵌入来帮助建立复杂的训练数据分布模型。Transformer中的全部注意力被邻居屏蔽的注意力所取代,以避免信息从输入到输出的泄漏。特征抖动策略鼓励模型在嘈杂的输入中恢复正确的信息。所有这三项改进都有助于模型避免学习 “相同的捷径“。

3.1Neighbor masked attention

我们怀疑原始Transformer中的full- attention对 “相同的捷径 ”有所贡献。在full- attention中,一个token被允许看到自己,所以它将很容易通过简单的复制来进行重建。

此外,考虑到特征tokens是由CNN骨干提取的,相邻的tokens一定有很多相似之处。

因此,提出在计算注意力图时对相邻token进行屏蔽,即Neighbor Masked Attention (NMA)。请注意,邻居区域是在二维空间定义的,如图4所示。

3.2 Neighbor masked encoder & Layer-wise query decoder

Neighbor masked encoder:

编码器遵循原始Transformer中的标准架构。每层由一个注意力模块和一个前馈网络(FFN)组成。然而,full-attention被提出的NMA取代,以防止信息泄露。

Layer-wise query decoder:

查询嵌入可以帮助防止重建异常,但原始Transformer中只有一个查询嵌入。因此,我们设计了一个分层查询解码器(LQD)来加强查询嵌入的使用,如图3所示。具体来说,在LQD的每一层,可学习的查询嵌入首先与编码器嵌入融合,然后与前一层的输出融合(第一层的自我融合)。特征融合是由NMA实现的。在原始Transformer之后,一个2层的FFN被应用于处理这些融合的tokens,并且利用残余连接来促进训练。LQD的最终输出作为重构的特征。

3.2 Layer-wise query decoder 选择策略

层级查询解码器(LQD)的各种设计选择,其中每层使用两个注意力模块。为了简单起见,省略了残差连接、层规范化和前馈网络。

对分层查询解码器(LQD)的设计选择进行消融研究。每个设计的概念可以在上图中找到。分别报告了异常检测/定位方面的表现。

3.3 Feature jittering

受去噪自动编码器(DAE)的启发,我们向特征tokens添加扰动,引导模型通过去噪任务学习正常样本的知识。具体来说,对于一个特征token,f_{tok}\in\mathbb{R}^C,我们从高斯分布中对干扰D进行采样:

其中,α是控制噪声程度的抖动尺度。同时,采样干扰以固定的抖动概率p添加到f_{tok}中。

3.4 实施细节

特征提取:

我们采用在ImageNet上预训练的固定的EfficientNet-b4作为特征提取器。从阶段1到阶段4的特征被选中。这里的阶段指的是具有相同大小的特征图块的组合。然后,这些特征被调整为相同的大小,并沿通道维度串联起来,形成一个特征图,之后,这个特征图被标记为具有C_{org}通道的H×W特征tokens。

 

特征重建:

首先对这些特征标记进行线性投影,将C_{org}减少到一个较小的通道,即C,然后这些标记被NME和LQD处理。可学习的位置嵌入被添加到注意力模块中,以告知空间信息。之后,另一个线性投影被用来恢复从C到C_{org}的通道。经过重塑,最终得到重建的特征图,

目标函数:

我们的模型是用MSE损失来训练的:

异常定位的推理:

异常定位的结果是一个异常得分图,它为每个像素分配一个异常得分。具体来说,异常得分图s,被计算为重建差异的L2准则,即:

然后用双线性插值将s向上采样到图像大小,得到定位结果。

异常检测的推理:

异常检测的目的是检测图像是否包含异常区域。

通过取平均汇集的s的最大值,将异常得分图s转化为图像的异常得分。

4.实验效果 & 结果

在MVTec-AD上使用AUROC指标的异常检测结果。所有的方法都在统一建模/单独建模的情况下进行评估。在统一建模的情况下,学习到的模型被应用于检测所有类别的异常情况,而不需要进行微调。

在MVTec-AD上使用AUROC指标的异常定位结果。所有的方法都在统一建模/单独建模的情况下进行评估。在统一建模的情况下,学习到的模型被应用于检测所有类别的异常情况,而不需要进行微调。

关注下方《学姐带你玩AI》🚀🚀🚀

回复“500”获取AI必读论文合集

码字不易,欢迎大家点赞评论收藏!

相关文章:

UniAD:实现多类别异常检测的统一模型

来源:投稿 作者:Mr.Eraser 编辑:学姐 论文标题:用于多类异常检测的统一模型 论文链接:https://arxiv.org/abs/2206.03687 论文贡献: 提出UniAD,它以一个统一框架完成了多个类别的异常检测。 …...

Java 面试 | tcp ip http https(2023版)

文章目录 HTTP&HTTPS1、Http和Https的区别?2、什么是对称加密与非对称加密3、客户端不断进行请求链接会怎样?DDos(Distributed Denial of Service)攻击?4、GET 与 POST 的区别?5、什么是 HTTP 协议无状态协议?怎么解决Http协议无状态协议?6、Session、Cookie 与 Appl…...

全志V3S嵌入式驱动开发(音频输出和音频录制)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 之前在芯片公司的时候,基本没有看过音频这一块,只知道有个alsa框架这么个知识点。要驱动音频,需要两部分&#…...

使用RP2040自制的树莓派pico—— [2/100] HelloWorld! 和 点亮LED

使用RP2040自制的树莓派pico—— [2/100] HelloWorld! 和 点亮LED 开发环境HelloWorld!闪烁 LED 灯代码 由于比较简单就放在一起写了 开发环境 软件:Thonny HelloWorld! 要想使串口打印HelloWorld! 只需要一行代码 print("HelloWorld!")保…...

康耐视In-Sight2800相机的使用

In-Sight2800相机注册分类程序 一、登录相机 二、图像导入 IS相机支持拍摄图像和从文件中导入图像 如选择从文件中导入图像,文件夹选择位置在页面左下方,如下图 三、注册分类器 在检查模块注册分类器,注册图像需要一张一张去学习&#x…...

驱动开发:内核封装WFP防火墙入门

WFP框架是微软推出来替代TDIHOOK传输层驱动接口网络通信的方案,其默认被设计为分层结构,该框架分别提供了用户态与内核态相同的AIP函数,在两种模式下均可以开发防火墙产品,以下代码我实现了一个简单的驱动过滤防火墙。 WFP 框架分…...

python+vue校园快递代取系统的设计与实现3i0v9

开发语言:Python 框架:django/flask Python版本:python3.7.7 数据库:mysql 数据库工具:Navicat 开发软件:PyCharm 本系统名为“基于vue快递代取系统”,系统主要适用于毕业设计,不…...

C 语言详细教程

目录 第一章 C语言基础知识 第二章 数据类型、运算符和表达式 第三章 结构化程序设计 第四章 数组 第五章 函数 第六章 指针 第七章 结构体类型和自定义类型 第八章 编译预处理 第九章 文件 说明:本教程中的代码除一二三个之外,都在https://ligh…...

函数重载与缺省参数

目录 一 缺省参数 缺省参数分半缺省和全缺省。 2,半缺省参数 3,全缺省参数 4.缺省参数的注意事项 二 函数重载 2 .函数重载参数类型不同强调 三 函数名修饰规则 一 缺省参数 1.缺省参数特性(备胎) 缺省参数是指我们定义函数时有给缺省值的参数&#xf…...

线程引入的开销

单线程程序既不存在线程调度,也不存在同步开销,而且不需要使用锁来保证数据结构的一致性。在多个线程的调度和协调过程中都需要一定的性能开销:对于为了提升性能而引入的线程来说,并行带来的性能提升必须超过并发导致的开销。 上下…...

学生成绩管理系统

基于springboot vue实现的学生成绩管理系统 主要模块: 1)学生模块:我的成绩、成绩统计、申述管理、修改密码 2)教师模块:任务管理、对学生班级任务安排、班级学生的成绩查看、申述管理 3)管理员模块&…...

什么是关系模型? 关系模型的基本概念

关系模型由IBM公司研究员Edgar Frank Codd于1970年发表的论文中提出,经过多年的发展,已经成为目前最常用、最重要的模型之一。 在关系模型中有一些基本的概念,具体如下。 (1)关系(Relation)。关系一词与数学领域有关,它是集合基…...

shell编程-02-变量作用域

作用域 局部变量:变量只能在函数内部使用 全局变量:变量可以在当前 Shell 进程中使用 环境变量:变量还可以在子进程中使用 局部变量 函数中定义的变量默认是全局变量,在定义时加上local命令,此时该变量就成了局部变…...

C++服务器框架开发6——日志系统LogFormatter/size_t学习

该专栏记录了在学习一个开发项目的过程中遇到的疑惑和问题。 其教学视频见:[C高级教程]从零开始开发服务器框架(sylar) 上一篇:C服务器框架开发5——日志系统LogAppender/IO类“3种stream”/双感叹号 C服务器框架开发6——日志系统logFormatter/size_t学…...

MYSQL实战45讲笔记--深入浅出索引

深入浅出索引 索引的常见模型 索引模型:是哈希表、有序数组和搜索树。 区别: 哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。哈希的思…...

SpringCloudAlibaba:分布式事务之Seata学习

目录 一、分布式事务基础 (一)事务 (二)本地事务 (三)分布式事务 二、Seata概述 1.Seata 的架构包含: 2.其工作原理为: 3.如果需要在 Spring Boot 应用中使用 Seata 进行分布式事务管理,主要步骤为…...

【MySQL数据库 | 第四篇】SQL通用语法及分类

目录 🤔SQL通用语法: 😊语句: 😊注释: 🤔SQL语句分类: 😊1.DDL语句: 😊2.DML语句: 😊3.DQL语言: &…...

Liskov替换原则:用了继承,子类就设计对了吗?

前言 上一篇,我们讲了开放封闭原则,想要让系统符合开放封闭原则,最重要的就是我们要构建起相应的扩展模型,所以,我们要面向接口编程。 而大部分的面向接口编程要依赖于继承实现,继承的重要性不如封装和多…...

腾讯云服务器SA3实例AMD处理器CPU网络带宽性能详解

腾讯云AMD服务器SA3实例CPU采用2.55GHz主频的AMD EPYCTM Milan处理器,睿频3.5GHz,搭载最新一代八通道DDR4,内存计算性能稳定,默认网络优化,最高内网收发能力达1900万pps,最高内网带宽可支持100Gbps。腾讯云…...

接口测试常用测试点

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。 测试的策略: 接口测试也是属于功…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

GitHub 趋势日报 (2025年06月06日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...