本文主要是介绍【综述翻译:第二章】Deep Learning for 3D Point Clouds: A Survey,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Deep Learning for 3D Point Clouds: A Survey为国防科技大学发布的综述文章,这里只翻译第二章。
下载链接:https://arxiv.org/abs/1912.12033;
仓库链接:https://github.com/QingyongHu/SoTA-Point-Cloud
2 3D形状分类
这些方法通常首先学习每个点的嵌入,然后使用聚合方法从整个点云中提取全局形状嵌入。最终,通过几个完全连接的层实现了分类。基于在每个点上执行特征学习的方式,现有的3D形状分类方法可以分为基于投影的网络和基于点的网络。图2说明了几种里程碑方法。
图2:3D形状分类网络的时间顺序概述。
基于投影的方法首先将非结构化的点云投影到中间的规则表示中,然后利用完善的2D或3D卷积实现形状分类。相反,基于点的方法可直接在原始点云上运行,而无需任何体素化或投影。基于点的方法不会造成明显的信息丢失,并且越来越受欢迎。 文中,作者主要关注基于点的网络,但为了完整起见,也很少包含基于投影的网络。
2.1基于投影的网络
这些方法将3D点云投影到不同的表示形式(例如多视图,体积表示)中,用于特征学习和形状分类。
2.1.1多视图表示
这些方法首先将3D对象投影到多个视图中,并提取相应的按视图方向的特征,然后融合这些特征以进行准确的对象识别。 如何将多个基于视图的特征聚合到一个可区分的全局表示中是一个关键挑战。 MVCNN [15]是一项开创性的工作,它只是将多视图特征最大池化为一个全局描述符。 但是,最大池化只能保留特定视图中的最大元素,会导致信息丢失。 MHBN [16]通过协调双线性池化整合了局部卷积特征,以生成紧凑的全局描述符。 杨等[17]首先利用关系网络来利用一组视图之间的相互关系(例如,区域-区域关系和视图-视图关系),然后将这些视图进行聚合以获得具有区别性的3D对象表示。 另外,还提出了其他几种方法[18],[19],[20],[21]以提高识别精度。
2.1.2体素表示
早期方法通常在3D点云的体素表示基础上应用3D卷积神经网络(CNN)。 Daniel等[22]介绍了一种称为VoxNet的体积占用网络,以实现可靠的3D对象识别。 Wu等[6]提出了一种基于卷积深度信念的3D ShapeNet,以学习各种3D形状中点的分布。 3D形状通常由体素网格上二进制变量的概率分布表示。尽管已经实现了令人鼓舞的性能,但是这些方法无法很好地应用到密集的3D数据,因为计算和内存占用量会随着分辨率的增加而三次增长。为此,引入了分层而紧凑的图结构(例如八叉树)以减少这些方法的计算和存储成本。 OctNet [23]首先使用混合网格八叉树结构对点云进行分层划分,该结构代表沿规则网格具有几个浅八叉树的场景。使用位串表示对octree的结构进行有效编码,并通过简单的算法对每个体素的特征向量进行索引。 Wang等[24]提出了一种基于Octree的CNN用于3D形状分类。在最细的叶子八分位数中采样的3D模型的平均法线向量被馈送到网络中,并将3D-CNN应用于3D形状表面所占据的八分位数。与基于密集输入网格的基准网络相比,OctNet对于高分辨率点云所需的内存和运行时间要少得多。 Le等[25]提出了一种称为PointGrid的混合网络,该网络集成了点和网格表示,以进行有效的点云处理。在每个嵌入的体素网格单元中采样恒定数量的点,这使网络可以使用3D卷积提取几何细节。
2.2基于点的网络
根据用于每个点的特征学习的网络体系结构,可以将这一类的方法分为逐点MLP,基于卷积,基于图,基于数据索引的网络和其他典型网络。
2.2.1逐点MLP网络
这些方法使用多个多层感知器(MLP)独立地对每个点建模,然后使用对称函数聚合全局特征,如图3所示。这些网络可以实现无序3D点云的置换不变性。但是,没有完全考虑3D点之间的几何关系。
图3:PointNet的体系结构。 n表示输入点的数量,M表示每个点的学习特征尺寸。 在最大池化之后,整个点云的全局特征的维度也是M。
作为一项开创性的工作,PointNet [5]通过几个MLP层学习逐点特征,并通过最大池化层提取全局形状特征。 使用几个MLP层获得分类分数。 Zaheer等[26]从理论上也证明了实现置换不变性的关键是对所有表示求和并应用非线性变换。 他们还为包括形状分类在内的各种应用设计了一种基本架构DeepSets [26]。
由于对于PointNet [5]中的每个点都是独立学习特征的,因此无法捕获点之间的局部结构信息。 因此,齐等[27]提出了一个层次网络PointNet ++来捕获每个点附近的精细几何结构。 作为PointNet ++层次结构的核心,其集合抽象级别由三层组成:采样层,分组层和PointNet层。 通过堆叠几个集合抽象级别,PointNet ++可以从局部几何结构中学习特征,并逐层抽象局部特征。
由于其简单性和强大的表示能力,已经基于PointNet [5]开发了许多网络。 Achlioptas等[28]介绍了一种深度自动编码器网络来学习点云表示。它的编码器遵循PointNet的设计,并使用五个1-D卷积层,ReLU非线性激活,批处理规范化和最大池化操作独立学习点特征。在点注意力变换(PAT)[29]中,每个点都由其自身的绝对位置和相对于其邻居的相对位置表示。然后,使用组混洗注意力(GSA)来捕获点之间的关系,并开发了排列不变,可区分且可训练的端到端Gumbel子集采样(GSS)层来学习分层特征。 Mo-Net [30]的体系结构与PointNet [5]相似,但是它需要一组有限的矩作为其网络的输入。 PointWeb [31]也是基于PointNet ++构建的,它使用局部邻域的上下文来使用自适应特征调整(AFA)来改进点特征。段等。 [32]提出了一种结构关系网络(SRN)来学习使用MLP的不同局部结构之间的结构关系特征。 Lin等[33]通过为PointNet所学习的输入和函数空间构造查找表来加速推理过程。在中等机器上,与PointNet相比,ModelNet和ShapeNet数据集上的推理时间缩短了1.5毫秒,达到32倍。 SRINet [34]首先投影一个点云以获得旋转不变表示,然后利用基于PointNet的主干来提取全局特征,并利用基于图的聚合来提取局部特征。
2.2.2基于卷积的网络
与在2D网格结构(例如图像)上定义的内核相比,由于点云的不规则性,难以为3D点云设计卷积内核。 根据卷积内核的类型,当前的3D卷积网络可以分为连续卷积网络和离散卷积网络,如图4所示。
图4:一个点的局部邻居的连续和离散卷积的图示。(a)代表局部近邻区;(b)和(c)分别代表3D连续和离散卷积。
3D连续卷积网络。 这些方法在连续空间上定义卷积核,其中相邻点的权重与相对于中心点的空间分布有关。
3D卷积可以解释为给定子集的加权和。 MLP是学习权重的一种简单方法。 RS-Conv作为RS-CNN[35]的核心层,以某一点周围的局部子集作为输入,通过学习局部子集中的低层关系(如欧几里德距离和相对位置)到高层关系的映射,利用MLP实现卷积。 在[36]中,内核元素是在单位球体内随机选择的。 然后使用基于MLP的连续函数在内核元素的位置和点云之间建立关系。 在DensePoint [37]中,卷积定义为具有非线性激活器的单层感知器(SLP)。 通过串联所有先前层的特征以充分利用上下文信息来学习特征。
一些方法还使用现有算法来执行卷积。在PointConv [38]中,卷积定义为相对于重要性采样的连续3D卷积的蒙特卡洛估计。卷积核由加权函数(通过MLP层学习)和密度函数(通过核化密度估计和MLP层学习)组成。为了提高内存和计算效率,将3D卷积进一步简化为两个运算:矩阵乘法和2D卷积。使用相同的参数设置,其内存消耗可减少约64倍。在MCCNN [39]中,卷积被视为依赖样本密度函数(由MLP实现)的蒙特卡洛估计过程。然后使用泊松磁盘采样来构建点云层次结构。该卷积算子可用于在两种或多种采样方法之间执行卷积,并可处理变化的采样密度。在SpiderCNN [40]中,提出了SpiderConv来定义卷积,将卷积定义为在k个最近邻居上定义的阶跃函数和泰勒展开式的乘积。阶梯函数通过对局部测地距离进行编码来捕获粗略的几何形状,泰勒展开通过在立方体的顶点处插值任意值来捕获固有的局部几何变化。此外,还基于径向基函数为3D点云提出了卷积网络PCNN [41]。托马斯等[42]使用一组可学习的核点,为3D点云提出了刚性和可变形核点卷积(KPConv)运算符。
已经提出了几种方法来解决3D卷积网络面临的旋转等变问题。 Esteves等人[43]提出了一种以多值球面函数为输入的三维球面卷积神经网络(spheral CNN)来学习三维形状的旋转等变表示。通过在球形谐波域中使用锚点对频谱进行参数化来获得局部卷积滤波器。张量场网络[44]将点卷积运算定义为可学习的径向函数和球谐函数的乘积,球谐函数局部等价于点的三维旋转、平移和置换。[45]中的卷积是基于球面互相关定义的,并使用广义快速傅里叶变换(FFT)算法实现。基于PCNN,SPHNet [46]通过在体积函数的卷积过程中合并球谐函数内核来实现旋转不变性。 ConvPoint [47]将卷积核分为空间和特征部分。从单位球体中随机选择空间部分的位置,并通过简单的MLP学习加权函数。
为了加快计算速度,Flex-Convolution [48]将卷积核的权重定义为k个最近邻居上的标准标量积,可以使用CUDA对其进行加速。实验结果证明了它在具有较少参数和较低内存消耗的小型数据集上的竞争性能。
3D离散卷积网络。 这些方法在常规网格上定义卷积核,其中相邻点的权重与相对于中心点的偏移量有关。
华等[49]将非均匀的3D点云转换为均匀的网格,并在每个网格上定义了卷积核。与2D卷积不同(向每个像素分配权重),提出的3D内核将相同的权重分配给落入同一网格的所有点。对于给定点,从上一层计算位于同一网格上的所有相邻点的平均特征。然后,对所有网格的平均特征进行加权和求和,以生成当前图层的输出。 Lei等[50]通过将3D球形邻近区域划分为多个体积区域并将每个区域与可学习的加权矩阵相关联来定义球形卷积核。一个点的球形卷积核的输出由其相邻点的加权激活值平均值的非线性激活确定。在GeoConv [51]中,一个点及其相邻点之间的几何关系是基于六个基础显式建模的。沿基础每个方向的边缘特征根据相邻点的基础由可学习的矩阵独立加权。然后根据给定点及其相邻点形成的角度聚合这些与方向相关的特征。对于给定点,其当前层的特征定义为给定点的特征及其在上一层的相邻边缘特征的总和。 PointCNN [52]通过χ-conv转换(通过MLP实现)实现了置换不变性。通过将点特征插值到相邻的离散卷积核量坐标,Mao等人[53]提出了一个插值卷积算子InterpConv来测量输入点云和核重量坐标之间的几何关系。张等[54]提出了一个RIConv算子来实现旋转不变性,它以低层旋转不变几何特征作为输入,然后通过一种简单的分区方法将卷积变成一维。
A-CNN [55]通过围绕查询点每个环上的核大小围绕邻居数组循环定义环形卷积。A-CNN学习局部子集中的相邻点之间的关系。为了减少3D CNN的计算和存储成本,Kumawat等人[56]提出了一种基于3D短期傅里叶变换(STFT)的3D局部邻域中的相位提取整流局部相体积(ReLPV)块,STFT显着减少了参数数量。在SFCNN [57]中,将点云投影到具有对齐球坐标的规则二十面体网格上。然后,通过卷积-最大池-卷积结构对从球形晶格的顶点及其相邻像素连接的特征进行卷积。 SFCNN抵抗旋转和扰动。
2.2.3基于图的网络
基于图的网络将点云中的每个点视为图的顶点,并基于每个点的邻居为图生成有向边。然后在空间或频谱域中进行特征学习[58]。一个典型的基于图的网络如图5所示。
图5:基于图的网络的图示。
空间域中基于图的方法。 这些方法在空间域中定义操作(例如,卷积和池化)。具体来说,卷积通常是通过空间邻域上的MLP来实现的,而池化则是通过聚合每个点邻域的信息来产生一个新的粗化图。通常为每个顶点的特征分配坐标,激光强度或颜色,而通常为每个边缘的特征分配两个连接点之间的几何属性。
作为开创性的工作,Simonovsky等人[58]将每个点视为图的顶点,并通过有向边将每个顶点连接到其所有邻居。然后,使用滤波器生成网络(例如,MLP)提出了边缘条件卷积(ECC)。采用最大池化来聚集邻域信息,并基于VoxelGrid [59]算法实现图粗化。对于形状分类,卷积核池化时交错的。然后,根据全局平均池化和全连接层产生分类分数。在DGCNN[60]中,在特征空间中构造一个图,并在网络的每一层之后动态更新。作为EdgeConv的核心层,采用MLP作为每个边缘的特征学习函数,并对与每个点邻域相关的边缘特征进行信道对称聚集。此外,LDGCNN[61]移除了变换网络,并将DGCNN[60]中不同层的分层特征连接起来,以提高其性能并减小模式大小。本文还提出了一种端到端无监督的深度自编码网络(FoldingNet[62]),它使用矢量化的局部协方差矩阵和点坐标的级联作为输入。
Hassani等人受Inception [63]和DGCNN [60]的启发。 [64]提出了一种无监督的多任务自动编码器来学习点和形状特征。 编码器是基于多尺度图构造的。 解码器是使用三个非监督任务构造的,包括聚类,自我监督分类和重构,这些任务与多任务损失一起训练。 刘等[65]提出了一种基于图卷积的动态点集聚模块(DPAM),以将点集聚(采样,分组和池化)的过程简化为一个简单的步骤,该步骤通过将集聚矩阵与点特征矩阵相乘来实现。 基于PointNet架构,通过堆叠多个DPAM来构建分层学习架构。与PointNet ++的层次结构策略相比,DPAM在语义空间中动态挖掘点与聚集点之间的关系。
为了利用局部几何结构,KCNet [66]学习基于核相关的特征。 具体而言,将表征局部结构的几何类型的一组可学习点定义为内核。 然后,计算内核与给定点邻域之间的亲和力。 在G3D [67]中,卷积定义为邻接矩阵多项式的变体,池化定义为将Laplacian矩阵和顶点矩阵乘以一个粗化矩阵。 ClusterNet [68]利用严格旋转不变(RRI)模块提取每个点的旋转不变特征,并基于具有监督联系标准的无监督聚集层次聚类方法构建点云的层次结构[69]。 首先通过EdgeConv块学习每个子集群中的特征,然后通过最大池化聚合。
频谱域中基于图的方法。 这些方法将卷积定义为频谱滤波,这是通过将图上的信号与图拉普拉斯矩阵的特征向量相乘来实现的[70]。
为了应对高计算量和非局部化的挑战,Defferrard等人[71]提出了一个截断的切比雪夫多项式来近似频谱滤波。他们学习的特征图位于每个点的K跳邻居内。注意,特征向量是根据[70] [71]中的固定图拉普拉斯矩阵计算的。相反,RGCNN [72]通过将每个点与点云中的所有其他点连接来构造图,并更新每一层中的图拉普拉斯矩阵。为了使相邻顶点的特征更相似,在损失函数中添加了先验图信号平滑度。为了解决由多样的数据图拓扑引起的挑战,AGCN [73]中的SGC-LL层利用可学习的距离度量来参数化图上两个顶点之间的相似度。从图获得的邻接矩阵使用高斯核和学习距离进行归一化。冯等[74]提出了一个超图神经网络(HGNN),并通过在超图上应用谱卷积来建立一个超边缘卷积层。
前述方法在全图上运行。为了利用局部的结构信息,王等[75]提出了一个端到端的频谱卷积网络LocalSpecGCN来处理局部图(它是由k个最近的邻居构造而成的)。此方法不需要对图拉普拉斯矩阵和图粗化层次进行任何离线计算。在PointGCN [76]中,基于来自点云的k个最近邻居构建图,并使用高斯核对每个边进行加权。卷积滤波器在图谱域中定义为Chebyshev多项式。全局池化和多分辨率池化用于捕获点云的全局和局部特征。 Pan等[77]通过在谱域中的k个最近邻图上应用卷积来提出3DTINet。通过从相对的欧几里得距离和方向距离中学习,可以实现几何变换的不变性。
2.2.4基于数据索引的网络
这些网络是根据不同的数据索引结构(例如octree和kd-tree)构建的。在这些方法中,点特征是沿着树从叶节点到根节点分层学习的。 Lei等[50]提出了一种使用球面卷积核的八叉树引导的CNN。网络的每一层都对应于八叉树的一层,并且在每一层都应用了球形卷积核。当前层中神经元的值确定为上一层中所有相关子节点的平均值。与基于octree的OctNet [23]不同,Kd-Net [78]是使用多个K-d树构建的,每个树在每次迭代时具有不同的分割方向。按照自下而上的方法,使用MLP根据非子节点的子代表示来计算非子节点的表示。根节点的特征(描述整个点云)最终被馈送到全连接层以预测分类得分。注意,Kd-Net根据节点的拆分类型在每个级别共享参数。3DContextNet [79]使用标准的平衡K-d树来实现特征学习和聚合。在每个级别上,首先通过MLP基于局部提示(该局部提示对局部区域中的点之间的相互依赖性进行建模)和全局上下文提示(其针对一个位置相对于所有其他位置的关系进行建模)来学习点特征。然后,使用MLP从非子节点的子节点计算其特征,并通过最大池化对其进行聚合。对于分类,重复上述过程直到获得根节点。
SO-Net网络的层次结构是通过执行点到节点k最近邻居搜索来构建的[80]。具体而言,修改后的置换不变自组织图(SOM)用于对点云的空间分布进行建模。通过一系列全连接层,从归一化的点到节点坐标中学习单个点的特征。 SOM中每个节点的特征是使用通道的最大池化从与此节点关联的点特征中提取的。然后使用类似于PointNet [5]的方法从节点特征中学习最终特征。与PointNet ++ [27]相比,SOM的层次结构效率更高,并且可以充分利用点云的空间分布。
2.2.5其他网络
除上述方法外,还提出了许多其他方案。在3DmFV [82]中,将点云体素化为统一的3D网格,并根据在这些网格上定义的一组高斯混合模型的似然性来提取费舍尔向量。由于费舍尔向量的分量在所有点上求和,因此所得表示形式对点云的顺序,结构和大小不变。 RBFNet [86]通过聚集来自稀疏分布的径向基函数(RBF)内核的特征来显式地建模点的空间分布。 RBF特征提取层计算所有内核对每个点的响应,然后对内核位置和内核大小进行优化,以捕获训练期间各点的空间分布。与全连接层相比,RBF特征提取层可产生更多区分性特征,同时将参数数量减少几个数量级。赵等[85]提出了一种无监督的自动编码器3DPointCapsNet,用于3D点云的通用表示学习。在编码器阶段,首先将逐点MLP应用于点云以提取点独立特征,然后将其进一步馈送到多个独立卷积层中。然后,通过串联多个最大池学习特征图来提取全局潜在表示。基于无监督的动态路径,可以学习强大的代表性潜在胶囊。 Xie等人[81]从形状上下文描述符的构建中得到启发[89],提出了一种新颖的ShapeContextNet体系结构,该方法通过将亲和点选择和紧凑的特征聚合结合在一起,并使用点积自关注[90]进行软对齐操作。为了解决3D点云中的噪声和遮挡问题,鲍勃科夫等人[91]将基于手工制作的点对函数的4D旋转不变描述符输入4D卷积神经网络。 Prokudin等[92]首先从单位球中随机采样具有均匀分布的基点集,然后将点云编码为到基点集的最小距离,这将点云转换为固定长度相对较小的向量。然后可以使用现有的机器学习方法来处理编码的表示。RCNet [88]利用标准的RNN和2D CNN构造用于3D点云处理的置换不变网络。首先将点云划分为平行波束,并沿特定维度分类,然后将每个波束馈入共享的RNN。所学习的特征被进一步馈送到有效的2D CNN中以进行分层特征聚合。为了增强其描述能力,RCNet-E沿不同分区和排序方向集成多个RCNet。Point2Sequences [87]是另一个基于RNN的模型,可捕获点云局部区域中不同区域之间的相关性。它将从多个区域的局部区域中学习的特征视为序列,并将来自所有局部区域的这些序列馈送到基于RNN的编码器-解码器结构中,以聚合局部区域特征。秦等[93]提出了一种基于端到端无监督域自适应的网络PointDAN,用于3D点云表示。为了获取点云的语义特性,提出了一种自监督的点云重构方法,该方法对点云的部分进行了随机重组[94]。
还提出了几种方法来从3D点云和2D图像中学习。在PVNet [83]中,从多视图图像中提取的高级全局特征通过嵌入网络投影到点云的子空间中,并通过软关注掩模与点云特征融合。最后,对融合特征和多视图特征采用残差连接以执行形状识别。后来,进一步提出了PVRNet [84],以利用3D点云及其多个视图之间的关系,这些关系是通过关系评分模块学习的。基于关系得分,原始的2D全局视图特征得到了增强,可用于点单视图融合和点多视图融合。
ModelNet10 / 40数据集是最常用的形状分类数据集。表1显示了通过不同的基于点的网络获得的结果。可以得出以下几点结论:
- 逐点MLP网络通常用作其他类型的网络的基本构建块,以学习逐点特征。
- 作为标准的深度学习架构,基于卷积的网络可以在不规则的3D点云上实现出色的性能。对于不规则数据,应该更加注意离散卷积网络和连续卷积网络。
- 由于其固有的强大能力来处理不规则数据,基于图形的网络近年来引起了越来越多的关注。但是,将频谱域中的基于图的网络扩展到各种图结构仍然具有挑战性。
- 大多数网络需要将点云降采样为固定的小尺寸。此采样过程将丢弃形状的详细信息。 开发可以处理大规模点云的网络仍处于起步阶段[95]。
请各位关注公众号。更多的文章可以关注公众号查看。
这篇关于【综述翻译:第二章】Deep Learning for 3D Point Clouds: A Survey的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!