像素平面以外:三维传感和学习

想象你正在建造一辆需要了解周围环境的自动驾驶汽车。你如何让你的车感知行人,骑自行车的人,周围还有其他车辆安全行驶吗?你可以用照相机拍这个,但这似乎不是特别有效:你应该选择3D环境,把它“挤压”成从相机拍摄的二维图像,然后尝试从二维图像中恢复你真正关心的三维信息(比如到你前面的行人或汽车的距离)。betway牛牛把你的三维环境压缩成二维图像,你扔掉了很多对你最重要的信息。试图把这些信息拼凑起来是困难的,即使是最先进的算法,容易出错。

相反,你最好能用3D数据增强你的二维世界视图。而不是通过二维图像来估计行人或其他车辆的距离,你可以通过传感器直接定位这些物体。但是现在管道的另一部分变得困难了:感知。你是如何识别像人这样的物体的?骑自行车的人,和3D数据中的汽车?传统的深度学习技术,如卷积神经网络(CNN)。这将使在二维图像中识别这些对象变得简单,需要调整以在3D中工作。幸运的是,近几年来,人们对三维感知问题进行了大量的研究。我们在本文中的任务是对这项工作做一个简要的概述。

特别地,我们将关注最新的深入学习技术,使三维对象分类和语义分割。我们将首先回顾一些关于捕获和表示三维数据的常用方法的背景信息。然后,我们将描述三种不同的三维数据表示的基本深度学习方法。最后,我们将描述有希望的新研究方向,并以我们对该领域发展方向的观点来结束。

我们如何捕获和表示三维数据?

很明显,我们需要能够直接在3D中操作的计算机视觉方法,但这提出了三个明确的挑战:感知,代表,了解三维数据。

传感

捕捉三维数据的过程很复杂。尽管2D相机价格低廉且广泛使用,3D传感通常需要专门的硬件设置。

图像ALT文本

