【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

python 复制代码
# 定义全局和局部注册函数
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

相关推荐
Dev7z几秒前
基于深度学习的肺部听诊音疾病智能诊断方法研究
人工智能·深度学习
SHeqSpMeS17 分钟前
电动汽车时空双层调度 研究了发电机、电动汽车和风力发电的协同优化调度问题。 针对风电存在时电动...
视觉检测
Sagittarius_A*1 小时前
特征检测:SIFT 与 SURF(尺度不变 / 加速稳健特征)【计算机视觉】
图像处理·人工智能·python·opencv·计算机视觉·surf·sift
像风一样的男人@1 小时前
python --读取psd文件
开发语言·python·深度学习
大江东去浪淘尽千古风流人物2 小时前
【SLAM新范式】几何主导=》几何+学习+语义+高效表示的融合
深度学习·算法·slam
yuanyuan2o22 小时前
【深度学习】全连接、卷积神经网络
人工智能·深度学习·cnn
汗流浃背了吧,老弟!2 小时前
BPE 词表构建与编解码(英雄联盟-托儿索语料)
人工智能·深度学习
小瑞瑞acd3 小时前
【小瑞瑞精讲】卷积神经网络(CNN):从入门到精通,计算机如何“看”懂世界?
人工智能·python·深度学习·神经网络·机器学习
民乐团扒谱机4 小时前
【微实验】机器学习之集成学习 GBDT和XGBoost 附 matlab仿真代码 复制即可运行
人工智能·机器学习·matlab·集成学习·xgboost·gbdt·梯度提升树
芷栀夏4 小时前
CANN ops-math:揭秘异构计算架构下数学算子的低延迟高吞吐优化逻辑
人工智能·深度学习·神经网络·cann