哈喽,大家好,我是Sunny。
在三维计算机视觉和点云处理领域,PointNet作为一项开创性的工作,为如何直接处理不规则的三维点集提供了全新的视角。在这篇博客中,我们将一起探讨PointNet论文的核心思想、关键技术以及它的优势和局限性。这篇文章不仅适合想深入了解三维点云处理的初学者,也为想要了解前沿技术的读者提供了一扇窗口。
1.引言
点云数据由一组在三维空间中不规则分布的点组成,每个点通常包含空间坐标(x, y, z)以及其他特征(如颜色、法向量等)。
三维物体的表示方法常见的有4种,Point Cloud
、Mesh
、Volumetric
、Projected View(RGBD)
。
- Point Cloud:点云,一般由激光雷达扫描周围环境,通过激光反射获取由点构成的周边环境。
- Mesh:网状,由三角形或正方形表征物体形状。
- Volumetric:由栅格组成物体,类似于方块世界中的物体。
- Projected View(RGBD):投影,通过RGBD相机获取图片深度,可以通过投影关系计算出物体表面点的位置。
点云在自动驾驶、无人机测绘、机器人视觉等领域具有广泛应用。然而,处理这些不规则的点集是一项技术挑战,因为传统的卷积神经网络(CNN)在处理规则的二维或三维网格数据(如图像或体素)时非常有效,但在处理点云数据时却捉襟见肘。
PointNet的出现改变了这一局面。PointNet直接在原始的点云上进行学习,无需将点云转换为体素或其他形式。这种方法开创了新的研究方向,成为点云处理领域的里程碑。
2. PointNet 的核心思想
2.1 点的不变性和对称函数
点云数据的一个关键特性是无序性,即点的排列顺序不影响整体形状。例如,一组点云的表示在打乱点的顺序后仍然应该保持不变。为了解决这一问题,PointNet引入了对称函数(如最大池化层)来聚合所有点的信息,确保模型对点的排列顺序不敏感。
对称函数天然与其输入的参数顺序无关。在数学中有很多这样的函数,例如:
f ( x 1 , x 2 , . . . , x n ) = m a x { x 1 , x 2 , . . . , x n } f(x_1,x_2,...,x_n) =max \{ x_1,x_2,...,x_n\} f(x1,x2,...,xn)=max{x1,x2,...,xn}
f ( x 1 , x 2 , . . . , x n ) = x 1 + x 2 + . . . + x n f(x_1,x_2,...,x_n) = x_1+x_2+...+x_n f(x1,x2,...,xn)=x1+x2+...+xn
在网络中使用最大池化进行局部和全局信息的聚合,取最大值是上面提到一种对称函数。
2.2 特征提取
PointNet的输入是一组点 { x 1 , x 2 , . . . , x n } \{x_1, x_2, ..., x_n\} {x1,x2,...,xn},其中每个点 x i x_i xi 是一个三维向量。网络的前几层是共享参数的多层感知机(MLP),这些层对每个点独立地进行特征提取。随后,使用全局最大池化层聚合所有点的特征,得到一个固定维度的全局特征向量。
这种设计使得PointNet能够从整个点集的分布中学习全局特征,捕捉点云的几何结构信息。
2.3 模型结构
模型结构图如下:
PointNet的整体架构可以分为三个部分:
- 输入变换(T-Net): 为了处理不同尺度和姿态的点云数据,PointNet首先通过一个小型网络对输入点云进行变换,使其对旋转和缩放等变换具有一定的鲁棒性。
- 特征提取(Feature Transformation): 通过一系列共享参数的MLP层对每个点进行特征提取,提取出局部和全局特征。
- 全局特征聚合和分类/分割: 通过全局最大池化将所有点的特征聚合成一个全局描述符,并最终用于分类或分割任务。
分类网络和分割网络共享大部分结构。
分类网络中,
n
n
n个点作为输入,每个点拥有
(
x
,
y
,
z
)
(x,y,z)
(x,y,z) 三个维度。将输入点云送入
i
n
p
u
t
t
r
a
n
s
f
o
r
m
input \space transform
input transform 用以对齐点云。接着送入一个共享权重的
M
L
P
MLP
MLP,输出维度
n
×
64
n × 64
n×64 。将特征送入
f
e
a
t
u
r
e
t
r
a
n
s
f
o
r
m
feature \space transform
feature transform ,对特征进行对齐。接着再送入一个共享权重的
M
L
P
MLP
MLP ,得到的输出维度是
n
×
1024
n × 1024
n×1024 。特征经过最大池化得到一个大小为
1
×
1024
1 ×1024
1×1024 的
g
l
o
b
a
l
f
e
a
t
u
r
e
global \space feature
global feature ,最后经过一个带
d
r
o
p
o
u
t
drop out
dropout层的
M
L
P
MLP
MLP,得到
k
k
k 个得分,分别代表
k
k
k个类别的得分,当前物体是得分最高的类别。
分割网络中,大部分结构与分类网络相同,不同的是需要知道每一个点云所属的类别,所以在经过 f e a t u r e t r a n s f o r m feature \space transform feature transform 之后 ,将在 n × 64 n×64 n×64 特征矩阵每一行的右侧拼接一个 1 × 1024 1 ×1024 1×1024 的 g l o b a l f e a t u r e global \space feature global feature 得到 n × 1088 n×1088 n×1088 大小的特征矩阵,接着经过两个 M L P MLP MLP 获得 n × m n×m n×m 的得分矩阵。其中 n n n 是点云数, m m m是类别数。
3. 实验结果
3.1 物体分类
在物体分类数据集(modelnet40 dataset
)的实验结果如下。
3.2 物体部件分割
在物体部件分割数据集(shapenet part dataset
)实验结果如下。
3.3 场景语义分割
在场景语义分割数据集(standard 3d semantic parsing dataset
)实验结果如下。
3.4 鲁棒性测试
在数据存在问题条件下的鲁棒性测试
左侧是数据缺失情况下的表现,中间是离群值增多的情况下的表现,右侧是独立添加高斯噪声到每个点上的表现。
3.5 模型大小及计算成本
4. PointNet的应用场景
PointNet被广泛应用于三维形状分类、点云语义分割和物体检测等任务。具体来说:
- 三维形状分类:PointNet能够有效地对点云表示的物体进行分类,例如区分汽车、飞机、桌子等不同类别。
- 点云语义分割:在室内场景或户外场景中,PointNet可以对每个点进行分类,如区分建筑物、地面、树木等。
- 场景理解:通过在三维场景中进行对象检测和实例分割,PointNet在自主驾驶和机器人领域展现出强大的应用潜力。
5. PointNet的优势
5.1 高效处理不规则数据
PointNet能够直接处理点云数据,无需将其转换为体素或图像,这避免了信息损失和高计算开销。相比之下,体素化方法不仅需要大量内存,还限制了点云的分辨率。
5.2 简洁优雅的设计
PointNet的结构简单明了,充分利用了对称函数和共享参数的优势。这种设计既保证了模型的表达能力,也减少了过拟合的风险。
5.3 模型的通用性
PointNet的设计具有很强的通用性,能够处理不同种类的三维任务,如分类、分割和回归。这使得PointNet成为一个通用的点云处理框架,能够在多种应用场景中推广。
6. PointNet的局限性
尽管PointNet在点云处理领域取得了重大突破,但它也存在一些局限性:
- 局部特征捕捉能力有限:PointNet通过全局最大池化聚合特征,这种方式虽然有效,但在捕捉局部几何细节时存在不足。后续的PointNet++通过引入层次化结构来改善这一问题。
- 对噪声和遮挡的鲁棒性不足:由于点云中的每个点都对结果产生影响,因此当点云存在较多噪声或遮挡时,PointNet的性能可能会下降。
7. PointNet的后续发展
PointNet的出现激发了大量基于点云的深度学习研究。随后的工作如PointNet++、DGCNN等都在PointNet的基础上进行了改进,使得模型在处理局部特征、层次化结构和图形关系上有了更好的表现。
7.1 PointNet++
PointNet++在PointNet的基础上引入了多尺度的特征提取机制,通过逐级下采样和聚合点云数据来捕捉局部特征,这使得模型在处理具有复杂结构的点云数据时表现更好。
7.2 动态图卷积神经网络(DGCNN)
DGCNN通过引入动态邻域图结构来捕捉点云中的局部拓扑关系,使得模型在处理局部几何信息上更为有效。
8. 总结
PointNet通过直接在点云上进行深度学习,成功突破了传统方法的限制,开辟了点云处理的新路径。它不仅展示了深度学习在三维数据处理中的巨大潜力,也为后续的研究工作提供了重要的参考。在点云处理领域,PointNet无疑是一个里程碑式的工作。
理解PointNet的思想和结构是迈入点云处理世界的第一步,希望这篇博客能够帮到你!
我是Sunny,你也可以叫我萨宁,一个热爱分享编程知识的程序员。我的昵称是Sunny不要停,寓意是美好的晴朗日子不要停下来,希望大家都能每天开开心心的。我的频道主要分享编程知识,生活,大学计算机学科学习,考研经验。目前有大学学习,考研相关的问题,欢迎关注我,同名公众号[Sunny不要停]可以找到我的联系方式。