从围棋盘到秋名山,AI进军自动驾驶的秘密武器:计算机仿真发表时间:2017-11-24 00:00来源:领骏智驾
2017年初,发生了一件轰动人工智能领域和围棋界的大事,化名为Master的人工智能程序在网络上以60:0的全胜战绩,击败了数十位中日韩围棋高手,再一次碾压了人类智力。经过AlphaGo团队的证实,本次的人工智能Master正是2016年3月,与围棋世界冠军李世石进行人机大战的AlphaGo的升级版。 从4:1到60:0的全胜战绩,很明显AlphaGo的棋力在这9个月中得到了飞速成长,远远超过了人类的能力。AI的能力进步得如此之快,登峰造极。它的可怕之处在于,除了学习人类棋谱之外,可以通过自我对弈、左右互搏,进行深度学习,强化学习,在没有人类监督的情况下,得以自我提升。
那么这项技术能否如何应用到自动驾驶领域,赋予人工智能在秋名山挑战人类的能力呢? *注:秋名山是日本境内的一座双重式火山,尤其以四个惊险而陡峭的六连发夹弯道出名。五连发夹弯是赛车电影《头文字D》里进行比赛的重要场景。“秋名山车神”常被用来形容车技出神入化的车手。 秋名山发夹弯
我们先来看一下驾驶与围棋的不同之处: 驾驶的规则更复杂。交通规则相对围棋规则来讲更加复杂,还记得科目一考试吗?
驾驶的场景更复杂。围棋的战场是一个2维离散棋盘,一个标准19路棋盘上的决策点大约有10的170次方,就是1后面加170个零。这个数字固然很大,但终究是有确定数字的。 而驾驶这项任务需要在路面上完成,是一个连续的物理世界,包含3个空间维度和1个时间维度。在这样一个尺度上可能发生的状况无法用一个确定的数字穷举。
驾驶的可靠性要求更高。下棋可以走错,可以输棋。但真实驾驶过程中如果犯了错误,带来的是对人们生命财产的威胁。 驾驶场景的复杂性
为了让人工智能更好的应用于自动驾驶领域,工程师们使用了计算机仿真技术。 “计算机仿真是应用电子计算机对系统的结构、功能和行为以及参与系统控制的人的思维过程和行为进行动态性比较逼真的模仿。”通俗来讲,就是人们用数学的方法对世界中的相关要素进行定量描述,并通过计算机进行计算模拟的过程。我们平时玩的模拟类游戏,比如“极品飞车”“模拟飞行”都可以算作计算机仿真的范畴。
极品飞车游戏截图
自动驾驶研发中为什么需要计算机仿真 计算机仿真相对实车测试有着必可比拟的优势 l 使用虚拟环境,不需要实车,降低算法开发门槛 l 提高开发测试效率、降低成本 l 避免实车路测的风险 l 虚拟世界中允许试错
谷歌无人车团队有着庞大的仿真数据库,可以让“虚拟测试车辆”悄无声息地进行日行百万公里的道路测试。百度也在多次公开展示了自己无人车仿真技术,包括车辆动力学仿真、虚拟小镇,和交通流仿真。 车辆仿真模型 http://www.linuxlearn.net/news/new/67/20695/ 而在自动驾驶领域以激进著称的特斯拉,除了广泛使用仿真技术外,他的创始人马斯克甚至认为整个人类都极有可能生活在一个模拟的世界中。
计算机仿真技术应用于自动驾驶领域,一般有如下几种类型。这几种类型的切入点不同,用法也不同,配合不同的机器学习方法,往往可以事半功倍。
数据回放 该方法是一个对真实交通、环境数据进行采集-记录-回放的过程。 首先使用装备了各种传感器的采集车在真实道路和交通流中行驶(可以是人工驾驶,也可以是自动驾驶),同时记录收集到的传感器原始数据,包括环境、交通、和本车的驾驶数据(如驾驶员对油门、刹车、和方向盘的操作)。完成采集后,将这些原始数据进行筛选整理,并保存于数据服务器上。 在需要进行仿真模拟时,数据服务器将这些原始数据回放给自动驾驶算法,从而验证算法的正确性和有效性。
例如世界著名的Kitti交通数据公开测试集,Comma.ai创始人George Hotz开源的7.25小时的公路驾驶数据集,以及百度在2017年CES上宣布公开的1万公里自动驾驶数据集,都可以归为“数据回放”这种仿真方法。用户可以自行下载这些数据对自己的神经网络模型进行训练,对算法进行仿真验证。
“数据回放”的方法常用于环境感知算法,和端到端(end-to-end)的监督学习。例如下图是摄像头采集到的图像数据,图中的车道线和车辆都已经标记出,机器学习算法则要通过学习这样的标注数据,完成从图像中识别车道线和车辆的工作。端到端的学习则是忽略了传感器原始数据的标注,直接对人类的驾驶行为进行学习。Comma.ai发布的comma one,以及百度最近发布的Road Hackers都是使用端到端的学习方法。 这种方法类似于让AlphaGo学习人类的棋谱。数据采集过程相当于记录收集棋谱的过程,而回放的过程则类似于打谱和复盘的过程。
环境感知中的车道线和车辆识别
数据回放方法的有效性取决于数据的完备性。所以业界经常用数据所包含的小时数或里程数来衡量数据的完备性。谷歌收集了不少于200万英里的驾驶数据,对其新算法的性能进行检验。
该方法的缺点是无法与自动驾驶的决策控制系统形成闭环。由于采集-记录-回放的流程不对数据本身进行加工,无法与决策控制进行交互,所以决策控制系统生成的新的驾驶策略无法在回放数据中进行体现。例如在仅采集了直行数据的路口产生左转策略的时候,回放数据则无法体现这一左转指令,仍回放采集时的直行数据。
动态模型 动态模型仿真的方法通过建立主车(自动驾驶车辆)的动态数学模型来对车辆的行为进行数学模拟。同时建立道路、车辆等交通元素的逻辑模型,来模拟驾驶环境,对自动驾驶算法进行测试。
车辆的动态数学模型一般用微分方程组表示。下图是一个5阶的经过简化的非线性车辆动态数学模型的例子。其中考虑了车身质量、轮胎刚度、前轮转角、驱动力矩等;模型的输出是车辆运行的位置和姿态。
用于车辆工程或车辆设计的动态模型会比上边的例子复杂很多,然而在自动驾驶应用中,我们更关心车辆本身的行为,以及如何与环境进行交互,所以车辆本身的动态模型可以得到大幅简化。
使用车辆的动态模型和环境的逻辑模型,可以实现一个车辆-环境闭环的仿真系统。即车辆的决策控制算法结果可以直接作用于仿真中的虚拟车辆,影响车辆的行驶行为,并与仿真中的环境发生交互。动态模型方法与数据回放方法形成互补,解决了数据回放中无法形成闭环的问题,对于自动驾驶中的决策、规划、算法的开发验证非常有效。
强化学习 动态模型仿真更重要的意义在于使强化机器学习(强化学习)的在决策控制中的应用成为可能。而强化学习技术正是让AlphaGo使出左右互搏,自行学习提升的黑科技。如果在自动驾驶中使能强化学习,则意味着人工智能算法可以自行学习驾驶技术,并迅速提升驾驶水平。
强化学习是一种重要的机器学习方法,其最显著的特点是通过与环境交互,利用环境反馈的奖惩来调整和改善自己的行为,最终获得最佳策略。该方法对环境的先验知识要求低,可以在实时环境中进行在线学习。而弊端是在进行学习的初期,算法会产生一些不合理的输出,完成探索、试错的过程。 例如下面这个让利用强化学习让AI学习《打砖块》游戏的视频。在刚开始进行学习时,AI对游戏并不摸门,几乎无法接住弹回的小球。经过2个小时的自我学习后,AI程序可以像一个高手一样进行游戏,并获得很高分数。经过4小时的自我学习后,奇迹发生了,AI学会了打通一个通往上层的通道来坐享其成。充分展示了强化学习自我提升,最终超越人力智力的潜力。
但是用于自动驾驶的应用场景对安全性的极致要求,强化学习方法无法在真实道路上进行探索学习。这时,动态模型仿真为其提供了应用的先决条件: 1. 虚拟闭环仿真可以即刻验证决策控制算法的效果并依次给出评价 2. 虚拟环境可以允许算法进行试错,而不产生灾难性后果 强化学习算法可以与动态模型仿真完美结合,并在其提供的虚拟环境中进行试错和学习,从而自动驾驶性能的提升走上快速路。
环境模型 前面介绍的数据回放方法和动态模型方法可以分别独立地用于感知算法和决策控制算法的仿真测试。但如果需要对感知算法和决策控制算法进行闭环仿真,则需要在动态模型的基础上建立具体化的环境模型,其中包括道路模型(如车道、交通信号、道路标志等)和交通模型(如车流、行人等)。并且仿真系统需要根据车辆的实时位姿,以及所安装的传感器类型、安装位置,对各个传感器的原始数据进行模拟和渲染。 仿真环境中搭建的环境模型 环境模型在虚拟世界中复现了路面上的所有元素,可以实现感知-决策控制-车辆-环境的大闭环仿真。这为端到端的深度强化学习提供了平台。学习算法以虚拟的传感器数据作为输入,生成决策控制信号,作用于虚拟车辆,进而通过环境模型体现出决策控制的效果。下面的视频中则是使用端到端深度强化学习进行赛车游戏的简单应用。普林斯顿大学的DeepDriving项目也宣布将利用一款模拟游戏《GTA5》训练自动驾驶。在虚拟世界中“练功升级”的自动驾驶程序,修炼的是如何自动把游戏中道路上不同目标进行分类,识别汽车、行人或其它目标,最终改进自动驾驶的算法。 赛车游戏测试强化学习 《GTA5》训练自动驾驶
自动驾驶仿真软件 目前常用的自动驾驶仿真软件大致可分为2大类,一类是车辆专业仿真软件,一类是机器人仿真平台。商用的专业仿真软件技术相对成熟,有着较好的用户界面和技术支持,但售价较高,通常在百万人民币级别,同时相对封闭,较难进行个性化的功能定制。机器人仿真平台一般基于开源软件,使用相对灵活,但需要一定的二次开发工作。 CarMaker:德国IPG公司的拳头产品,拥有25年车辆动力学仿真经验,在车辆制造,ADAS系统开发中有较广泛的应用。软件支持环境模型的搭建,并可以对ADAS中使用的大多数传感器进行模拟。 CarSim:美国MSC公司核心产品,专注于车辆动力学仿真,被国际上众多的汽车制造商、零部件供应商所采用,已成为汽车行业的标准软件,享有很高的声誉。 VIRES Virtual Test Drive:Vires公司开发的复杂交通场景仿真工具,可以实现复杂道路建模、场景编辑、交通流仿真、和图像生成等功能。https://www.vires.com/index.html PreScan:由tass international提供一个基于物理平台的ADAS仿真软件,对自动驾驶中所使用的各种传感器都有很好的支持。 https://www.tassinternational.com/prescan
开放仿真平台: Gazebo:机器人操作系统(Robot Operating System,ROS)的组件之一,提供开放的三维物理仿真环境和各种传感器,广泛应用于机器人领域。 Vrep:瑞士Coppelia开发的机器人仿真平台,被誉为机器人仿真器里的“瑞士军刀”,跨平台,多语言,多物理引擎,可以实现灵活定制。
Gazebo简单场景自动驾驶仿真
总结: 计算机仿真技术是自动驾驶研发中的重要工具,被广泛使用。本文介绍了3种计算机仿真类型,以及配合使用的机器学习方法。 l 数据回放,用于监督式的机器学习和深度学习,适用于感知系统和端到端系统的开发、测试、与验证。 l 动态模型,实现车辆-环境闭环仿真,用于决策控制算法的研发测试,是进行强化学习不可缺少的平台。 l 环境模型,用于感知-决策控制的全系统仿真验证,使端到端深度强化学习成为可能 人工智能在计算机仿真技术的辅助下,正在加速自动驾驶技术的发展与成熟,也许下一次人机大战就在秋名山。
转自 微信个人公众号:睡神工作站 作者介绍: 杨文利(sleepygod, 睡神)领骏科技创始人,前百度自动驾驶事业部主任架构师,决策控制与仿真系统负责人。 关注“领骏科技”微信公众号平台,期待更多精彩。 |