PointMamba: A Simple State Space Model for Point Cloud Analysis——点云论文阅读(10)

server/2024/11/14 6:49:30/

此内容是论文总结,重点看思路!!

文章概述

这篇文章提出了PointMamba,一种基于状态空间模型(SSM)的点云分析方法,通过引入线性复杂度算法来实现高效的全局建模。与传统基于Transformer的点云方法不同,PointMamba显著减少了计算资源需求,使用空间填充曲线进行点云序列化,简化了模型架构,并在多个数据集上展示了优越的性能,为3D视觉任务提供了一个简单且有效的解决方案。

GitHub - LMD0311/PointMamba: [NeurIPS 2024] PointMamba: A Simple State Space Model for Point Cloud Analysis

PointMamba在性能、推理速度、GPU内存使用和计算开销方面相比Transformer模型的优势。PointMamba的线性复杂度使其在处理长序列时显得更加高效,适合在点云分析中替代传统的Transformer模型。

主要方法

1. 状态空间模型(State Space Model,SSM)

状态空间模型是用于序列数据建模的一种方法。传统的Transformer架构在处理点云数据时有一定的性能瓶颈,尤其是因为其注意力机制的二次复杂度会导致高计算成本。SSM提供了一种线性复杂度的替代方案,可以在不使用注意力机制的情况下实现有效的全局建模。

选择性SSM(Selective SSM)

在PointMamba中,选择性SSM(Selective SSM)是关键模块,它通过调整状态参数的选择来实现对输入数据的建模。Selective SSM使用一种特定的方式来选择性地利用前一时刻的状态信息进行建模,从而有效地降低了计算复杂度。这个模块允许模型在处理长序列时仍然保持较低的计算开销和较高的性能表现。

2. 空间填充曲线(Space-Filling Curves)

为了将三维点云数据转换为适合序列处理的格式,PointMamba引入了空间填充曲线的概念。空间填充曲线是一种将高维空间中的点序列化的方法,常用的曲线包括Hilbert曲线和Z-order曲线。在PointMamba中,作者使用了Hilbert曲线及其变体Trans-Hilbert曲线来将点云数据转换为一维序列,保持了相邻点在序列中的邻近关系。

具体步骤:

  • Hilbert曲线和Trans-Hilbert曲线:这两种空间填充曲线用于从不同的方向扫描点云,以生成两种不同的序列化点集。Hilbert曲线是一种有良好局部性的空间填充曲线,使得在一维序列中保留了点云数据的局部邻域信息。而Trans-Hilbert曲线是对Hilbert曲线的一种变体,它从另一种方向扫描数据,从而补充了Hilbert曲线的局部信息。

  • 保持局部邻域信息:通过空间填充曲线序列化点云数据,PointMamba可以在一维序列中保留点云的空间邻域结构,使得后续的特征提取更加准确。

3. 远点采样(Farthest Point Sampling,FPS)和K近邻(K-Nearest Neighbors,KNN)

  • Farthest Point Sampling (FPS):首先使用FPS算法对点云数据进行采样,以选择一组代表性的关键点。FPS的作用是确保采样点分布均匀,以捕获点云的整体结构特征。

  • K-Nearest Neighbors (KNN):对每个关键点使用KNN方法选择其K个邻居点,形成一个局部点集。这些局部点集将被转换为点云标记(tokens),用于后续的特征提取。

4. 序列指示器(Order Indicator)

序列指示器的作用是帮助模型区分由不同空间填充曲线生成的序列。由于Hilbert和Trans-Hilbert曲线产生的序列具有不同的空间扫描顺序,因此需要使用序列指示器来区分这两类序列。

  • 缩放(Scale)和偏移(Shift):在序列指示器中,模型通过缩放和偏移操作为每个序列应用特定的线性变换,从而区分不同扫描策略生成的序列。这一简单操作可以让模型更好地保持空间信息的一致性,并提高模型的表现力。

5. Mamba块(Mamba Block)

