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

3D异常检测论文笔记 | Shape-Guided Dual-Memory Learning for 3D Anomaly Detection

文章目录

  • 摘要
  • 一、介绍
  • 三、方法
    • 3.1. 形状引导专家学习
    • 3.2. Shape-Guided推理

摘要

我们提出了一个形状引导的专家学习框架来解决无监督的三维异常检测问题。我们的方法是建立在两个专门的专家模型的有效性和他们的协同从颜色和形状模态定位异常区域。第一个专家利用几何信息通过对局部形状周围的隐式距离场建模来探测三维结构异常。第二个专家考虑与第一个专家相关联的二维RGB特征来识别局部形状上的颜色外观不规则性。我们使用两位专家从无异常的训练样本中构建双记忆库,并进行形状引导推理以查明测试样本中的缺陷。由于每个点的3D表示和互补模式的有效融合方案,我们的方法有效地在MVTec 3DAD数据集上实现了最先进的性能,具有更好的召回率和更低的误报率,这在实际应用中是首选的

一、介绍

无监督异常检测和定位在制造业和医疗保健中有许多应用。以往的方法主要是利用颜色信息来识别输入图像中的缺陷和异常区域。虽然在大多数情况下,颜色信息通常足以用于定位异常,但也有研究表明,当充分利用3D几何信息时,可以有助于实现更好的性能(Horwitz & Hoshen, 2022)。

我们的工作旨在解决最近发布的MVTec 3D- ad数据集上的3D异常检测和定位问题。我们提出形状引导双存储器学习将颜色和几何信息结合起来,提高异常定位精度,降低计算和存储成本。图1说明了我们的方法在从不同模态精确定位缺陷方面的互补优势。
在这里插入图片描述
异常检测的性能通常通过每区域重叠(PRO) (Bergmann等,2021)和相应的连续增加异常阈值的假阳性率来评估。最常见的设置是报告PRO曲线下的面积(AU-PRO)集成到假阳性率为30%(即集成极限为0.3)。然而,在实际应用中,30%的假阳性率可能太大,因此无法精确定位缺陷。为了解决这个问题,我们设计了一种方法,在非常小的集成限制下追求更高的AU-PRO。我们的方法使用神经隐式函数(nif)通过带符号距离场来表示局部形状,就像当前3D重建方法所做的那样(Jiang等人,2020;Takikawa等,2021;Ma等人,2021;2022;Li et al ., 2022)。将点云样本划分为nif表示的局部补丁,使我们能够在方向变化的情况下建模复杂形状的3D物体。本地带符号距离字段还支持细粒度的逐点异常预测。因此,我们的方法在MVTec 3D- ad基准上实现了最先进的AU-PRO,即使在非常小的集成限制下,这对于以前的2D和3D异常检测方法来说是相当具有挑战性的。

我们将这项工作的贡献总结如下:

  1. 提出了一种有效的形状引导方法整合了颜色和几何的互补形式。我们的方法需要更少的内存使用并促进更快的推理。
  2. 我们提出了第一个使用符号距离场的神经隐式函数来表示三维异常检测的局部形状的工作。有利的是,我们可以将复杂结构的三维点云建模到每个点的细粒度级别。
  3. 我们的方法在MVTec 3D-AD数据集上实现了最先进的性能,特别是在小集成限制下,这意味着在实际应用中更好的召回率和更低的误报率。

三、方法

与2D设置不同,用于3D异常检测的训练数据(例如MVTec 3DAD)以两种不同的模式连接呈现,包括像素RGB值和点向3D坐标。为了充分利用两种表示形式的互补效果,我们设计了一种形状引导的外观重建方案,有效地连接了两种信息流,提高了异常预测和定位的准确性。

3.1. 形状引导专家学习

该方法基于两种专业专家模型的有效性及其协同作用,更好地解决了三维异常检测的任务。第一个专家利用3D信息来探测形状几何中可能存在的异常,第二个专家考虑RGB信息来挑出任何外观不规则(在颜色方面)。接下来,我们将描述这两个专家模型是如何发展和关联的。

