CVPR 2023|Point-NN:​首次实现0参数量、0训练的3D点云分析

作者 | 张仁瑞  编辑 | 极市平台

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【3D检测】技术交流群

导读

 

本文首次在3D领域中,提出了一个无参数无需训练的网络,Point-NN,并且在各个3D任务上都取得了良好的性能。

首次实现0参数量、0训练的3D点云分析:

Parameter is Not All You Need, Starting from Non-parametric Networks for 3D Point Cloud Analysis

不引入任何可学习参数或训练,我们是否可以直接实现3D点云的分类、分割和检测?

为此,本文提出了一个用于3D点云分析的非参数网络,Point-NN,它仅由纯不可学习的组件组成:最远点采样(FPS)、k近邻(k-NN)、三角函数(Trigonometric Functions)以及池化(Pooling)操作。不需要参数和训练,它能够在各种3D任务上都取得不错的准确率,甚至超过了一些现有的完全训练的模型。基于Point-NN的非参数框架,我们进一步提出两点Point-NN对于现今3D领域的贡献。

1、首先,我们可以通过插入简单的线性层,来构建Point-NN的参数化网络,Point-PN。由于Point-NN具有强大的非参数基础,所构建出的Point-PN仅需要少量可学习参数就可以表现出优秀的3D分类和分割性能。

2、其次,由于Point-NN不需要训练的属性,我们可以将其作为一个即插即用的增强模块,去增强现有已经训练好的3D模型。通过提供互补知识,Point-NN可以在各种3D任务上提升原本的SOTA性能。

d663137df0ee348081c466fc34631942.png

作者:张仁瑞

文章链接:https://arxiv.org/abs/2303.08134

开源代码(已开源):https://github.com/ZrrSkywalker/Point-NN

一、引言

1. 动机

3D点云的处理和分析是一项具有挑战性的任务,并且在学术界和工业界都取得了广泛的关注。自从PointNet++起,后续的3D模型为了提升性能,一方面设计了更加复杂的局部空间算子,一方面增大了网络的可学习参数量。然而,除了不断更新的可学习模块,他们基本都沿用了同一套潜在的多尺度网络框架,包括最远点采样(FPS)、k近邻(k-NN)和池化(Pooling)操作。目前,还几乎没有研究去探索这些非参数组件的潜力;因此,本文提出并探索了以下问题:这些非参数组件对于3D理解的贡献有多大?仅仅使用非参数组件,能否实现无需训练的3D点云分析?

2. 贡献

02363deb156f17780f31bfe48d6d9638.png

为了解决以上问题,本文首次提出了一个非参数化(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)所示:

f2391c7147ee02146c9d2e4fbc5f0789.png

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的特征相似度匹配,来输出分类结果,公式如下图所示:

00b8eb10803eefd6f812bb2f901da5ae.png

接下来,我们依次介绍Point-NN中的这两个模块。

(1)非参数编码器(Non-Parametric Encoder)

非参数编码器首先将输入点云进行Raw-point Embedding,将3维的原始点坐标转化为高维度特征,再经过4个阶段的Local Geometry Aggregation逐步聚合局部特征得到最终的点云全局特征,如下图所示。

1c02a19051485e657e02c0281824e608.png

a. 原始点云映射(Raw-point Embedding)

我们参考了Transformer中的positional encoding,对于输入点云的一个点,利用三角函数将它嵌入到一个维向量中:

7de0d36bcd97ec2407ddc582d19aeb6b.png

其中  分别表示三个轴的位置编码。以  为例, 对于通道索引 , 具体的位置编码公式如下:

9404a35ade5b0faacddb8e162aed6c96.png

其中,分别控制了尺度和波长。通过这种三角函数的编码,我们可以将点云的绝对位置信息映射到高维度的特征空间中,并通过后续的点乘操作可以根据权重获取不同点之间的相对位置信息,并捕获三维形状的细粒度结构变化。

b.局部几何特征的聚合(Local Geometry Aggregation)

对于每一个点云尺度的处理,我们分为三个步骤。

