【论文笔记】LION: Linear Group RNN for 3D Object Detection in Point Clouds
原文链接:https://arxiv.org/abs/2407.18232
简介:Transformer算法在三维点云感知任务中的计算复杂度呈二次方增长,并且难以建模长距离空间关系。相比之下,基于线性递归神经网络(Linear RNN)由于计算复杂度较低,在理论上更适合于进行长距离空间关系建模。本研究提出了一种基于窗口划分机制的分组线性序列神经网络(即对分组特征进行递归处理;简称LION),并将其整合至三维目标检测任务中。该方法可以在更大分组规模下实现更为丰富的特征交互能力,并针对现有模型架构提出了改进方案:针对三维体素稀疏分布问题,在传统序列模型架构基础上引入了一种基于体素生成策略的新方法论框架——通过自回归机制密集化前景特征并提升稀疏体素信息提取能力。实验表明,在包括Mamba、RWKV、RetNet等不同模型架构中均表现出色,并且LION-Mamba variant能够实现多场景下的最优性能。
相较于该算法仅支持数量有限的DSVT(Distributed Self-Vertex Transformation),LION能够在包含数千个体素特征的大规模数据集内实现高效的特征交互。
此外,在DSVT参数设置为K=16和\gamma=0.1的基础上进行优化。
其中K值设定为16表示每个体素最多可参与最多16个邻居体素的变换矩阵构建;γ值设定为0.1用于调节变换矩阵的空间衰减程度。

LION

1. 概述

LION流程图如图所示。该方法由3D主干、BEV主干及检测头构成。其中,在3D主干部分,基于线性组 recurrent neural network(RNN),整合了N个负责处理长距离特征交互的LION模块,在此基础上提升了稀疏点云特征表达能力,并通过N个体素生成操作进一步优化了空间信息表示;同时,在高分辨率的空间信息处理环节中,则采用了N个负责对高分辨率的空间信息进行压缩融合的操作模块
3D稀疏窗口分割 :将输入点云进行体素化处理后得到L 个非空的空间单元,并按空间坐标进行排序。随后将其分组成每组大小为 K 的空间块。由于基于线性组递归神经网络的方法具有较低的时间复杂度,在实际应用中这使得该算法在处理大规模数据时更具优势。
2. LION块
LION模块主要包含以下几大功能:通过设计在长距离范围内的特征交互机制来实现各向异性扩散过程;通过三维空间信息捕获机制来生成具有较强表达能力的空间特征描述器;在实现下采样过程的同时保持高精度重建能力;同时通过体素级别的融合与扩张操作来完成多层次的空间细节提取;此外,在多尺度特征提取方面具有清晰的层次结构安排以保证整体模型性能稳定可靠

LION层 :由两个线性组RNN构成,在X轴方向上采用分段划分,在Y轴方向上采用分段划分。通过不同方向上的分段处理可使特征间产生更加充分地交互作用。
3D空间特征描述器:在体素排序过程中会不可避免地导致空间信息的丢失(如图所示),一些现有方法通过改变不同的体素排列顺序来尽量减少这种空间信息的损失。本文采用基于3D的空间特征描述器方案(包括3D子流形卷积、层归一化和GELU激活函数),为LION层提供丰富的三维局部位置感知能力,并将其放置于体素融合之前以进一步减小体素融合过程中的潜在空间信息丢失问题。

体素融合与扩展现状:为了从多尺度中提取特征,LION方法采用了层次结构实现这一目标。本文通过体内元素融合与扩展现状来实现下采样与上采样的过程。具体而言,在体内元素融合的过程中,系统将计算出相应的索引映射;而扩展现状则通过逆索引来完成上采样的操作。
3. 体素生成
针对高度稀疏的点云特征提取问题,并结合体素融合过程中存在的信息损失,本文通过RNN自身的回归特性提出了一种体素生成策略。
基于无监督学习的方法对体素进行区分
随后,选择前m=r*L个体素作为前景(r为前景比例):
F_m=\text{Top}_m(F_i^*)
其中,F_m为选择的前景特征,会用于后续的体素生成。
自回归属性的体素生成:传统的基于K邻近(KNN)的方法从KNN提取出相应的体素特征进行处理;然而这种方案存在不足之处:它不仅引入了冗余的信息(redundant information),还受限于感受窗口(sensory window)的空间范围;为此我们提出了一种基于线性递归神经网络(RNN)实现自回归特性的新方案;具体而言,在此方案中我们首先定义了前景区域对应的目标位置表示为矩阵形式;随后通过多轮传播机制对目标区域进行迭代更新;在初始传播后我们将所有节点值设为零向量;接着将当前LION块输出结果与上一步传播结果共同传递至下一个LION块进行融合计算;最终得到更为精确的空间表征信息

上述过程可表示如下:
F_p=F_i\oplus F_{[-1,-1,0]}\oplus F_{[1,1,0]}\oplus F_{[1,-1,0]}\oplus F_{[-1,1,0]}\\ F'_p=\text{Block}(F_p)
