CVPR2024 合成异常数据 工业异常检测 RealNet

前言

本文分享一个基于扩散模型的异常检测框架,用于检测工业场景缺陷检测异常检测

  • 强度可控扩散异常合成:基于扩散过程的合成策略,能够生成不同强度的异常样本,模仿真实异常样本的分布。
  • 异常感知特征选择:选择代表性和判别性的预训练特征子集,以提高异常检测性能并控制计算成本。
  • 重建残差选择:自适应选择判别性残差,用于全面识别各级异常区域。

论文地址:RealNet: A Feature Selection Network with Realistic Synthetic Anomaly for Anomaly Detection

代码地址:https://github.com/cnulab/RealNet

强度可控扩散异常合成,简称为SDAS,生成的异常图像,如下图所示。

  • 这些异常图像,都是基于正常图像生成的。
  • 使用的仅仅是正常图像,通过SDAS生成与正常图像相似但带有异常特征的图像。

  • 电子元件的正面视图,这些图像显示了明显的异常(如损坏、变形等)
  • 螺丝的图像,可以看到一些异常样本(如弯曲、断裂等)
  • 织物的图像,其中有一些织物图案显示了异常(如磨损、变形等)
  • 铝箔的图像,有明显的异常(如刮痕、孔洞等)。

强度可控扩散异常合成: 

  • 新颖的合成策略:生成的样本更接近自然分布,并提供控制异常强度的灵活性。
  • 使用DDPM扩散模型:在采样过程中引入扰动项,以生成低概率密度区域的样本。
  • 模拟自然异常模式:如老化、结构变化、异常纹理和颜色变化。

一、模型框架

RealNet的模型框架,如下图所示:

  1. 输入图像数据
  2. 基于扩散模型,实现强度可控的异常数据生成。
  3. 生成的异常数据、原来的图像数据,一起进行训练。
  4. 图像数据,通过预训练模型进行特征提取,生成图像特征。
  5. 通过AFS结构,选择有助于异常检测的特征。
  6. 通过RRS结构,选择包含最多异常信息的重建残差特征。
  7. 选择出来的重建特征,送入判别器,输出异常检测信息。

二、核心内容——强度可控扩散异常合成(SDAS) 

目的:

  • 生成具有不同强度的异常图像。这样可以用来训练和评估异常检测模型,使它们在现实世界中表现得更好。 

核心概念:

  • 异常强度控制:通过一个参数 s来控制生成异常的强度。
  • 扩散模型 (DDPM):通过逐步添加和去除噪声来生成异常图像。

思路流程:

生成异常图像的过程是基于“扩散模型”(Diffusion Model)的技术,它通过逐步添加和去除噪声来生成新的图像。

这里的目标是通过控制噪声的强度,生成具有不同异常强度的图像。

异常图像生成,如下图所示:

  • 在不同异常强度s下,生成的样本异常图像。
  • 常强度设定在0.1和0.2之间,以覆盖更广泛的真实世界异常。

进阶加深理解——扩散原理

下面是详细版本介绍,如果上面懂了也可以忽略的。

如下图所示,使用不同合成方法生成的异常图像示例 :

  • 左侧使用具有不同异常强度的 SDAS 生成的示例。
  • 右侧是使用各种异常合成方法生成的具有局部异常区域的示例。

深入加深理解细节

实验设置
  • 超参数:设定 γ=0.001,在训练阶段停止μθ​(xt​,t) 的梯度。
  • 预训练权重:使用预训练在ImageNet上的权重加速扩散模型的收敛。
  • 训练时长:在单个NVIDIA GeForce RTX 3090上生成10,000张分辨率为256×256的图像需要约6小时。
  • SDAS和DDIM的实现:提供了三种选择用于确定性反向扩散过程的扰动方差:Σ=βt​,  Σ=βˉ​t​,  Σ=Σθ​(xt​,t)。
  • 不透明度:在图像混合过程中,均匀采样不透明度 δ 从0.5到1.0。
  • 硬件配置:在单个NVIDIA GeForce RTX 3090上,平均训练时间约为2小时。

