Mamb3d论文学习

前言

Mamba和Transformer是两种较为流行的模型,之前看的论文大多是Transformer相关,使用特征提取后进行Transformer增强特征并进行信息交互,而Mamba则不同于Transformer,它采用的方式是卷积+线性层来进行处理,同时加入了SSM这个状态空间模型,它与之前的循环神经网络RNN类似,读新的点特征时也会考虑过去的所有点特征,然后将此点也加入所有点特征,继续读取新的,它有长时记忆,不同于RNN的是它的每部分序列长度是可变的,之前可能每个点读取的固定大小,但是这里会随着点的增多而将每部分都进行浓缩,只留最核心的部分,同时需要注意的是RNN的速度是较慢的,只能一步步往前,而这里的Mamba则是利用了GPU的硬件特性,使用并行算法,可以和Transformer一样同时处理整个序列

论文

整体流程

当我们拿到点云之后,首先我们对点云进行处理,我们使用FPS最远点采样,均匀挑出N个点,就组成了Px,他们代表了点云的表面,三维坐标是无法直接进行深度学习的,所以我们对他进行处理,经过MLP或线性层处理后就得到了高维空间特征Fx;对于Ph,我们对原点云进行FPS后得到M个点,这个M要比N小很多,然后我们使用KNN算法,将原点云拆分为M个区,接下来我们对每个区进行计算,对区内的坐标加起来求平均值以此得到Ph,Fh也是经过线性层就可以得到了。

Token采样的点多,代表局部和细节,State分支点少,代表全局。

得到这两个之后,我们将Fh和Fx放入SSM框架,这里分别对两者进行线性层和轻量卷积操作,然后放入结构SSM中,SSM是将Fh和Fx进行信息交互,类似交叉注意力,然后加上最先没经过任何处理的Fh和Fx,类似ResNet网络组成最后的Fh'和Fx',需要注意的是,Fx在中间多一步操作是经过了门函数,这个是实现选择性机制的核心,当它认为点没用时,就会输出0,否则就会输出正常值,正常放行。

然后循环此SSM块,就得到了最终的输出

整体流程图如下

image-20260326204514185

前期处理

Px的获取方式是由FPS对原点云进行处理后,经过KNN找到邻点,然后这些点就组成了我们的Px。

Fx则是对Px通过轻量Pointnet处理后就可以得到。

Ph的获取方式我们在前文已经说过,在这里说一下其具体的计算公式,我们这里经过FPS和KNN处理后,得到的分组称为Gm,然后呢,我们取平均计算质心即可

image-20260326213910893

Fh则是经过激活函数对得到的Ph处理,直接得到

image-20260326214031920

Structural SSM Block

在考虑一个点是否要对另一个点造成影响时,我们不仅需要考虑其本身的特征,还需要考虑点与点之间的距离,所以这里也就需要我们进行距离的计算

image-20260326215228252

这里的m是指上述State的第m个大区,我们通过计算点与它这个区的质心距离来得到相对距离,然后考虑这个和特征,共同组成选择门参数

image-20260326215324907

接下来则是进行这个双向SSM模块,双向SSM中主要是对两者信息进行交互,三维里是不分顺序的,所以单向的话很难考虑全面,所以这里是使用了双向扫描机制,SSMf代表正向扫描,SSMb反向,然后直接相加经过激活函数处理就得到了最终的Fx'和Fh'

image-20260326215401108

轻量卷积

对于点Fh和Fx,他们都经过了卷积处理,这个卷积,在Fh中,是为了聚集各个分区的信息,将各个部分代表的全局信息进行交互,Fx则是对各个细节部分进行交互。

具体的卷积操作是,我们对每个空间状态Ph,首先通过KNN找到k个最近邻,接下来进行计算得到相对距离△p,接下来通过激活函数得到注意力权重,并应用Softmax函数

image-20260327175454323

每个输出特征Fh通过加权聚合邻点的特征得到

image-20260327175546029

序列长度自适应策略

image-20260327180210645

我们在图中可以发现这一个情况,就是这里的A和B是有状态更新的,那么这里的状态是如何更新的呢,这就不得不介绍本文的序列长度自适应策略。

在此之前,先说说为什么需要这个东西:

假设一辆椅子的点云有 N = 1024个点,一个大房间的点云有N = 100000个,如果 Mamba 保持固定的去扫描那个大房间,等它扫到第 10 万个点的时候,前面第 1 个点(比如房间的门)的记忆早就被这 10 万次高频更新给彻底冲刷得干干净净了。这就是论文里说的 “insufficient long-sequence memory (下游任务中长序列记忆不足)”

所以为了治好这个记忆不足的情况,我们引入了长度自适应,它是如何实现的呢,通过如下公式

image-20260327180740308

这个公式的本质是实现了全局归一化,作者给定了一个τ,可以把它理解为 Mamba 在扫描这整个物体时,被允许消耗的“总注意力时长”“总更新额度”

有了这个公式的存在,就既可以处理短序列,也可以处理长序列了,当是短的时候就每个部分更新较多,可以理解为走的步幅较大,当为长序列的时候就走的步幅小一些。

posted @ 2026-03-30 11:04  quan9i  阅读(39)  评论(0)    收藏  举报