这两个网络都是斯坦福大学的一个团队提出的
我先先看一下pointnet的网络架构,这个网络比较经典,是2016年提出的:
PointNet 是一个专门用于点云数据处理的神经网络。它的设计目的是直接操作不规则的点云数据,而无需将点云数据转换为规则网格或体素。下面我们解析一下 PointNet 的网络结构:
-
输入层:输入是一个点云,每个点通常有三维坐标 ((x, y, z)),可能还包含颜色或法向量等特征。对于一个包含 (N) 个点的点云,这里输入是一个 (N \times 3) 的矩阵。
-
特征提取层:
- MLP 层:PointNet 使用多个多层感知机 (MLP) 层对每个点进行逐点特征提取,MLP 层通常会将每个点的特征从3维映射到更高维(如64或128维)。这是逐点操作,保持了点云的无序性。
- T-Net:为了处理点云的旋转、平移等变换,PointNet 引入了 T-Net,它学习一个近似的仿射变换矩阵,对输入点进行对齐。这一层使用了独立的网络结构来估计变换矩阵,然后通过矩阵乘法对点云进行变换。通常,PointNet有两个T-Net,一个对齐原始输入点,另一个对齐局部特征。
-
全局特征提取:
- 逐点 MLP:进一步应用 MLP 来提取高维局部特征,例如将每个点从 64 维映射到 1024 维。
- 全局最大池化:PointNet 使用全局最大池化来生成点云的全局特征。这一步将所有点的特征压缩为一个 1024 维的全局特征向量。最大池化操作可以确保网络不依赖于点的排列顺序,保证点云的无序性。
-
分类或分割层:
- 对于分类任务 ,全局特征直接用于全连接层以输出类别标签 。输出一个输出为
K维向量,K代表当前分类任务的种类个数,代表整个点云的类别概率分布。 - 对于分割任务 ,将全局特征复制并与逐点局部特征进行融合,再次通过 MLP 层细化特征,从而为每个点预测标签。输出为N*M为每个点预测类别标签的概率分布,用于逐点分割任务。
- 对于分类任务 ,全局特征直接用于全连接层以输出类别标签 。输出一个输出为
PointNet 的网络结构的设计原因
- 不变性 :点云的无序性意味着模型需要对点的排列不敏感。通过逐点处理和最大池化,PointNet 确保了这种排列不变性。
- 旋转和仿射不变性:T-Net 处理仿射变换,减轻了旋转、平移等变化对特征提取的影响。
- 全局信息与局部信息结合:全局最大池化提取了整个点云的全局特征,而逐点特征提供了局部细节。这种结合使得 PointNet 能够同时理解点云的整体结构和细节。
PointNet 的结构相对简单,但设计上有巧妙之处,使其既能保持点云特征的无序性,又能从中提取全局和局部信息,从而满足分类和分割任务的需求。
下面看pointnet++,2017年提出,网络结构如下:
PointNet++ 是 PointNet 的改进版本,专门用于捕捉点云数据中的局部特征,以提升其在物体检测、语义分割和场景理解等任务中的表现。PointNet++ 引入了分层结构,使网络能够从点云的不同尺度中提取更丰富的局部信息。
1. PointNet++ 设计背景
- 局部特征的重要性:PointNet 使用全局最大池化来提取特征,对点云的细节和局部结构关注不足。在复杂场景中,物体的细节(如形状和边缘)对识别和定位尤为重要。
- 尺度不变性:在点云中,物体的尺度可能会变化(比如,远处的物体在点云中点数更少),因此需要设计一个能捕捉多尺度特征的网络。
2. PointNet++ 的核心结构
PointNet++ 将点云处理分为多个层次,通过"采样-分组-特征提取"的过程,逐层提取局部特征,并在最后生成全局特征。每一层包含以下几个步骤:
-
采样(Sampling):每一层首先对点云进行采样,逐层减少点数。例如,可以使用"最远点采样"(Farthest Point Sampling, FPS)算法选择有代表性的点集。这些点集定义了新的"局部区域中心",用于下一级的特征提取。
-
分组(Grouping):对每一个采样点,从其邻近的点中提取局部区域(邻域)。可以基于距离(如欧氏距离)在采样点周围划分区域,这样可以捕捉到点云的局部结构。
-
特征提取(Feature Extraction with PointNet):在每一个局部区域内,应用 PointNet 网络提取该区域的特征。这一步会生成一个区域特征,通过最大池化操作总结每个局部区域的信息,提取高维特征向量。
3. 多尺度特征提取
为了让 PointNet++ 更具鲁棒性,网络使用了两种多尺度处理方式:
-
Multi-Scale Grouping (MSG):在同一层中,PointNet++ 使用不同的邻域尺度来提取多尺度特征。例如,一个采样点可以在小、中、大邻域内分别提取特征,从而获得不同尺度的信息。适用于点密度变化较大的情况。
-
Multi-Resolution Grouping (MRG):在逐层下采样的结构中,使用前一层特征分辨率较高的点云特征与当前层的特征结合,以确保在下采样过程中不会丢失重要的细节信息。适用于点云密度较为均匀的情况。
4. 分层结构的逐层汇总
PointNet++ 会重复多次"采样-分组-特征提取"操作,构建分层结构,逐层捕捉从局部到全局的信息。最后一层生成全局特征,可用于分类、分割等任务。对于分割任务,PointNet++ 会将全局特征和逐点特征相结合,细化输出。
5. PointNet++ 相较于 PointNet 的优势
- 更强的局部感知能力:PointNet++ 通过多层局部特征提取实现了对局部结构的深入理解,提升了分割和检测的准确性。
- 尺度不变性:PointNet++ 的多尺度机制增强了对不同尺度和密度点云的适应性。
- 适应性强:通过逐层采样和下采样机制,PointNet++ 能够在密度不均匀的点云中有效工作,适合于复杂场景中的目标检测和场景理解。
总结
PointNet++ 通过分层采样、分组和特征提取的方法增强了对点云局部结构和多尺度特征的理解。
总结二者
这两个网络比较早期, 可以看出他俩只能做全局分类,也就是最终是对所有点云分类,而分割的结果倒是可以知道点云的类别,但是无法像物体检测,检出边界,后面会和大家分享物体检测的网络,希望大家多多关注啊!