Point Cloud Classification.
点云(Point Cloud)是一种三维数据的非结构化表示格式,能够保留三维空间中的原始几何信息,没有任何离散化。点云具有以下性质:
- 无序性(unordered):与像素点阵或三维点阵下排布的网格状数据不同,点云是无序的。因此要求以$N$个$3D$点(形成$N\times 3$矩阵)为输入的网络需要对数据的$N!$排布具有不变性;
- 交互性(interaction):点集中的大部分点不是孤立的,邻域点一定属于一个有意义的子集。因此网络需要从近邻点学习到局部结构,以及局部结构的相互关系;
- 变换不变性(transformation invariance):学习的点特征应该对特定的变换具有不变性,比如旋转和平移变换不会改变全局点云的类别以及每个点的分割结果。
点云分类(Point Cloud Classification)即点云形状分类,是一种重要的点云理解任务。该任务的方法通常首先学习每个点的嵌入,然后使用聚合方法从整个点云中提取全局形状嵌入,并通过分类器进行分类。根据神经网络输入的数据格式,三维点云分类方法可分为:
- 基于多视图(Multi-view based)的方法:将点云投影为多个二维图像,如MVCNN, MHBN。
- 基于体素(Voxel-based)的方法:将点云转换为三维体素表示,如VoxNet, OctNet。
- 基于点(Point-based)的方法:直接处理原始点云,如PointNet, PointNet++, PointCNN, DGCNN, PCT。
⭐ 扩展阅读:
1. 基于多视图的点云分类
基于多视图 (Multi-view)的点云分类首先把三维非结构化点云投影到多个二维视图中并提取视图特征,然后将这些特征融合为具有判别性的全局表示以进行精确的分类。
⚪ MVCNN
MVCNN使用参数共享的卷积神经网络从多视角2D图像中提取特征,并通过View-Pooling层将特征最大化为全局描述符。
⚪ MHBN
MHBN通过协调双线性池化来集成局部卷积特征,以产生紧凑的全局描述符。
2. 基于体素的点云分类
基于体素(Voxel)的点云分类通常将点云体素化为三维网格,然后在体积表示上应用三维卷积神经网络进行形状分类。
⚪ VoxNet
VoxNet把点云转换为体积占用网格(Volumetric Occupancy Grid),并通过三维卷积神经网络进行分类。
⚪ OctNet
OctNet把点云转换为混合网格八叉树(Hybrid Grid-Octree)数据结构,八叉树中的每个叶子节点都存储着体素里包含的所有特征的pooled summary。
3. 基于点的点云分类
基于点(point)的点云分类使用神经网络学习每个点的特征。
⚪ PointNet
PointNet使用网络学习数据和特征的变换矩阵以对齐点云的变换不变性,引入最大池化以适应点云的无序性,并通过将点的特征与全局特征连接以感知全局语义信息。
⚪ PointNet++
PointNet++引入了Set Abstracion来进行局部信息聚合。该结构通过最远点采样选择部分点,通过Ball Query把点云划分成若干局部区域,并通过PointNet提取局部区域的点云特征。
⚪ PointCNN
PointCNN为点云特征提取设计了\(\mathcal{X}\)-卷积,能够考虑到点的形状,同时具有排序不变性。\(\mathcal{X}\)-卷积首先从输入点中学习\(\mathcal{X}\)-排序变换,随后对变换后的特征进行卷积。
⚪ DGCNN
DGCNN设计了一个EdgeConv模块。EdgeConv作用在动态构造的近邻图上,与从每个顶点发出的所有边相关联的边特征上进行以通道为单位的聚合操作。
\[\begin{aligned} e_{i j m}^{\prime}&=\operatorname{ReLU}\left(\boldsymbol{\theta}_{m} \cdot\left(\mathbf{x}_{j}-\mathbf{x}_{i}\right)+\boldsymbol{\phi}_{m} \cdot \mathbf{x}_{i}\right) \\ x_{i m}^{\prime}&=\max _{j:(i, j) \in \mathcal{E}} e_{i j m}^{\prime} \end{aligned}\]⚪ PCT
PCT把Transformer的编码器-解码器结构应用到点云处理。解码器根据任务不同其结构不同;编码器由输入嵌入模块(全连接层+PointNet++的Set Abstracion)与自注意力模块(Offset Attention)组成。