三、核心关键点——异常感知特征选择 (AFS)

AFS 是一种用于从预训练网络中选择最有助于检测异常的特征的方法。

它的目标是减少特征维度,消除预训练偏差,并管理重建成本。

AFS 的作用
  1. 减少特征冗余:选择具有代表性的特征,避免重复信息。
  2. 增强判别能力:提高特征的代表性和判别性,提升异常检测性能。
  3. 控制计算成本:通过选择合适的特征维度,优化计算资源的使用。

思路流程:

AFS 通过以下步骤实现高效的特征选择:

  1. 定义三元组集合:异常图像、正常图像和异常掩膜。
  2. 提取预训练特征:从预训练网络的每一层提取特征。
  3. 计算特征差异:计算异常图像和正常图像之间的特征差异。
  4. 归一化和对齐:将差异归一化并对齐到异常掩膜的分辨率。
  5. 计算 AFS 损失:评估每个特征图的效果。
  6. 选择特征图:选择具有最小 AFS 损失的特征图用于重建。
  7. 多尺度特征选择:在不同层次上执行特征选择,获得多尺度特征。
  8. 通过这些步骤,AFS 有效地选择出最具代表性和判别性的特征,提升了异常检测的性能,同时优化了计算成本。

AFS 的可视化,从上到下,特征图分别来自第一层到第四层。

  • 对于原始图像和合成异常图像,可视化了预训练 WideResNet50不同层中它们对应的特征图之间的归一化差异。
  • 每个特征图都标有其在层中的索引和相应的 AFS 损失。从左到右,特征图的定位性能逐渐下降。
  • 可视化直观地展示了预训练造成的定位偏差,表明并非所有特征图对异常检测和定位的贡献都相同,同时也强调了 AFS 的有效性。

四、核心关键点——重建残差选择 (RRS)

RRS 模块的目的是通过选择包含最多异常信息重建残差来生成异常得分,从而有效地检测异常区域。

重建残差选择 (RRS) 总结

  1. 重建残差选择:通过选择最能代表异常信息的重建残差,提升检测准确性。
  2. 全局最大池化和平均池化:用于找到最重要的特征。
  3. 鉴别器:将特征图映射到图像级别分辨率以生成异常得分。
  4. 损失函数:结合重建损失和分割损失优化模型性能。

 在 MVTec-AD 数据集上,进行消融实验:

  • RealNet在各种重建残差选择模式(Max、Avg 和Max&Avg)

五、模型设计细节

在四个数据集上进行评估模型,包括 MVTec-AD、MPDD、BTAD 和 VisA。

  • MVTec-AD:包含 5,354 张来自 15 类工业异常检测任务的图像,包括 10 个物体类别和 5 个纹理类别。
  • MPDD:包含 1,346 张来自 6 种工业金属产品的图像,具有不同的照明条件、不均匀的背景和每张图像中多个产品。包括产品的摆放方向、拍摄距离和位置的多样性。
  • BTAD:包含 3 种真实世界工业产品的图像。
  • VisA:包含 9,621 张正常图像和 1,200 张来自 12 个类别的异常图像。某些类别展示了复杂的结构,例如 PCB(印刷电路板),其他类别则包含需要检测的多个对象。

评价指标:

  • AUROC:用于评估图像级别的异常检测性能。
  • Pixel AUROC:用于评估像素级别的异常位置检测。
  • PRO:每区域重叠度,用于评估像素级别的异常位置检测。

模型参数:

  • 预训练权重:使用预训练在ImageNet上的权重加速扩散模型的收敛。
  • 训练时长:在单个NVIDIA GeForce RTX 3090上生成10,000张分辨率为256×256的图像需要约6小时。
  • SDAS和DDIM的实现:提供了三种选择用于确定性反向扩散过程的扰动方差:Σ=βt​,  Σ=βˉ​t​,  Σ=Σθ​(xt​,t)。
  • 不透明度:在图像混合过程中,均匀采样不透明度 δ 从0.5到1.0。
  • 硬件配置:在单个NVIDIA GeForce RTX 3090上,平均训练时间约为2小时。

