RETHINKING NETWORK DESIGN AND LOCAL GEOMETRY IN POINT CLOUD: A SIMPLE RESIDUAL MLP FRAMEWORK (论文解读+代码分析)

PointMLP 论文解读

摘要

由于不规则和无序的数据结构,点云分析具有挑战性。为了捕获 3D 几何图形,之前的工作主要依赖于使用卷积、图形或注意力机制探索复杂的局部几何提取器。然而,这些方法在推理过程中会产生unfavorable的延迟,并且在过去几年中性能已经饱和。在本文中,我们对这项任务提出了一个新颖的观点。我们注意到,详细的局部几何信息可能不是点云分析的关键——我们引入了一个纯残差 MLP 网络,称为 PointMLP,它没有集成“复杂”的局部几何提取器,但仍然表现得非常有竞争力。通过提出轻量级几何仿射模块,PointMLP 在多个数据集上实现了新的最先进性能。在现实世界的 ScanObjectNN 数据集上,我们的方法甚至超过了之前最好的方法 3.3% 的准确率。我们强调,PointMLP 无需任何复杂的操作即可实现这种强大的性能,从而带来卓越的推理速度。与最新的 CurveNet 相比,PointMLP 的训练速度提高了 2 倍,测试速度提高了 7 倍,并且在 ModelNet40 基准测试中更准确。我们希望我们的 PointMLP 可以帮助社区更好地理解点云分析。

1. Introduction

在过去的几年中,通过神经网络,点云分析在各种应用中取得了巨大的改进,包括三维形状分类(Qi等,2017a)、语义分割(Hu等,2020)和物体检测(Shi&Rajkumar,2020)等。

尽管这些方法取得了令人满意的结果,但它们主要依赖于这样一个前提:一个精细的局部特征提取器对于点云分析至关重要,这导致了对于仔细设计,探索精细局部几何特征的竞争。然而,复杂的提取器并非没有缺点。一方面,由于计算量大和内存访问开销大,这些复杂的提取器阻碍了自然场景中应用程序的效率。例如,直到现在,大多数 3D 点云应用程序仍然基于简单的 PointNet(和 PointNet++)或基于体素的方法(Liu et al., 2021; Li et al., 2021b; Zhang et al., 2021 ).然而,采用上述先进方法的应用在文献中很少见。

现在在局部特征提取的设计边际效益很小了,所以我们要跳出这个内卷的情况,去考虑设计更为复杂的局部特征提取是否有必要。

介绍结构 在本文中,我们的目标是建立一个仅使用残差前馈 MLP 进行点云分析的深度网络,而无需任何精细的局部特征探索。通过这样做,我们避免了由于复杂的局部几何特征提取器导致的计算量过大和持续的内存访问,并享受到高度优化的MLP所带来的效率优势。为了进一步提高性能和泛化能力,我们引入了一种轻量级的局部几何仿射模块,可以自适应地变换局部区域中的点特征。我们将新的网络架构称为 PointMLP。在 MLPbased 设计理念的意义上,我们的 PointMLP 类似于 PointNet 和 PointNet++ (Qi et al., 2017a;b)。然而,我们的模型更通用并且表现出有前途的性能。PointMLP用了更简单的方法实现了更好的性能。

然后就是介绍一些性能特别好等等 尽管设计理念很简单,但 PointMLP(以及改进版)在 3D 点云分析方面表现出卓越的性能。具体来说,我们在 ModelNet40 基准测试中实现了最先进的分类性能 94.5%,并且我们在真实世界的 ScanObjectNN 数据集上的准确率比相关工作高出 3.3%,推理速度明显提高。

Point cloud analysis.

常用的点云分析的方法:

  • 把原始点云转化为体素或者图像,在2D领域解决它。
  • 例如 PointNet 直接使用使用共享MLP去直接处理无序点集。PointNet++ 引入了分层特征学习范式。

Local geometry exploration

