3D and Deep Learning

Posted by Rasin on August 7, 2020

三维数据深度学习

三维数据

3D数据与2D数据最大的区别即在于数据的表现形式。众所周知,2D数据可以表示为一个二维矩阵,但3D数据通常有许多种表现形式:深度图、点云、网格、体积网格(volumetric grids)

3D数据的表达形式通常由应用驱动,例如在计算机图形学中做渲染建模通常我们选择网格化数据,而将空间进行三维划分我们一般使用体积网格等,而在3D场景理解时,我们一般使用点云。

以三维点云为例,我们分析其优势为:

  • 点云非常接近原始传感器的数据集,激光雷达扫描之后输出的数据即为点云,深度传感器(深度图像)只不过是一个局部的点云,原始的数据可以做端到端的深度学习,挖掘原始数据中的模式
  • 点云在表达形式上是更为简单,原始的点云信息是一组无序的三维点坐标。相比较来说,网格需要选择面片类型、体积网格需要根据分辨率选择网格的大小等,深度图需要注意拍摄的角度,表达也不全面;

当然,三维点云数据同样具有许多的缺点:

  • 如果直接使用3D的卷积神经网络,其计算复杂度很高。通常大家会刻意的降低分辨率来减少复杂度,而降低分辨率会带来量化的噪声错误;
  • 如果考虑不计复杂度的栅格,由于传感器只能扫描到表面,因此会导致大量的体积网格都是空白,所以体积网格并不是对3D点云很好的一种表达方式;如果用3D点云数据投影到2D平面上用2D卷积神经网络进行训练,这样会损失3D的信息;
  • 在深度学习大热之前,多数研究倾向于在点云中提取手工的特征,再接FC,由于手工特征的局限性,限制了点云信息的表达。

点云数据在欧式空间中具有三个特征:

  1. 无序性,点云是一个集合,因此对顺序不敏感。目前文献中使用的方法包括将数据重排列、使用对称函数保证派别的不变性、用数据的所有排列进行数据增强;
  2. 点与点之间包含有意义的空间关系,为了有效使用这种空间关系,目前文献主张将局部特征和全局特征进行串联、特征直接聚合
  3. 不变性,点云数据所代表的目标对某些空间转换具有不变性,比如旋转和平移。目前文献主张使用的方法包括引入各种具有不变性特征的算子、通过训练一个小型的网络来得到旋转矩阵,在特征提取之前对点云数据进行对齐。

深度学习的应用

目前三维点云在深度学习领域中的应用大体框架如图,主要分为:三维形状分类三维目标检测及跟踪三维点云分割

我们将点云在深度学习中的表示及处理方法大体分为如 下:

  1. 基于投影方法:基于投影的方法通常将非结构化的点云投影至中间的规则表示(即不同的表示模态),接着利用2D或者3D卷积来进行特征学习,实现最终的模型目标。目前学术界提出的表示模态包括:多视角表示、鸟瞰图表示、球状表示、体素表示、超多面体晶格表示以及混合表示。
  2. 基于点的方法:基于点的方法直接在原始数据上进行处理,并不需要体素化或是投影。基于点的方法不引入其它的信息损失且变得越来越流行。根据网络结构的不同,总体而言,这些方法可被简单的分为以下几类:基于各个点的MLP方法,基于点卷积的方法,基于RNN的方法和基于图的方法。

问题

基于三维数据的深度学习仍然存在着不少亟待解决的问题,我们整理了一些典型的问题:

  1. 基于点的网络是最常见的方法,然而,点的表示通常没有明确的邻域信息,大多数基于点的方法不得不试图使用好非自愿的邻域查找方法(KNN, ball query),而由于领域查找方法需要很高的计算资源和内存,自然也限制了这类方法的有效性;
  2. 在点云分割中,从不平衡的数据中学习仍然是具有挑战性的问题,尽管许多方法达到了不错的结果,但性能在较小类别的数据上仍然较差
  3. 由于三维数据处理占用了大量的算力,大多数的方法在较少点的点云上进行,但实际上从深度sensor上得到的点云是非常稠密的,因此需要寻求处理大规模点云的有效方法
  4. 最近一些工作开始在动态点云中学习空间-时间的信息,空间-时间信息可以帮助提高3D目标检测,分割和补全是值得期待的。