首先是特征扩维(Feature Expansion)。我们使用FPS进行点云数量的下采样, 对于下采样后得到的每一个中心点 , 我们采用  去找到他的  个邻域点  以及对应的特征  。基于此, 我们将中心点特征  和  在特征维度进行拼接, 实现特征扩维, 这样可以在更深的网络层中编码更多的语义信息:

2aa977c6589e17cf0b0a6533f44f7ba5.png

其次是几何信息提取(Geometry Extraction)。我们先使用均值和标准差对  的坐标进行归一化, 并使用三角函数进行相对位置的  编码, 来获取  的相对几何权重, 标记为。 之后, 我们通过下面的公式得到加权后的邻域特征  。

6caa6dde2ed77bf26088d80fa7c9bd93.png

最后是局部特征聚和(Feature Aggregation)。我们利用最大池化和平均池化来进行局部特征聚合。

0a542f6b33359d3e44beb29b43cd6992.png

在完成4个阶段的Local Geometry Aggregation后,我们再次运用最大池化和平均池化来得到点云的全局特征。

(2)点云记忆库(Point-Memory Bank)

在经过非参数编码器(Non-Parametric Encoder)的特征提取后,由于Point-NN不含任何可学习参数,我们没有使用传统的可学习分类头,而是采用了无需训练的point-memory bank。首先,我们使用非参数编码器去构造关于训练集的bank,接着在推理过程通过相似度匹配输出预测,如下图所示。

d4ba6c29a359553ee3824de4071d6f63.png

a. 记忆构建(Memory Construction)

Point memory包括一个feature memory  和一个label memory  。以点云分类任务为 例, 假设给定的训练集包含  类别的  个点云。 通过Non-Parametric Encoder可以得到  个训练集点云的全局特征, 同时将对应的分类标签  转换为one-hot编码, 接着将它们沿着样本维度进行拼接, 缓存为两个矩阵。

1f70d372d8e2eaa9b991f9f0cd8679d9.png

b. 相似度预测 (Similarity-based Prediction)

在推理阶段,我们利用构造好的bank进行两个矩阵乘法来完成分类。首先,我们通过Non-Parametric Encoder来计算测试点云的全局特征, 并计算与 feature memory 之间的余弦相似度。

b60d0fdd8016a69634895a40439307c2.png

接下来, 将label memory  中的one-hot标签与  进行加权, 越相似的feature memory对 最终的分类logits贡献越大,反之亦然。

e425f4da4823e985861f4e0b2df6789b.png

通过这种基于相似性的计算,point-memory bank可以在不经过任何训练的情况下,学习到从训练集中提取的知识,在推理过程自适应地完成不同任务。

2. Point–NN在其他3D任务的拓展

以上主要是对Point-NN在分类任务中的应用的介绍,Point-NN也可以被用于3D的部件分割和3D目标检测任务。

部件分割(3D Part Segmentation)

与分类任务对全局特征进行提取再进行分类不同的是,部件分割需要对每个点进行分类。因此,论文采用了一个接在non-parametric encoder后的对称的non-parametric decoder,进行点云特征的上采样,恢复至输入时的点数量。具体来说,在decoder的每个阶段,我们将局部中心点的特征通过相对位置加权,来扩散到周围的领域点。对于point-memory bank,首先使用encoder和decoder得到训练集的每个点的特征,为了节省显存消耗,对于每一个物体,我们将每个部件的特征取平均值,再作为feature memory存入到bank中。

目标检测(3D  Object Detection)

对于检测任务,我们将Point-NN作为一个3D检测器的分类头使用。当预训练好的检测器产生3D proposal后,Point-NN与分类任务相似,使用non-parametric encoder来获取被检测物体的全局特征。在构建point-memory bank时,我们在训练集中对在每个3D框标签内的点云进行采样,将采样后的每个物体的全局特征进行编码得到feature memory。特别的是,我们没有像其他任务一样对每个物体的点云坐标进行归一化,这是为了保留在原始空间中的3D位置信息,实现更好的检测性能。

