点云网络(Point Clouds Network)—— PointNet (CVPR 2017)的详解
目录
简介
PointNet 是 2017 年由 Qi 等人提出的一种能直接作用于 3D 点云(Point Cloud)的深度神经网络。与以往将点云先转为体素或 3D 网格再做卷积的思路不同,PointNet 使用 “共享多层感知器(Shared MLP) + 全局池化(对称函数)” 的方式,直接在无序点集上进行端到端训练。该方法简单、有效,并在 3D 物体分类、语义分割等任务上取得了优秀表现。
基本思想
- 无序性:点云本质上是一个 { ( x i , y i , z i ) } \{ (x_i,y_i,z_i) \} {(xi,yi,zi)} 的无序集合。对点云做任意排列,形状的几何含义不变,因此网络需要对“点的顺序”不敏感。
- 对齐变换的需求:物体在 3D 空间可能有不同的旋转、平移等姿态。希望网络具有一定的平移、旋转不变性或鲁棒性。
- 局部与全局特征:PointNet 原始版本通过并行提取点的特征,然后用 Max Pooling 获得全局特征,兼顾一定的局部到全局信息;但其局部结构捕获能力相对有限(后续 PointNet++ 进行了增强)。
核心思路:
- 共享 MLP( ϕ \phi ϕ):对每个点分别做相同的函数映射,从低维坐标到高维特征表示;
- 对称函数(Max Pooling):将所有点的特征向量用 max \max max 算子进行聚合,得到全局特征,不受输入点排列影响;
- 对齐网络(T-Net):通过预测一个 3 × 3 \mathbf{3 \times 3} 3×3或 64 × 64 \mathbf{64 \times 64} 64×64的变换矩阵,实现对输入的坐标/特征的空间对齐;
- 最终分类/分割:全局特征或融合了全局信息的点特征输入到全连接层做分类或逐点标签预测。
网络结构概览
以分类为例,PointNet 的结构通常可分为以下阶段:
- 输入层
- 输入形状为 ( N × 3 ) (N \times 3) (N×3) 或 ( N × d ) (N \times d) (N×d),其中 N N N 是点的数量, d d d 是点的特征维度(最简单情况 d = 3 d=3 d=3 只包含坐标)。
- T-Net(对齐网络)
- 预测一个 3 × 3 \mathbf{3 \times 3} 3×3 变换矩阵(或更高维度),对点云进行初步对齐。
- 共享 MLP 提取特征
- 对每个点平行地用相同的 MLP,将低维输入映射到更高维空间(如 64, 128, 1024 等)。
- 可选的第二个 T-Net
- 输入为中间特征,预测一个 64 × 64 \mathbf{64 \times 64} 64×64 的矩阵,再次对齐特征向量。
- 全局 Max Pooling
- 将所有点的高维特征 { f 1 , f 2 , … , f N } \{\mathbf{f}_1, \mathbf{f}_2, \ldots, \mathbf{f}_N\} { f1,f2,…,fN} 做逐维最大化,得到全局特征向量 g \mathbf{g} g。
- 分类头
- 全连接层(FC) + ReLU + Dropout,将全局特征 g \mathbf{g} g 投影到类别维度 C \mathcal{C} C,最后用 Softmax 得到每个类别的概率。
如果是分割任务,会将 g \mathbf{g} g 和每个点的局部特征 f i \mathbf{f}_i fi 拼接,再经过若干层 MLP 输出每个点的标签类别分布。
关键组件详解
输入与数据预处理
- 输入格式:点云通常以 ( N × 3 ) (N \times 3) (N×3) 的张量输入网络(可能额外带有 RGB/法线等信息)。
- 归一化:为加速收敛,一般将点云中心化并缩放到单位立方体或单位球体范围内。
- 数据增强:在训练时可随机旋转、随机平移、加噪声等,以提升模型对真实环境中点云畸变的鲁棒性。
T-Net(对齐网络)
T-Net 是一个小型网络,结构与主干类似(共享 MLP + Max Pooling + FC),输出是一个方阵(如 3 × 3 \mathbf{3 \times 3} 3×3 或 64 × 64 \mathbf{64 \times 64} 64×64),用于对输入进行变换对齐。
- 输入: X ∈ R N × d \mathbf{X} \in \mathbb{R}^{N \times d} X∈RN×d(可能是坐标,也可能是特征)
- 输出: M ∈ R d × d \mathbf{M} \in \mathbb{R}^{d \times d} M∈Rd×d,其中 M \mathbf{M} M 近似正交矩阵(通过正则化逼近),再用 M \mathbf{M} M 乘以点(或特征),使网络学习最优对齐。
特征提取与共享MLP
将每个点 p i \mathbf{p}_i pi 输入到相同的一组 MLP 层(例如卷积核大小 1×1 的 1D 卷积),映射到高维空间:
p i → ϕ f i \mathbf{p}_i \;\xrightarrow{\phi}\; \mathbf{f}_i piϕ