2020厦门大学综述翻译:3D点云深度学习(Remote Sensiong期刊)
(Remote Sensiong)综述:3D点云深度学习
Review: deep learning on 3D point clouds
Saifullahi Aminu Bello 1;2, Shangshu Yu1, Cheng Wang1, Senior Member, IEEE
1Fujian Key Laboratory of Sensing and Computing for Smart City, Xiamen University, China
2Kano University of Science and Technology, Nigeria
原文地址:https://arxiv.org/abs/2001.06280
参考:https://blog.csdn.net/u013019296/article/details/108526109?utm_medium=distribute.pc_relevant.none-task-blog-title-2&spm=1001.2101.3001.4242
摘要
点云是在三维空间中点集的定义,点云已经成为三维表示中最重要的数据格式之一。由于激光雷达等采集设备的可用性不断提高,以及在机器人、自主驾驶、增强和虚拟现实等领域的应用越来越多,它越来越受欢迎。深度学习现在是计算机视觉中最强大的数据处理工具,成为分类、分割和检测等任务的首选技术。深度学习技术主要应用于具有结构化网格的数据,而点云则是非结构化的。点云的非结构性使得利用深度学习直接对其进行处理非常具有挑战性。早期的方法通过将点云预处理为结构化网格格式来克服这一挑战,代价是增加计算成本或丢失深度信息。然而,最近,许多最先进的方法可直接在点云上操作的深度学习技术不断出现。这篇论文包含了最新的深度学习技术的综述,这些技术主要集中在点云数据上。首先简要讨论了直接在点云数据中使用深度学习所面临的主要挑战,再简要讨论了以前通过将点云预处理为结构化网格来克服这些挑战的方法。然后,我们将回顾各种最先进的深度学习方法,这些方法直接处理非结构化的点云。并且介绍了常用的三维点云基准数据集。并进一步探讨了深度学习在三维视觉任务分类、分割和检测中的应用。
关键词:点云,深度学习,数据集,分类,分割,目标检测
1、引言:
我们生活在一个三维的世界,但自从在1888年发明相机,3D世界的视觉信息正在使用相机投射到2D图像上。然而,二维图像丢失了现实世界中两个或者更多物体之间的深度信息和相对位置,这使得它不太合适需要深度和定位信息的应用比如机器人技术、自动驾驶、虚拟现实和增强技术现实等等。为了捕捉3D世界的深度信息,早期的方法是用立体视觉使用2个或更多的数码相机进行提取三维信息。点云是一种通常用于表示三维几何体的数据结构,使其能够直接表示从立体视觉相机提取的三维信息以及由RGB-D生成的深度图。最近,由于激光雷达等传感设备的可用性不断增加,3D点云正在蓬勃发展,带有飞行时间(tof)深度相机的手机,可以轻松获取三维点云中的三维世界。
点云只是空间中的一组数据点集。场景的点云是围绕场景中对象的曲面采样的三维点集。在最简单的形式中由点的XYZ坐标表示,但是,也可以使用诸如曲面法线、RGB值等附加特性。点云是表示三维世界的一种非常方便的格式,它在机器人、自动驾驶、增强和虚拟现实以及其他工业用途等领域有着广泛的应用
在过去的几年里,视觉智能的点云处理是基于手工制作的特征[1,2,3,4,5,6]。基于手工制作的特征学习技术的评论是在[7]中进行。手工制作的特征不需要很大由于缺乏足够的培训数据,因为没有充足的点云数据和深度学习并不流行,所以手工特征很少被使用。随着采集设备可用性的提高,借助深度学习,点云数据现在随时可用可处理。但是,因为点云的性质,在点云上应用深度学习是不容易的。在本文中,我们回顾了深度学习在点云中的挑战;为了克服这些挑战的早期的方法;以及最近直接在点云上操作的最好的方法,更加专注在后者。由于在点云中深度学习提出了最好的方法,所以本文的目的是为点云深度学习领域的新的研究者提供一个指南。
我们将本文的其余部分组织如下:第2节讨论了直接在点云数据中使用深度学习所面临的主要挑战。 第3节回顾了通过把点云转换为结构化的网格来克服挑战的方法。 第4节深入介绍了各种直接处理点云的深度学习方法。在第5节中,我们介绍了3D点云基准数据集。在第6节中我们讨论了各种方法在3D视觉任务的应用。在第7节中我们总结了该文。
2、点云深度学习的挑战
在三维点云数据上应用深度学习带来了许多挑战。其中一些挑战包括由杂乱的场景或盲区引起的遮挡;噪声/异常值是意外点,因而在点云上应用深度学习时,更突出的挑战可以归纳为:
不规则性:点云数据也是不规则的,这意味着在对象/场景的不同区域,点的采样不是均匀的,因此一些区域可能有密集点,而另一些区域可能有稀疏点。这些可以在图1a中看到。
非结构化:点云数据不在常规网格上。每个点都是独立扫描的,它与相邻点之间的距离并不总是固定的,相反,图像中的像素在二维网格上表示,两个相邻像素之间的间距总是固定的。
无序性:场景的点云是在环境中扫描对象周围获得的一组点(通常用XYZ表示),通常以列表形式存储在文件中。作为一个集合,点的存储顺序不会改变所表示的场景。为了说明这一点,我们在图1c中展示了点集的无序性。
这些点云的性质对于深度学习,特别是卷积神经网络(CNN)是非常具有挑战性的。这是因为卷积神经网络是基于卷积运算的,卷积运算是在有序的、规则的、结构化的网格上进行的。早期的方法通过将点云转换为结构化网格格式来克服这些挑战,见第三节。然而,最近研究人员一直在研究直接在原始点云上使用深度学习的方法,不再需要转为结构化网格,见第四节。
图1:点云深度学习的挑战
3、基于结构化网格的学习
深度学习,特别是卷积神经网络是成功的,因为卷积运算用于特征学习,去掉人工制作的特征的繁琐。图2显示了二维网格上典型的卷积运算。卷积操作需要一个结构化的网格。然而,点云数据是非结构化的,这对深度学习是一个挑战,为了克服这一挑战,许多方法将点云数据转换为结构化的形式。这些方法大致可分为两类:基于体素的方法和基于多视图的方法。在本节中,我们将回顾基于体素和基于多视图的分类中的一些最新方法,这些方法有优点也有缺点。
图2 典型的二维卷积运算
3.1 基于体素
对2d图像进行卷积运算,使用尺寸为xy的2d滤波器对表示为XY矩阵的二维输入进行卷积,其中x<= X和y<= Y。基于体素的方法[8,9,10,11,12]也采用了类似的方法,将点云转换成X×Y×Z的三维体素结构,并分别用X×Y×Z的三维核与X;Y;Z进行卷积。基本上,这种方法有两个重要的步骤,分别是离线(预处理)和在线(学习)。离线预处理方法将点云转换为固定大小的体素,如图3所示。二进制体素[13]常用来代表的体素。在论文[11]中,法向量被添加到每个体素中以提高分辨能力。
图3:将飞机点云体素化为30×30×30的体积栅格点云
在线学习阶段,卷积神经网络通常使用一些三维卷积、池化和全连接层理论进行设计。
[13]将三维形状表示为二进制的概率分布。变量的三维体素网格上,是第一个使用三维深度卷积神经网络的工作。输入到网络、点云、CAD模型或RGB-D图像,是指在网络、点云、CAD模型或RGB-D图像的基础上。转化为三维二维体素网格,并使用一个 “二维体素网格 “进行处理。卷积式深度信念网络[14]。8]使用3D CNN进行无人驾驶旋翼机的着陆区探测。激光雷达来自旋翼机用于获取着陆点的点云。然后将其虚化为三维体积和三维CNN二元化。分类器来对降落点进行安全与否的分类。在[9]中,提出了一种三维卷积神经网络。像[13]一样,在[9]中,网络的输入是用于物体识别的。转换为三维二元占位网格,然后再应用三维卷积运算生成特征向量,该特征向量是通过完全连接的层来获得类分数。在[10]中提出了两个基于体素的模型。第一个模型解决了利用辅助训练任务预测过度拟合的问题。从部分子卷中提取的对象和第二种模型模仿的对象。多视图-CNNs通过将三维形状与各向异性的多视图-CNNs进行卷积。探测内核。
基于Voxel的方法,虽然已经表现出良好的性能。然而,由于稀疏的体素,它们消耗很大的内存,这导致了当在非被占用的区域上进行卷积计算时的浪费。内存的消耗也限制了体素的分辨率至通常在32个立方体到64个立方体之间。这些缺点也是voxelization操作引入的伪影。
为了克服voxelization操作的挑战,[15,16]提出了自适应表示法。这些表示方法要比规则的3D体素复杂得多,然而,它仍然被限制在只有256个的立方体体素中。
3.2 基于多视图
这些方法有[17,18,19,10,20,21,22],是一种利用了已经成熟的2D-CNN到3D点云的技术。由于图像实际上是被相机压缩到2D网格上的3D世界的表示,该类方法将点云数据转换为2D图像的集合,并将现有的2D CNN技术应用于它,见图4。与基于体素的深度学习的方法相比,即使体素点云包含深度信息,基于多视图的方法具有更好的性能,因为多视图图像包含的信息比三维体素更丰富。
[17]是这个方向的第一个工作,目的是绕过识别对3D描述符的需求,实现最好的精度。[18]提出了一种用于三维物体检索的堆栈式局部卷积的自动编码器(SLCAE)。[10]介绍了在多个尺度上捕捉信息的多分辨率过滤,此外,他们还使用了数据增强的方法以改进[17]。
基于多视图的网络比基于体素的方法具有更好的性能,这是因为两个原因:
1)基于多视图是一种基于2D图像的深度学习,2D的深度学习方法在研究上非常成熟;
2)由于没有体素化的量化误差。
图4:点云到二维图像的多视图投影。每个2D图像表示从不同角度观看的同一对象
3.3 高维晶格
还有其他的点云处理方法,利用深度学习,将点云转换为更高维度的晶格。SplatNet[23]直接处理点云。然而,其主要的特征学习操作发生在双边卷积层(BCL)。双边卷积层将无序点的特征转换为六维(6D)的晶格,并将其与类似晶格的kenal卷积。SFCNN[24]使用分形的规则二十面体晶格来实现,将点映射到一个离散的球体上,并在规则的shperical网格上定义了一个多尺度的行卷积运算。
4、直接在点云上进行的深度学习
自PointNet[25]于2017年发布以来,关于原始点云的深度学习备受关注。从那时起,许多先进的方法被开发出来。这些技术直接处理点云,尽管存在上文介绍的挑战。在本节中,我们将回顾在这个方向上工作的最新技术。我们从PointNet开始,它是大多数技术的基础。通过对局部区域结构进行建模改进了点云深度学习技术。
4.1 PointNet
卷积神经网络之所以能取得很大成功,是因为卷积运算能够使网络在局部区域以分层的方式进行学习。然而,卷积需要结构化的网格,而点云数据是缺乏的。PointNet[25]是第一个在非结构化点云上应用深度学习的方法,也是大多数其他技术的基础。
PointNet的体系结构如图5所示。PointNet的输入是原始点云P=N×D,其中N表示点云中的点数,D表示维数,通常D=3表示每个点的XYZ值,但是也可以使用其他特征。由于点是无序的,PointNet由对称函数组成。对称函数是指无论输入顺序如何,其输出都相同的函数。PointNet是建立在两个基本的对称函数,多层感知器(MLP)和一个最大池函数基础上。mlp是将点的特征维数从D=3转换为D=1024维空间的特征变换,每个层的所有点都共享这些参数。利用maxpooling对称函数生成一个1024维的全局特征向量。特征向量表示输入的特征描述符,可用于识别和分割任务。
PointNet在几个基准数据集上实现了最先进的性能。然而,PointNet的设计并没有考虑到各点与点之间的局部依赖性,因此,它并没有捕捉到局部结构。全局maxpooling以 “赢家通吃”[26]的原则选择特征向量,使之成为很容易受到有针对性的敌意攻击,这一点已经在[27]中证明了。PointNet之后,许多方法被提出来捕捉局部结构。
图5:PointNet的架构[25]。PointNet是由多层感知器(MLP)组成,这些感知器是逐点共享的,并且有2个3×3和64×64维度的空间变换器网络(STN),学习输入集的规范表示。全局特征是以赢者通吃的方式获得的,并可用于分类和分割任务。
4.2 局部结构计算方法
在PointNet之后开发了许多最新方法捕获局部结构的网络。 这些技术分层捕获局部结构与网格卷积风格相似,都有更丰富的表示形式。
基本上,由于点云的无序性的固有性质,局部结构建模基于三个基本操作:采样、分组、以及一个映射函数,即通常由多层感知器(MLP)近似,它将最近邻点的特征映射到一个特征中。编码更高级别的信息,见图示6。在回顾各种方法之前,我们简单解释了这一操作。
采样 采样是为了跨层降低点的分辨率而采用的,是与卷积操作如何通过卷积和池化减少特征图的分辨率同理的。给定N个点的点云P ∈RNx3的,则采样将其减少为M个点 ,其中 。 M个点用来代表它们被抽样的局部区域,这M个点也被称为代表性的点或者中心点。有两种方法是流行的子采样1)随机点抽样,其中N个点中的每个点是同样可能被采样,2)最远点采样(FPS),其中M个点被采样,使每个采样的点是离其余M-1个点最远的点。其他抽样方法包括均匀抽样和Gumbel子集抽样[28]。
分组 随着代表性点被采样,k-最近的邻居算法用于选择距离到代表点最近的邻居点,然后把他们分组到局部补丁中,见图7。 局部补丁中的点将被用来计算邻域的局部特征表示。在网格卷积,感受野是指内核下的映射下的特征上的像素。kNN要么直接被使用对最接近中心点的k个最邻点进行采样,或者使用球查询。在球查询中,只有当点在球的范围内时,才会被选择。
非线性映射函数 一旦获得与每个代表性点最近的点,下一步是把它们映射成一个代表局部结构的特征向量。在网格卷积,感受野被映射成一个特征神经元,这是使用简单的矩阵乘法和卷积核求和的方式来实现的。这在点云中是不容易的,因为点云不是结构化的,因此大多数方法都是近似于使用基于PointNet[25]的方法来实现该函数,该方法包括是由多层对称函数组成的,对称函数由多层感知器, 和maxpooling函数 ,如公式(1)所示:
f({x1 ,…, xk}) ≈ g(h(x1), … ,h(xk)) (1)
图6:捕捉点云中局部结构的基本操作。给出点云P ∈RNx(3+c),每个点用XYZ和c个特征通道表示。对于输入点,c可以是法线、RGB等点特征,也可以是零)。从N个中心点中采样出M个中心点,并对每个中心点进行k-NN,形成M个组。每个M组代表一个局部区域(感受野)。一个非线性函数,通常用基于MLP的PointNet的方法来逼近,然后应用于局部区域,学习C维的局部区域特征(C>c)。
图7:采样和分组后的点形成局部补丁。红色为利用采样算法选取的中心点,图示分组为一个球查询,根据到中心点的半径距离选择点。
4.2.1 不探索局部相关性的方法
一些方法遵循pointnet如MLP,其中不考虑局部区域内各点之间的相关性关系,而是通过共享MLP学习单个点特征,并在赢家通吃的原则下使用maxpooling函数聚合局部区域特征。
PointNet++[29]通过在局部区域分层应用PointNet,扩展了用于局部区域计算的PointNet。给定一个点集P ∈RNx3,用最远点采样算法(FPS)选择质心,用ball查询法为每个质心选择最近邻点。然后将PointNet应用于局部区域,生成区域的特征向量。这些过程以层次结构的形式重复,从而降低了点的分辨率。在层次结构的最后一层,点的全部特征通过一个PointNet来产生一个全局特征向量。PointNet++在许多公共数据集上实现了最先进的精度,包括ModelNet40[13]和ScanNet[30]。
VoxelNet[31]提出了一种Voxel特征编码(VFE)。给出点云,它首先被投射到分辨率为 的3维的voxels中。根据点在哪个体素中将点进行分组。由于点云的不规则性,在每个体素中采样T个点,以便在每个体素中有均匀的点数。在一个VFE层中,每个体素的中心点是T个点在体素内的局部平均数,然后使用一个完全连接的网络处理(FCN),以汇总所有类似点的信息,然后在通过PointNet处理。VFE层进行堆叠,并建立一个maxpooling层,获得每个voxel的全局特征向量,从而使输入点云的特征表示为一个稀疏的4D向量, 。为了将voxelnet匹配图6,中心点为每一个voxel的中心点/代表点,每个体素中的T点是最近邻点,而其中的FCN是非线性映射函数。
自组织映射(SOM)最初是在[32]中提出的,用于在SONET中创建点云的自组织网络。[33]. 而在大多数方法中,随机点采样/最远点采样/ 均匀采样是被用来选择中心点。所讨论的方法,在So-Net中,SOM是用固定数量的节点来构建的,这些节点均匀地分布在一个单元球中。SOM节点是置换不变的,扮演的是局部区域中心点的作用。对于每个SOM节点,k-NN搜索用来寻找其最近的邻点,这些邻点通过一系列完全连接的层来提取点特征,其中,maxpooled生成M个节点特征。为了获得输入点云的全局特征,使用maxpooling对M个结点特征进行聚合。
在[34]中提出了逐点卷积技术。在这种技术中。没有子采样点/代表点,因为卷积对所有输入点进行操作。在每个点,最近的相邻点是根据尺寸或以点为中心的核的半径值采样的。半径值可以在任意层根据不同数量的近邻点进行调整。每个逐点卷积都独立应用在输入,它将输入点从3维转换为9维。最后的特征是通过将这些特征连在一起得到的,它等价于输入的分辨率。这些最终的特征是用卷积层进行分割或使用全连接层进行分类任务。
4.2.2 探索局部相关性的方法
一些方法探索局部区域内点之间的局部相关性以提高识别能力。显然,因为点不是孤立存在的,而是需要多个点一起形成有意义的形状。
PointCNN[35]对PointNet++进行了改进,在应用类似MLP的PointNet之前,对每个质心的k个最近邻点进行了X变换。对质心或者代表点进行随机抽样,在应用非线性映射函数之前,用k-NN选择通过X变换块的邻域点。X变换的目的是将输入转换成更规范的形式,这种形式本质上也考虑了局部区域内点之间的关系。在pointweb[36]中,”一个局部的点网”是通过在一个局部区域内密集连接点来设计的。并使用自适应特征调整(AFA)模块学习每个点对其他点的影响。在[37]中作者提出了一个 “pointConv “的操作,它同样探讨了局部区域内各点的内在结构,其方法是使用核密度估计(KDE)计算每个点的反密度尺度。核密度估计是离线计算出每一个点,并将其输入MLP来估计的密度估计。
在[38]中,采用均匀采样策略选取中心点。并选择与中心点最近的邻接点使用球面邻域。非线性函数也是使用多层感知器(MLP)进行近似,但通过考虑每个中心点与最近邻点之间的关系,使用了额外的辨别能力。相邻点之间的关系是基于空间的点的布局。同样,GeoCNN[39]也探索了几何学的局部区域结构的相邻点到各自的中心点的距离,然而,作者执行逐点卷积,而不会降低各层的点分辨率。
[40]认为,大多数基于PointNet的方法的多尺度架构会引起感受野重叠,这可以导致计算冗余,因为相同的邻接的点可以包括在不同的比例区域。为了解决冗余度,作者提出了环形卷积这是一个基于环的方法,避免了感受野层次间的重叠,也捕获到了感受野区域的点之间的关系。
PointNet-like MLP是流行的映射函数,用于将局部补丁中的点近似变成一个特征向量,但[41]认为MLP没有考虑到点云的几何先验,而且还需要很大的参数。为了解决这些问题,作者提出了一个家族滤波器。由两个函数组成,一个是阶梯函数,对局部测地信息进行编码,然后进行三阶泰勒展开。该方法可以学习分层表示和在分类和分割方面达到了最先进的性能。
点注意变换器(PAT)是在[28]中提出的。该作者提出了一种新的子采样方法,称为 “Gumbel子集抽样(GSS)”,它与最远点抽样(FPS)不同,它的置换不变性,并且对异常值具有鲁棒性。该作者采用绝对和相对位置嵌入,其中每一个点都由一组绝对位置和它们相对于邻域的点的相对位置,然后PointNet应用在这个集合上。而为了进一步把握好点与点之间的关系,修改后的多头注意力(MHA)机制是被使用的。一种新的采样和具有可学习参数的分组技术在[42]中被提出,该模块称为动态点集聚模块(DPAM),它可以学习一个集聚模块矩阵,与传入的poimt特征相乘后,可降低分辨率(类似于采样),并产生了聚合特征(类似于分组和池化)。
4.3 基于图
[43,44,45,47]提出了基于图的方法。基于图的方法通过将每个点作为一个节点来表示具有图结构的点云。图结构很适合于用图的边建模点之间的相关性。[43]使用kd树,这是一种特殊的图。在点云上采用自上而下的方式建立kd树,在每层中形成了一个具有可学习参数的前馈kd网络。在Kd网络中进行的计算是以自下而上的方式。叶子代表的是输入点,2个最近的邻居节点(左和右)使用共享参数的权重矩阵和一个偏差来计算其父节点。沿着kd-tree的深度,Kd-网络捕捉到了层次化的表示。但是,由于树的设计,在同一深度层的节点并不捕捉重叠的感受野。
[44,45,47]是基于典型图网络 ;其顶点V代表点, E代表边,为 矩阵。在[44]中提出了边缘卷积。图被表示为覆盖在输入上的k个最近邻域的图。在每一个边缘卷积层中,每一个点/顶点的特征都是通过对其最近的邻居顶点应用非线性函数计算的,由边缘矩阵E捕获。非线性函数是一个多层感知器(MLP)。经过最后一个edgeConv层后,全局maxpooling被用来获得一个类似于[25]的全局特征向量。一个明显的区别是[44]与普通图网络的区别在于,边是在前一层的特征经过每个edgeConv层后被更新的,因此被称为动态图CNN(DGCNN)。虽然没有降低分辨率,但是因为在DGCNN中,随着网络的深入,这就导致了计算成本的增加。[45]定义了一个谱图卷积,随着网络变得更深,点的分辨率降低。在每一层中,对k个近邻点进行采样。但不是在k个局部点上使用类似于mlp的操作如[29],在集合上定义了一个图 ,则图的顶点V为点,边 是基于点的xyz空间的坐标的对偶距离的权重。然后计算点的图傅立叶变换,然后用频谱滤波进行过滤。经过滤波,点的分辨率还是一样的。然后提出递归聚类池化技术将每个图中的信息汇总成一个顶点。
在[47]中,作者提出了一种图网络,充分探索了不仅有局部相关性,还有非局部相关性。相关性从3个方面进行探讨,自相关探讨节点特征的通道相关性。局部相关探索节点之间的局部依赖性。和非局部关联性,通过考虑远距离局部特征,捕捉更好的全局特征。
表1总结显示了采样、分组和映射函数方法。
5、 基准数据集
近年来,已经发表了大量的点云数据集。现有的大部分数据集都是由大学和行业提供的。它们可以为测试各种方法提供一个公平的比较。这些公共基准数据集由虚拟场景或真实场景组成,其重点在于特别是在点云分类、分割、检索方面和目标检测。它们用深度学习方法特别有用,因为它们可以为训练网络提供大量的真实标签。点云可以通过不同的平台/方法获得,如Structure from Motion (SfM)、红绿蓝-深度(RGB-D)相机和光探测和测距(LiDAR)系统。随着大小和复杂程度增加,基准数据集的可用性通常会降低。在本节中,我们将介绍一些流行的用于3D研究的数据集。
5.1 3D模型数据集
ModelNet [13]:该数据集由普林斯顿大学视觉与机器人实验室开发。ModelNet40有40个人造物体形状的类别(如飞机、书架和椅子)用于分类和识别。它由12311个CAD模型组成。其中分为9,843个训练和2,468个测试形状。ModelNet10数据集是ModelNet40的一个子集,该子集包括只包含10个类别。它还分为3991个训练和908个测试形状。
ShapeNet [48]:大规模数据集是由斯坦福大学等人开发,它提供了每个模型的语义类别标签,固定的走线、部件和双边对称性平面、物理尺寸、关键词,以及其他计划中的注解。ShapeNet已经为近3,000,000个模型编制了索引。当数据集公布后,有22万个模型被分为3135个类别。ShapeNetCore是ShapeNet的一个子集,其中包括近51,300个独特的3D模型。它提供了55个常见的对象类别和注释。ShapeNetSem也是ShapeNet的一个子集,它包含有12,000个模型。它的规模更小,但覆盖面更广,包括270类。
Augmenting ShapeNet:[49]创建了详细的部件标签为来自ShapeNetCore数据集的31963个模型提供服务。它提供了16个形状类别进行部件分割。[50]已经提供了1200个来自ShapeNet数据集的虚拟局部模型。[51]提出了一种自动生成逼真3D形状的方法,它是建立在ShapeNetCore数据集。[52]是一个具有细粒度和层次性的部件注释的大规模数据集,它包括24个对象类别和26,671个三维模型,提供了573,585个部件实例标签。[53]贡献了一个大规模的3D物体识别数据集。该数据集有100个类别,其中包括有201,888个对象(来自ImageNet[54])的90,127张图像和44,147个3D形状(来自ShapeNet)。
Shape2Motion [55]:Shape2Motion是由北航和国防科技大学开发的。它已经创建了一个新的基准数据集,用于3D形状流动性分析。该基准包括45个形状类别与2440个模型,其中的形状是来自于ShapeNet和3D仓库[56]。所提出的方法输入单一的3D形状,然后预测运动部件的分割结果和运动对应的共同属性。
ScanObjectNN [57]:ScanObjectNN是由香港科技大学等单位提出,是第一个点云分类的真实世界数据集。约15,000对象是从室内数据集选择出的(SceneNN[58]和ScanNet[30])。 并将对象分为15类,其中有2902个唯一的对象实例。
5.2 3D室内数据集
NYUDv2 [59]:纽约大学深度数据集v2(NYUDv2)是由纽约大学等人开发的。该数据集提供了从464个各种室内场景中捕捉到的1449张RGB-D(由Kinect v1获得)图像。所有的图像是分布式分割标签。这个数据集主要是有助于了解3D线索对于室内物体如何产生更好的分割。
SUN3D [60]:该数据集由普林斯顿大学开发。这是一个RGB-D视频数据集,其中的视频是从41栋建筑的254个不同空间中捕捉到的。SUN3D提供了415个带有摄像机姿势和物体标签的序列。点云是由运动结构(SfM)生成的。
S3DIS [61]:斯坦福大学3D大型室内空间(S3DIS)是由斯坦福大学等人开发的,S3DIS是从3栋不同的建筑物271个房间中收集到的数据。覆盖面积在6000平方米以上。它包含超过2.15亿点,并且每个点都提供了实例级语义分割标签(13个类别);
SceneNN [58]:新加坡科技与设计大学等人开发了这个数据集。SceneNN是一个RGB-D(获得Kinect v2)场景数据集,它收集了101个室内场景的数据。
它为室内场景提供了40个语义类,并且所有的语义标签与NYUDv2数据集相同。
ScanNet [30]:ScanNet是一个大尺度的室内数据集,它的开发目的是为了让人们能够更清楚地了解自己的生活。由斯坦福大学等人拍摄,包含1513个扫描场景。包括近2.5M的RGB-D(由 Occipital Structure公司获得传感器)图像,来自707个不同的室内环境。该数据集为三维物体分类提供了地面真实标签。17个类别,语义分割有20个类别类别:
对于对象分类,ScanNet将所有的实例划分为9,677个实例用于训练,2,606个实例用于测试。而且ScanNet将所有扫描分成1201个训练场景和312个测试场景进行语义分割。
Matterport3D [62]:Matterport3D是普林斯顿大学等人开发的最大的室内数据集。的。该数据集的覆盖面积面积为来自2056个房间的219,399mm2,,建筑面积为46,561mm2。它包括10,800个全景视图,其中视图来自90大型建筑的194,400张RGB-D图像。标签包含表面重建、摄像机姿势和语义分割。这个数据集研究现场理解的5个任务,分别是关键点匹配、视图重叠预测、表面法线估计、区域类型分类,以及语义分割。
3DMatch [63]:这个基准数据集是由普林斯顿大学等,它是现有数据集的一个大集合。,如Analysisby-Synthesis[64]、7-cenes[65]。SUN3D[60]、RGB-D Scenes v.2[66]和Halber等人[67]。3DMatch基准由62个场景组成,分别为54个训练场景和8个测试场景。它利用对应标签从RGB-D场景重建数据集,然后提供点云检索的地面真相标签。
Multisensor Indoor Mapping and Positioning Dataset [68]:这个室内数据集(房间、走廊和室内停车场)是由厦门大学等人开发的。由多传感器获得,如激光扫描仪、摄像头、WIFI、蓝牙和IMU。该数据集提供了密集的激光扫描点云进行室内测绘和定位。同时。他们还提供基于多传感器校准的彩色激光扫描和SLAM映射过程。
5.3 3D室外数据集
KITTI [69] [70]:KITTI数据集是在自动驾驶领域最著名的数据之一。它是由卡尔斯鲁厄理工学院等开发的,可用于立体图像、光流估计、三维检测的研究、三维跟踪、视觉测距等。数据采集平台配备了两台彩色摄像机,两台灰度相机,一台Velodyne HDL-64E 3D激光扫描仪和一个高精度的GPS/IMU系统。KITTI提供原始数据有道路、城市、住宅、校园和人等五类。深度完成和预测基准包括93000多张深度图。3D物体检测基准包含7481个训练点云和7518个测试点云。视觉测距基准由22个序列组成,有11个序列(00-10)激光雷达数据进行训练和11序列(11-21)激光雷达数据进行测试。同时,最近发表了Kitti里程数据集的语义标注[71]。SemanticKITTI包含28个类,包括地、建筑、车辆、自然、人、物等。
ASL Dataset [72]:这组数据集是由苏黎世联邦理工学院收集于2011年8月之间至2012年1月。它提供了由北洋UTM-30LX获得的8个点云序列。每个序列约有35次扫描点云和由GPS/INS系统支持的真实姿势。该数据集涵盖了结构化和非结构化环境的领域。
iQmulus [73]:由Mines ParisTech等于2013年1月开发了大规模城市场景数据集。整个3D点云已被分类并划分为50个类。数据是由StereopolisII MLS收集的,该系统是法国国家测绘局(IGN)开发的一个系统。他们使用Riegl LMS-Q120i传感器采集3亿个点。
Oxford Robotcar [74]:这个数据集是由牛津大学开发的。它由2014年5月至2015年12月期间穿过牛津市中心的大约100次轨迹组成(共101,046公里的轨迹)。这一长期数据集捕捉到了许多具有挑战性的环境变化,包括季节、天气、交通等等。而数据集既提供了图像、激光雷达点云、全球定位系统和用于自动汽车的INS地面实况。LIDRA的数据是由两个SICK LMS-151 2D激光雷达扫描仪和一台SICK LD-MRS 3D激光雷达扫描仪获得。
NCLT [75]:它是由密歇根大学开发的。它含有27次于2012年1月至2013年4月期间通过密歇根大学北校区的轨迹。该数据集还提供了图像、激光雷达、全球定位系统和用于长期自动汽车的INS地面数据。LiDRA点云是由Velodyne-32激光雷达扫描仪收集的。
Semantic3D [76]:由苏黎世联邦理工学院开发了高质量和高密度的数据集。它包含了超过40亿的采集点云的点位,通过静态地面观测获得。激光扫描仪提供了8个语义类,其中由人工地形、自然地形、高植被、低植被、建筑物、硬地貌、扫描文物和汽车等组成。而数据集被分为15个训练场景和15个测试场景。
DBNet [77]:这个真实世界的LiDAR-视频数据集是由厦门大学等单位开发的,旨在学习驾驶策略,因此它与以往的户外数据集不同。DBNet提供激光雷达点云、视频记录、GPS和用于进行驾驶行为研究的驾驶员行为。它包含了1,000公里的被Velodyne激光器采集的驾驶数据。
NPM3D [78]: NPM3D数据集是由PSL研究大学开发的。它是一个点云分类和分割的基准。所有的点云都被标记为50个不同的类别。它包含了在巴黎和里尔收集的1431万个点数据。该数据是由包括Velodyne HDL-32E激光雷达和GPS/INS系统的移动激光系统采集的。
Apollo [79] [80]:Apollo是由百度研究开发的。它是一个大规模的自动驾驶数据集。它提供三维汽车实例理解的标签数据、激光雷达点云物体的检测和跟踪,以及基于激光雷达的定位。对于3D汽车实例理解任务,有5277张图片,6万多辆汽车实例。每辆车都有一个工业级的CAD模型。3D物体检测和跟踪基准数据集包含53分钟的训练序列和50分钟测试序列。它是在帧率为10fps/秒,标注的帧率为2fps/秒的情况下采集的。阿波罗-南湾数据集(Apollo-SouthBay dataset)提供了关于定位任务的激光雷达帧数据。它是在旧金山湾南部采集的。他们在标准林肯MKZ轿车上配备了高端的自动驾驶传感器装备(Velodyne HDL-64E、NovAtel ProPak6和IMU-ISA-100C)。
nuScenes [81]:nuTonomy场景(nuScenes)数据集提出了一种新的三维物体检测指标,它是由nuTonomy(APTIV公司)提供。该指标由多个方面组成,分别是分类、速度、大小、定位、方向,以及对象的属性估计。这数据集是由自主车辆传感器装备在360度视野下获取的( 6个摄像机、5个雷达和1个激光雷达)。它包含从波士顿和新加坡收集的1000个驾驶场景。其中,两座城市都是交通堵塞。在这个数据集中的对象有23个类和8个属性,它们都是标有三维边界框。
BLVD [82]:该数据集由西安交通大学开发。并被收藏在常熟(中国)。它介绍了一个新的基准,它专注于动态4D对象跟踪、5D交互式事件识别和5D意图预测。BLVD数据集由654个视频片段组成,其中视频为120k帧,帧率为10fps/秒。所有的帧都是被注释,获得了249129个3D注释。有总共4 902个特定的跟踪对象,6 004个交互式事件识别片段,以及4900个对象用于意图预测。
表2:基准数据集的分类。(cls:分类,seg:分割,loc:定位,reg:配准,aut:自动驾驶,det:目标检测,dri:驾驶行为,mot:运动估计,odo:里程计)
6、 深度学习在3D视觉任务中的应用
在本节中,我们讨论了这些方法的应用。在第4节中讨论了3种流行的3D视觉任务,即。分类、分割和目标检测。见图8。我们审查了这些方法在受欢迎的基准数据集的性能:用于分类的Modelnet40数据集[13], ShapeNet[48]和斯坦福3D室内语义数据集(S3DIS)[61]分别用于部件和语义分割的数据集。
图8 在ShapeNet数据集上点云上的深度学习不同任务的效果。(a) 对象分类(b)部件分割(c)对象检测(d)语义分割
6.1 分类
物体分类一直是我们使用深度学习的主要领域之一。在对象分类中,目标是:给出一个点云,网络应该将其分为某个类别。分类是深度学习的先锋任务,因为早期突破性的深度学习模型如AlexNet[83]、VGGNet[84]、ResNet[85]等是分类模型。在点云中,大多数早期的使用深度学习的分类技术依赖于结构化网格,见第3节。然而,我们只限于直接处理点云的方法。
4和3节中回顾的特征学习技术很容易通过一个全连接网络(其中最后一层代表类别)进行分类任务。正如[9,86]中的方法,其他机器学习分类器,如SVM也可以使用。在图9中,显示了基于点云的深度学习方法在modelnet40上的性能的时间轴。
图9 ModelNet40的分类准确率的变化时间线
6.2 分割
点云的分割是将点分组为同源区域。传统上,分割是利用边缘[87]或表面属性,如法线、曲率和方向[87,88]来完成的。最近,基于特征的深度学习方法用于点云分割,目标是将点划分为不同的方面。这些方面可以是一个对象的不同部分,称为部件分割,或不同的类别,也称为语义分割;
在部件分割中,输入点云代表一定的对象,目标是将每一个点分配到某一特定的部分。如图8b所示,因此称为 “部件 “分割。在[25,33,44]中,学习到的全局描述符与点的特征并联,然后通过MLP以将每个点划分为一个部件类别。[29,35]分别用内插法和解卷方法将全局描述符转化为高分辨率的预测。在[34]中学习到的每个点的特征通过密集的卷积层被用来实现分割。在[43]中,部分和语义都采用了编码器-解码器架构。在表8b中,显示了各种技术在ShapeNet部件数据集上的结果。
在语义分割中,目标是将每个点分配到一个特定类别。例如,在图8d中,点属于椅子用红色显示,而天花板和地板分别用绿色和蓝色表示,等等。语义分割流行的公共数据集有S3DIS[61]和ScanNet[30]。我们表4中显示了一些在S3DIS和ScanNet数据集上最好的方法的性能。
与部件和语义分割相比,点云上的实例分割关注度较低。实例分割是指分组基于相同类别的被唯一标识的多个实例。一些在点云上进行实例分割的最先进的工作是[89, 90, 91, 92, 93],它们的特征学习骨架是建立在PointNet/PointNet++基础上的。
表3显示了第4节所讨论的方法在流行的ShapeNet数据上的表现
表3:ShapeNet部件数据集上的部件分割结果。分数是mIOU。
表4:在S3DIS和ScanNet数据集上进行语义分割。mIOU代表平均交并比,OA代表整体准确度。
6.3 目标检测
目标检测是分类的延伸,其中多个对象可以被识别,并且每个对象都可以通过使用如图8c所示的边界框定位。RCNN[96]是第一个提出了通过选择性搜索进行二维物体检测。其中,选择不同的区域并传递给网络。后来又提出了几种变体[97,98,99]。其他最先进的二维物体检测是YOLO[100]和其变体,如[101,102]。综上所述,二维物体检测是基于2个主要阶段,区域标定和分类。
和二维图像一样,三维点云的检测也是通过区域标定和分类两个阶段进行实验的。
然而,在三维点云中,区域提取阶段比在二维点云中更具挑战性。由于搜索空间是三维的,而滑动的要提取的窗口或区域也是三维的。 vote3D[103]和vote3Deep[104]将输入的点云转换为一个结构化网格,并进行大量的滑动窗口操作进行检测,计算成本很高。为了执行直接在点云中进行物体检测,采用的几种特征学习技术在第4节中讨论过。
在VoxelNet[31]中,稀疏的4D特征矢量是通过区域提取网络生成3D检测。FrustumNet[105]在2D中提出区域并从点云中获得这个区域的3D锥体,并把它通过。PointNet来预测3D边界盒。[89]首先使用PointNet/PointNet++获得每个点的特征向量,并通过.Net/PointNet++获得每个点的特征向量。基于这样的假设,即属于同一对象的点在特征空间上比较接近,提出了一个相似度矩阵,该矩阵的特点是预测给定的一对点是否属于同一个对象。在[106],利用PointNet和PointNet++设计了一个生成式的形状提取网络,产生边界框,这些边界框是使用PointNet进一步处理,进行分类和分割。在[107]中使用PointNet++来学习点对特征,用于从背景中分割出前景点,并采用自下而上的标定框生成前景点的3D边界盒。三维盒子的标定框使用另一种类似PointNet++的结构进一步完善。[108]使用PointNet++学习点对特征,这些特征被认为是种子。然后,这些种子独立地投下一个使用基于MLP的hough投票模块进行投票。同一对象在空间上很接近,因此可以很容易地进行聚类。这些聚类被进一步处理,使用共享的PointNetlike模块,用于投票汇总和标定。PoinNet也是利用[109]中的 (SSD)[110]来实现目标检测。
其中一个流行的目标检测数据集是Kitti数据集。[69, 70]。对kitti的评价分为简易、中度、困难,取决于重合程度、边界盒的最小高度和最大截断。我们在表5和表6上记录了各种目标检测方法在Kitti数据集上的性能。
7、 总结与结论
随着点云扫描设备的不断发展,以及在自动驾驶、机器人、AR和VR中的应用日益广泛,点云的可用性越来越高,因此需要快速高效的点云处理算法,以提高识别、分割和检测等视觉感知能力。由于数据可用性差,深度学习不受欢迎,早期的点云处理方法依赖于人工制作的特性。然而,云计算技术的发展和云计算技术的深入发展带来了点云数据获取技术的变革。点云提供更精确的三维信息,这在需要三维信息的应用中至关重要。由于点云的特性,利用深度学习进行点云处理是一个非常具有挑战性的问题。大多数方法都是将点云转换为结构化网格,以便于深层神经网络的处理。然而,这些方法要么导致深度信息的丢失,要么引入转换伪影,并且需要更高的计算成本。最近,深度学习直接在点云上处理受到了广泛的关注,在点云上直接学习消除了转换的伪影,并减轻了对较高计算成本的需求。PointNet是直接处理点云的基本的深度学习方法。然而,PointNet并不能捕获局部结构。许多方法被开发出来,通过捕捉局部结构以改进pointNet。为了抓住局部的结构,大多数方法都遵循三个基本步骤:采样以减少点的分辨率,并得到代表局部邻域的 “中心点”;分组,基于K-NN选择相邻的点到每个中心点;映射函数,通常用能够学习相邻点的表征的MLP近似。一些方法用与PointNet一样的网络解决了近似MLP。然而由于PointNet不探讨点间关系,一些方法在应用像MLP一样的PointNet之前探讨了局部区域内的点与点之间的关系。考虑点与点之间的点位关系证明了可以提高网络的鉴别能力。
虽然在3D点云上的深度学习已经表现出良好的性能包括分类、部件和语义分割等多项任务。然而,其他领域则受到较小的关注。在三维点云上进行实例分割在很大程度上仍然是未知方向,其中单个的物体在场景中被分割。目前大多数物体检测都是依靠二维检测来进行区域框,很少有工作是直接在点云上检测对象。由于目前大部分工作都是依靠将大场面切割成小块,因此缩放到更大的场景也基本没有被开发。截止到目前这篇综述,只有很少的文章[120,121]探讨了深度学习在大型3D场景上。