3D Vision公开课精华 | 深度三维感知:数据、学习架构与应用

本文总结于弋力博士2021年5月19日在深蓝学院关于深度三维感知的公开课——《深度三维感知:数据、学习架构与应用》。

本次公开课围绕三维数据集构建,三维深度学习骨干网络的设计,三维感知的应用以及未来的研究方向来对深度三维感知展开介绍与讨论 。

我们先从深度三维感知的简单介绍开始。

我们生活在三维的世界中,而让机器理解三维的场景,进而和环境进行交互也是一个非常重要的任务。比如在AR,VR应用中,通过对三维场景的理解可以创建虚拟的内容,增强人们对于3d环境的体验。又比如在自动驾驶中,通过让车辆识别路标,其他车辆和行人等,可以帮助汽车分析路况,从而进行预判和安全行驶。

因为三维理解已经超过了传统三维传感和捕捉的范畴,我们需要强大的一个感知系统去消化和理解这些信号,比如让一个机器人离开一个房间,我们需要让它通过传感数据分析三维场景,然后能找到房间的门把手,扭动它,最后离开房间。

01.三维数据建构

如何分析三维的传感数据,可以首先借鉴在二维图像领域的成功经验。

在过去十年,深度学习一直是整个AI领域发展最强大的助力,尤其是在二维图像领域,完成了很多之前被认为很困难的任务。而这些成功首先是基于二维图像充分的数据集。不过针对三维数据,相比之下,相关的数据集和测试平台的发展却远远落后 。

微信图片_20210611155050.png

图1 深度学习在二维图像理解领域取得众多成果

在二维图像领域,ImageNet通过收集大量互联网的图像并进行仔细的分类,使其成为二维图像测试一个非常理想的平台。基于这样的思路,考虑到互联网同样也存在大量的三维模型,因此,在ShapeNet中,我们也添加了4000多个类别物体的三百多万的模型,当时这样的数据规模远远大于此前存在的三维数据集。

在ShapeNet中,我们添加了三维物体的很多独特属性,在构建ShapeNet时,我们对于物体形状进行了仔细的分类,并对齐了形状,让三维物体有类别和位姿的信息。然后,我们研究了子物体级别的属性,添加了每个物体所包括的语义部件。

接下来,在PartNet的工作中,我们进一步细化了语义标签,使其到达了一个可以进行交互操作的水平,甚至可以支持对于物体运动性和功能性的研究,此外,PartNet将这些语义信息更加层次化的组织起来,从而支持对于它们更加结构化的感知。

微信图片_20210611155159.png

图2 ShapeNet丰富的物体模型

ShapeNet推出后,为三维骨干网络的设计提供了首个测试平台,并为三维深度学习算法提供基本的测试,其次,ShapeNet包括了非常丰富的类别属性,并且在不断增加,从而支持各种各样下游的应用程序和新的研究趋势。

此外,使用ShapeNet可以生成大量自动标签的合成数据,用以支持一些列标注昂贵的三维感知任务如三维物体的位姿估计等。这些特性让ShapeNet成为很多新兴领域的重要数据源。在2020年我们利用ShapeNet物体的丰富属性构建了Sapien这一针对机器人的模拟仿真环境,有了Sapien,我们就可以在安全,廉价和高效的仿真环境去训练机器人的感知算法,而不是在低效昂贵和危险的现实世界去训练。我们也希望Sapein作为机器人技术和三维感知的交集,能够帮助领域发展出更多有意思的研究方向。

微信图片_20210611155256.png

图3 Sapien仿真环境

除了刚才介绍的三维数据集外,这些年也陆续出现了其他不同特点的三维数据集。

在2016年的工作A large dataset of objects scan中,提供的数据集是由来自真实世界的3D扫描的物体组成,不过并没有语义的标注,也没有按类别的信息进行整合,这些也限制了这个数据集的应用。

另外,在Thingi10K数据集中,包括了大量支持3D打印的模型。而在ABC这一数据集中,包含了大量的工业零件CAD模型数据集,为CAD的仿真模拟提供了很好的信息源,并且作者希望通过CAD模型更好的进行几何深度学习的研究。

此外,场景级别的3D数据集也得到了更多的关注。比如SceneNet,诞生于2016年,是一个合成场景的数据集。这个数据集可以帮助人们更好的思考,如何利用合成数据来理解真实的室内环境。Scannet是一个真实场景扫描的数据集,其中包括丰富的语义和实例标注信息。