六、模型效果

在MVTec-AD数据集上测试,消融结果如下表所示:

  • 评估了AFS(异常感知特征选择)和RRS(重建残差选择)的影响

异常强度对RealNet的影响,如下表所示:

  • 异常强度s在0.1到0.2之间变化时,模型性能保持最优状态

 SDAS 生成的完整异常图像:

  • 在每个组中,从上到下,异常强度逐渐增加。
  • 示例来自 MVTec-AD、MPDD、BTAD 和 VisA 数据集。

SIA 合成的局部异常图像:(注意和上面的完整异常图片对比)

在看一组对比,完整异常图像:

合成的局部异常图像:

RealNet 的模型效果,从左到右依次为异常图像、真实值和预测异常分数。

示例2:

分享完成~

后续分析更多工业异常检测、缺陷检测的技术方案。

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

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

相关文章

学习Java,stringbuilder用法

有sb.append添加元素,sb.reverse反转内容,sb.tostring转换成字符串,sb.length计算长度。

东莞酷得智能 组装机械狗电子玩具方案

这款机械狗玩具电子方案结合了现代电子技术和人工智能元素,旨在为用户提供一个高科技、互动性强的娱乐体验。通过不断的软件更新和硬件迭代,机械狗的功能将持续扩展。 一、功能特点: 1、自动巡游:机械狗能够自主在房间内巡游&am…

分库分表、读写分离--ShardingJDBC

1. 项目准备 1.1 建立数据库表 建立user_manage数据库,在该库中建立1张表app_user用来做分库前的测试,另外建12张按月份命名的表app_user_2024XX用来做分库。 CREATE DATABASE IF NOT EXISTS user_manage CHARACTER SET utf8 COLLATE utf8_general_ci…

Python中的__str__和__repr__:揭示字符串表示的奥秘

标题:Python中的__str__和__repr__:揭示字符串表示的奥秘 摘要 在Python中,对象的字符串表示对于调试和日志记录至关重要。__str__和__repr__是两个特殊的方法,用于定义对象的字符串表示形式。尽管它们在功能上相似,…

vm-bhyve网卡设定桥接故障解决@FreeBSD

问题 在使用vm-bhyve虚拟机管理软件的时候,使用vm无法绑定网卡igb0 vm switch add public igb0 报错:/usr/local/sbin/vm: ERROR: failed to add member igb0 to the virtual switch public 解决 于是准备用原生ifconfig命令来绑定,结果…

【Go基础】快速入门

Go基础入门 用20%的时间学习常用80%的语法 官方网址(下载安装/官方文档/官方类库) Download Go binaries from https://go.dev/dl/Reference the official Go documentation https://go.dev/doc/See all the the Go packages https://pkg.go.dev/Access…

Linux基础指令及其作用之网络操作

网络操作pingifconfigeth0 接口 ip常用选项和命令 netstat示例输出解释 curl示例输出及解释 wget示例输出解释 网络操作 ping ping 命令用于测试网络连接的连通性和响应时间。它通过向目标主机发送 ICMP 回显请求(echo request)数据包,并等…

wpf 依赖属性的含义理解

依赖属性允许没有自己的字段,可以通过Binding绑定到其它对象的属性或者说数据源上,从而获得值。 缘由 由于控件有很多的属性,有属性就有字段的内存开销,但实际上对于一个控件,我们大多数只会使用其部分常用属性&#…

ConvNeXt(CVPR 2022)论文解读

paper:A ConvNet for the 2020s official implementation:https://github.com/facebookresearch/ConvNeXt third-party implementation:https://github.com/huggingface/pytorch-image-models/blob/main/timm/models/convnext.py 背景 在…

