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

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

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.kler.cn/news/333579.html

相关文章:

  • javascript-obfuscator js混肴 (用户界面版)
  • 【ECMAScript 从入门到进阶教程】第四部分:项目实践(项目结构与管理,单元测试,最佳实践与开发规范,附录)
  • [SQL] SQL语句注意事项
  • Python——异常处理机制
  • AJAX 1——axios体验、认识URL、常用请求方法、HTTP协议、错误处理、form-serialize插件
  • 用Python实现运筹学——Day 12: 线性规划在物流优化中的应用
  • 【Qt】控件概述 (1)—— Widget属性
  • 胤娲科技:AI透视艺术大师——拉斐尔的笔触,500年后终被AI读懂
  • [C++][第三方库][Elasticsearch]详细讲解
  • 闭源与开源嵌入模型比较以及提升语义搜索效果的技术探讨
  • JAVA开源项目 旅游管理系统 计算机毕业设计
  • 「Qt Widget中文示例指南」如何实现一个平板电脑示例?(一)
  • 数据挖掘-padans初步使用
  • MySQL高阶2082-富有客户的数量
  • Oracle SQL语句没有过滤条件,究竟是否会走索引??
  • Shell文本处理(三)
  • 古典舞在线互动:SpringBoot平台设计与功能实现
  • 鸿蒙HarmonyOS NEXT 电商APP开发,打造你的专属购物商城
  • 【算法笔记】滑动窗口算法原理深度剖析
  • Python | Leetcode Python题解之第454题四数相加II