除此之外,随着无人车的兴起,在驾驶场景中通过3D激光雷达扫描得到的数据集也层出不穷,包括Waymo,Kitti和nuScenes等。这些室外数据集也帮助我们思考如何更好的理解激光雷达的数据。

02.三维深度学习骨干网络

一旦有效地组织了三维数据集,我们就需要思考如何利用数据去更好的训练三维数据的骨干网络。三维深度学习之所以有趣而且特别,是因为三维数据有丰富的表述形式,比如早期的街景通常通过多视图几何来表示;而医疗三维图像包括MRI通常利用体素化来呈现;三维点云则是自动驾驶场景下激光雷达可以采集得到的数据形式;针对室内设计,多边形网格时最受欢迎的数据表述形式。

微信图片_20210611155349.png

图4 三维数据的多种表述方式

针对各种三维信息的表述形式,多视角图像,体素图和深度图通常被认为是常规的数据表现形式。它们类似于在二维网格存储的数据图像,因此也更容易被卷积神经网络训练,从而减轻了我们设计和调整三维骨干网络的负担。

但是,它们也有相应的问题,多视角图像和深度图通常难以完整地刻画一个物体的三维几何形态,比如深度图背面的部分视角是光线照射不到的。而对于体素化的表征,需要对空间进行均匀的切分,它的存储形式更为复杂,会需要更多的存储开销。

不规则和弱结构化的表达形式包括点云和多边形网格,这两种表示形式可以比较紧凑完整的表达三维信息,但是,它们弱结构化的表述方式并不能直接的支持卷积神经网络的使用。如何针对他们设计高效的三维骨干网络也因此成为了一个具有挑战性的课题。

在我们选择三维表述方式的时候,需要根据应用需求,选择不同的形式。比如,在资源有限的移动设备中部署学习系统,我们需要选择更加紧凑的表述形式,致密的体素化表示就不是最佳的选择。如果要通过参考图像重建三维几何形状,那么接近二维图像的表述形式可能会更加灵活,比如深度图或者多视图。

如果需要设计或者编辑三维形状,我们会更加关心对于几何或者拓扑转换的支持。对于简单的几何变换,比如噪声过滤,形状修复,点云和多边形网格是更好的选择,所有的变换都可以通过改变点的坐标来实现。如果想做形状简化和细节平滑,那么多边形网格就更为合适,因为它可以更好的跟踪三维数据的拓扑信息。

如果是为了支持渲染等图形学应用,常采用的表现形式是多边形网格和体素。总之,不同表现形式在不同的应用场景中会体现出各自的优势,所以设计不同的三维深度学习的架构来支持不同格式的信息也至关重要。对于规则的数据表述形式,我们可以更多的参考二维数据的卷积神经网络架构,而如何处理点云等不规则化的数据,方法则没有那么的显而易见。

接下来,我们来介绍一下针对不规则的几何数据形式(点云和多边形网格),该如何设计深度学习的网络。

2.1 PointNet

首先我们介绍PointNet,这个是第一个能够在三维点云上进行深度学习的网络架构。考虑一个点云处理网络,它输入的N个点每一个都是通过D维(通常是3)的坐标表示,因为点云的数据排列是无序的,因此我们也希望点的序列的改变不会影响到深度网络所输出的物体属性,即所谓的置换不变性。那么,哪些函数的处理可以确保这种不变性呢?我们可以想到的是求和,求最大值。但是,它们对于特征的表述性都太弱,为了增强表述性,我们可以通过增加多层感知器来实现,这其实就是PointNet的基本原理。PointNet是一个简单而又强大的网络,因为它的简便,如今在自动驾驶和机器人领域得到了广泛应用。

当然,PointNet并不完美,它提取的特征太过极端,只包含了每个点的特征以及全局的特征,除此之外没有更多的内容,也缺乏层次化的特征提取功能。然而局部的细节特征对于一系列感知任务其实是非常重要的。此外,PointNet对于数据的平移和旋转等操作也是非常敏感的。这也使得PointNet无法用于全新的大型场景理解。

