随着3D传感器(如激光雷达、深度相机)的广泛应用,点云数据已成为计算机视觉和机器人领域的重要数据形式。点云是一组在三维空间中具有 (x, y, z) 坐标的离散点的集合,用于表示物体的形状或场景。然而,由于点云的无序性、不规则性和稀疏性,传统的深度学习算法难以直接处理点云数据。
PointNet 是第一个能够直接对原始点云进行处理的深度学习模型,突破了点云数据处理的瓶颈,为点云深度学习领域开辟了新方向。
一、发展历史
在 PointNet 提出之前,处理点云数据的主要方法有:
-
体素化(Voxelization):将三维空间划分为规则的网格(体素),将点云映射到三维体素网格中,然后使用三维卷积神经网络(3D CNN)进行处理。缺点是计算量大,内存占用高,分辨率受限。
-
多视图方法(Multi-view):从多个角度渲染点云为二维图像,然后使用成熟的二维卷积神经网络进行处理。这种方法利用了图像处理的优势,但可能丢失重要的三维结构信息。
2017年,Charles R. Qi 等人提出了 PointNet 模型,直接对点云的三维坐标进行端到端的学习,解决了点云数据的无序性和排列不变性问题。这一工作发表在 CVPR 2017 上,论文标题为 PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation。
二、数学原理
挑战
点云数据具有以下特点,需要模型加以应对:
-
无序性:点云是无序的集合,点的排列顺序不应影响模型的输出。这意味着模型需要对点的排列具有不变性。
-
不变性:点云可能经历各种刚性变换(如旋转、平移),模型需要具备对这些变换的鲁棒性。
-
局部特征捕获:点云中的局部结构和邻域信息对于理解整体形状至关重要。
解决方案
PointNet 的核心思想是:
-
使用对称函数实现对点集的排列不变性:通过对所有点的特征应用一个对称函数(如最大值 Max Pooling),聚合为全局特征,消除点的排列顺序对结果的影响。
-
逐点特征提取与共享权重:对每个点使用共享参数的多层感知机(MLP)提取特征,捕获每个点的特征信息。
-
空间变换网络(T-Net):学习点云的空间变换矩阵,对输入和特征空间进行对齐,增强模型对刚性变换的鲁棒性。
网络结构
网络主要模块:
-
输入转换网络(Input T-Net):
-
学习一个 的变换矩阵,对输入点云进行对齐。
-
通过对点云的整体变换,减小姿态变化对模型的影响。
-
-
逐点特征提取:
-
使用共享参数的 MLP,将每个点的坐标映射到高维特征空间。
-
公式表示为:。
-
-
特征转换网络(Feature T-Net):
-
类似于输入转换网络,学习一个高维特征空间的对齐变换。
-
学习 的变换矩阵, 是特征维度。
-
-
全局特征聚合:
-
对所有点的特征使用对称函数(如最大池化)聚合,得到全局特征。
-
公式表示为:。
-
-
分类和分割模块:
-
分类任务:将全局特征输入全连接层,输出类别概率分布。
-
分割任务:将全局特征与逐点特征拼接,对每个点进行逐点分类。
-
数学公式
-
输入空间变换:
其中, 是通过输入 T-Net 学习得到的变换矩阵。
-
逐点特征提取:
-
特征空间变换:
其中, 是通过特征 T-Net 学习得到的变换矩阵。
-
全局特征聚合:
-
分类预测:
-
语义分割预测:
三、PointNet的工作原理形象解释
1. 逐点特征提取
想象每个点都是一个独立的个体,PointNet 对每个点施加相同的“函数”(共享的 MLP),就像给每个人做相同的测量,提取出各自的特征。这些特征包括该点的位置以及其在空间中的属性。
2. 特征聚合
将所有点的特征收集起来,通过最大池化的方式,找到各个维度上的最大值。这就像是在一群人中,找到每个特征(如身高、体重、年龄)的最大值。这一步提取了整个点云的全局特征,代表了整体的形状信息。
3. 不变性
由于使用了最大池化,对点的顺序和数量具有不变性。这意味着,无论点云如何排列,只要整体形状不变,模型的输出就不变。
4. 空间变换
PointNet 还学习了如何调整点云,使其对齐到一个标准的姿态。这类似于在比较不同物体时,先将它们摆正,以便进行公平的比较。
四、应用领域与场景
1. 3D物体分类
-
应用:对单个物体的点云进行分类,判断其所属的类别,如飞机、椅子、桌子等。
-
场景:自动驾驶中对路边物体的识别,仓库机器人对物品的分类。
2. 3D语义分割
-
应用:对场景中的每个点进行分类,标注其所属的类别,如建筑、道路、行人、车辆等。
-
场景:城市三维建模,环境感知,增强现实(AR)应用。