论文链接:Deep Learning for 3D Point Clouds: A Survey
摘要
点云学习由于其在计算机视觉、自动驾驶、机器人等领域的广泛应用,近年来受到越来越多的关注。深度学习作为人工智能中的一种主要技术,已成功地应用于解决各种二维视觉问题。然而,由于使用深度神经网络处理点云所面临的独特挑战,点云的深度学习仍处于初级阶段。近年来,基于点云的深度学习更是蓬勃发展,人们提出了许多方法来解决这一领域的不同问题。为了促进未来的研究,本文综述了点云深度学习方法的最新进展。包括三维形状分类、三维目标检测与跟踪、三维点云分割三大任务。它还提供了几个公开数据集的比较结果,以及有见地的观察和启发未来的研究方向
关键词 - 深度学习,点云,三维数据,形状分类,目标检测,目标跟踪,场景流,实例分割,语义分割,场景理解。
1. 介绍
随着3D采集技术的快速发展,3D传感器变得越来越可用,价格也越来越便宜,包括各种类型的3D扫描仪、激光雷达和RGB-D相机(如Kinect、RealSense和Apple depth相机)。这些传感器采集的三维数据可以提供丰富的几何、形状和尺度信息。与二维图像互补,三维数据提供了一个更好地了解机器周围环境的机会。三维数据在不同领域有着广泛的应用,包括自动驾驶、机器人、遥感、医疗和设计行业。
三维数据通常可以用不同的形式表示,包括深度图像、点云、Mesh和体素网格。点云表示作为一种常用的表示形式,在三维空间中保留了原始的几何信息。因此,它是许多场景理解相关应用(如自动驾驶和机器人)的首选表示形式。近年来,深度学习技术已成为计算机视觉、语音识别、自然语言处理、生物信息学等领域的研究热点。然而,3D点云的深度学习依然面临着几个重要的挑战,如数据集规模小、三维点云的高维性和非结构化等。在此基础上,本文重点分析了用于处理三维点云的深度学习方法。
点云的深度学习越来越受到人们的关注,特别是近五年来。还发布了一些公开可用的数据集,如ModelNet、ShapeNet、ScanNet、Semantic3D和KITTI数据集。这些数据集进一步推动了三维深度学习的研究,越来越多的方法被提出,用于解决与点云相处理相关的各种问题,包括三维形状分类、三维目标检测与跟踪、三维点云分割等。本文是第一篇专门针对点云深度学习方法的论文。此外,本文还全面介绍了分类、检测、跟踪、分割等应用。现有三维点云深度学习方法的分类如图1所示。
与现有文献相比,本文的主要贡献如下:
- 据我们所知,这是第一篇全面介绍与点云相关的几个重要任务(包括三维形状分类、三维目标检测与跟踪、三维点云分割)的深度学习方法的调查论文。
- 与现有文献不同,我们特别关注三维点云的深度学习方法,而不是所有类型的三维数据。
- 本文介绍了点云深度学习的最新进展。因此,它为读者提供了最先进的方法。
- 提供了几种公开数据集上现有方法的综合比较(如表1,2, 3,4),并提供了简要的总结和有见地的讨论。
本文的结构如下:第二节回顾了三维形状分类的方法,第三节概述了现有的三维目标检测和跟踪方法,第四节介绍了点云分割的方法,包括语义分割、实例分割和部分分割。最后,第五节对论文进行了总结。我们还提供了定期更新的项目页面:https://github.com/QingyongHu/SoTA-Point-Cloud
2. 三维形状分类
现有的方法通常先学习每个点的嵌入,然后使用聚集方法从整个点云中提取全局形状嵌入,最后通过几个全连接层来实现形状分类。根据特征学习的方法,现有的三维形状分类方法可以分为基于投影的网络和基于点的网络。一些里程碑的方法如图2所示:
基于投影的方法首先将一个非结构化点云投影到一个中间正则表示中,然后利用2D或3D卷积来实现形状分类。相比之下,基于点的方法直接作用于原始点云,而无需任何体素化或投影。基于点的方法没有引入显式的信息丢失,并且越来越流行。本文主要研究基于点的网络,但为了文章的完整性,也涉及一些基于投影的网络。
2.1 基于投影的网络
这些方法将三维点云投影到不同的表示方式(如多视图、体素表示)中,用于特征学习和形状分类。
2.1.1 多视图表示
这些方法首先将三维物体投影到多个视图中,提取相应的视图特征,然后融合这些特征进行精确的物体识别。如何将多个视图特征进行聚合为一个有判别性的全局表示是一个关键的挑战。MVCNN是一项开创性的工作,它将多视图特征简单地聚合到一个全局描述符中。但是,最大池仅保留特定视图中的最大元素,从而导致信息丢失。MHBN通过协调双线性池来集成局部卷积特征,从而产生一个紧凑的全局描述符。Yang等人[17]首先利用一组视图上的相互关系(如区域-区域关系,视图-视图关系)来提出一个关系网络,然后聚合这些视图以获得有判别性的三维对象表示。此外,为了提高识别精度,还提出了其他几种方法[18][19][20][21]。
2.1.2 体素化表示
早期的方法通常将三维卷积神经网络(CNN)运用于三维点云的体素表示上。Daniel等人[22]介绍了一个称为VoxNet的体素占据网络,以实现稳健的三维物体识别。Wu等人[6]提出了一种基于卷积深度信念的三维形状网络,用于从各种三维形状中学习点的分布。三维形状通常用体素网格上二元变量的概率分布来表示。尽管该方法已经取得了令人鼓舞的性能,但由于计算和内存占用随着分辨率呈指数增长,这些方法无法很好地扩展到密集的三维数据。为此,提出了一种层次化、紧凑的图结构(如八叉树)来降低这些方法的计算和存储开销。OctNet [23]首先使用混合网格八叉树结构分层地划分点云,该结构利用几个浅八叉树结构来表示三维场景,利用bit来对八叉树结构进行有效编码,并用简单的算法对每个体素的特征向量进行索引。Wang [24]等人提出了一种基于八叉树的CNN用于三维形状分类方法,将叶子节点八分角点采样的法向量作为该三维模型的平均法向量输入到网络中,并将3D-CNN应用到三维形状曲面所占用的八分角点上。与基于密集输入网络的网络相比,OctNet对高分辨率点云的内存和运行时间要求要少得多。Le [25]提出了一种称为点网格的混合网络,它集成了点和网格的表示,以实现高效的点云处理。在每个嵌入的体素网格内采样固定数量的点,这使得网络可以通过使用三维卷积来提取几何细节。
2.2 基于点的网络
根据用于每个点特征学习的网络结构,该类方法可分为点式MLP、卷积式、图式、数据索引式等其他典型网络。
2.2.1 点式MLP网络
该方法使用多个多层感知机(MLP)独立地对每个点建模,然后使用对称函数聚合全局特征,如图3所示。这些网络可以实现三维无序点云的置换不变性。然而,三维点之间的几何关系并没有得到充分的考虑。
作为一个开创性的工作,PointNet [5]使用多个MLP学习点特征,用Max pooling层提取全局形状特征,并使用多个MLP层获得分类分数。Zaheer等人[26]从理论上证明了实现置换不变性的关键是总结所有表示并应用非线性变换。他们还设计了一个基础架构DeepSets,用于各种应用,包括形状分类。
由于PointNet中每个点的特征都是独立学习的,因此无法捕获点之间的局部结构信息。因此,Qi等人[27]提出了一种层次网络PointNet++来从每个点的领域捕获精细的几何结构。作为PointNet++层次结构的核心,其提取层由三层组成:采样层、分组层和PointNet层。通过叠加多个提取层,PointNet++可以从局部几何结构中学习特征,并逐层提取局部特征。
因为其简单性和很强的表示能力,许多网络均基于PointNet。Achlioptas等人[28]引入了一个深度自动编码器网络来学习点云表示。它的编码器遵循PointNet的设计,通过五个一维卷积层、一个ReLU非线性激活层、batch normalization和max-pooling操作来独立地学习点特征。在Point Attention Transformers (PATs)中,每个点由其自身的绝对位置和相对于其相邻点的相对位置表示。然后,Group Shuffle Attention (GSA)被用于捕获点之间的关系,建立一个置换不变、可微、可训练的端到端的Gumbel Subset Sampling (GSS)层来学习层次特征。Mo-Net的结构与PointNet类似,但是它需要一组有限的时间作为其网络的输入。PointWeb建立在PointNet++基础之上,并使用Adaptive Feature Adjustment (AFA)来获取局部领域的上下文信息来改进点特征。Duan等人[32]提出了一个结构关系网络Structural Relational Network (SRN),利用MLP学习不同局部结构之间的关系特征。Lin等人[33]通过为PointNet学习的输入空间和函数空间构建一个查找表,加速推理过程。其在ModelNet和ShapeNet数据集上的推理时间超过PointNet 32倍。SRINet [34]首先投影一个点云以获得旋转不变的表示,然后利用基于PointNet提取全局特征,并利用基于图的聚集来提取局部特征。
2.2.2 基于卷积的网络
与二维网格结构(如图像)中定义的核相比,三维点云的卷积核由于点云的不规则性而难以设计。根据卷积核的类型,目前的三维卷积网络可以分为连续卷积网络和离散卷积网络,如图4所示。
3D连续卷积网络
该方法定义了连续空间上的卷积核,其中相邻点的权重与其相对于中心点的空间分布有关。
三维卷积可以解释为给定子集上的加权和,MLP是学习权重的简单方法。作为RS-CNN的核心层,RS-Conv以某中心点的领域点的局部子集作为输入,通过MLP学习点在局部子集中到从低级别关系(如欧几里德距离和相对位置)到高级别关系。在[36]中,核元素是在一个单位球体中随机选择的,然后利用基于MLP的连续函数建立核元素位置与点云之间的关系。在DensePoint中,卷积被定义为带有非线性激活器的单层感知机Single-Layer Perceptron(SLP),特征是通过连接所有先前层的特征来学习的,以充分利用上下文信息。
一些方法也使用现有的算法来执行卷积。在PointConv中,卷积被定义为关于重要抽样的连续3D卷积的Monta Carlo估计。卷积核由加权函数(用MLP学习)和密度函数(用核密度估计和MLP层学习)组成。为了提高存储和计算效率,将三维卷积进一步简化为矩阵和二维卷积两种运算。在相同的参数设置下,其内存消耗可以减少约64倍。在MCCNN中,卷积被认为是一个依赖于样本密度函数的蒙特卡罗估估计过程(用MLP实现),并利用泊松盘采样构造点云层次结构。该卷积算子可用于两种或多种采样方法之间的卷积,并可处理不同的采样密度。在SpiderCNN [40]中,SpiderConv将卷积定义为阶跃函数与k近邻上定义的Taylor展开的乘积。阶跃函数通过对局部测地信息进行编码来捕获粗糙的几何信息,泰勒展开通过在立方体顶点处插入任意值来捕获丰富的局部几何变化。此外,还提出了一种基于径向基函数的三维点云卷积网络PCNN [41]。Thomas等人[42]利用一组可学习核点,提出了三维点云的刚性和可变形核点卷积(KPConv)算子。
针对三维卷积网络面临的旋转不变问题,提出了几种解决方法。Esteves等人[43]提出了一种以多值球面函数为输入的三维球面卷积神经网络(spheral CNN)来学习三维形状的旋转不变表示,局部卷积滤波器是通过在球面调和域中参数化带锚定点的谱得到的。张量场网络[44]将点卷积运算定义为可学习的径向函数和球谐函数的乘积,球谐函数局部等价于点的三维旋转、平移和置换。文献[45]中的卷积是基于球面互相关定义的,并用广义快速傅立叶变换(FFT)算法实现。SPHNet [46]以PCNN为基础,在体函数卷积过程中引入球谐核,实现了旋转不变性。ConvPoint [47]将卷积核分为空间和特征部分,空间部分的位置是从一个单位球体中随机选择的,权重函数是通过一个简单的MLP来学习的。
为了加快计算速度,Flex-Convolution [48]将卷积核的权值定义为k个最近邻上的标准标量积,使用CUDA可以加快计算速度。实验结果表明,该算法在参数少、内存消耗低的小数据集上具有较好的性能。
3D离散卷积网络
这些方法在规则网格上定义卷积核,其相邻点的权重以其相对于中心点的偏移量有关。
Hua等人[49]提将非均匀三维点云转化为均匀网格,并在每个网格上定义卷积核。与二维卷积(为每个像素分配一个权重)不同,所提出的三维核为落入同一个网格的所有点分配相同的权重。对于给定的点,位于同一网格上的所有相邻点的平均特征都是从上一层计算出来的。然后,对所有网格的平均特征进行加权求和,得到当前层的输出。Lei等人[50]定义了一个球面卷积核,将一个三维球面邻域划分为多个,并将每个体积箱与一个可学习的加权矩阵相关联。一个点的球面卷积核的输出是由其相邻点的加权激活值均值的非线性激活决定的。在 GeoConv [51]中,点与其相邻点之间的几何关系是基于六个基显式建模的。边缘特征沿基的每个方向由可学习矩阵根据相邻点的基独立加权。然后,根据给定点及其相邻点形成的角度聚集这些方向的相关特征。对于给定点,其在当前层的特征被定义为给定点的特征与其在上一层的相邻边缘特征之和。PointCNN [52]通过一个X-conv实现置换不变性转换(通过MLP实现)。Mao等人[53]将点特征插值到相邻的离散卷积核权坐标,提出了一种插值卷积算子InterpConv来度量输入点云与核权坐标之间的几何关系。Zhang等人[54]提出了一种利用RICon