在PointNet++中,我们弥补了PointNet无法提取局部几何特征和抽取上下文信息的缺陷。PointNet++的基本思想是在局部区域递归地使用PointNet,它类似于CNN,遵从分层设计的原则,并且保留了局部的平移不变性。而且,它还继承了PointNet的优势,不会因为输入点云次序的变化而改变点云特征。

在PointNet++中,我们随机选择种子点,并裁减一个圆形区域,这样的局部区域有单个点的周围信息,并且相对于全局信息,几何形状更为简单。为了抽取局部特征,我们可以直接使用PointNet,在多次采样种子点,并覆盖全局大部分区域后,我们就可以结束这个过程。在这之后,通过PointNet处理这些特征种子点,我们就可以得到最终的全局特征。

微信图片_20210611155453.png

图5 PointNet++中种子点的选取和处理

2.2 SyncSpecCNN

接下来要介绍的是将图卷积网络应用于多边形网格学习的工作——SyncSpecCNN。

由于在多边形网格不规则的图上,直接进行卷积是有困难的,因此,光谱CNN被提出。

光谱CNN不是在整个图上进行卷积操作,而是将空间域的卷积操作转换为光谱域的乘积操作。具体而言,我们通过傅里叶变换将信号转换为谱域里的表示,在谱域里,我们定义卷积核和信号进行乘积操作,再通过傅里叶逆变换就可以实现空间域的卷积。

但是,由于不同的多边形网格如果图结构不同,通常具有不同的傅里叶基底,这将阻止谱卷积的滤波器在不同的图之间的参数共享。这对于处理具有不同图结构的多边形网格的集合来说,是一个大麻烦。

在SyncSpecCNN中,我们提出了用来同步基底的方法,利用一种光谱转换网络,根据输入光谱,预测一个线性同步映射,用以将傅里叶基底映射到一个规范域中,从而使得不同的图结构光谱CNN共享成为了一种可能。

03.三维感知的应用

在接下来的环节,我来介绍一下前沿的三维感知应用方面的工作,其中包括三维实例分割,三维场景的预适应问题,三维与二维图像的多模态学习问题以及降低标注量需求的自监督三维感知问题。

首先,我们来了解一下三维实例分割。三维点云实例分割可以说是最重要的感知任务之一,它的定义如下:给定一个三维点云,我们希望能够分割出点云中所有的实例对象,并且将前景点用语义与实例标签相关联。

我们这里介绍的网络叫**GSPN(Gernerative Shape Proposal Network),**它是第一个利用区域提案网络(Region Proposal Network)的方法。在二维图像的分割领域,基于区域的方法至今仍非常成功,也具有非常大的影响力。

这些方案的关键组成部分就叫做区域提案网络,它提取了图像中可能存在对象的区域,这些区域通常被表现为二维的边界框,网络会处理这些区域来进行进一步的预测。比如说对于实例分割的任务,我们可以在边界框内进行二元分割来获得物体。

那么如何在三维信息中进行区域提案来检测和分割目标对象呢?

如果在三维区域,直接使用边界框去提出区域提案,质量往往并不高,因为在高维度的空间寻找到确切的对象是个更复杂的任务,因此经常会出现一个提案中包含了多个物体或者只有一部分物体的情况。

2.png

图6 两种不同类型的实例分割提案方式

在GSPN这个工作中,我们基于的假设是,三维边界框提供的监督信息不足,而提出的新想法是使用能够获取的最强监督信号来监督区域提案网络,而所谓最强的监督信号就是三维物体的几何形状信息。

不同于边界框,通过生成目标对象的形状来迫使提案网络来理解物体的本质,从而避免生成低质量的局部物体或者多个物体的提案。因为三维物体的形状具有很强的几何规整性,并且能够保持物体比例,所以,三维物体形状的分布要比二维物体简单很多,通过“生成类型”的模型,我们可以描述三维物体形状的分布。

具体来说,我们训练了一个生成模型,通过采样,生成逼真的三维物体形状,然后,从分布中获取样本,来生成对象提案。值得注意的是,我们对网络进行了明确的训练,让它了解物体可能出现的外观,这将显著提升提案的质量。我们在ScanNet上对于方法进行了评估,证明了GSPN的方法相较于之前的工作会有更加优秀的性能。

相比于室内,在室外的自动驾驶的场景中,由于室外采用的激光雷达传感器的差异,会引入更多有趣的研究问题。室外场景采集的点云相较于室内,采样模式不同,点云通常比较稀疏。因此,适用于室内场景的网络架构也要做出相应调整。

