【2023工业3D异常检测文献】PointCore: 基于局部-全局特征的高效无监督点云异常检测器

embedded/2025/2/16 2:10:00/

PointCore: Efficient Unsupervised Point Cloud
Anomaly Detector Using Local-Global Features

1、Background

当前的点云异常检测器可以分为两类:

(1)基于重建的方法,通过自动编码器重建输入点云数据,并通过比较原始数据和重建数据之间的偏差来识别异常。然而,这些方法对点云的分辨率敏感,导致推理速度慢和精度差。

(2)基于记忆库的方法,记忆库有助于存储代表性特征,隐式构建正常分布并寻找分布外的缺陷。与前者相比,直接使用预训练的特征提取器构建记忆库具有训练速度快且不受点云分辨率影响的优点。此外,现有的点云异常检测器通常采用多个特征记忆库来充分保留局部和全局表示,这导致了计算复杂度高和特征不匹配的问题。

为了解决上述问题,提出了一个基于联合局部-全局特征的无监督点云异常检测框架,称为PointCore。具体来说,总结如下:

(1)PointCore只需要一个记忆库来存储局部-全局表示,并为这些局部-全局特征分配不同的优先级,以减少推理过程中的计算成本和不匹配干扰。

(2)提出了一种基于排名的归一化方法,以消除各种异常分数之间的分布差异,并应用点对平面迭代最近点(point-plane ICP)算法对点云注册结果进行局部优化,以实现稳健的决策。

2、Method

PointCore 算法流程:

  • 全局注册将所有点云数据统一到一个共同的坐标系统中。
    • 选择参考点云:首先选择一个点云作为参考,其他点云将与它进行对比。
    • 计算旋转和平移:使用算法(如迭代最近点算法或特征匹配算法)计算出其他点云相对于参考点云的旋转矩阵和平移向量。
    • 应用变换:将这些变换应用到其他点云上,使它们在空间中的位置和方向与参考点云一致。
  • 局部优化在全局注册的基础上进行,它对点云进行更精细的调整 ,确保点云的局部特征能够精确对齐。
    • 选择局部特征点:在点云中选择一些具有明显特征的点,如角点、边缘点等。
    • 计算局部变换:计算这些特征点之间的距离和方向,确定需要进行的微小旋转和平移,以使它们更好地对齐。
    • 迭代优化:通过迭代过程不断调整这些局部特征点的位置,直到达到预定的精度。
  • 特征提取
    • 使用预训练的PointMAE(点自编码器)特征提取器,从点云中提取PointMAE特征。
  • 构建记忆库
    • 将点云的坐标和提取的PointMAE特征结合起来,形成记忆库。这个记忆库用来存储正常点云的特征,以便后续比较。
  • 推理模块
    • 当有新的点云数据需要检测时,我们同样提取这些点云的坐标和PointMAE特征。
    • 然后,计算新点云中每个点与记忆库中存储的正常点云特征之间的差异。
    • 计算异常分数:通过比较新点云与记忆库中的特征差异,计算每个点的异常分数。这个分数表示该点与正常点云的差异程度。
    • 定位异常区域:根据计算出的异常分数,我们可以确定新点云中哪些区域可能是异常的。

在这里插入图片描述

pseudo-code