形状专家。 利用点坐标的可用性,我们考虑设计一个三维形状异常专家检测的重点是学习局部几何表示。我们想局部表示的特征可以双倍。首先,缺陷或异常部件通常发生在局部而不是全局。其次,学习点云的局部表示的公式趋向于更具可扩展性和效率。

如图2所示,我们利用PointNet (Qi et al ., 2017)和Neural Implicit Function (NIF) (Ma et al ., 2022)这两个现有模型,用于点云应用来探索3D形状信息。具体来说,我们首先将一个完整的点云划分为三维小块,并进行局部表征学习。对于每个产生的补丁,我们采样500个点,并应用PointNet来获得其特征向量,表示为f,它编码相应的局部几何形状。现在让NIF模型为φ。为了训练用于异常检测的φ,我们遵循(Ma et al ., 2021)中的技术对底层3D补丁表面附近的一组查询点Q = {Q}进行采样,并将这些查询与PointNet特征f一起传递给NIF模型以预测它们的带符号距离{s}。我们将预测查询点q∈q相对于局部曲面的带符号距离s的过程表示为
在这里插入图片描述
除了输入q之外,预测结果s取决于PointNet的补丁特征向量f。(1)中的每一对{ϕ,f}构成一个有符号距离函数(SDF),可用于测量点云的局部表面几何形状。由于NIF ϕ对所有patch都是通用的,并且与类别无关,在完成形状专家的学习后,我们只需要将所有的patch特征向量{f}存储到SDF内存库中,表示为MS,以隐式编码所有“正常”的局部表示。

外观专家。 构建外观专家的目标是创建一个形状引导的记忆库MA,可以用来重建“正常”的RGB特征。

我们考虑点云与其2D RGB图像的配对关系,如图3所示。学习了形状专家之后,我们可以检查SDF与其相应的RGB特征之间的映射。对于每个SDF,我们追溯其在3D接受场中的500个采样点(即PointNet的输入),然后计算它们的2D坐标以检索相应的RGB特征。为了增强其在颜色外观上的表示能力,在特征映射上将二维对应统一扩展两个像素,以包含更多的RGB特征。(参见图4。)在我们的实现中,每个SDF将对应大约40到60个RGB特征向量。这样,我们可以得到形状引导内存库MA,它包含与MS中sdf相同数量的sdf特定的RGB字典。

在这里插入图片描述
在这里插入图片描述

3.2. Shape-Guided推理

