"); //-->
不引入任何可学习参数或训练,是否可以直接实现 3D 点云的分类、分割和检测?
本文提出了一个用于 3D 点云分析的非参数网络 Point-NN,它仅由纯不可学习的组件组成:最远点采样(FPS)、k 近邻(k-NN)、三角函数(Trigonometric Functions)以及池化(Pooling)操作。不需要参数和训练,它能够在各种 3D 任务上都取得不错的准确率,甚至在 few-shot 分类上可以大幅度超越现有的完全训练的模型。
基于 Point-NN 的非参数框架,这项研究对于当前 3D 领域的贡献如下:
1、首先,我们可以通过插入简单的线性层,来构建 Point-NN 的参数化网络,Point-PN。由于 Point-NN 具有强大的非参数基础,所构建出的 Point-PN 仅需要少量可学习参数就可以表现出优秀的 3D 分类和分割性能。
2、其次,由于 Point-NN 不需要训练的属性,我们可以将其作为一个即插即用的增强模块,去增强现有已经训练好的 3D 模型。通过提供互补知识,Point-NN 可以在各种 3D 任务上提升原本的 SOTA 性能。
一、引言
1. 动机
3D 点云的处理和分析是一项具有挑战性的任务,并且在学术界和工业界都取得了广泛的关注。自从 PointNet++ 起,后续的 3D 模型为了提升性能,一方面设计了更加复杂的局部空间算子,一方面增大了网络的可学习参数量。然而,除了不断更新的可学习模块,他们基本都沿用了同一套潜在的多尺度网络框架,包括最远点采样(FPS)、k 近邻(k-NN)和池化(Pooling)操作。目前,还几乎没有研究去探索这些非参数组件的潜力;因此,本文提出并探索了以下问题:这些非参数组件对于 3D 理解的贡献有多大?仅仅使用非参数组件,能否实现无需训练的 3D 点云分析?
2. 贡献
为了解决以上问题,本文首次提出了一个非参数化(Non-Parametric)的 3D 网络,Point-NN,整体结构如上图所示。Point-NN 由一个用于 3D 特征提取的非参数编码器(Non-Parametric Encoder)和一个用于特定任务识别的点云记忆库(Point-Memory Bank)组成。非参数编码器采用了多阶段的结构设计,使用了最远点采样(FPS)、k 近邻(k-NN)、三角函数(Trigonometric Functions)和池化(Pooling)来逐步聚合局部几何图形,为点云生成一个高维度的全局特征。我们仅仅采用了简单的三角函数来捕捉局部空间几何信息,没有使用任何可学习算子。接下来,我们使用此编码器,去提取到所有训练集点云的特征,并缓存为点云记忆库。进行测试时,点云记忆库通过对测试点云和训练集点云的特征,进行相似度匹配,来输出特定任务的预测。
不需要任何训练,Point-NN 可以在多种 3D 任务中实现优越的性能,例如 3D 分类、分割、检测,甚至可以超过一些现有的经过完全训练的模型。基于此,我们进一步提出了两点 Point-NN 对于现今 3D 领域的贡献,如下图(a)和(b)所示:
1)以 Point-NN 为基础框架,我们通过在 Point-NN 的每个阶段插入简单的线性层,引入了其 parameter-efficient 的变体 Point-PN,如上图 (a) 所示。Point-PN 不包含复杂的局部算子,仅仅包含线性层以及从 Point-NN 继承的三角函数算子,实现了效率和性能的双赢。
2)我们将 Point-NN 作为一个即插即用的模块,为各种 3D 任务中训练好的模型提供互补知识,并在推理过程中可以直接提升这些训练模型的性能,如上图 (b) 所示。
二、方法 1.Point-NN
Point-NN 由一个 Non-Parametric Encoder (EncNP) 和一个 Point-Memory Bank (PoM) 组成。对于输入的点云,我们使用 EncNP 提取其全局特征,并通过 PoM 的特征相似度匹配,来输出分类结果,公式如下图所示:
接下来,我们依次介绍 Point-NN 中的这两个模块。
(1)非参数编码器 (Non-Parametric Encoder)
非参数编码器首先将输入点云进行 Raw-point Embedding,将 3 维的原始点坐标转化为高维度特征,再经过 4 个阶段的 Local Geometry Aggregation 逐步聚合局部特征得到最终的点云全局特征,如下图所示。
a. 原始点云映射 (Raw-point Embedding)
我们参考了 Transformer 中的 positional encoding,对于输入点云的一个点,利用三角函数将它嵌入到一个维向量中:
其中分别表示三个轴的位置编码。以为例,对于通道索引,具体的位置编码公式如下:
其中,α,β 分别控制了尺度和波长。通过这种三角函数的编码,我们可以将点云的绝对位置信息映射到高维度的特征空间中,并通过后续的点乘操作可以根据权重获取不同点之间的相对位置信息,并捕获三维形状的细粒度结构变化。
b. 局部几何特征的聚合 (Local Geometry Aggregation)
对于每一个点云尺度的处理,我们分为三个步骤。
首先是特征扩维 (Feature Expansion)。我们使用 FPS 进行点云数量的下采样,对于下采样后得到的每一个中心点,我们采用 k-NN 去找到他的 k 个邻域点以及对应的特征。基于此,我们将中心点特征和在特征维度进行拼接,实现特征扩维,这样可以在更深的网络层中编码更多的语义信息:
其次是几何信息提取 (Geometry Extraction)。我们先使用均值和标准差对的坐标进行归一化,并使用三角函数进行相对位置的编码,来获取的相对几何权重,标记为。之后,我们通过下面的公式得到加权后的邻域特征。
最后是局部特征聚和 (Feature Aggregation)。我们利用最大池化和平均池化来进行局部特征聚合。
在完成 4 个阶段的 Local Geometry Aggregation 后,我们再次运用最大池化和平均池化来得到点云的全局特征。
(2)点云记忆库 (Point-Memory Bank)
在经过非参数编码器 (Non-Parametric Encoder) 的特征提取后,由于 Point-NN 不含任何可学习参数,我们没有使用传统的可学习分类头,而是采用了无需训练的 point-memory bank。首先,我们使用非参数编码器去构造关于训练集的 bank,接着在推理过程通过相似度匹配输出预测,如下图所示。
a. 记忆构建 (Memory Construction)
Point memory 包括一个 feature memory和一个 label memory。以点云分类任务为例,假设给定的训练集包含 K 个类别的 N 个点云。通过 Non-Parametric Encoder 可以得到 N 个训练集点云的全局特征,同时将对应的分类标签转换为 one-hot 编码,接着将它们沿着样本维度进行拼接,缓存为两个矩阵。
b. 基于相似度的预测 (Similarity-based Prediction)
在推理阶段,我们利用构造好的 bank 进行两个矩阵乘法来完成分类。首先,我们通过 Non-Parametric Encoder 来计算测试点云的全局特征,并计算与 feature memory 之间的余弦相似度。
接下来,将 label memory 中的 one-hot 标签与进行加权,越相似的 feature memory 对最终的分类 logits 贡献越大,反之亦然。
通过这种基于相似性的计算,point-memory bank 可以在不经过任何训练的情况下,学习到从训练集中提取的知识,在推理过程自适应地完成不同任务。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。