# 定义全局和局部注册函数
function register_point_clouds(point_clouds):for each point_cloud in point_clouds:global_registration(point_cloud)local_optimization(point_cloud)return registered_point_clouds# 全局注册
function global_registration(point_cloud):# 使用FPFH特征描述符和RANSAC算法进行全局注册return transformed_point_cloud# 局部优化
function local_optimization(point_cloud):# 使用点-平面ICP算法进行局部优化return optimized_point_cloud# 定义特征提取函数
function extract_features(registered_point_clouds):features = []for point_cloud in registered_point_clouds:coordinates = sample_coordinates(point_cloud)pointMAE_features = pointMAE_extractor(coordinates)features.append((coordinates, pointMAE_features))return features# 坐标采样
function sample_coordinates(point_cloud):# 使用贪婪算法对点云进行下采样return sampled_coordinates# 使用PointMAE提取特征
function pointMAE_extractor(coordinates):# 使用预训练的PointMAE模型提取特征return extracted_features# 定义推理和异常分数计算函数
function compute_anomaly_scores(features, test_point_cloud):memory_bank = construct_memory_bank(features)anomaly_scores = []for point in test_point_cloud:score = calculate_anomaly_score(memory_bank, point)anomaly_scores.append(score)return anomaly_scores# 构建记忆库
function construct_memory_bank(features):# 将坐标和PointMAE特征结合,形成记忆库return memory_bank# 计算异常分数
function calculate_anomaly_score(memory_bank, test_point):# 使用记忆库中的数据计算测试点的异常分数return anomaly_score# 主流程
function main(train_point_clouds, test_point_cloud):registered_train = register_point_clouds(train_point_clouds)features = extract_features(registered_train)memory_bank = construct_memory_bank(features)anomaly_scores = compute_anomaly_scores(features, test_point_cloud)return anomaly_scores

3、Experiments

🐂🐎。。。

在这里插入图片描述

4、Conclusion

提出了 基于单个记忆库的局部-全局特征来存储输入点云的多尺度信息 的无监督点云异常检测器 PointCore


http://www.ppmy.cn/embedded/119057.html

相关文章

centos离线安装nvm

​​​​​​​ 在一个可以访问互联网的机器上,访问NVM的GitHub页面:GitHub - nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions。 下载最新版本的NVM脚本。通常,你可以点击“…

全新一区PID搜索算法+TCN-LSTM+注意力机制!PSA-TCN-LSTM-Attention多变量时间序列预测(Matlab)

全新一区PID搜索算法TCN-LSTM注意力机制!PSA-TCN-LSTM-Attention多变量时间序列预测(Matlab) 目录 全新一区PID搜索算法TCN-LSTM注意力机制!PSA-TCN-LSTM-Attention多变量时间序列预测(Matlab)效果一览基本…

13年408计算机考研-计算机网络

第一题: 解析:OSI体系结构 OSI参考模型,由下至上依次是:物理层-数据链路层-网络层-运输层-会话层-表示层-应用层。 A.对话管理显然属于会话层, B.数据格式转换,是表示层要解决的问题,很显然答案…

大模型微调方法(非常详细),收藏这一篇就够了!

引言 众所周知,大语言模型(LLM)正在飞速发展,各行业都有了自己的大模型。其中,大模型微调技术在此过程中起到了非常关键的作用,它提升了模型的生成效率和适应性,使其能够在多样化的应用场景中发挥更大的价值。 那么&…

Spring注解开发

优点&#xff1a;简化代码 创建新项目一定要配置maven 注解 过程 图 1.创建模块导入坐标 新建模块 选择路径 点击确定生成 导入坐标 <!-- 导入坐标--><dependencies><dependency><groupId>org.springframework</groupId><artifactId>s…

数据结构:树、森林

二叉树与树结构差异 树&#xff08;一般树&#xff09;&#xff1a;树是一种数据结构&#xff0c;其中每个节点可以有任意数量的子节点&#xff08;除了根节点和叶子节点外&#xff09;。因此&#xff0c;一般树的节点在数组中的表示并不是那么直接&#xff0c;特别是当树不是完…

【Java+GDAL】读取gdb新增、删除字段

文章目录 前言一、GDAL和Java版本二、代码实现1.引入gdal环境2.读取gdb图层新增、删除字段3.测试使用 总结 前言 之前写了一篇与gdb相关的文章。 【JAVAGDAL】读取gdb数据图层的字段信息 今天来看看怎么新增和删除字段&#xff0c;思路与之前写过的shp新增、删除字段是相似的&…

Docker网络、数据卷及安全优化

目录 一、Docker网络 1、原生bridge网络 2、host网络 3、none网络 4、docker自定义桥接网络 1、Docker自定义网络 2、不同自定义网络通信 3、joined容器网络 5、Docker容器内外网访问 1、容器访问外网 2、外网访问容器 6、macvlan网络实现跨主机通信 二、Docker数据…