Mamba块是PointMamba模型的核心模块之一,它负责对点云序列数据进行特征提取。每个Mamba块包含多个基本操作层:

  • 线性变换(Linear):对输入特征进行线性变换,增强特征表达能力。

  • 选择性SSM:在Mamba块中嵌入选择性SSM,以捕获全局序列信息。选择性SSM允许模型对序列中每个点的状态信息进行动态选择和聚合,从而实现全局建模。

  • 深度卷积(Depth-Wise Convolution, DWConv):对序列数据的特征通道进行卷积操作,以增强模型的空间特征提取能力。

  • 层归一化(Layer Normalization, LN):用于稳定训练过程,提高模型的训练效率。

Mamba块的设计保持简单,不包含复杂的层次结构,通过多个Mamba块的堆叠,模型可以对序列化后的点云数据进行逐层特征提取。

6. 自监督预训练与掩码建模(Mask Modeling)

PointMamba在预训练阶段采用了一种基于掩码建模的自监督学习方法。具体步骤如下:

  • 掩码序列化点标记:对序列化的点标记进行部分掩码处理,以模拟丢失的信息。这种方法可以帮助模型在训练过程中学习到更具鲁棒性的特征。

  • 解码器与重构:掩码数据通过解码器重建,最终利用Chamfer距离作为损失函数来优化模型。通过这种方式,模型在自监督学习中学到了全局信息,提高了后续的特征提取能力。

PointMamba模型的主要工作流程

3d7bf8e3c79db8b5b5a.png" width="1079" />

1.远点采样(Farthest Point Sampling, FPS)

  • 首先,PointMamba通过远点采样方法在输入的点云数据中选取关键点。这些关键点代表了点云的主要空间分布特征。

2.空间填充曲线(Space-Filling Curves)

  • 选取关键点后,使用两种空间填充曲线(Hilbert和Trans-Hilbert)对点云进行序列化。通过这些曲线,模型可以将点云数据转换为具有空间邻域特性的序列表示,使得序列中的点保留了三维空间中的局部性。

3.K近邻(K-Nearest Neighbors, KNN)

  • 利用KNN算法为每个关键点找到其邻域内的其他点,形成局部点集。这样每个关键点都与其邻域信息相结合,构成一个完整的点集表示。

4.Token嵌入层(Token Embedding Layer)

  • 局部点集传递给Token嵌入层,通过嵌入操作生成序列化的点云标记(tokens)。这些标记包含了每个关键点及其邻域的空间信息,作为序列化后的特征输入。

5.序列指示器(Order Indicator)

  • 为了区分由不同空间填充曲线生成的序列,PointMamba引入了“序列指示器”,通过缩放和偏移操作(Scale和Shift)标识Hilbert或Trans-Hilbert序列,确保模型能有效区分不同扫描方式生成的标记。

6.Vanilla Mamba Block

  • 序列化的点云标记接下来传入多个简单的、非层级结构的Mamba块(Vanilla Mamba Block)。每个Mamba块中包括层归一化、选择性SSM、深度卷积和线性变换等模块,帮助模型逐层提取点云的特征。

7.任务头(Task Head)

  • 最后,经过多个Mamba块提取的全局特征被送入任务头(Task Head),用于执行最终的任务输出(例如分类、分割等)。

PointMamba模型在预训练阶段使用的基于序列化的掩码建模(mask modeling)方法

1.点云数据处理

  • 输入的点云数据首先通过Farthest Point Sampling (FPS)进行采样,以选择关键点,这些关键点代表了点云的主要空间结构。

  • 采样后的关键点中心位置被标记为“Point center”。

2.空间填充曲线的选择

  • 预训练过程中,模型会随机选择一种空间填充曲线(Hilbert或Trans-Hilbert)来对关键点进行序列化。这种序列化将三维点云数据转换为一维序列,保持空间邻域关系,便于后续的特征提取。

