摘要
点云学习最近因其在计算机视觉、自动驾驶和机器人技术等许多领域的广泛应用而受到越来越多的关注。作为人工智能的主导技术,深度学习已成功用于解决各种二维视觉问题。然而,由于使用深度神经网络处理点云所面临的独特挑战,点云的深度学习仍处于起步阶段。最近,点云的深度学习变得更加蓬勃发展,提出了许多方法来解决该领域的不同问题。为了激发未来的研究,本文全面回顾了点云深度学习方法的最新进展。它涵盖了三个主要任务,包括3D形状分类、3D目标检测和跟踪以及3D点云分割。它还展示了几个公开可用的数据集的比较结果,以及有见地的观察和启发未来的研究方向。
关键词:深度学习、点云、3D数据、形状分类、形状检索、目标检测、目标跟踪、场景流、实例分割、语义分割、部分分割。
1 介绍
随着3D采集技术的快速发展,3D传感器越来越多,价格也越来越便宜,包括各种类型的3D扫描仪、LiDAR和RGB-D相机(如Kinect、RealSense和Apple深度相机)[1]。这些传感器获取的3D数据可以提供丰富的几何、形状和比例信息[2]、[3]。与2D图像相辅相成,3D数据为更好地了解机器周围环境提供了机会。3D数据在不同领域有许多应用,包括自动驾驶、机器人、遥感和医疗[4]。
3D数据通常可以用不同的格式表示,包括深度图像、点云、网格和体积网格。作为一种常用的格式,点云表示将原始几何信息保留在3D空间中,无需任何离散化。因此,它是许多场景理解相关应用(例如自动驾驶和机器人技术)的首选。最近,深度学习技术主导了许多研究领域,例如计算机视觉、语音识别和自然语言处理。然而,3D点云的深度学习仍然面临几个重大挑战[5],例如数据集规模小、3D 点云的高维度和非结构化性质。在此基础上,本文重点分析了已经用于处理3D点云的深度学习方法。点云上的深度学习越来越受到关注,尤其是在过去五年中。还发布了几个公开可用的数据集,例如ModelNet[6]、ScanObjectNN[7]、ShapeNet[8]、PartNet[9]、S3DIS[10]、ScanNet[11]、Semantic3D[12]、ApolloCar3D[13]、和 KITTI Vision Benchmark Suite[14]、[15]。这些数据集进一步推动了对3D点云深度学习的研究,提出了越来越多的方法来解决与点云处理相关的各种问题,包括3D形状分类、3D对象检测和跟踪、3D点云分割、3D点云配准、6-DOF位姿估计和3D重建[16]、[17]、[18]。也很少有关于3D数据的深度学习调查,例如[19]、[20]、[21]、[22]。然而,我们的论文是第一篇专门关注点云理解的深度学习方法。现有的3D点云深度学习方法的分类如图1所示。
与现有文献相比,这项工作的主要贡献可以总结如下:
1)据我们所知,这是第一篇全面涵盖深度学习方法的调查论文,用于几个重要的点云理解任务,包括3D形状分类、3D目标检测和跟踪以及3D点云分割。
2)与现有的综述[19]、[20]不同,我们特别关注3D点云的深度学习方法,而不是所有类型的3D数据。
3)本文涵盖了点云深度学习的最新进展。因此,它为读者提供了最先进的方法。
4)对几种公开数据集的现有方法进行了综合比较(如表2、3、4、5),并给出了简要总结和深入讨论。
本文的结构如下。第2节介绍了各自任务的数据集和评估指标。第3节回顾了三维形状分类的方法。第4节概述了现有的三维目标检测和跟踪方法。第5节回顾了点云分割的方法,包括语义分割、实例分割和部分分割。最后,第6节总结了本文。我们还提供定期更新的项目页面:https://github.com/QingyongHu/SoTA-Point-Cloud.
图1、3D点云的深度学习方法分类。
2 背景
2.1 数据集
已经收集了大量数据集来评估深度学习算法在不同3D点云应用中的性能。表1列出了一些用于3D形状分类、3D目标检测和跟踪以及3D点云分割的典型数据集。特别是,还总结了这些数据集的属性。
对于3D形状分类,有两种类型的数据集:合成数据集[6]、[8]和真实世界数据集[7]、[11]。合成数据集中的目标是完整的,没有任何遮挡和背景。相比之下,现实世界数据集中的目标被不同级别的遮挡,一些目标被背景噪声污染。
对于3D目标检测和跟踪,有两种类型的数据集:室内场景[11]、[25]和室外城市场景[14]、[28]、[30]、[31]。室内数据集中的点云要么从密集深度图转换而来,要么从3D网格中采样。户外城市数据集专为自动驾驶而设计,其中物体在空间上分离良好,这些点云很稀疏。
对于3D点云分割,这些数据集由不同类型的传感器获取,包括移动激光扫描仪 (MLS)[15]、[34]、[36]、航空激光扫描仪(ALS)[33]、[38]、静态地面激光扫描仪 (TLS) [12]、RGBD相机[11] 和其他3D扫描仪 [10]。这些数据集可用于开发各种挑战的算法,包括类似的干扰物、形状不完整和类别不平衡。
2.2 评价指标
已经提出了不同的评估指标来测试这些方法用于各种点云理解任务。对于3D形状分类,总体准确度(OA)和平均类别准确度(mAcc)是最常用的性能标准。“OA”代表所有测试实例的平均精度,“mAcc”代表所有形状类别的平均精度。对于3D目标检测,平均精度(AP)是最常用的标准。它被计算为精确召回曲线下的面积。
P
r
e
c
i
s
i
o
n
Precision
Precision和
S
u
c
c
e
s
s
Success
Success通常用于评估3D单个目标跟踪的整体性能。Average Multi-Object Tracking Accuracy(AMOTA) 和Average Multi-Object Tracking Precision (AMOTP) 是评估3D多目标跟踪最常用的标准。对于3D点云分割,OA、mean Intersection over Union(mIoU) 和mean class Accuracy (mAcc) [10]、[12]、[15]、[36]、[37] 是最常用的性能评估标准。特别是,平均精度 (mAP) [39] 也用于3D点云的实例分割。
表1:用于3D形状分类、3D目标检测和跟踪以及3D点云分割的现有数据集的摘要。用于评估的类数和带注释的类数(显示在括号中)
3 3D形状分类
3.1 基于多视图的方法
这些方法首先将3D形状投影到多个视图中并提取视图特征,然后融合这些特征以进行准确的形状分类。对于这些方法来说,如何将多个视图特征聚合成一个有区别的全局表示是一个关键的挑战。
MVCNN [40] 是一项开创性的工作,它简单地将多视图特征最大化为一个全局描述符。然而,max-pooling只保留特定视图中的最大元素,导致信息丢失。MHBN[41]通过协调双线性池化集成局部卷积特征以产生紧凑的全局描述符。杨等人[42]首先利用关系网络来利用一组视图上的相互关系(例如,区域-区域关系和视图-视图关系),然后聚合这些视图以获得有区别的3D目标表示。此外,还提出了其他几种方法[43]、[44]、[45]、[46]来提高识别精度。与以前的方法不同,Wei等人[47]通过将多个视图视为grpah节点,在View-GCN中使用了有向图。然后将由局部图卷积、非局部消息传递和选择性视图采样组成的核心层应用于所构建的图。最终使用所有级别的最大池化节点特征的连接来形成全局形状描述符。
3.2 基于体积的方法
这些方法通常将点云体素化为3D网格,然后在体积表示上应用3D卷积神经网络(CNN)进行形状分类。
Maturana等人[48]引入了一个称为VoxNet的体积占用网络来实现稳健的3D目标识别。Wu等人[6]提出了一种基于卷积深度信念的3D ShapeNets来学习来自各种3D形状的点的分布(由体素网格上的二进制变量的概率分布表示)。吴等人[6]提出了一种基于卷积深度信念的3D ShapeNets来学习来自各种3D形状的点的分布(由体素网格上的二元变量的概率分布表示)。虽然已经取得了令人鼓舞的性能,但这些方法无法很好地扩展到密集的3D数据,因为计算和内存占用随着分辨率的增加呈立方增长。
为此,引入了分层和紧凑的结构(例如八叉树)来减少这些方法的计算和存储成本。OctNet[49]首先使用混合网格八叉树结构对点云进行分层划分,该结构表示沿规则网格的多个浅八叉树的场景。采用位串表示法对八叉树结构进行有效编码,并通过简单算法对每个体素的特征向量进行索引。 Wang等人[50]提出了一种基于八叉树的CNN三维形状分类方法。以最细的叶八分区中采样的3D模型,这个模型的平均法向量被输入到网络中,3D-CNN应用于3D形状表面占据的八分之一。与基于密集输入网格的基线网络相比,OctNet对高分辨率点云所需的内存和运行时间要少得多。Le等人[51]提出了一个名为PointGrid的混合网络,它集成了点和网格表示,以实现高效的点云处理。在每个嵌入体积网格单元内采样恒定数量的点,这允许网络通过使用3D卷积来提取几何特征。Ben-Shabat等人[52]将输入点云转换为3D网格,并进一步通过3D修正Fisher Vector (3DmFV)方法表示,然后通过常规CNN架构学习全局表示。
图2、最相关的基于深度学习的3D形状分类方法的时序概述。
3.3 基于点的方法
根据用于每个点的特征学习的网络结构,这类方法可以分为逐点MLP、基于卷积、基于图、基于分层数据结构的方法和其他典型方法。
3.3.1 逐点MLP方法
这些方法用几个共享的多层感知(MLP)独立地对每个点建模,然后使用对称聚合函数聚合一个全局特征,如图3所示。
图3、一种轻量级的PointNet架构。n表示输入点的数量,M表示每个点的学习特征的维数
用于2D图像的典型深度学习方法由于其固有的数据不规则性而不能直接应用于3D点云。作为一项开创性的工作,PointNet[5]直接以点云为输入,用一个对称函数实现置换不变性。具体来说,PointNet通过几个MLP层独立学习逐点特征,并通过最大池化层提取全局特征。Deep sets[53]通过对所有表示求和并应用非线性变换来实现置换不变性。由于PointNet[5]中每个点的特征都是独立学习的,因此无法捕获点之间的局部结构信息。因此,Qi等人[54]提出了一种分层网络PointNet++来从每个点的邻域中捕获精细的几何结构。作为PointNet++层次结构的核心,它的集合抽象层由三层组成:采样层、分组层和基于PointNet的学习层。PointNet++通过堆叠几个集合抽象层次,从一个局部几何结构中学习特征,并逐层抽象局部特征。
由于它的简单性和强大的表示能力,许多网络都是基于PointNet开发的[5]。Mo-Net[55]的架构类似于PointNet[5],但它以有限的矩作为输入。Point Attention Transformers(PATs)[56]通过其自身的绝对位置和相对于其相邻的相对位置来表示每个点,并通过MLPs学习高维特征。然后,Group Shuffle Attention (GSA)来捕获点之间的关系,并开发置换不变、可微分和可训练的端到端Gumbel Subset Sampling(GSS)层来学习分层特征。基于PointNet++[54],PointWeb[57]利用局部邻域的上下文,通过Adaptive Feature Adjustment(AFA)来改善点特征。Duan等人[58]提出了一种Structural Relational Network(SRN)来学习不同局部结构之间的结构关系特征使用MLP。Lin等人[59]通过为PointNet学习的输入和函数空间构建查找表来加速推理过程。在ModelNet和ShapeNet数据集上的推理时间比PointNet在中型机器上加快了1.5ms和32倍。SRINet[60]首先投影点云以获得旋转不变表示,然后利用基于点网的主干提取全局特征,并利用基于图的聚合提取局部特征。在PointASNL中,Yan等人[61]利用Adaptive Sampling(AS)模块来自适应调整Furthest Point Sampling(FPS)算法所采样的点的坐标和特征,并提出一个local-non-local(L-NL)模块来捕捉这些采样点的局部和远距离依赖性。
3.3.2 基于卷积的方法
与在2D网格结构(例如,图像)上定义的核相比,由于点云的不规则性,用于3D点云的卷积核很难设计。根据卷积核的类型,当前的3D卷积方法可以分为连续和离散卷积方法,如图4所示。
三维连续卷积方法。 这些方法在连续空间上定义卷积核,其中相邻点的权重与相对于中心点的空间分布相关。
图4、点的局部邻域的连续和离散卷积的图示。(a)表示以点
p
p
p为中心的局部邻域
q
i
q_{i}
qi?;(b)和?分别表示3D连续和离散卷积
3D卷积可以解释为给定子集上的加权和。作为RS-CNN[62]的核心层,RSConv以某一点周围的点的局部子集作为其输入,通过学习局部子集中的点之间从低级关系(如欧几里德距离和相对位置)到高级关系的映射,使用MLP实现卷积。在[63]中,在单位球中随机选择核元素。然后使用基于MLP的连续函数来建立核元素的位置和点云之间的关系。在DensePoint[64]中,卷积被定义为具有非线性激活的SingleLayer Perceptron(SLP)。通过连接来自所有先前层的特征以充分利用上下文信息来学习特征。Thomas等人[65]提出了刚性和可变形Kernel Point Convolution(KPConv)算子,用于使用一组可学习的核点的3D点云。ConvPoint[66]将卷积核分为空间部分和特征部分。空间部分的位置从单位球中随机选择,并且通过简单的MLP学习加权函数。
一些方法还使用现有算法来执行卷积。在PointConv[67]中,卷积被定义为关于重要性采样的连续3D卷积的Monte Carlo估计。卷积核由加权函数(通过MLP层学习)和密度函数(通过核化密度估计和MLP层学习)组成。为了提高存储和计算效率,3D卷积被进一步简化为两个操作:矩阵乘法和2D卷积。在相同的参数设置下,其内存消耗可以减少64倍左右。在MCCNN[68]中,卷积被认为是一个依赖于样本密度函数的Monte Carlo估计过程(通过MLP实现)。泊松盘采样然后被用于构建点云层次。此卷积运算符可用于在两种或多种采样方法之间执行卷积,并且可以处理不同的采样密度。在SpiderCNN[69]中,SpiderConv提出将卷积定义为阶跃函数和定义在k个最近邻上的泰勒展开的乘积。阶跃函数通过对局部测地距离进行编码来捕获粗略的几何形状,而泰勒展开通过在立方体的顶点处插值任意值来捕获内在的局部几何变化。此外,卷积网络PCNN[70]也提出了三维点云的基础上径向基函数。
已经提出了几种方法来解决3D卷积网络所面临的旋转等变问题。Esteves等人[71]提出了3D球形CNN来学习3D形状的旋转等变表示,其采用多值球形函数作为其输入。通过用球谐域中的锚点参数化频谱来获得局部卷积滤波器。张量场网络[72]被提议将点卷积运算定义为可学习的径向函数和球谐函数的乘积,其对于3D旋转、平移和置换是局部等变的。[73]中的卷积是基于球形互相关定义的,并使用广义快速傅立叶变换(FFT)算法实施。基于PCNN,SPHNet[74]通过在体积函数的卷积过程中引入球谐核来实现旋转不变性。
为了加快计算速度,Flex-Convolution[75]将卷积核的权重定义为k近邻上的标准标量积,可以使用CUDA进行加速。实验结果表明,该算法在参数较少、内存消耗较低的小数据集上具有良好的性能。
三维离散卷积方法。 这些方法在规则网格上定义卷积核,其中相邻点的权重与相对于中心点的偏移有关。
Hua等人[76]将非均匀3D点云转换为均匀网格,并在每个网格上定义卷积核。 这个提议的3D内核为落入同一网格的所有点分配相同的权重。 对于给定的点,位于同一网格上的所有相邻点的平均特征都是从上一层计算出来的。 然后,对所有网格的平均特征进行加权和求和,以生成当前层的输出。 Lei等人[77]定义了一个球形卷积核,将一个3D球形相邻区域划分为多个体积单元,并将每个单元与一个可学习的加权矩阵相关联。 一个点的球形卷积核的输出由其相邻点的加权激活值的平均值的非线性激活来确定。在GeoConv[78]中,一个点与其相邻点之间的几何关系是基于六个基显式建模的。沿着基的每个方向的边缘特征由方向相关的可学习矩阵独立加权。然后根据给定点和它的相邻点形成的角度聚集这些方向相关的特征。对于给定点,其在当前图层的特征被定义为给定点的特征与其在前一图层的相邻边特征的总和。PointCNN[79]通过χ-conv转换(通过MLP实现)将输入点转换为可能的规范顺序,然后对转换后的特征应用典型的卷积算子。通过将点特征插值到相邻的离散卷积核权重坐标,Mao等人[80]提出了插值卷积算子InterpConv,以测量输入点云和核权重坐标之间的几何关系。张等人[81]提出了一种RIConv算子来实现旋转不变性,它将low-level旋转不变的几何特征作为输入,然后通过简单的binning方法将卷积转换为一维。A-CNN[82]通过相对于查询点的每个环上的核的大小,然后循环相邻点的阵列来定义环形卷积,并学习局部子集中相邻点之间的关系。
为了降低3D CNN的计算和存储成本,Kumawat等人[83]提出了一种基于3DShort Term Fourier Transform(STFT)的Rectified Local Phase Volume(ReLPV)块来提取3D局部邻域中的相位,这显著减少了参数数量。 在SFCNN[84]中,点云被投影到具有对齐的球面坐标的正二十面体网格上。然后,通过卷积最大池化卷积结构,对球面晶格顶点及其邻域连接的特征进行卷积。SFCNN能够抵抗旋转和扰动。
|