使用双存储库MS和MA,我们准备执行推理以检测测试样本x是否包括异常/缺陷。(参见图5。)步骤如下。

  1. 使用PointNet获取所有补丁级sdf, x的{≈f}。
  2. 使用ResNet获取x的RGB特征图。那些与至少一个SDF相关的像素在2D RGB图像中被认为是前景。
  3. 对于{≈f}中的每个SDF,在MS中找到它的k1 = 10个最近邻,形成各自的字典,并通过稀疏表示得到它的近似值_ f。
  4. 对于x的每个patch,使用逐patch重构的f来计算带符号的距离,s = φ (q;{f),对于所有的3D点,{q},从它的感受野。
  5. 取到x所有patch的带符号距离的绝对值,形成最终的SDF分数图。
  6. 对于MS中用于计算步骤3的稀疏表示的所有相关sdf,在MA中对它们所有关联的RGB字典进行并集,形成一个形状引导的RGB字典,记为D。
  7. 对于步骤2中的每个前景RGB特征向量,从D -中找到其k2 = 5个最近邻,并获得其稀疏表示。由近似得到的l2距离形成最终的RGB分数图。
  8. 执行分数图对齐(将在后面描述),并在像素上取SDF和RGB响应的最大值作为相应的异常分数。

在这里插入图片描述
Score-map对齐。 通过最大池化融合SDF和RGB分数映射需要两者的值在一个可比较的范围内。由于异常样本在训练中不可用于估计适当的统计量,我们通过模拟25个随机选择的训练样本的推理并采用“离开自己”策略来模拟测试结果来克服这一困难。这将在测试步骤的最近邻搜索中排除查询本身的SDF和RGB特征。为了使两个结果分数分布一致,我们考虑映射y²→a × y + b,这样RGB分数分布的平均值±3 ×标准差将映射到它们的SDF对应项。由此产生的缩放和移动参数a和b可以很容易地用于参考,将RGB分数y校正为a x y + b。

最后,我们注意到,到目前为止,我们的公式描述的只是针对单一类别的3D异常检测。

然而,考虑到MVTec 3D-AD的十个对象类别是明显不同的,并且我们实现的分类器确实达到了100%的分类准确率,我们的方法本质上提供了一个统一的方法来处理MVTec 3D-AD上的异常检测。

相关文章:

3D异常检测论文笔记 | Shape-Guided Dual-Memory Learning for 3D Anomaly Detection

文章目录 摘要一、介绍三、方法3.1. 形状引导专家学习3.2. Shape-Guided推理 摘要 我们提出了一个形状引导的专家学习框架来解决无监督的三维异常检测问题。我们的方法是建立在两个专门的专家模型的有效性和他们的协同从颜色和形状模态定位异常区域。第一个专家利用几何信息通…...

如何将枯燥的大数据进行可视化处理?

在数字时代,大数据已经成为商业、科学、政府和日常生活中不可或缺的一部分。然而,大数据本身往往是枯燥的、难以理解的数字和文字,如果没有有效的方式将其可视化,就会错失其中的宝贵信息。以下是一些方法,可以将枯燥的…...

linux bash中 test命令详解

test命令用于检查某个条件是否成立。它可以进行数值、字符和文件三方面的测试。 1、数值测试 -eq 等于-ne 不等于-gt 大于-ge 大于或等于-lt 小于-le 小于或等于 例如,我们可以测试两个变量是否相等: num1100 num2200 if test $num1 -eq $num2 thene…...

获取当前时间并转换为想要的格式

转换为YYYY-MM-DD格式 function getCurrentDate() {var today new Date();var year today.getFullYear();var month today.getMonth() 1; // 月份从0开始&#xff0c;需要加1var day today.getDate();return year - (month < 10 ? (0 month) : month) - (day &…...

如何实现自动化测试?

一、首先我们要清楚自动化测试的分类 以实现方式可分为UI自动化和接口自动化。UI自动化可用selenium等工具实现&#xff0c;接口自动化可用使用RobotFramework和Jmeter等工具实现&#xff0c;Jmeter也可做性能自动化&#xff0c;压力测试。 二、平时自动化测试怎么做 1. UI和…...

c++中的对齐问题

c中的对齐问题 需要对齐的原因 尽管内存是以字节为单位&#xff0c;但是大部分处理器并不是按字节块来存取内存的.它一般会以双字节,四字节,8字节,16字节甚至32字节为单位来存取内存&#xff0c;我们将上述这些存取单位称为内存存取粒度. 现在考虑4字节存取粒度的处理器取in…...

力扣(LeetCode)算法_C++—— 存在重复元素

给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 &#xff0c;返回 true &#xff1b;如果数组中每个元素互不相同&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3,1] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;nums …...

OpenCV实现Photoshop曲线调整

《QT 插件化图像算法研究平台》有仿Photoshop曲线调整图像的功能&#xff0c;包括RGB曲线调整和HSV曲线调整。 Photoshop曲线调整原理&#xff1a;RGB、HSV各通道曲线&#xff0c;可以理解为一个值映射&#xff08;值转换&#xff09;函数。X轴是输入&#xff0c;Y轴是输出。x0…...

【探索Linux】—— 强大的命令行工具 P.8(进程优先级、环境变量)

阅读导航 前言一、进程优先级1. 优先级概念2. Linux查看系统进程3. PRI&#xff08;Priority&#xff09;和NI&#xff08;Nice&#xff09; 二、环境变量1. 概念2. 查看环境变量方法3. 环境变量的组织方式4.通过代码获取环境变量5. 环境变量的特点 总结温馨提示 前言 前面我们…...

蓝牙协议栈BLE

前言 这阵子用到蓝牙比较多&#xff0c;想写一个专栏专门讲解蓝牙协议及其应用&#xff0c;本篇是第一篇文章&#xff0c;讲解低功耗蓝牙和蓝牙协议栈。 参考网上各大神文章&#xff0c;及瑞萨的文章&#xff0c;参考GPT&#xff0c;并且加入了一些本人的理解。 图片部分源自…...

企业架构LNMP学习笔记17

反向代理&#xff1a; 反向代理服务器和真实访问的服务器是在一起的&#xff0c;有关联的。 根据实际业务需求&#xff0c;分发代理页面到不同的解释器。常见于代理后端服务器。 安装apache服务器&#xff1a; yum install -y httpd 修改配置文件&#xff1a; vim /et/http…...

php 获取每月开始结束时间,指定月份的开始结束时间戳

php 获取指定月份的开始结束时间戳。 /** * * 获取指定年月的开始和结束时间戳 * param int $year 年份 * param int $month 月份 * return array(开始时间,结束时间) */ function getMonthBeginAndEnd($year 0, $month 0) {$year $year ? $year : date(Y);$month $month…...

Docker技术入门| Part03:Dockerfile详解(Dockerfile概念、Dockerfile 指令、使用Dockerfile构建镜像)

文章目录 1. Dockerfile概念2. Dockerfile 指令FROM 指定基础镜像RUN执行命令CMD 容器启动命令COPY 复制文件ADD 更高级的复制文件ENV 设置环境变量ARG 构建参数VOLUME 定义匿名卷EXPOSE 暴露端口WORKDIR 指定工作目录USER 指定当前用户LABEL 为镜像添加元数据SHELL 指令 3. 使…...

分享一个有意思的线程相关的程序运行题

翻开之前的代码&#xff0c;发现了一个有意思的代码&#xff0c;猜以下代码的运行结果&#xff1a; package thread;/*** author heyunlin* version 1.0*/ public class ThreadMethodExample {public static void main(String[] args) {Thread thread new Thread(new Runnabl…...

集合的进阶学习

集合体系结构 Collection 单列集合 包含List Set List 包含ArrayList LinkedList Set包含HashSet TreeSet HashSet包含LinkedHashSet List系列集合&#xff1a;添加的元素是有序的、可重复、有索引 Set系列集合&#xff1a;添加的元素是无序的、不重复、无索引 Collectio…...

Java真过饱和了吗?现在学Java迟了?

Java行业内幕揭秘 我是某有名机构的线下课Java老师&#xff0c;负责Java热门框架教学&#xff0c;如Spring、Spring MVC、Spring Boot。但最近被解雇了&#xff0c;让我来吐槽一下。Java现在的学习人数真的太多太多了。 Java的学习饱和度 Java学习的人太多&#xff0c;给你一…...

glibc2.35-通过tls_dtor_list劫持exit执行流程

前言 glibc2.35删除了malloc_hook、free_hook以及realloc_hook&#xff0c;通过劫持这三个hook函数执行system已经不可行了。 传统堆漏洞利用是利用任意地址写改上上述几个hook从而执行system&#xff0c;在移除之后则需要找到同样只需要修改某个地址值并且能够造成程序流劫持…...

linux-OpenSSL升级

1.安装编译所需的安装包 yum install -y gcc make perl zlib-devel 2.从 OpenSSL 官网下载&#xff08;https://www.openssl.org/source/openssl-1.1.1v.tar.gz&#xff09; 注:如果原先版本为1.x.x,升级时还是需要选择1.x.x 3. 编译安装 # 解压tar -xvf openssl-1.1.1v.tar…...

Nginx全家桶配置详解

源码包安装NGINX A&#xff0c;搭建Web Server&#xff0c;任意HTML页面&#xff0c;其8080端口提供Web访问服务&#xff0c;截图成功访问http(s)&#xff1a;//[Server1]:8080并且回显Web页面。保留Server1&#xff0c;但是不允许直接访问Server 1&#xff0c;再部署1套NGINX …...

CMake生成Visual Studio工程

CMake – 生成Visual Studio工程 C/C项目经常使用CMake构建工具。CMake 项目文件&#xff08;例如 CMakeLists.txt&#xff09;可以直接由 Visual Studio 使用。本文要说明的是如何将CMake项目转换到Visual Studio解决方案(.sln)或项目(.vcxproj) 开发环境 为了生成Visual S…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

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

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

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下&#xff0c;音视频内容犹如璀璨繁星&#xff0c;点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频&#xff0c;到在线课堂中知识渊博的专家授课&#xff0c;再到影视平台上扣人心弦的高清大片&#xff0c;音…...