自动驾驶

从 20 世纪 80 年代首次成功演示以来(Dickmanns & Mysliwetz (1992); Dickmanns & Graefe (1988); Thorpe et al. (1988)),自动驾驶汽车领域已经取得了巨大进展。尽管有了这些进展,但在任意复杂环境中实现完全自动驾驶导航仍被认为还需要数十年的发展。原因有两个:首先,在复杂的动态环境中运行的自动驾驶系统需要人工智能归纳不可预测的情境,从而进行实时推论。第二,信息性决策需要准确的感知,目前大部分已有的计算机视觉系统有一定的错误率,这是自动驾驶导航所无法接受的。

来源:机器之心
简介

自动驾驶汽车,是无人地面载具(Unmanned ground vehicle)的一种,具有传统汽车的运输能力。作为自动化载具,自动驾驶汽车不需要人为操作即能感测其环境及导航。完全的自动驾驶汽车仍未全面商用化,大多数均为原型机及展示系统,部分可靠技术才下放至量产车型,但有关于自驾车逐渐成为现实,已经引起了很多有关于道德的讨论。

自动驾驶汽车能以雷达、光学雷达、GPS 及计算机视觉(computer vision)等技术感测其环境。先进的控制系统能将感测资料转换成适当的导航道路,以及障碍与相关标志。根据定义,自动驾驶汽车能透过感测输入的资料,更新其地图资讯,让交通工具可以持续追踪其位置,即使条件改变,或汽车驶进了未知的环境内。

在美国,美国国家公路交通安全管理局(NHTSA)已提出正式的自动驾驶五等级分类系统(2016年版本):

  • 等级0:即无自动。驾驶随时掌握著车辆的所有机械、物理功能,仅配备警报装置等无关主动驾驶的功能也算在内。
  • 等级1:驾驶人操作车辆,但个别的装置有时能发挥作用,如电子稳定程式(ESP)或防锁死刹车系统(ABS)可以帮助行车安全。
  • 等级2:驾驶人主要控制车辆,但系统阶调地自动化,使之明显减轻操作负担,例如主动式巡航定速(ACC)结合自动跟车和车道偏离警示,而自动紧急煞停系统(AEB)透过盲点侦测和汽车防撞系统的部分技术结合。
  • 等级3:驾驶人需随时准备控制车辆,自动驾驶辅助控制期间,如在跟车时虽然可以暂时免于操作,但当汽车侦测到需要驾驶人的情形时,会立即回归让驾驶人接管其后续控制,驾驶必须接手因应系统无力处理的状况。
  • 等级4:驾驶人可在条件允许下让车辆完整自驾,启动自动驾驶后,一般不必介入控制,此车可以按照设定之道路通则(如高速公路中,平顺的车流与标准化的路标、明显的提示线),自己执行包含转弯、换车道与加速等工作,除了严苛气候或道路模糊不清、意外,或是自动驾驶的路段已经结束等等,系统并提供驾驶人“足够宽裕之转换时间”,驾驶应监看车辆运作,但可包括有旁观下的无人停车功能。(有方向盘自动车)
  • 等级5:驾驶人不必在车内,任何时刻都不会控制到车辆。此类车辆能自行启动驾驶装置,全程也不须开在设计好的路况,就可以执行所有与安全有关之重要功能,包括没有人在车上时的情形,完全不需受驾驶意志所控,可以自行决策。(无需方向盘自动车)

这是根据国际自动机工程师学会(SAE International)依据这五个不同程度(从驾驶辅助至完全自动化系统)发布另一种分类系统而编修而成,设计理念是‘谁在做,做什么’的分类法。