3. 从Point-NN延伸( Starting from Point-NN)

(1)作为结构框架构建Point-PN(As Architectural Frameworks)

我们讲Point-NN视为一个良好的非参数化框架,在其中插入简单的可学习线性层,来构建参数化的3D网络,Point-PN。Point-PN相比于现有的3D网络,不含有复杂的局部算子,以极少的可学习参数量实现了优秀的3D性能。

da8a7c8f1d026d3ec4499a37f37c4380.png

我们构建Point-PN的步骤如下:首先,将point-memory bank替换为传统的可学习的分类头,如上图(A)所示;在ModelNet40的分类任务上,这一步将分类性能从Point-NN的81.8%提高到了90.3%,且仅仅使用了0.3M的参数量。接着,我们将raw-point embedding替换为线性层(B),可以将分类性能进一步提高到90.8%。为了更好地提取多尺度层次特征,我们接着将线性层插入到每一阶段的non-parametric encoder中。具体来说,在每个阶段,两个线性层分别被插入到Geometry Extraction的前后来捕捉高层空间信息,如图中(C、D、E)所示。这样,最终的Point-PN可以仅仅使用0.8M的参数量达到93.8%的性能,且只包括三角函数和简单的线性层。这说明,与现有的高级的操作算子或者大参数两相比,我们可以从非参数框架出发,来获取一个简单高效的3D模型。

bb9a97b2c10266d6dedbebd0e2defc20.png
(2)作为即插即用模块(As Plug-and-play Modules)

Point-NN可以在不进行额外训练的情况下增强现有3D预训练模型的性能。以分类任务为例,我们直接将Point-NN与预训练模型预测的分类logits进行相加,来提供互补的3D知识提升性能。如下图对特征的可视化所示,Point-NN主要提取的是点云的低层次高频特征,在尖锐的三维结构周围产生了较高的响应值,例如飞机的翼尖、椅子的腿和灯杆;而经过训练的PointNet++更关注的是点云的高层次语义信息,通过对它们的logits相加可以得到互补的效果,例如,飞机的机身、椅子的主体和灯罩。

2e2d8c84eff95b8cad23d5e3cbb1001e.png

三、实验

1.Point-NN和Point-PN

(1)3D物体分类(Shape Classification)
a0098c661a899f6977141f579d7dcd73.png

对于2个代表性的3D物体分类数据集,ModelNet40和ScanObjectNN,Point-NN都获得了良好的分类效果,甚至能够在ScanObjectNN上超过完全训练后的3DmFV模型。这充分说明了Point-NN在没有任何的参数或训练情况下的3D理解能力。

Point-PN在2个数据集上也都取得了有竞争力的结果。对于ScanObjectNN,与12.6M的PointMLP相比,Point-PN实现了参数量少16倍,推理速度快6倍,并且精度提升1.9%。在ModelNet40数据集上,Point-PN获得了与CurveNet相当的结果,但是少了2.5X的参数量,快了6X的推理速度。

(2)少样本3D分类(Few-shot Classification)
0c06459ef641cec82d0004733e1ae604.png

与现有的经过完全训练的3D模型相比,Point-NN的few shot性能显著超过了第二好的方法。这是因为训练样本有限,具有可学习参数的传统网络会存在严重的过拟合问题。

(3)3D部件分割(Part Segmentation)
40c6e2635e9dde7a2ca964a06858317a.png

70.4%的mIoU表明由Point-NN在分割任务中也可以产生执行良好的单点级别的特征,并实现细粒度的3D空间理解。

Poinnt-PN能够取得86.6%的mIoU。与Curvenet相比,Point-PN可以节省28小时的训练时间,推理速度快6X。

(4)3D目标检测(3D Object Detection)
2c1700efa4eead14b9f98830df6ddffd.png

将Point-NN作为检测器的分类头,我们采用了两种流行的3D检测器VoteNet和3DETR-m来提取类别无关的3D region proposals。由于我们没有进行点云坐标的归一化处理(w/o nor.),这样可以保留原始场景中更多物体三维位置的信息,大大提升了Point-NN的AP分数。

