"); //-->
以上主要是对 Point-NN 在分类任务中的应用的介绍,Point-NN 也可以被用于 3D 的部件分割和 3D 目标检测任务。
(1)部件分割 (3D Part Segmentation)
与分类任务对全局特征进行提取再进行分类不同的是,部件分割需要对每个点进行分类。因此,论文采用了一个接在 non-parametric encoder 后的对称的 non-parametric decoder,进行点云特征的上采样,恢复至输入时的点数量。具体来说,在 decoder 的每个阶段,我们将局部中心点的特征通过相对位置加权,来扩散到周围的领域点。对于 point-memory bank,首先使用 encoder 和 decoder 得到训练集的每个点的特征,为了节省显存消耗,对于每一个物体,我们将每个部件的特征取平均值,再作为 feature memory 存入到 bank 中。
(2)目标检测 (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 性能。
我们构建 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 模型。
(2)作为即插即用模块 (As Plug-and-play Modules)
Point-NN 可以在不进行额外训练的情况下增强现有 3D 预训练模型的性能。以分类任务为例,我们直接将 Point-NN 与预训练模型预测的分类 logits 进行相加,来提供互补的 3D 知识提升性能。如下图对特征的可视化所示,Point-NN 主要提取的是点云的低层次高频特征,在尖锐的三维结构周围产生了较高的响应值,例如飞机的翼尖、椅子的腿和灯杆;而经过训练的 PointNet++ 更关注的是点云的高层次语义信息,通过对它们的 logits 相加可以得到互补的效果,例如,飞机的机身、椅子的主体和灯罩。
三、实验 1.Point-NN 和 Point-PN (1)3D 物体分类 (Shape Classification)
对于 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)
与现有的经过完全训练的 3D 模型相比,Point-NN 的 few shot 性能显著超过了第二好的方法。这是因为训练样本有限,具有可学习参数的传统网络会存在严重的过拟合问题。
(2)3D 部件分割 (Part Segmentation)
70.4% 的 mIoU 表明由 Point-NN 在分割任务中也可以产生执行良好的单点级别的特征,并实现细粒度的 3D 空间理解。
Poinnt-PN 能够取得 86.6% 的 mIoU。与 Curvenet 相比,Point-PN 可以节省 28 小时的训练时间,推理速度快 6X。
(3)3D 目标检测 (3D Object Detection)
将 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)
Point-NN 可以有效提高现有方法的分类性能,在 ScanObjectNN 数据集上,Point-NN 可以对 PointNet 和 PoitMLP 的分类准确率均提高 2%。
(2)3D 分割和检测 (Segmentation and Detection)
对于分割任务,由于 ShapeNetPart 数据集上的测评指标已经比较饱和,Point-NN 对 CurveNet 提升的 0.1% 已经是很好的效果。对于检测任务,Point-NN 对 3DETR-m 的增强达到了很好的 1.02%和 11.05%。
四、讨论 1. 为什么 Point-NN 中的三角函数可以编码 3D 信息? (1)捕获高频的 3D 结构信息
通过下图中 Point-NN 特征的可视化,以及我们分解出的点云低频和高频信息,可以观察到 Point-NN 主要捕获了点云的高频空间特征,例如边缘、拐角以及其它细粒度的细节。
(2)编码点之间的相对位置信息
三角函数本身可以提供点云的绝对位置信息。对于两个点和,首先获取它们的 C 维的位置编码,公式如下:
而它们之前的相对位置关系可以通过它们之间的点乘得到,公式如下:
以 x 轴为例,
这个公式表示了 x 轴上两个点之间的相对位置。因此,三角函数可以得到点云之间的绝对和相对位置信息,这更有利于 Point-NN 对局部化点云的结构理解。
2.Point–NN 可以即插即用的提升 Point–PN 的性能吗?
如上表所示,Point-NN 对 Point-PN 的提升极其有限,从上图可视化的结果来看,Point-NN 和 Point-PN 之间的互补性比 Point-NN 和 PointNet++ 之间的互补性更弱。这是因为 Point-PN 的基础结构是继承自 Point-NN,因此也会通过三角函数获取 3D 高频信息,和 Point-PN 拥有相似的特征捕获能力。
3. 和其他无需训练的 3D 模型的比较
现有的 3D 模型中,有一类基于 CLIP 预训练模型的迁移学习方法,例如 PointCLIP 系列,它们也不需要进行 3D 领域中的训练过程。从上表的比较可以看出,Point-NN 可以实现很优越的无需训练的分类性能。
4.Point–NN 与 PnP–3D 的增强效果比较
PnP-3D 提出了一种对于 3D 模型的即插即用的可学习增强模块,但是它会引入额外的可学习参数,并且需要重新训练而消耗更多的计算资源。如上表所示,相比之下,Point-NN 也能实现相似的增强性能,但是完全不需要额外参数或者训练。
五、总结与展望 本文首次在 3D 领域中,提出了一个无参数无需训练的网络,Point-NN,并且在各个 3D 任务上都取得了良好的性能。我们希望这篇工作可以启发更多的研究,来关注非参数化相关的 3D 研究,而不是一味的增加复杂的 3D 算子或者堆叠大量的网络参数。在未来的工作中,我们将探索更加先进的非参数 3D 模型,并推广到更广泛的 3D 应用场景中。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。