编者按:本文作者Mihir Garimella和Prathik Naidu是斯坦福大学大二的学生,他们在这篇文章中总结了对3D场景感知所需要的技术以及未来发展的方向。
假设你要打造一台自动驾驶汽车,它需要了解周围情况。你会用什么方法让车子感知周围的行人、自行车和其他障碍物呢?也许你会想到用照相机,但是这可能不会很高效:你需要对3D环境进行拍摄,然后将其压缩成2D图像。之后,模型会重建你需要的3D图像信息(例如车辆距前方行人的距离)。将3D图像压缩的过程会丢掉很多重要信息,然而之后想再重新拼凑这些信息是很困难的,即使是最先进的算法也会出错。
所以,理想情况下你应该可以用3D数据对2D景观进行优化,可以直接用传感器对前方障碍进行定位,而不是用2D图像估计行人或其他交通工具与你的距离。但是这时又会有新的问题:我们怎么才能在3D数据中识别目标物体呢?例如行人、自行车、汽车等等。传统的CNN会直接在2D图像中辨认不同的物体,然后再在3D中调整。3D感知问题已经研究了很久,这篇文章就是对这一工作进行大致回顾。
特别的,我们将重点关注最近能够实现3D物体的分类和语义分割的深度学习技术。我们会从捕捉、表示3D数据的常用方法讲起,之后会展示三种基本的用于表示3D数据的深度学习方法。最后,我们会思考未来研究的新方向。
如何捕捉并表示3D数据?
很明显,我们需要能直接在3D数据上操作的计算机视觉方法,但是这里有三大难题:感知、表示、理解3D数据。
感知
捕捉3D数据的过程很复杂,虽然2D相机价格便宜、使用广泛,但是要进行3D感知还需要特殊的硬件设备。
立体视觉利用多相机在不同方位进行拍摄来计算深度信息
1. 在两个或两个以上的位置放置相机,捕捉不同场景下的目标图像,然后把对应的像素进行匹配,计算不同照片中每个像素的位置有何不同。这也是人类看世界的方法——我们的眼睛捕捉两个不同的画面,然后大脑根据左右眼不同角度确定3D场景。立体视觉只需要几个普通相机,设备很简单,因此吸引了很多使用者。但是,这种方法在进行精准测量或计算速度时表现得就不那么好了,因为用视觉细节对图像之间相对的点进行匹配,不仅需要大量计算力,还会造成很多错误。
RGB-D相机可以输出一个有四个通道的图像,其中包含了颜色信息和像素深度
2. RGB-D是一种特殊的相机,它不仅能捕捉深度信息(D)还能捕捉图像颜色(RGB)。而且它还能捕捉到和2D相机一样的彩色图像。大多数RGB-D传感器是通过“结构光”或“飞行时间”进行工作。你可能听过微软的Kinect或iPhone X的Face ID传感器中包含RGB-D相机,它们很强大,因为这些传感器体积小、成本低、速度快。但是,RGB-D相机经常会在深度输出上出现很多洞,因为前方背景的障碍物遮挡或者模式识别的故障等问题。
LIDAR运用几束激光直接感知环境的几何结构
3.LIDAR是对目标物体发射高速激光脉冲,并计算它们返回传感器的时间,类似RGB-D相机的“飞行时间”技术,但是LIDAR的探测距离可以更长,能捕捉更多点,不容易受其他光源的干扰。目前大多数自动驾驶汽车使用的也是这类传感器,因为它们精确度高、范围广并且稳定。但是LIDAR通常体积很大、价格昂贵,许多公司正在开发更便宜的LIDAR系统。
3D表示
获取数据后,你需要用合适的方法表示出来。这里有四种主流的表示方法:
从左至右:点云;voxel网格;多边形网格;多角度表示
1.点云是在3D空间中点的集合,每个点都由一个坐标(xyz)表示,同时会有其他特征(例如RGB颜色)。它们都是捕捉到的LIDAR数据的原始形式,通常在进行下一步处理之前,立体和RGB-D数据会转化成点云形式。
2.Voxel网格由点云演化而来。Voxel就像3D中的像素,我们可以将voxel网格想象成量化的、固定尺寸的点云。尽管点云可以在空间中的任何位置具有无线数量的点与浮点像素坐标,但是voxel网格是3D网格,其中的每个体素(voxel)都有固定的尺寸和独立的坐标。
3.多边形网格是一组有共同顶点的多变形表明组成的一个近似几何形状的表面。将点云想象成从连续集合表面采集的3D点的集合,多边网格的目的是用一种容易渲染的方法表示出这些表面。虽然最初是为了计算机图形而创建的,多边形网格也可以用于3D视觉。从点云中获取多边形网格的方法有很多,可以参考Kazhdan等人的Poisson surface reconstruction(地址:http://hhoppe.com/poissonrecon.pdf "Poisson surface reconstruction")。
4.多角度表示是从多个角度捕捉到的、经过渲染的多边形网格的2D图像集合。仅从多个相机中捕捉不同图像和创建多角度的表示之间的区别在于,多角度需要搭建一个完整的3D模型,并且从多个任意角度进行渲染,以完全传递潜在的几何图像。与上面其他三种表示不同,多角度表示通常将3D数据转化成更简单的形式用于处理可视化。
理解
现在,你已经将3D数据转化成可读形式了,你需要创建一个计算机视觉管道理解它。这里的问题是,扩展传统的深度学习技术到3D数据上会很棘手。
通过多角度输入学习
多角度表示是最简单的将2D深度学习应用在3D上。将3D感知问题转换成2D感知是很聪明的方法,但是它仍然需要你推理目标物体的3D几何图形。早期运用这一方法的深度学习研究是Su等人的多角度CNN,这是一种简介但是高效的网络结构,可以从多个2D图像中学习特征描述。运用了这种方法,结果比单独使用2D图像要好。将单独的图像输入到经过训练的VGG网络中,提取最重要的特征,对这些激活映射进行池化,然后将信息传递到其他卷积层中进行特征学习。
不过,多角度图像表示有一些限制。主要问题是我们并不是真正学习的是3D,一定量的2D角度图像并不能真正地估计3D结构。所以,一些类似语义分割的任务,尤其是复杂的目标和场景,都会受到特征信息的限制。另外,这种形式的3D数据可视化是不可扩展的,在计算上会受到限制。
用容积表示学习
通过voxel网格学习解决了多角度表示的主要缺点。voxel网格填补了2D和3D表示之间的差距。Maturana和Scherer的VoxNet(地址:https://www.ri.cmu.edu/pubfiles/2015/9/voxnetmaturanaschereriros15.pdf)是最初用深度学习方法在图像分类上达到较好结果的方法。
VoxNet结构
VoxNet的结构非常简洁,包括两个卷积层,一个最大池化层和两个用于计算输出分数向量的完全连接层。该网络结构更简单,参数也更少,但它是从上百个CNN架构中随机搜索得到的。
用点云学习
PointNet
由于基于voxel的方法有多种限制,最近一些研究开始直接处理原始的点云。Qi等人于2016年提出的PointNet(地址:arxiv.org/pdf/1612.00593.pdf)是首个处理这种不规则3D数据的方法。然而,如论文作者所说,点云仅仅是一些用xyz坐标组合起来的3D表示。另外,网络应该对点云的变化保持稳定,例如旋转、翻转、缩放等等。
PointNet结构
PointNet++
虽然PointNet能达到较好的效果,但是它的一个重要缺陷是结构无法捕捉近邻点之内的本地结构。为了解决这个问题,Qi等人在2017年提出了PointNet++(地址:arxiv.org/pdf/1706.02413.pdf),它是PointNet的升级版,它背后的主要原理是一个分级的特征学习层,主要工作过程有三步,首先它会对点进行采样,用作局部区域的中心,之后根据这些区域中近邻点到中心点的距离分组,然后用mini-PointNet对区域进行特征编码。
未来研究新方向
目前对3D数据的处理主要集中在点云表示,除此之外还有一些其他成果。2018年,Wang等人提出的Dynamic Graph CNNs利用基于图形的深度学习方法提高了在点云中的特征提取。
另一方面,一些研究者设计了新方法处理点云,Su等人的SPLATNet架构就是很典型的例子。作者设计了一种全新架构和卷积操作器,可以直接在点云上进行操作。它的核心思想是将“接受域”的概念转换成不规则的点云,即使在稀疏空间中也能看到空间信息。
SPLATNet架构
第三种有前景的研究防线是扩展基础结构,建造更详细的网络用于3D目标检测。2017年,Qi等人的Frustum Pointns提出了一种新方法,将RGB图像和点云融合,提高了模型在3D场景中定位的效率。
结语
过去五年,3D深度学习方法从多角度发展到点云的3D数据表示,各种处理方法层出不穷,这些研究结果都非常有前景,因为它们能够真实地用3D表现出现实世界。
然而,这些进步仅仅是开始。目前的工作不仅关注如何提高算法的精确度和性能,而且还要保证它们的稳定性和可扩展性。虽然现在的大部分研究都是来自自动驾驶的需求,但直接在点云上操作的方法能在3D医学成像、VR和室内地图中发挥很大的作用。
-
3D
+关注
关注
9文章
2875浏览量
107480 -
自动驾驶
+关注
关注
784文章
13784浏览量
166376 -
深度学习
+关注
关注
73文章
5500浏览量
121109
原文标题:超越平面像素:3D数据的感知与学习
文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论