2.Point-NN的即插即用(Plug-and-play)

(1)3D物体分类(Shape Classification)
6ea865c8eb10810d761536949023ce53.png

Point-NN可以有效提高现有方法的分类性能,在ScanObjectNN数据集上,Point-NN可以对PointNet和PoitMLP的分类准确率均提高2%。

(2)3D分割和检测(Segmentation and Detection)
56dba07b29b84d68eea38bd38c36746c.png

对于分割任务,由于ShapeNetPart数据集上的测评指标已经比较饱和,Point-NN对CurveNet提升的0.1%已经是很好的效果。对于检测任务,Point-NN对3DETR-m的增强达到了很好的 和 。

四、讨论

1.为什么Point-NN中的三角函数可以编码3D信息?

(1)捕获高频的3D结构信息

通过下图中Point-NN特征的可视化,以及我们分解出的点云低频和高频信息,可以观察到Point-NN主要捕获了点云的高频空间特征,例如边缘、拐角以及其它细粒度的细节。

1e0388010f7b1a96bc8f27e3b50d1705.png
(2)编码点云之间的相对位置信息

三角函数本身可以提供点云的绝对位置信息。对于两个点, 和 ,首先获取它们的C维的位置编码,公式如下:

0c642ff631c23f69e972347e4f76568c.png

而它们之前的相对位置关系可以通过它们之间的点乘得到,公式如下:

01ced80297d1c551b0a17dc3b43273ba.png

以x轴为例,

4e88a372e8f7a331c0c415e15c5bf60d.png

这个公式表示了x轴上两个点之间的相对位置。因此,三角函数可以得到点云之间的绝对和相对位置信息,这更有利于Point-NN对局部化点云的结构理解。

2.Point–NN可以即插即用的提升Point–PN的性能吗?

0224e9cf099ebdc7f94bcc4fc421e055.png9b761056999cc323c128ada68e0f5fb5.png

如上表所示,Point-NN对Point-PN的提升极其有限,从上图可视化的结果来看,Point-NN和Point-PN之间的互补性比Point-NN和PointNet++之间的互补性更弱。这是因为Point-PN的基础结构是继承自Point-NN,因此也会通过三角函数获取3D高频信息,和Point-PN拥有相似的特征捕获能力。

3.和其它无需训练的3D模型的比较

3c3b2641e9d152ab31737b5fec4a2ee2.png

现有的3D模型中,有一类基于CLIP预训练模型的迁移学习方法,例如PointCLIP系列,它们也不需要进行3D领域中的训练过程。从上表的比较可以看出,Point-NN可以实现很优越的无需训练的分类性能。

4.Point–NN与PnP–3D的增强效果比较

991a17392b1c844c6e88a614b68bdf77.png

PnP-3D提出了一种对于3D模型的即插即用的可学习增强模块,但是它会引入额外的可学习参数,并且需要重新训练而消耗更多的计算资源。如上表所示,相比之下,Point-NN也能实现相似的增强性能,但是完全不需要额外参数或者训练。

五、总结和展望

本文首次在3D领域中,提出了一个无参数无需训练的网络,Point-NN,并且在各个3D任务上都取得了良好的性能。我们希望这篇工作可以启发更多的研究,来关注非参数化相关的3D研究,而不是一味的增加复杂的3D算子或者堆叠大量的网络参数。在未来的工作中,我们将探索更加先进的非参数3D模型,并推广到更广泛的3D应用场景中。

① 全网独家视频课程

BEV感知、毫米波雷达视觉融合、多传感器标定、多传感器融合、3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、协同感知、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码免费学习)

93ef8f20099ff571e0236d87e3887d72.png 视频官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

近2000人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

b17df7dafbfb31fdc13e646ad36eaf5c.png

③【自动驾驶之心】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、Occupancy、多传感器融合、大模型、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

503f6df8db45ee537c19e695c8792536.jpeg

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值