如何让深度网络针对不同的激光雷达进行预适应,也因此成为了一个值得关注的问题。

我们在这里重点关注激光雷达的语义分割问题,这一问题的具体描述是,通过激光雷达的点云输入预测每一个点的语义标签,比如一个点对应的是一棵树还是路面,我们的目标是通过给定的带有标签的原域,去训练一个语义分割的网络,它能够转移到无标记的目标域。我们非常关注由不同的激光雷达传感器所引起的差异,因为这会引起知识迁移的困难,因此想探索的是,如何利用对3D数据的理解,来解决这样的差异带来的知识迁移的障碍。

3.png

图7 SVCN网络架构

我们所提出的观点是,物理世界是三维的,而激光雷达是对于这些三维信息的采样,如果能够恢复采样点背后的物体表面信息,并且对于物体表面进行密集规范的重采样,那么就可以弥合不同的采样模式导致的差异。

为了实现这样的想法,我们提出了以下流程,首先学习一个稀疏体素补全的网络用来补全输入的稀疏点云,从而得到更加稠密的采样点,我们称这些稠密的点为规范域的点。然后,利用原域的语义标注,可以去训练体素标记的网络,来标记这些规范域的点。在测试的阶段,我们会使用另外一个稀疏体素补全网络来对目标域中的点云进行补全。接下来,我们可以利用训练好的体素标记网络应用于规范域中的点,推断出目标域语义分割的标签。

根据应用的需要,我们也可以将规范域的语义标签投影回目标域中,整个方法的流程相对简单,关键在于三维补全的部分,那如何高效的补全激光雷达的点云呢?

为此,我们需要训练一个稀疏体素补全网络。这个网络包括一个结构生成模块以及一个结构优化模块,这两个模块都是利用了类似U-Net的结构。其中,结构生成模块用于高效的生成结构信息,而结构优化模块用于剔除不准确的信息。

从效果上来说,针对不同类型的雷达,我们都可以生成具有相似的采样模式的补全信息,而这些补全信息也将支持下游任务中跨域的知识迁移。

7.jpg

图8 SVCN网络点云补全效果对比

P4Contrast这一工作的目标是针对RGBD场景来设计一个对比学习框架,在无需人工监督的情况,学习如果从RGBD的数据中提取密集的点级特征。这些特征对对于语义分割和三维对象检测都非常重要。

那么, 如何来学习这样的表征呢?

一种常见的方法叫对比学习。对比学习方法通过优化一个对比损失函数来解决数据集中的实例判别任务,从而优化特征提取器。

我们会定义一个锚点样本,正样本和负样本,其中,正样本和锚点样本对应同样的实例,而负样本和锚点样本则对应不同的实例。实例判别是为了训练网络,从而从大量负样本中成功找到锚点样本对应的正样本。为了实现这样一个目标,我们通常会去优化对比损失函数来将锚点样本和正样本在特征空间中拉近,和负样本在特征空间推远。

那么,我们该如果针对RGBD数据来设计对比学习框架并获取密集特征呢?

一种原始方法是把二维图像的RGB像素值附加到三维点上来创建特征点,我们可以通过对比带颜色的点来抽取一些特征。但是,这种方法并不能有效的实现信息的结合。而另一种替代的方法是从RGB和点云中分别提取特征,并且在模态之间进行交叉对比,来训练RGB和点云各自的特征提取器。但是这种方法不能有效地利用两种模态之间的协同作用,因为它是针对两种模态分别作特征提取。

在P4Contract中,我们提出了对比点像素对的方式。具体来讲,我们的锚点样本是颜色和点的像素对,我们的正样本是成对的RGBD点像素对,它可能是通过锚点样本通过数据增强得到的,正样本和锚点样本中的数据对通常是来自己同一个位置的信息。

负样本则包括了受到了扰动干扰的像素对。比如,RGB点被换成了和三维点云不匹配的点。在P4Constrast中,我们把数据增强,应用于输入的两个版本,从而生成两组对应的密集的点像素对。

我们还要干扰颜色和几何形状,来生成受干扰的像素对。然后,我们将这些点像素对通过神经网络进行特征提取。在准备负样本的过程中,我们会逐渐增加难度,帮助网络渐进地学习特征。

