当前位置: 首页 > 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…...

数学建模--K-means聚类的Python实现

目录 1.算法流程简介 2.1.K-mean算法核心代码 2.2.K-mean算法效果展示 3.1.肘部法算法核心代码 3.2.肘部法算法效果展示 1.算法流程简介 #k-means聚类方法 """ k-means聚类算法流程: 1.K-mean均值聚类的方法就是先随机选择k个对象作为初始聚类中心. 2.这…...

防坠安全带上亚马逊美国站要求的合规标准是什么?

防坠安全带 防坠安全带是一种防护装备&#xff0c;适合工人在高空作业时或在可能发生跌落的无防护边缘行走时穿着。防坠安全带设计用于包裹身体躯干&#xff0c;并将坠落力至少分布到大腿上部、骨盆、胸部和肩部。防坠安全带是固定物体与非固定物体之间的连接物&#xff0c;通…...

PDF转Word的方法分享与注意事项。

PDF和Word是两种常用的文档格式&#xff0c;它们各有优点&#xff0c;适用于不同的场景。然而&#xff0c;有时候我们需要将PDF转换为Word&#xff0c;以便更好地进行编辑和排版。本文将介绍几种常用的PDF转Word的方法&#xff0c;并分享一些注意事项。 一、PDF转Word的方法 使…...

gitlab配置webhook,commit message的时候校验提交的信息

在 GitLab 中配置 Webhook 来调用 Java 接口以校验 commit 信息&#xff0c;是很多公司的一些要求&#xff0c;因为提交信息的规范化是必要的 在 GitLab 项目中进入设置页面。 在左侧导航栏中选择 “Webhooks”&#xff08;Web钩子&#xff09;。 在 Webhooks 页面中点击 “…...

借助CIFAR10模型结构理解卷积神经网络及Sequential的使用

CIFAR10模型搭建 CIFAR10模型结构 0. input : 332x32&#xff0c;3通道32x32的图片 --> 特征图(Feature maps) : 3232x32即经过32个35x5的卷积层&#xff0c;输出尺寸没有变化&#xff08;有x个特征图即有x个卷积核。卷积核的通道数与输入的通道数相等&#xff0c;即35x5&am…...

Java # Java基础八股

1、JVM、JRE、JDK之间的关系 个人理解&#xff1a;JVM可以帮助屏蔽底层的操作系统&#xff0c;使程序一次编译到处都可以运行&#xff0c;JVM可以运行class文件。JRE是java文件运行的环境&#xff0c;但不能新建程序&#xff0c;JRE包含JVM。JDK功能最齐全&#xff0c;包含了编…...

【Spring Boot】SpringBoot 2.6.6 集成 SpringDoc 1.6.9 生成swagger接口文档

文章目录 前言一、SpringDoc是什么&#xff1f;二、使用步骤1.引入库2.配置类3.访问测试 总结其他配置立个Flag 前言 之前常用的SpringFox在2020年停止更新了&#xff0c;新项目集成SpringFox出来一堆问题&#xff0c;所以打算使用更活跃的SpringDoc&#xff0c;这里简单介绍一…...

【算法】快速排序 详解

快速排序 详解 快速排序1. 挖坑法2. 左右指针法 &#xff08;Hoare 法&#xff09;3. 前后指针法4. 快排非递归 代码优化 排序&#xff1a; 排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&…...

架构师spring boot 面试题

spring boot 微服务有哪些特点&#xff1f; Spring Boot 微服务具有以下特点&#xff1a; 独立性&#xff1a;每个微服务都是独立的部署单元&#xff0c;有自己的代码库和数据库。这使得微服务可以独立开发、测试、部署和扩展。 分布式&#xff1a;微服务架构将一个大型应用程…...

电商系统架构设计系列(十一):在电商的交易类系统中,如何正确地使用 Redis 这样的缓存系统呢?需要考虑哪些问题?

上篇文章中&#xff0c;我给你留了一个思考题&#xff1a;在电商的交易类系统中&#xff0c;如何正确地使用 Redis 这样的缓存系统呢&#xff1f;需要考虑哪些问题&#xff1f; 这篇文章&#xff0c;我们来聊聊。 引言 我们知道&#xff0c;大部分面向公众用户的互联网系统&a…...