3.Token嵌入层(Token Embedding Layer)

  • 序列化的关键点传递给Token嵌入层,将每个关键点转换为特征表示(tokens),形成序列化的点云标记。

4.序列指示器(Order Indicator)

  • 使用序列指示器来标识不同的空间填充曲线,确保模型能够区分Hilbert和Trans-Hilbert生成的序列。

5.自编码器预训练(Autoencoder Pre-training)

  • 预训练阶段,模型采用自编码器架构,其中Vanilla Mamba Encoder对序列化的标记进行编码,生成全局特征。

  • 随后,Vanilla Mamba Decoder对特征进行解码,以重建原始的点云数据。

  • 部分点云标记会被掩码,模型通过重构被掩码部分来学习点云的全局和局部特征。

6.损失计算

  • 重构结果与真实点云数据(GT)计算损失(例如Chamfer距离),用以优化模型,使其在预训练中学习到更鲁棒的特征。

http://www.ppmy.cn/server/141454.html

相关文章

c++之deque和priority_queue

Deque 文档&#xff1a;https://legacy.cplusplus.com/reference/deque/deque/?kwdeque 相关接口&#xff1a; push_back():在尾部插入 #include <iostream> #include <deque>int main () {std::deque<int> mydeque;int myint;std::cout << "…

MySQL的知识巩固

目录 三大范式 第一范式: 第二范式: 第三范式: 巴斯-科德范式(BCNF): 反范式&#xff1a; MySQL的工作原理 三大范式 第一范式: 一个字段只表明一个事情 优点: 数据一致性&#xff1a; 在1NF中&#xff0c;由于每个属性都是原子的&#xff0c;因此避免了在一个属性中存…

Python 多进程日志管理:最佳实践与实战指南

Python 多进程日志管理&#xff1a;最佳实践与实战指南 1. 引言 在现代软件开发中&#xff0c;多进程编程已经成为提高应用程序性能和效率的重要手段。然而&#xff0c;随之而来的是日志管理的复杂性增加。多个进程同时运行时&#xff0c;如何确保日志记录的准确性、一致性和…

Simulink对仿真数据进行FFT频谱分析

1 问题引入 在仿真阶段&#xff0c;经常会遇到有些仿真结果的数据需要进行频谱分析&#xff0c;如何快速便捷地操作&#xff0c;这里介绍其中一种简单的方法。主要利用 Simulink 中 Scope 显示的数据进行保存并进行 FFT 频谱分析&#xff0c;按下文操作即可。 2 实战 2.1 将…

单元测试、集成测试、系统测试有什么区别

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 单元测试、集成测试、系统测试有什么区别 1、粒度不同 集成测试bai粒度居中&#xff0c;单元测试粒度最小&#xff0c;系统du测试粒度最大。 2、测试方式不同…

人工智能--自然语言处理简介

上一篇&#xff1a;《人工智能模型训练中的数据之美——探索TFRecord》 序言&#xff1a;自然语言处理&#xff08;NLP&#xff09;是人工智能中的一种技术&#xff0c;专注于理解基于人类语言的内容。它包含了编程技术&#xff0c;用于创建可以理解语言、分类内容&#xff0c…

没有数据库也能用 SQL

手头有些 csv/xls 文件&#xff0c;比如这样的&#xff1a; 这种数据很适合用 SQL 做查询&#xff0c;但可惜 SQL 只能用在数据库&#xff0c;要安装个数据库并把这些文件导入&#xff0c;为这么个目标搞的整个应用系统都臃肿很多&#xff0c;实在是划不来。要是有什么技术能直…

HTTP Cookie深入解析:Web会话追踪

HTTP Cookie深入解析&#xff1a;Web会话追踪 HTTP Cookie 是一种在用户浏览器和网站服务器之间传递的小型数据片段&#xff0c;用于存储关于用户的特定信息。这些信息可以包括会话标识符、偏好设置等&#xff0c;有助于实现个性化体验和状态管理。下面是 HTTP Cookie 的深入解…