来源 |
1 前言
对于自动驾驶应用来说,最终还是需要对3D场景进行感知。道理很简单,车辆不能靠着一张图像上得到感知结果来行驶,就算是人类司机也不能对着一张图像来开车。因为物体的距离和场景的和深度信息在2D感知结果上是体现不出来的,而这些信息才是自动驾驶系统对周围环境作出正确判断的关键。
一般来说,自动驾驶车辆的视觉传感器(比如摄像头)安装在车身上方或者车内后视镜上。无论哪个位置,摄像头所得到的都是真实世界在透视视图(Perspective View)下的投影(世界坐标系到图像坐标系)。这种视图与人类的视觉系统很类似,因此很容易被人类驾驶员理解。但是透视视图有一个致命的问题,就是物体的尺度随着距离而变化。因此,当感知系统从图像上检测到了前方有一个障碍物时,它并不知道这个障碍物距离车辆的距离,也不知道障碍物的实际三维形状和大小。
图像坐标系(透视视图)vs. 世界坐标系(鸟瞰视图)[IPM-BEV]
想要得到3D空间的信息,一个最直接的方法就是采用激光雷达(LiDAR)。一方面,LiDAR输出的3D点云可以直接用来获取障碍物的距离和大小(3D物体检测),以及场景的深度(3D语义分割)。另一方面,3D点云也可以与2D图像进行融合,以充分利用两者所提供的不同信息:点云的优势在于距离和深度感知精确,而图像的优势在于语义信息更加丰富。
但是,LiDAR也有其缺点,比如成本较高,车规级产品量产困难,受天气影响较大等等。因此,单纯基于摄像头的3D感知仍然是一个非常有意义和价值的研究方向。本文以下的部分会详细介绍基于单摄像头和双摄像头的3D感知算法。
2 单目3D感知
基于单摄像头图像来感知3D环境是一个病态问题,但是可以利用一些几何约束和先验知识来辅助完成这个任务,也可以采用深度神经网络端对端的学习如何从图像特征来预测3D信息。
2.1 物体检测