立体视觉使用多个摄像头并测量感知对象位置的移动,以计算深度信息(来源:爱丁堡大学

  1. 立体音响将两个或多个摄像头固定在彼此相对的特定位置,并使用此设置捕获场景的不同图像,匹配相应的像素,并计算每个像素在图像之间的位置差异,以计算其在三维空间中的位置。这大致就是人类感知世界的方式——我们的眼睛捕捉到了世界的两个独立的“图像”。然后我们的大脑会观察一个物体的位置是如何在我们左右眼的视图之间变化的,从而确定它的三维位置。立体声很有吸引力,因为它涉及简单的硬件-只有两个或更多的普通相机。然而,这种方法在精度和速度很重要的应用中不是很好,因为在无纹理或视觉重复的环境中,使用视觉细节匹配相机图像之间的对应点不仅计算成本高,而且容易出错。

图像ALT文本

RGB-D相机输出包含颜色信息和每个像素深度的四通道图像(来源:九州大学

  1. RGB-D除了彩色图像(“RGB”)之外,还需要使用一种特殊类型的相机来捕捉深度信息(“D”)。明确地,它能捕捉到你从普通的二维相机中得到的相同类型的彩色图像,但是,对于像素的某些子集,同时告诉你物体在摄像机前面有多远。内部,大多数的RGB-D传感器都是通过“结构光”工作的,它将红外图案投射到场景上,并感知该图案是如何弯曲到几何表面上的。或者说“飞行时间”,它观察投射的红外线返回相机需要多长时间。您可能听说过的一些RGB-D相机包括微软Kinect还有iPhone X脸ID传感器。rgb-d是伟大的,因为这些传感器相对较小,成本低,但也很快和免疫视觉匹配错误。然而,由于遮挡(前景块中的对象投影到其后面的对象上),RGB-D相机的深度输出中通常有许多孔,模式传感故障,和距离问题(投影和传感都变得越来越难远离相机)。

激光雷达使用几束激光束(以同心圆感应)直接感知环境的几何结构(来源:吉菲

  1. 激光雷达包括向目标发射快速激光脉冲,并测量返回传感器所需的时间。这类似于我们上面描述的RGB-D相机的“飞行时间”技术,但是激光雷达的射程要大得多,捕捉更多的点,对来自其他光源的干扰更为有效。如今,大多数3D激光雷达传感器都有几个(最多64)光束垂直排列,快速旋转以观察传感器周围的各个方向。这些是大多数自动驾驶汽车中使用的传感器,因为它们的准确性,范围,鲁棒性,但是激光雷达传感器的问题是它们通常很大,重的,而且非常昂贵64光束传感器大多数自动驾驶汽车的成本是75000美元!).因此,许多公司目前正在努力开发更便宜的“固态激光雷达”无需旋转即可在3D中感知的系统。

三维表示

一旦你捕获了3D数据,您需要以一种有意义的格式表示它,作为您正在构建的处理管道的输入。您应该知道四个主要的表示:

图像ALT文本

三维数据的不同表示。(a)点云(来源:加州理工学院)(b)体素网格(来源:印度理工学院)(c)三角形网格(来源:UW)(d)多视图表示(来源:斯坦福大学

a.点云只是三维空间中点的集合;每个点由(XYZ)位置,以及一些其他属性(如RGB颜色)。它们是激光雷达数据的原始形式,立体和RGB-D数据(由每像素深度值标记的图像组成)通常在进一步处理之前转换为点云。

B.体素网格来自点云。“体素”类似于3D中的像素;把体素网格看成是量子化的,固定大小的点云。点云在空间中任何位置都可以有无限多的点,这些点具有浮点像素坐标,体素网格是三维网格,其中每个单元,或者“体素”,有固定的大小和离散的坐标。

C.多边形网格由一组多边形面组成,这些面具有近似几何曲面的共享顶点。将点云视为来自底层连续几何曲面的采样三维点的集合;多边形网格旨在以易于渲染的方式表示这些基础曲面。虽然最初是为计算机图形而创建的,多边形网格也可用于三维视觉。从点云获取多边形网格有几种方法,包括凯扎丹等。泊松曲面重建〔1〕(2006)。

d.多视图表示是从不同模拟视点(“虚拟相机”)捕获的渲染多边形网格的二维图像的集合,以简单的方式传递三维几何图形。简单地从多个摄像头(如立体)捕获图像和构建多视图表示的区别在于,多视图实际上需要构建一个完整的3D模型并从多个任意的完全传达基本几何图形的视点。与上面的其他三种表述不同,用于存储和处理三维数据,多视图表示通常只用于将三维数据转换为便于处理或可视化的格式。

理解

既然你已经把你的三维数据变成了一种可消化的格式,您需要实际构建一个计算机视觉管道来理解它。这里的问题是,扩展在二维图像(如CNN)上工作良好的传统深度学习技术,以便在三维数据上操作,这取决于该数据的表示方式。使传统的任务,如目标检测或分割具有挑战性。

多视图输入学习

使用三维数据的多视图表示是使二维深度学习技术适应三维的最简单方法。这是把三维感知问题转化为二维感知问题的巧妙方法,但在某种程度上,你仍然可以理解一个物体的三维几何。betway牛牛早期的基于深度学习的工作是苏等。多视角美国有线电视新闻网〔2〕(2015)一种简单而有效的体系结构,可以从三维对象的多个二维视图中学习特征描述符。实施这种方法,与使用单个二维图像进行对象分类任务相比,该方法提高了性能。这是通过将单个图像输入到在ImageNet上预先训练的VGG网络中来完成的,以提取显著的特征,汇集这些产生的激活图,并将这些信息传递到额外的卷积层以进一步进行特征学习。

图像ALT文本

多视图CNN架构(来源:

仍然,多视图图像表示有许多限制。主要的问题是,你没有真正学习三维-固定数量的二维视图仍然只是一个不完美的近似基础三维结构。因此,像语义分割这样的任务,尤其是在更复杂的物体和场景中,由于从二维图像中获取的特征信息有限,因此变得具有挑战性。此外,这种形式的可视化三维数据对于自动驾驶和虚拟现实等计算受限的任务是不可扩展的-请记住,生成多视图表示需要呈现完整的三维模型并模拟几个任意的视点。最终,多视角学习面临着许多缺点,这些缺点促使人们对直接从三维数据中学习的方法进行研究。

用体积表示学习

体素网格学习解决了多视图表示的主要缺点。体素网格在二维和三维视觉之间架起桥梁-它们是最接近图像的三维表示,使二维深度学习概念(如卷积算子)与三维相适应变得相对容易。马图拉和舍勒Vox网络〔3〕(2015)是在体素网格输入的情况下,在对象分类任务上实现令人信服的结果的第一个深入学习方法之一。voxnet运行于概率占用网格,其中每个体素包含体素在空间中被占据的概率。这种方法的一个好处是它允许网络区分已知的自由体素(例如,体素:通过激光雷达光束的体素和占用未知的体素(例如,体素后面激光雷达光束击中的地方)。

图像ALT文本

voxnet架构(来源:

Voxnet的架构本身相当简单,由两个卷积层组成,最大池层,以及两个完全连接的层来计算输出类分数向量。与大多数最先进的图像分类网络相比,该网络要浅得多,参数也要少得多。但它是从数百个CNN架构的随机搜索中选出的。由于体素网格与图像非常相似,他们使用的实际跨步卷积和池操作是这些操作人员从二维像素到三维体素的微小调整;卷积运算符使用$d \times d \times d \times c$kernel,而不是二维CNN中使用的$d \times d \times c$kernel,池操作符考虑的是不重叠的三维体素块,而不是二维像素块。

voxnet的一个问题是,体系结构并不是固有的旋转不变量。虽然作者合理地假设传感器保持直立,以便体素网格的$Z$轴与重力方向对齐,对于围绕$Z$轴的旋转不能做出这样的假设-从后面的对象仍然是同一betway牛牛个对象,即使体素网格中的几何体与所学卷积核之间的交互也会非常不同。为了解决这个问题,他们采用了一种简单的数据扩充策略。培训期间,他们将每个模型旋转几次,并在所有副本上进行培训;然后,在测试时间,它们通过输入的几个旋转来汇集最终完全连接层的输出。他们注意到,与汇集中间卷积层(如苏等。的多视图CNN执行其“视图池”步骤。这样,voxnet通过在输入体素网格的不同旋转中共享相同的已知卷积核权重来学习旋转不变性。

voxnet代表着向真正的3D学习迈出了一大步,但是体素网格仍然有许多缺点。第一,与点云相比,它们会失去分辨率,因为几个不同的点代表复杂的结构将被结合成一个体素,如果他们紧密在一起。同时,与稀疏环境中的点云相比,体素网格可能导致不必要的高内存使用率,因为它们主动地消耗内存来表示自由和未知的空间,而点云只包含已知的点。

点云学习

点网

鉴于这些基于体素的方法的问题,最近的工作集中在直接在原始点云上运行的架构上。最值得注意的是,祁等人 点网〔4〕(2016)是处理这种形式的不规则三维数据的第一个建议方法。然而,正如作者所指出的,点云只是一组点,用它们的XYZ位置。更具体地说,如果一个点云中有$N$点,网络需要学习对$n不变的独特功能!$此输入数据的排列,因为输入网络的点的顺序不会影响基础几何图形。此外,网络应该对点云旋转的转换具有鲁棒性,翻译和缩放不应影响预测。

为了确保输入顺序的不变性,pointnet背后的关键洞察是使用一个简单的对称函数,它为输入的任何顺序生成一致的输出(此类函数中的示例包括加法和乘法)。在这种直觉的指引下,pointnet架构(称为pointnet vanilla)背后的基本模块定义如下:

$F(XY1)\LDOTS,x_n)=\gamma\odot g(h(x_1),\LDOTS,H(Xyn))$$

其中$F$是一个对称函数,它将输入点转换为$K$维向量(用于对象分类)。此函数$f$可以近似为存在另一个对称函数$g$。在方程中,$H$是一个多层感知器(MLP),它映射单个输入点(及其相应的特性,如XYZ位置,颜色,曲面法线,等)进入更高维度的潜在空间。max pooling操作用作对称函数$g$,将学习的功能聚合到点云的全局描述符中。这个单一的特征向量被传递到$\gamma$,另一个输出对象预测的MLP。

为了解决学习对点云几何变换不变的表示的挑战,Pointnet使用一个小型网络,被称为T-NETs,对输入点云应用仿射变换。这个概念类似于贾德伯格等人空间变压器网络〔5〕(2016)但更简单,因为不需要定义新类型的层。t-net由可学习的参数组成,这些参数使pointnet能够将输入点云转换为固定的,规范空间-确保整个网络即使是最微小的变化都是健壮的。

图像ALT文本

Pointnet体系结构(来源:

整个点网架构将普通方法和T-NET与多个MLP层集成在一起,为点云创建特性表示。然而,除了对象分类,Pointnet还支持对象和场景的语义分割。为了做到这一点,该体系结构将最大池对称函数的全局特征向量与输入数据通过几个MLP后获得的逐点特征相结合。通过连接这两个向量,每个点都知道它的全局语义和本地特性,使网络能够了解更多信息,有助于细分的更有意义的功能。

图像ALT文本

使用Pointnet的室内场景语义分割结果(来源:

PooNET++

尽管pointnet的结果令人印象深刻,其中一个主要缺点是,该体系结构无法捕获点附近的底层局部结构,这一想法类似于从使用CNN的图像中不断增加的接收场大小中提取特征。为了解决这个问题,齐等。发达的PooNET++〔6〕(2017)从Pointnet体系结构衍生而来,但也能够从点云中的本地区域学习功能。该方法的基础是一个具有三个关键步骤的分层特征学习层。它(1)采样点作为局部区域的质心,(2)根据与质心的距离对这些局部区域中的相邻点进行分组,和(3)使用一个小型的点网对这些区域的特性进行编码。

这些步骤将逐步重复,以便在点云中不同大小的点组之间学习功能。这样做,网络可以更好地理解整个点云中点的本地集群内的底层关系,最终有助于提高泛化性能。这项工作的结果表明,与现有的方法(包括pointnet)相比,pointnet++能够实现显著的改进。在3D点云分析基准(ModelNet40和ShapeNet)上实现了最先进的性能。

有希望的新研究领域

图CNNS

目前对用于处理三维数据的深度学习体系结构的研究主要集中在点云表示上。最近的很多工作都是从pointnet/pointnet++扩展思想,并从其他领域获得灵感,以进一步提高性能。这类论文的一个例子是王等。动态图CNN〔7〕(2018)该方法利用基于图形的深度学习方法来改进点云的特征提取。其思想是,Pointnet和Pointnet++无法捕获各个点之间的几何关系,因为这些方法需要保持对不同输入排列的不变性。然而,通过把一个点和它周围最近的邻居看作有向图,王等。建造EdgeConv,一种在数据点上生成独特特征的运算符。读取另一个渐变betway棋牌必威棋牌概述如果你有兴趣了解更多关于图形学习的知识。betway牛牛

斯普拉特

图像ALT文本

Splatnet架构(来源:

另一方面,一些研究已经偏离了Pointnet/Pointnet++中提出的经典特征提取方法。选择设计一种处理点云的新方法。苏等。斯普拉特(2018)〔8〕体系结构是点云研究的一个很好的例子,作者设计了一种新颖的体系结构和卷积算子,可以直接对点云进行操作。本文的重点是将“接收场”的概念转化为不规则点云。这使得空间信息甚至可以跨稀疏区域保存(pointnet/pointnet++的一个主要缺点)。特别吸引人的是Splatnet可以将从多视图图像中提取的特征投影到3D空间中,将此二维数据与原始点云融合在端到端可学习架构中。使用这种二维-三维联合学习,Splatnet在语义分割方面取得了新的进展。

截锥点网

图像ALT文本

可视化从二维边界框估计生成的三维截锥(来源:

第三个有希望的研究方向是扩展我们上面描述的基本体系结构构建块,以构建更为复杂的网络,用于诸如3D中的对象检测之类的有用任务。基于使用二维和三维数据的想法,祁等人 截锥点网〔9〕(2017)提出了一种将RGB图像与点云融合的新方法,以提高在大型3D场景中定位对象的效率。此任务的常规方法通过直接在整个点云上对滑动窗口执行分类来确定对象的可能三维边界框,计算量大,实时预测困难。齐等。做出两项关键贡献。

第一,他们建议最初使用标准CNN在二维图像上进行物体检测,挤出一个三维截锥,该截锥对应于被检测对象可能所在的点云区域,然后只在点云的这个“切片”上执行搜索过程。这大大缩小了边界框估计的搜索空间,减少了错误检测的可能性,大大加快了处理流程,这对于自动驾驶应用至关重要。

第二,而不是在边界框搜索过程中对执行典型的滑动窗口分类,齐等。设计一种新的基于点网的体系结构,该体系结构可以一次对整个三维截锥直接执行实例分割(将点云分割为单个对象)和边界框估计。使其方法对闭塞和稀疏具有快速和鲁棒性。最终,由于这些改进,在Kitti和Sun RGB-D 3D检测基准发布时,这项工作优于所有先前的方法。

最后的想法

在过去的5年里,三维深度学习方法已经从使用衍生(多视图)到原始(点云)的三维数据表示法发展起来。沿途,我们已经从简单地将二维CNN转换为三维数据的方法(多视图CNN甚至VOXNET)转变为手工为三维数据的方法(点网和其他点云方法)。大大提高了对象分类和语义分割等任务的性能。这些结果是有希望的,因为它们证实了在3D中看到和表现世界是真正有价值的。

然而,这一领域的进展才刚刚开始。目前的工作不仅注重提高这些算法的准确性和性能,但也要确保健壮性和可扩展性。尽管目前的研究大多是由自主车辆应用推动的,直接在点云上操作的新方法将在3D医学成像中发挥重要作用,虚拟现实,室内地图。

(封面图片:韦莫


米歇尔加里梅拉普拉西克斯坦福大学主修计算机科学的大二学生正在上升。他们做过机器人研究,计算机视觉,在Facebook的连接实验室和亚马逊的Coreai团队学习机器,并拥有行业经验,分别。他们是萤火虫自治,一个早期的初创公司,为室内测绘和工业检测建造自主无人机。


  1. Kazhdan迈克尔,拥抱跳跃。“屏蔽泊松曲面重建”,ACM图形事务(TOG)32.3(2013):29.γ

  2. 苏杭,等。“三维形状识别的多视图卷积神经网络”,《IEEE计算机视觉国际会议论文集》。2015。γ

  3. 马土然阿丹尼尔,还有塞巴斯蒂安·谢勒。“VOXnet:一个用于实时物体识别的三维卷积神经网络。”智能机器人和系统(IROS)2015年IEEE/RSJ国际会议。IEEE2015。γ

  4. 气,查尔斯R等。“点网:对点集的深入学习,用于三维分类和分割。”过程。计算机视觉和模式识别(CVPR)IEEE 1.2(2017):4.γ

  5. Jaderberg最大值,Karen Simonyan还有安德鲁·齐瑟曼。空间变压器网络。神经信息处理系统的进展。2015。γ

  6. 气,查尔斯·瑞中泰,等。“pointnet++:度量空间中点集的深层层次特征学习。”神经信息处理系统的进展。2017。γ

  7. 王岳等。“点云学习动态图CNN”,arxiv预印arxiv:1801.07829(2018)。γ

  8. 苏杭,等。“splatnet:点云处理的稀疏点阵网络”,《IEEE计算机视觉和模式识别会议论文集》。2018。γ

  9. 气,查尔斯R等。“基于RGB-D数据的三维目标检测用截锥点网”,arxiv预印arxiv:1711.08488(2017)。γ