除了预训练的目标,我们还精心设计了深度学习的主干网络来进行特征的提取。主干网络结合了二维和三维的卷积分支,二维卷积分支利用了二维的卷积操作,它的上下文信息由二维的像素决定,而三维分支的上下文信息则来自三维的点。而通过对这种不同上下文信息的融合,就可以增强我们对于RGBD特征的提取。

99.png

图9 P4Contrast流程

为了评估我们的表征学习框架,我们利用p4constrast对于数据进行预训练,执行语义分割,物体检测等下游任务,而实验结果也说明,通过预训练后,结果要远优于不进行预训练或者用其他方法预训练的效果。

前面几个项目主要介绍物体级别的三维场景的理解,接下来我想再深入讨论一下子物体级别的研究,具体探究零部件的结构和运动性,这对于机器人和物体的交互非常重要。这个工作叫做基于物体的零部件分割。

我们生活的环境充满了大量的具有关节的物体,人类可以根据各个部分的运动性把物体分成各个功能不同的部分,而如何让机器人分割物体并理解物体不同部分的运动性呢?

我们对于这个问题的描述如下,通过物体在两帧下的不同状态的观测,推断出物体做刚体运动的零部件,并且得到这些物体的运动规律。除此之外,在训练过程中,我们希望采用在合成数据中的无监督训练取代有监督训练,并且能够迁移到真实数据中。

在对于解决这个问题思路的探索中,我们关注的是不同状态下物体点云的对应关系,因为利用点的对应关系,不需要对于语义的深刻理解,所以可以泛化到不同的物体类别上,更重要的是,一旦具有了两帧点的对应关系,我们就可以将遵从相同的刚体运动的点进行分组来完成分割任务,继而实现泛化的物体分割和部件分析。

10.png

图10 物体零部件分割的问题定义

为了让点的估计迁移到真实的数据中,我们利用PointNet++开发了一个鲁棒的点对应估计网络,它对于第一级传感噪声并不敏感,而这也是合成数据和真实数据的主要区别,因此这个网络可以较好的实现知识迁移。

作为评估,我们把我们的数据应用到训练时没有接触的新物体类别中,从实验结果上看,网络成功的将物体按照运动性进行了分割,这也验证了我们算法的泛化性以及可迁移性。

04.三维深度感知未来的发展方向

最后,我们一起讨论一下三维深度感知未来的发展方向,三维深度学习仍然是一个比较新兴的领域,并且有比较多的发展方向。

首先,不同于具有规则网格结构的二维图像,三维图像通常是嵌入三维空间的二维流形,这种非欧几里得的特性使得诸如卷积之类的基本计算操作的定义变得不同,除了今天介绍的方向,这个领域还有很大的探索空间。

其次,三维深度网络所遇到的各种挑战主要来自于多种不同的数据表现形式,除了之前介绍的显式的表现形式之外,其他的隐式表达形式,比如带符号的距离函数,也在研究领域引起了广泛的兴趣。

如何利用多样化的三维数据表现形式满足各种不同任务的需求,仍然需要大量的研究和分析。

除了对于三维数据的分析,我们还有一个很重要的任务就是去合成高质量的三维几何物体的形状,比如我们要进行简单的三维重建,或者是对于简单几何先验的建模,都需要三维的生成模型,而这一方向虽然在二维图片领域已经取得了一定成果,但是针对三维图像,仍然有很多的工作要做。

此外,行业内也在关注从互联网AI到嵌入式AI的转变。和针对在互联网上搜集的图像进行学习的思路不同,嵌入式AI是通过和环境的交互进行学习。毫无疑问,三维感知是这一领域非常重要的一个问题。这需要我们把三维感知和机器人技术联系起来,其中就包括对于动态环境的时域和空间信息的理解,以及与三维空间的交互。

除此之外,我们也需要关注机器人仿真环境的构建,因为在仿真环境的训练是安全廉价并且公平的,我们能够对于技术的发展进行合理的评价。不过为了在现实世界部署AI系统,解决从虚拟到现实的预迁移问题也至关重要,这就需要我们把虚拟环境的很多细节比如纹理,动力学特征等,都和真实环境匹配起来。

希望大家通过这次讲座能够理解,三维深度感知是一个新兴领域,并且如今在学术和工业领域都在扮演越来越重要的角色,也希望讲座内容能够对于各位的学习工作和研究有所帮助和启发!