[描述来源: 维基百科 URL:https://en.wikipedia.org/wiki/Self-driving_car]

自动驾驶系统通常有一个非常经典的、模块化的流水线。

首先是感知模块(perception stack),感知模块将地图、三维传感器、二维传感器中的信息给到「世界模型」(world model),世界模型将上述信息,汇总在一张地图中,理解每一个时刻不同的物体相对于路面、道线等的位置,预测下一刻的可选路径都有哪些。随后是一个规划模块(planning model),进行决策。决策的内容也是分层级的。粗粒度的决策需要决定如何从 A 点到 B 点,完成的是类似 GPS 的工作。除此之外还有诸多细粒度的决策工作,例如决定走哪一条车道,是否要暂时占用对向车道完成超车,车速应该设定为多少等。最后是控制模块(control module),控制模块操纵所有的控制器,有高层的控制器,比如电子稳定系统 ESP,也有最基层的控制器,比如控制每一个轮子进行加速和刹车的控制器。

目前正在发展的计算机视觉技术对自动驾驶系统的发展非常关键。想要让一个自动驾驶系统作出正确的决策,主要涉及到以下计算机视觉任务:

首先是车辆定位:衡量车辆的运动并在地图中进行定位。完成这部分工作的是视觉测距(visual odometry)系统和定位(localization)系统。二者的区别是,视觉测距估计的是车辆相对于前一时间步进行的相对运动,而定位是对车辆在地图中的运动进行全局的估计。定位是可以精确到厘米级的,车辆相对于一些地图中固定的物体(例如电线杆)的距离已经是已知的,基于这些信息,车辆已经可以进行相当不错的路径规划了。

然后是三维视觉重建,重建范围通常在 50-80 米,具体需求视行驶速度而定。大部分 STOA 自动驾驶系统会使用激光雷达(LiDAR)进行三维重建。不过也有少部分团队试图直接从图像中恢复三维信息。由于图像中的数据相比之下更为嘈杂,因此完全基于图像的重建是一项更具有挑战性的工作。

除了重建之外,你也需要对车辆正前方正在发生的事有充分的理解。因此,你需要进行物体检测,也需要在理解物体是什么的基础上对其进行进一步的分类,而检测和分类会帮助预测其未来轨迹。进行检测和分类的方式是多样的,你可以给每一个物体画一个边界框(bounding box):这是最常见的方式,但是自动驾驶需要在三维的物理世界中进行运动规划,所以你至少要需要一个三维的边界框。

更精确的是实例分割(instance segmentation)和语义分割(semantic segmentation)。当物体是形状为凹或者是隧道之类需要穿行的物体时,边界框显然是不够的。实例分割将图像里属于一些特定目标类别的每个实例的所有像素分为一类。实例分割通常在二维图像上进行,但也有三维版本,三维实例分割基本等同于物体重建。而语义分割为图像里每一个像素分配一个语义标签,同一类别的不同实例不做区分。除此之外,全景分割(panoptic segmentation)基本上可以视作实例分割和语义分割的结合。全景分割对那些没有实例只有整体的类别也进行区分,例如天空和植被。天空无法用一个边界框框柱,而植被需要在平时避开,但系统也需要知道在紧急情况下汽车冲上草坪并无大碍(相比之下撞上树或者行人就有很大问题了)。因此语义信息是必要的。

接下来是运动估计。根据之前的一帧或数帧,预估视野里的每一个点,或者说每一个物体,在下一帧的位置。一些物体,例如车辆,它们的移动是比较容易预判的,因此运动模型可以进行准确率较高的预测。而另外一些物体,例如行人,会非常突然地变更其运动轨迹,导致运动模型的建立更为艰难。即便如此,较短时间区间(2-3 秒)的动作预测,在动态物体较多的拥挤场景下的决策过程中也仍然扮演着至关重要的角色。

上述任务都是各自独立的,但是实际上,收集上述信息的系统并不是各自独立运转的。因此情境推理(contextual reasoning)也有助于给出更准确的预测。例如一群行人通常会同时等红灯、同时过马路,一辆车试图并线时另一辆车会刹车让路,以这些外部信息、先验知识做约束,理解复杂场景会变得更为容易。

最后,一个还没有引起较多重视的领域是不确定性推理(reasoning under uncertainty)。人类感官或者车辆传感器拿到的数据中必然包含着不确定性,因此,如何准确地评估不确定性,并兼顾「最小化风险」和「完成任务」,是一个重要的话题。理想情况下,所有上述检测、分割、重建、定位任务都应该在不确定性约束下进行,系统在行进之前应该知道它可能犯哪些错误。

[描述来源:CVPR PAMI青年研究员奖得主Andreas Geiger:自动驾驶中的计算机视觉|机器之心]

发展历史

自动驾驶汽车的展示系统可追溯至1920年代及1930年代间,第一辆真正的自动化汽车是1977年由日本筑波机械工程实验室开发的。车辆使用基于模拟计算机的技术进行信号处理,通过安装在车辆上的两个摄像头跟踪白色街道标记。原型车则出现在20世纪80年代,卡内基梅隆大学的Navlab和ALV项目由DARPA于1984年开始资助,并于1985年发布了第一批结果。梅赛德斯 - 奔驰和慕尼黑联邦国防军大学的EUREKA Prometheus项目则于1987年开始实施。从20世纪60年代到2005年的第二次DARPA大挑战,美国的自动驾驶汽车研究主要由DARPA,美国陆军和美国海军资助。

在2008年的DARPA资格赛和85公里城市挑战赛决赛中,CMU大学开发的Boss赢得了比赛,它使用车载传感器(全球定位系统,激光器,雷达和摄像头)来跟踪其他车辆,检测静态障碍物,并相对于道路模型进行自身定位。三层规划系统将任务,行为和运动规划相结合,以在城市环境中驾驶。任务计划层考虑采用哪条街来实现任务目标。行为层确定何时在交叉点处更改车道和优先级并执行错误恢复操作。运动规划层选择在避免障碍的同时朝着本地目标前进的行动。这一系统对现在自动驾驶系统的设计产生了重要影响。

2011年,Sebastian Thrun等人试图将他们在2007年DARPA城市挑战赛中开发的系统应用于更现实的环境中,他们使用三个无监督算法自动校准64光束旋转激光雷达,其精确度优于繁琐的手动测量。然后,他们生成高分辨率的环境地图,用于厘米精度的在线定位。改进的感知和识别算法现在使汽车能够跟踪和分类障碍物,如骑自行车者,行人和车辆,同时也能检测到交通灯。新的计划系统使用此输入数据每秒生成数千个候选轨迹,动态选择最佳路径。改进后的控制器可连续选择油门,制动器和转向驱动装置,以最大限度地提高舒适度。此外,这些算法都在阳光下或雨中以及白天或夜晚等各种情况下进行了测试。他们开发的系统已成功地在各种现实条件下记录了数百英里的自主操作。

2012年,KITTI数据发布,主要是为了促进视觉识别系统在机器人上的应用,包括自动驾驶汽车。他们利用其自动驾驶平台为立体声,光流,视觉测距/ SLAM和3D物体检测等任务创建了一个十分全面的数据集。这一数据集的发布对自动驾驶的研究产生了极大地推动作用。

2015年,Jianxiong Xiao等人提出直接感知方法来估计驾驶的可供性。他们建议将输入图像映射到与驾驶的道路/交通状态的可供性直接相关的少量关键感知指示符。他们的表示提供了一组紧凑而完整的场景描述,使简单的控制器能够自动驾驶。他们使用视频游戏中12小时人类驾驶记录训练深度卷积神经网络,并证明他们的模型可以很好地在非常多样化的虚拟环境中驾驶汽车。他们还在KITTI数据集上训练汽车距离估计模型。结果表明,该直接感知方法可以很好地推广到真实驾驶图像。

2016年,Karol Zieba等人训练了一个卷积神经网络(CNN),将来自单个前置摄像头的原始像素直接映射到转向命令。它还在视觉引导不明确的区域运行,例如停车场和未铺砌的道路。该系统自动学习必要处理步骤的内部表示,例如仅用人类转向角作为训练信号检测有用的道路特征。与问题的显式分解(例如车道标记检测,路径规划和控制)相比,他们的端到端系统同时优化所有处理步骤。他们认为这最终会带来更好的性能,因为内部组件能自我优化以最大化整体系统性能,而不是优化人类选择的中间标准。

主要事件

年份事件相关论文/Reference
1984卡内基梅隆大学的Navlab和ALV项目由DARPA于1984年开始资助Takeo, K. (1986). Autonomous land vehicle project at CMU. CSC '86 Proceedings of the 1986 ACM fourteenth annual conference on Computer science.
1985卡内基梅隆大学的自动驾驶项目第一批结果发布Wallace, R. (1985). First results in robot road-following. JCAI'85 Proceedings of the 9th international joint conference on Artificial intelligence.
2008DARPA资格赛和85公里城市挑战赛决赛中,CMU大学开发的Boss赢得了比赛Urmson, C.; Anhalt, J.; Bagnell, D.; Baker, C.; Bittner, R.; Clark, M. N.; Dolan, J.; Duggins, D. ; Galatali, T.; Geyer, C.; Gittleman, M.; Harbaugh, S. ; Hebert, M.; Howard, T. M.; Kolski, S.; Kelly, A.; Likhachev, M. ; McNaughton, M.; Miller, N.; Peterson, K.; Pilnick, B.; Rajkumar, R.; Rybski, P.; Salesky, B.; Seo, Y.; Singh, S.; Snider, J.; Stentz, A.; Whittaker, W.; Wolkowicki, Z.; Ziglar, J.; Bae, H.; Brown, T.; Demitrish, D.; Litkouhi, B.; Nickolaou, J.; Sadekar, V.; Zhang, W.; Struble, J.; Taylor, M.; Darms, M.; Ferguson, D. (2008), Autonomous driving in urban environments: Boss and the Urban Challenge. J. Field Robotics, 25: 425-466.
2011Sebastian Thrun等人试图将他们在2007年DARPA城市挑战赛中开发的系统应用于更现实的环境中Levinson, J. et al. (2011). Towards fully autonomous driving: Systems and algorithms. IEEE Intelligent Vehicles Symposium . pp. 163-168.

2012KITTI数据发布Geiger, A.; Lenz, P.; Urtasun, R. (2012). Are we ready for autonomous driving? The KITTI vision benchmark suite. IEEE Conference on Computer Vision and Pattern Recognition. pp. 3354-3361.

2015Jianxiong Xiao等人提出直接感知方法来估计驾驶的可供性Chen, C.; Seff, A.; Kornhauser, A.; Xiao, J. (2015). DeepDriving: Learning Affordance for Direct Perception in Autonomous Driving. ICCV. pp. 2722-2730.
2016Karol Zieba等人训练了一个卷积神经网络(CNN),将来自单个前置摄像头的原始像素直接映射到转向命令Bojarski, M. et al. (2016). End to End Learning for Self-Driving Cars. arXiv:1604.07316.

发展分析

瓶颈

目前还没有完全不需要人类监督的自动系统可用,并且随着一些与自动驾驶系统有关的事故的发生,公众对自动驾驶系统的信任、相关法律法规的完善也是需要注意的问题。

未来发展方向

自动驾驶的发展将是一个长期的过程,更先进、更成熟的系统,以及配套设施的建设,消费者市场的准备和法律法规的建立等都是需要发展的方向。

Contributor: Yuanyuan Li

相关人物
塞巴斯蒂安 · 史朗
塞巴斯蒂安 · 史朗
Sebastian Thrun 是德国的创新者,企业家教育家和计算机科学家。他是 Kitty Hawk Corporation 的首席执行官,也是 Udacity 的董事长兼联合创始人。在此之前,他曾担任谷歌副总裁兼研究员,斯坦福大学计算机科学教授,之前是卡内基梅隆大学。在谷歌,他创立了谷歌 X 和谷歌的自动驾驶汽车团队。
Jianxiong Xiao
Jianxiong Xiao
简介
相关人物