随着 PointNet++ 构建了通用的点云分析网络框架,最近的研究重点转向了如何生成更好的区域点表示。主要地,局部点表示的探索可以分为三类:基于卷积、图形和注意力的方法。最著名的基于卷积的方法之一是 PointConv(Wu 等人,2019 年)。通过使用 MLP 逼近卷积滤波器中的连续权重和密度函数,PointConv 能够将动态滤波器扩展到新的卷积运算。在不修改网络配置的情况下,PAConv 可以无缝集成到经典的基于 MLP 的管道中。与基于卷积的方法不同,基于图的方法研究点与图之间的相互关联关系。在王等人。 (2019),提出了 EdgeConv 来生成描述点与其邻居之间关系的边缘特征。通过这样做,构建了局部图,并且点关系得到了很好的保留。在 3D-GCN (Lin et al., 2021) 中,作者旨在使用 3D 图卷积网络推导可变形的 3D 内核。与基于图的方法密切相关,基于注意力的方法在关系探索方面也表现出出色的能力,如 PCT (Guo et al., 2021) 和 Point Transformer (Zhao et al., 2021; Engel et al., 2020)。随着局部几何探索的发展,各种任务的性能出现饱和。继续这条路的收益不大。在本文中,我们展示了即使没有为局部几何探索精心设计的操作,纯深度分层 MLP 架构也能够表现出令人满意的性能甚至更好的结果。

Deep network architecture for point cloud.

3. Deep Residual MLP for Point Cloud

我们建议通过一个简单的前馈残差 MLP 网络(名为 PointMLP)来学习点云表示,该网络分层聚合 MLP 提取的局部特征,并放弃使用精致的局部几何提取器。为了进一步提高鲁棒性和性能,我们还引入了一个轻量级的几何仿射模块来将局部点转换为正态分布。我们的方法的详细框架如图 2 所示。

3.1 Revisiting Point-Based Methods

准备讲PointNet/PointNet++

给定一组点 \(\mathcal{P} = {p_i|i = 1, \ldots , N } \in \mathbb{R}^{N\times 3}\),其中 N 表示 (x, y, z) 笛卡尔空间中的点数,基于点的方法旨在使用神经网络直接学习 \(\mathcal{P}\) 的底层表示 \(f\)

接下来是介绍 PointNet++ 的结构 => 以及在 PointNet++ 之后不同工作对于 PointNet++ 中的局部特征提取部件进行。然后需要介绍弊端了,引出我们的论文

虽然这些方法可以很容易地利用详细的局部几何信息并且通常表现出有希望的结果,但有两个问题限制了它们的发展。首先,随着精细提取器的引入,计算复杂度大大增加,导致无法接受的推断延迟。例如,Point Transformer 中公式 3 的 FLOP 为 \(14Kd^2\)(忽略求和和减法运算)。与享有 \(2Kd^2\) FLOPs 的常规 FC 层相比,它增加了数倍的计算量。请注意,尚未考虑内存访问成本。其次,随着局部特征提取器的发展,性能增益已经开始在流行的基准测试中饱和。此外,刘等人(2020)的实证分析显示,在相同的网络输入下,大多数复杂的局部特征提取器对网络性能的贡献非常相似。这两个限制都促使我们开发一种新的方法,绕过复杂的局部特征提取器的使用,并提供令人满意的结果。

3.2 Framework of PointMLP

所以我们提出了一个不那么复杂的网络。关键操作可以表示为:

\[g_i=\Phi_{\text {pos }}\left(\mathcal{A}\left(\Phi_{\text {pre }}\left(f_{i, j}\right), \mid j=1, \cdots, K\right)\right) \label{pointmlp}
\]

解释下这个公式:

  • 其中 \(\Phi_{pre} (\cdot)\)\(\Phi_{pos} (\cdot)\) 是残差点MLP块:
    • 共享的 \(\Phi_{pre} (\cdot)\) 旨在从局部区域学习共享权重
    • \(\Phi_{pos} (\cdot)\) 则用于提取深层的聚合特征。
  • \(\mathcal{A}(\cdot)\) 代表的是聚合函数(在前文中说了)

详细来说,这个映射函数可以被写成一系列同质的残差MLP块,即MLP(x) + x,其中MLP由全连接层、归一化层和激活函数层(各重复两次)组成。按照Qi等人(2017a)的方法,我们将聚合函数A(·)视为最大池化操作。

补充两个知识点:

Q: 什么是同质的残差块MLP块?