代码随想录-算法训练营day55【动态规划16:两个字符串的删除操作、编辑距离、编辑距离总结篇】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第九章 动态规划part16● 583. 两个字符串的删除操作 ● 72. 编辑距离 ● 编辑距离总结篇 详细布置 583. 两个字符串的删除操作 本题和动态规划:115.不同的子序列 相比,其实就是两个字符串都…

流量回放平台与传统测试工具的对比分析

文章目录 一、流量回放平台的优势与挑战二、传统测试工具的优势与挑战三、实际案例演示四、解决方案五、答疑解惑5.1、传统工具不是也可以做到流量会放平台的无侵入性测试和性能瓶颈分析吗?5.2、开发流量回放平台的成本和使用传统测试工具的成本哪个更大&#xff1f…

基于SSM框架的垃圾分类系统的设计与实现(含源码+sql+开题报告+论文+论文答辩模板)

图1 前台首页截图 首页展示:首页展示法律法规、公示公告、用户交流论坛、分类指南、垃圾站点、以及个人中心; 法律法规:展示我国《城市生活垃圾分类及其评价标准》以及《生活垃圾分类标志》等最新法律法规; 公示公告&#xff1…

另一棵树的子树(oj题)

一、题目链接 https://leetcode.cn/problems/subtree-of-another-tree/submissions/536304222 二、题目思路 1.首先遍历大树,判断大树的根结点的值是否等于小树的根结点的值,如果不相等,就找大树的左孩子或者右孩子,以左孩子为根…

【线性表 - 数组和矩阵】

数组是一种连续存储线性结构,元素类型相同,大小相等,数组是多维的,通过使用整型索引值来访问他们的元素,数组尺寸不能改变。 知识点数组与矩阵相关题目 # 知识点 数组的优点: 存取速度快 数组的缺点: 事先必须知道…

php 实现:给图片加文字水印,图片水印,压缩图片

演示环境: 1、windows10 2、phpstudy 3、php7.4 一、案例演示: 二、素材准备 1、准备一张原始图片 2、准备一张水印图片(透明底图的最好) 3、字体库(windows系统自带的字体库,路径在:C:\Window…

Navicat连接Oracle

目标: 1.Navicat连接Oracle数据库,报错 无监听程序。 一、下载安装Navicat15 https://zhuanlan.zhihu.com/p/675991635 下载安装资源 链接:百度网盘 请输入提取码 提取码:1u1q 二、测试SQL PLUS连接数据库 在全部程序--》Ora…

Python | Leetcode Python题解之第123题买卖股票的最佳时机III

题目: 题解: class Solution:def maxProfit(self, prices: List[int]) -> int:n len(prices)buy1 buy2 -prices[0]sell1 sell2 0for i in range(1, n):buy1 max(buy1, -prices[i])sell1 max(sell1, buy1 prices[i])buy2 max(buy2, sell1 - …

Hadoop+Spark大数据技术 第七次作业

第七次作业 1. 简述Spark SQL使用的数据抽象DataFrame与Dataset的区别。 DataFrame: 基于 Row 对象的二维表格结构,类似于关系型数据库中的表。 行和列都有明确的 Schema(模式),可以进行类型推断。 提供了丰富的操作接口&#xff…

行列视(RCV)数据安全如何保障?

行列视(RCV)的数据安全保障是一项至关重要的任务,涉及多个层面的技术和策略来确保数据的完整性、保密性和可用性。以下是关于RCV数据安全保障的几个方面: 首先,RCV采用了先进的加密技术来保护数据的传输和存储。通过使…

英伟达(NVIDIA)A800性能及应用场景

英伟达(NVIDIA)A800是一款高性能的人工智能(AI)加速卡,设计用于满足大规模深度学习、数据分析以及其他高性能计算需求。以下是其主要性能参数及应用概述: 性能参数: 数据传输速率:…