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

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像等领域提供了新的解决方案。

在工业质检、医疗影像等领域,视觉异常检测(Visual Anomaly Detection, AD)是保障质量与安全的关键技术。然而,异常样本稀缺一直是制约其发展的核心难题 —— 现实中,异常现象往往罕见且难以收集,传统方法要么依赖大量正常数据 “脑补” 异常,要么生成的伪异常缺乏真实感,导致检测模型性能受限。

2022-2025年可复现论文合集!戳https://docs.qq.com/doc/DQ25HbWt6WmdOZEta?u=7f01826fa3f140bb8e36e875087997e8&nlc=1近日,瑞士洛桑联邦理工学院(EPFL)与华中科技大学的研究团队联合提出AnomalyAny 框架已被CVPR2025录用,利用开源文本生成图像模型Stable Diffusion(SD)的强大生成能力,仅需单个正常样本文本描述,即可生成逼真、多样且从未见过的异常样本,为数据稀缺场景下的异常检测提供了全新解决方案。

图片

论文链接:

https://arxiv.org/abs/2406.01078v3

代码与 Demo 地址:

https://hansunhayden.github.io/AnomalyAny.github.io/

一、核心挑战:传统方法的 “数据困局”

现有异常生成方法主要面临两大痛点:

1. 真实性不足:

如图1(a)所示,早期方法通过 “裁剪 - 粘贴” 随机图案(如自然纹理)生成异常,虽无需训练,但生成的异常与真实场景差异显著,难以被检测模型有效识别。

2. 依赖大量数据:

如图1(b)所示,基于生成模型(如 GAN、扩散模型)的方法虽能生成更真实的样本,但需要大量正常和异常数据进行训练,这在异常罕见的场景中(如精密零件缺陷)几乎不可行。

图1:不同异常生成范式对比。(a)传统方法;(b)基于少样本训练的方法;(c)所提未知异常生成方法AnomalyAny。

  图1:不同异常生成范式对比。(a)传统方法;(b)基于少样本训练的方法;(c)所提未知异常生成方法AnomalyAny。

AnomalyAny 的突破点在于:无需任何训练数据,直接利用预训练的 Stable Diffusion 模型,通过巧妙的引导机制,让模型 “理解” 正常样本的特征,并根据文本描述生成符合逻辑的异常。

二、AnomalyAny:如何让 AI “创造” 从未见过的异常?

如图2所示,AnomalyAny 框架包含三大核心模块,环环相扣实现精准异常生成:

图2:AnomalyAny框架

  图2:AnomalyAny框架

测试时正常样本引导(Test-time Normal Sample Conditioning)

传统 SD 模型生成的图像可能偏离目标数据集的 “正常分布”(如图3(b))。AnomalyAny 通过在推理阶段引入单个正常样本的潜在特征,从噪声生成过程的中间步骤(而非完全随机起点)开始,确保生成的异常样本与正常样本共享相同的背景、光照等全局特征,避免 “画风突变”。

举个例子:若输入一张正常的 “瓶子” 图片,模型会以该瓶子的形状、材质为基础,在其基础上 “改造” 出破损、裂痕等异常,而非生成一个完全不同的物体。

图3:生成的异常样本和损伤注意力图示例。(a) 正常图片,(b) Stable Diffusion直接生成的结果、(c) 无正常样本作为条件、(d) 无注意力引导优化、(e) 无提示引导优化以及 (f) 所提AnomalyAny生成的结果。

2. 注意力引导异常优化(Attention-Guided Anomaly Optimization)

由于 SD 的训练数据中异常样本较少,模型容易忽略文本描述中的异常关键词(如 “破损”)。AnomalyAny 通过最大化异常关键词的注意力权重,迫使模型聚焦于生成目标异常区域。具体而言,通过分析 SD 的交叉注意力图(Cross-Attention Maps),找到与 “破损”“裂痕” 等关键词对应的图像区域,并通过反向传播优化潜变量,确保异常特征被显著表达。

可视化结果:如图3(d)-(f) 所示,移除注意力引导后,生成的异常区域模糊不清;而启用该机制后,异常特征(如瓶盖的裂痕)清晰可辨。

3. 提示引导异常细化(Prompt-Guided Anomaly Refinement)

为进一步提升生成质量,AnomalyAny 利用GPT-4 自动生成详细异常描述(如将 “破损” 细化为 “带有粗糙不平纹理的破损区域”),并通过 CLIP 模型计算生成图像与文本的语义相似度,强制两者对齐。这一过程不仅增加了异常的多样性(如不同类型的划痕),还能生成符合工业标准的复杂缺陷(如 “锯齿状裂缝”)。

三、实验验证:生成质量与检测性能双提升

在工业异常检测基准数据集MVTec ADVisA上,AnomalyAny 展现出显著优势:

1. 生成质量:真实感与多样性兼具

• Inception Score(IS) 衡量生成图像的真实性,AnomalyAny 在多数类别中得分最高(如 bottle 类别 IS=1.73,远超基线方法),表明其生成的异常样本更接近真实图像。

• Intra-cluster LPIPS 距离(IC-LPIPS) 衡量多样性,AnomalyAny 生成的异常样本差异更大(如 cable 类别 IC-LPIPS=0.41),为检测模型提供了更丰富的训练信号。

图4展示了在MVTec AD以及Web图片中生成的异常效果。

图4:所提AnomalyAny在MVTec AD以及Web图片中的异常生成效果

图4:所提AnomalyAny在MVTec AD以及Web图片中的异常生成效果

2. 下游检测性能:小数据下的卓越表现

如表1所示,在1-shot 检测场景(仅用 1 张正常样本训练)中,使用 AnomalyAny 生成的样本训练的模型,在 MVTec AD 上达到图像级 AUC=94.9%、像素级 AUC=95.4%,超越了 PatchCore、WinCLIP + 等主流方法。即使与需要部分异常数据训练的 AnomalyDiffusion 相比,AnomalyAny 仍实现了 comparable 性能,且无需担心数据泄漏问题。

  表1:1-shot异常检测性能对比

四、未来展望:开启 “零样本” 异常检测新范式

AnomalyAny 的创新之处在于将预训练多模态模型(SD+GPT-4)与领域知识结合,无需任何训练即可生成定制化异常样本。这一特性使其在以下场景具有广阔应用前景:

  • 工业质检:快速生成各类零件的虚拟缺陷,减少人工标注成本;

  • 医疗影像:模拟罕见病变,辅助训练肿瘤检测模型;

  • 自动驾驶:生成极端天气、道路异常等边缘场景,提升模型鲁棒性。

当然,当前方法仍依赖文本提示的准确性,未来若结合单样本异常图像输入,有望进一步提升复杂异常的生成精度。随着大模型技术的发展,类似 AnomalyAny 的 “提示式” 解决方案或将成为解决数据稀缺问题的通用范式。

相关文章:

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器

一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

什么是VR全景技术

VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

MySQL 主从同步异常处理

阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示&#xff…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...

抽象类和接口(全)

一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 ​二、实现思路 总体思路: 用户通过Gradio界面上…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...

go 里面的指针

指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

MyBatis中关于缓存的理解

MyBatis缓存 MyBatis系统当中默认定义两级缓存&#xff1a;一级缓存、二级缓存 默认情况下&#xff0c;只有一级缓存开启&#xff08;sqlSession级别的缓存&#xff09;二级缓存需要手动开启配置&#xff0c;需要局域namespace级别的缓存 一级缓存&#xff08;本地缓存&#…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...