同质的残差块MLP块是指由相同类型的模块组成的残差网络块。在这个网络中,每个残差块的结构相同,由一系列相同的层组成。在这里,同质的残差块MLP块指的是由全连接层、归一化层和激活函数层(各重复两次)组成的残差块,这些块具有相同的结构,并且在整个网络中重复使用。这种设计可以使网络的结构更加简单、规则化,并且更容易训练。

Q: 那什么是 MLP(x) + x 呢?

在这里,MLP(x) + x 是指一个残差块的输出,它由两个部分组成:一个是输入x经过多层感知机(MLP)得到的特征表示,另一个是输入x本身,即原始的特征表示。这种结构被称为“残差连接”,它可以使网络更容易训练,减少梯度消失的问题,同时保留输入的信息,有助于提高网络的性能。因此,这种表达方式是在描述网络结构时经常使用的。

方程 \(\eqref{pointmlp}\) 描述了PointMLP的一个阶段。对于一个分层和深层的网络,我们可以递归地重复该操作s次。尽管PointMLP的框架简洁,但它具有一些显著的优点。1)由于PointMLP仅利用MLP,因此它自然地不受置换的影响,这完美地符合点云的特性。2)通过引入残差连接,PointMLP可以轻松扩展到数十层,从而产生深层特征表示。3)此外,由于没有包括复杂的特征提取器,主要操作仅为高度优化的前馈MLP,即使我们引入更多的层,PointMLP仍然能够高效地执行。

除非明确说明,我们实验中的网络有四个阶段,并且在\(\Phi_{pre}(\cdot)\)\(\Phi_{pos}(\cdot)\) 中都有两个残差块。我们使用 \(k\) 最近邻算法(kNN)来选择邻居,并将 \(K\) 的数量设置为 \(24\)

3.3 Geometric Affine Module

尽管通过增加阶段或堆叠更多的块在 \(\Phi_{pre}\)\(\Phi_{pos}\) 中可以简单地增加深度,但我们注意到一个简单的深度MLP结构会降低模型的准确性和稳定性,使模型不够健壮。这可能是由于局部区域中的几何结构是稀疏和不规则的,不同局部区域之间的几何结构也可能是不同的,因此需要不同的特征提取器。然而,共享的残差MLP在实现这种灵活性方面存在困难。为了解决这个问题,我们开发了一个轻量级的几何仿射模块。具体地,对于包含 \(k\) 个点的\(f_i \in \mathbb{R}^d\)的分组局部邻居\(\left\{ f_{i, j}\right\}_{j=1, \cdots, k} \in\mathbb{R}^{k \times d}\),并且每个邻居点\(f_{i, j}\)是一个\(d\)维向量,我们使用以下公式转换每个邻居点\(f_{ i, j}\)的特征表示:

\[\{f_{i,j}\} = \alpha \odot \dfrac{\{f_{i,j}\} - f_i}{\sigma + \epsilon} +\beta,\qquad \sigma = \sqrt{\dfrac{1}{k\times n \times d} \sum_{i=1}^{n}\sum_{j=1}^{k}(f_{i,j} - f_i)^2}
\]

式中,\(\alpha ∈ \mathbb{R}^d\)\(\beta ∈ \mathbb{R}^d\) 是可学习的参数,\(\odot\) 表示逐元素乘积(Hadamard product),\(ε = 1e−5\) 是一个小的数值稳定性常数。需要注意的是,$\sigma $ 是描述所有局部组和通道之间特征偏差的标量。通过这种方式,我们对点云局部邻域中的特征进行仿射变换,使其具有归一化的特性,同时保留了原始的几何属性。这样可以提高模型的鲁棒性和性能。

公式中的 \({f_{i,j}} - f_i\) 表示将局部邻域中每个点的特征向量 \(f_{i,j}\) 减去该邻域中心点的特征向量 \(f_i\),这个操作的目的是消除局部邻域内的平移不变性(translation invariance),即将点云的坐标系与局部邻域中心点的坐标系对齐,使得特征提取更加准确。经过这个操作之后,每个局部邻域的特征向量表示就变成了相对于该邻域中心点的偏移量,然后再通过仿射变换对这些偏移量进行归一化,使得点云的特征表达更加具有区分度和稳定性。

后续略(本文主要分析的是网络结构)

代码部分

代码链接:pointMLP-pytorch

环境配置