雷锋网按:雷锋网 · 新智驾(微信公众号:AI-Drive)持续关注和报道智能驾驶领域的一线动态。从6月份开始,我们联合雷锋网 · AI慕课学院、网易云课堂企业版举办系列智能驾驶讲座,邀请业界、学界顶尖专家共同打造属于智能驾驶时代的技术盛宴。
今年4月,百度推出阿波罗计划(Apollo),将逐步开放其自动驾驶技术;今年7月,百度在首届开发者大会(Baidu Create)上公布了阿波罗计划的第一批细节,包括百度自动驾驶技术的架构设计以及一个完整的基于林肯MKZ打造的封闭场地循迹自动驾驶参考设计——Apollo 1.0。
接下来,这个计划将逐步开放更多细节,为众多从事自动驾驶研究的企业赋能。当然,想深入了解这个计划的人数不胜数。
8月30日晚8点,雷锋网新智驾邀请到百度智能驾驶事业部资深架构师郁浩详解阿波罗计划,进行计划公布后的首次线上直播。本次分享中,您可以重点关注的内容包括:
端到端(End-to-end)自动驾驶系统的发展历史
与传统的规则式(rule based)自动驾驶相比,端到端自动驾驶有哪些区别和优劣势?
百度的阿波罗计划在这个方向有哪些实践?
以下内容为郁浩分享完整版,由新智驾进行不改变原意的编辑和整理。
整个阿波罗项目其实是百度面向自动驾驶的一个很宏大的系统,而端到端(end-to-end)的方案是其中的一个子方向。今天主要进行这个子方向的实践和经验分享。
在介绍端到端自动驾驶之前,可以了解一下自动驾驶另一大主流的方案:基于规则(rule based solution)的方案。这类系统和端到端系统相比还是有很明显的区别。
Rule based方案的主体需要人工去搭建,拆解开来一般是以下的流程:
从车辆开始是一个闭环:从车辆到车上的传感器(radar、LiDAR以及camera等),综合在一起获取信息,这些信息经过感知层、经过特殊的处理(包括深度学习网络),最终会提取出道路、行人和车辆等各种信息。在感知到的信息的基础之上,再加入高精地图等一些静态信息,当动态和静态信息结合在一起后,就会形成一个比较完备的世界模型(Wodel Model)——对外部环境的完备描述。
在此基础之上,我们就进入到决策模块,考虑到驾驶舒适性,这一步主要是演绎推理(reasoning)的一些过程,最终会产生一些决策,决策再往下就到了车厂比较擅长的领域——车辆控制,需要给车辆一些控制信号。
在这样一个rule based的系统里面,其实有一个非常复杂的架构。
上图是国际汽车工程师学会(SAE)推荐的一个系统架构图。
我们可以看到这样一个架构其实是一个闭环系统,这个闭环本身又分了好几个层次。从最底层的控制循环(Control Layer)往上到安全性能的循环(Safety Layer)再到本地层的循环(Local Layer)再到全局的循环(Global Layer),这样的层层闭环做到了对车辆的控制。
这样一个复杂的系统其实还是提纲挈领的,再往下分又可以看到这样一张架构图:
这张架构图比上一张显然要详细得多,但依然还是一种抽象的概括。这张架构图其实也反映出了无人驾驶的几大问题,需要从业者联手去解决。
一个是系统复杂性。这样一个系统,需要人工设计上千个模块,从0到1是非常艰难的,其系统的复杂度不亚于一个操作系统
第二个是高精地图的成本很高。在构建世界模型的时候,需要高精地图的辅助,而高精地图本身的广铺、更新都是极其大的成本。很多创业公司在往这个方向努力,会尝试一些众包的数据采集,这一块也是个很诱人的方向。
还有一个问题是车载硬件计算能力要求非常高。在这样一个系统里面,有不同的感知、决策模块,每一个模块都会使用深度学习的优化手段。一个综合的复杂系统里面,可能需要几个甚至是十几个深度学习的神经网络,每一个的计算成本都极其巨大。
NVIDIA CEO 黄仁勋曾表示,目前的自动驾驶系统,使用2个 Drive PX2核心都不够,已经远超目前计算能力所能达到的上限,硬件本身就是很高的门槛。
所以,打造一个自动驾驶系统的难度之大,已经远远超出一家公司的能力范围,需要一个协作的生态(联盟)。
*百度与 NVIDIA 合作推出的自动驾驶系统
*百度阿波罗计划所购建的生态
这个系统中,有很多公司体量很大,每个公司也只不过做了其中的一部分工作。
刚刚提到一点,人驾驶的时候并不需要这么复杂的拆解,不需要高精度定位、高精度地图,只需要一些导航语音的提示。很多人还可以边打电话边开车,能一心二用。
与之对应的,目前比较热的一个新兴的自动驾驶解决方案就是端到端(end-to-end)的系统,它的特点是更接近于人的驾驶习惯。看到的是人看到的场景,经过神经网络的处理之后,产生类似于人类的驾驶行为。
如图所示,车辆可能看到的是一张图片,经过加工处理,得到了横向控制和纵向控制。
其实end-to-end系统并不是最近这一两年才出现的技术,这和整个无人驾驶系统一样,是一个很长远的事情。
早在1988年的时候,一个名为“ALVINN”的系统就已经面世了,是卡耐基梅隆大学(CMU)的研究成果。当时还没有CNN,用的是比较浅层的全连接网络,用的是单目相机,只处理30*32的图像,即便是这么简单的一个场景,还是可以看到它做了很多传统的图像处理的手段(比如二值化)。这样的一个网络也能让车辆在简单的道路上行驶。
到了2005年的时候,Yann LeCun也参与了一个类似的项目,研发出了DAVE系统。这系统运用了卷积CNN网络,使用的是双目相机。
再到2015年的时候,普林斯顿大学也做了一些尝试,用中间状态——从原始图像,不是端到端生成的一个指令,是从中提取一些关键的信息,在关键信息的基础上,再做自动驾驶的决策和控制。
转折点出现在2016年,NVIDIA在2005年DAVE的基础之上,做出了DAVE2。这个系统用的是单目相机、卷积神经网络,更关键的是能搭载上实车路测。NVIDIA还为此研究出了配套的评估体系。
在NVIDIA之后,我们可以看到众多的创业公司如雨后春笋般冒出来。比如Comma.ai、Udacity、Drive.ai以及AutoX,当然,后两家没有明确提及end-to-end系统,比较愿意说他们的系统完全基于深度学习、可快速大量的扩展等。Udacity为此还专门组织了end-to-end steering的比赛,其中也包含了很多很出彩的成果。
其实end-to-end系统不只是针对于自动驾驶领域,其实对于机器人行业来讲,都有比较大的影响,可以说是变革。
上图是李飞飞实验室做的室内机器人的行驶测试,完全基于深度神经网络的端到端的系统,里面没有事先预置好的地图,也没有自定位、SLAM功能,完全是机器人实现的自动行驶。
还有一些是机械臂的操控,自动化完成一些指定的任务。传统的机械臂也需要封闭环境的准确信息,以及各个关节和组件也需要极高精度的定位。经过闭环的控制,按照预设的轨迹执行特定的任务。而end-to-end系统就不需要这些,不再受限于简单的封闭的环境,可以走向开放的环境里去。当然,也不再受限于高精地图、高精的环境信息。
当然,目前也有一些人在用端到端的系统做一些更为主动的规划,而不是一味的被动响应,这也是很有意思的方向。
那么end-to-end系统能干嘛?不能干嘛?主要的问题是什么?与rule based系统有什么区别和联系?
接下来来拆解一下:
从功能层面看的话,我们把自动驾驶的行为或者功能按照两个角度来分:一个是Reactive control;一个是Proactive planning。人可以边打电话边开车,其实就是Reactive control的一种,有时候是条件反射,甚至是一些简单的驾驶经验就可以判断,不用你去做深入的思考。
而与之相对的就是Proactive planning,在一些陌生的环境、道路,听导航的指示时,你要想一想该怎么走。比如并线的时候要看一看周围的环境怎么样、盲区有没有车、其他车辆的车速如何……
所以从功能角度来看,目前的end-to-end系统实现的是Reactive control,或者说是类似于人潜意识的驾驶行为。而在Proactive planning这一块,目前end-to-end系统还处在研究阶段,这也是一个很诱人的方向。
在系统工程复杂度上,Rule based系统是极高的,而end-to-end系统则比较低。因为其中需要人工去构建的部分大多由神经网络去拟合了。
当然,二者对于算法的要求都很高。
至于“可解释性”,其实是非常多人在讨论的事情,达成的共识是rule based系统可解释性很高,而end-to-end系统可解释性很低。
这里,要说明一下“可解释性”与自动驾驶最终能落地的关系。其实,我们跳出来看,对于传统的基于规则的无人驾驶系统,影响其最关键的点恰恰就在于规则式系统中存在着大量的不确定的边界性问题,这些问题是“不可解释的”。从这点看,rule based系统也没有压倒性的优势。
此外,可解释性当然很重要,去年9月份,美国白宫发表的针对自动驾驶行业的指导意见便指出,涉及到行驶安全的部分一定要具备可解释性。
再看系统广铺的成本,rule based系统成本非常高,因为其依赖于高精度地图,普通地图的维护更新都需要很巨大的成本,可想而知高精度地图的维护和更新成本会有多大。End-to-end系统广铺成本则很低了,因为其不依赖地图和定位。
传感器成本方面,rule based系统的成本会很高,而end-to-end系统则相对较低。在欧洲的车厂中,自动驾驶系统传感器非常之多,光摄像头就有很多个,还有很多radar、LiDAR(4线)。但end-to-end系统本身不是可以去减少使用传感器,而是在信息利用率上很高,主要是整合信息的能力很强。
另外一个是车载计算能力,无疑这方面rule based系统要求会很高,end-to-end系统这方面要求就要低一些。
最后一个是数据成本,包括获取和标注数据,这是对于自动驾驶发展来说比较关键的一点。在rule based系统中,因为需要人工去设计各个模块,所以需要人工去对数据进行标注,比如比较知名的KITTI数据集,会耗费人力对环境图像、LiDAR数据进行标注。这样一来,数据采集成本已经很高了,后期的标注成本可能会更高。
而end-to-end系统的数据成本则要低很多,一方面其数据是传感器数据,部署成功后就可以自动化去获取;另一方面数据是人的驾驶行为,也是可以自动化的去采集,这样的话整个数据成本就把标注的成本剔除了。整体成本要减掉二分之一甚至更多,因为一旦一些车厂和ADAS公司采纳这一系统,就可以批量、规模化地去采集。可见,end-to-end系统在这方面优势很大。
总结起来,核心问题在于:rule based系统的研发、广铺成本极高;end-to-end系统很缺数据,不过可以自动化、规模化获取。所以,二者是互补的关系,对于一些普通的驾驶行为,使用end-to-end系统就足够了,而对于一些安全层面的驾驶行为,则愿意去采用rule based系统。
接下来谈谈阿波罗项目的一些实践经验。
上面的视频是百度的地图采集车正在采集数据供End-to-end系统进行训练。红线是原始的司机的行为,绿线是模型预测出的一些结果。
目前,这个系统还只能做到Reactive control,从视频中的一个交叉路口车辆的反应来看,红线要进行边线,但是绿线的预测还依然默认车辆要保持车道行驶。当然,当车辆拐弯之后,预测模型就知道要怎么走。
而上面这个视频是百度今年在CES Asia上提供给用户试乘的自动驾驶实车。已经将训练后的End-to-end系统搭载上去,经过了海量的数据的训练。
为了进行功能展示,车辆只用了一个单目摄像头,在这样的场地中可以实现自动驾驶。这里比较关键的点在于,我们故意设计了两个比较急的弯,在速度上也可以做到更为人性化,急弯处会减速。
视频后半段,工作人员将转向的交通标志推进了场内,车辆可以识别出这个交通标志,然后进行左拐。这个循迹系统其实有很大差别,因为该系统可以识别交通标志。
如上文所述,end-to-end系统的关键在于很缺数据,现在的研究数据来源主要有两方面,一方面是真实数据(一些机构的开源),一方面是模拟器的数据(模拟器软件)。
可以对比一下二者的一些特性:
在今年的CVPR上,苹果的获奖论文便提出了simGAN的概念,就是要将模拟器中的场景渲染得和真实场景极其接近,如果这些数据可以应用于自动驾驶实车上,将会是很大的突破。但是现阶段仍然要打一个问号。
真实数据从哪里来?百度已经和长安、江淮等车厂合作,共同推出地图采集车。
这些车辆不只是采集地图信息,还会采集环境信息以及驾驶行为,这些数据会用于后台做训练。目前已经有数百辆这样的车在全国各地行驶。
再来说一下具体的数据,目前,我们开源出来的数据的基本结构是这样的:
上图中的图片是百度的地图采集车前向的摄像头采集到的图片,第一期会开源10000公里的数据(是已采集数据中的一小部分),在全世界范围内也是绝无仅有的。
当然,我们原始采集到的数据是轨迹、坐标的信息,是参差、有一些扰动的,我们会经过地图的制作流程和工艺将其处理得更为平滑、逼真。
有了这些高精度的轨迹之后,就可以做很多工作,比如汽车动力学方面的执行:
其中,百度阿波罗计划开源的10000公里数据大概是这样的一个组成关系:
其中Ctx指的是道路的曲率,为什么会有这么多组曲率数据,主要还是因为数据的延迟,车辆行驶过程中需要进行一定的预测,而系统无法做到百分之百的实时。
要特别提醒的是,各位在拿到开源数据的时候,也要做相应的处理。
NVIDIA在2016年就给出了一个基本的横向的控制模型,一个比较典型的CNN网络。除了和CNN的一些基本优化套路一样,这个模型还会有一些问题:
而在纵向模型上,百度去年使用的是Convolutional-LSTM的视频分析方法。
今年,百度采用的是横向和纵向模型结合的方式,主要是LRCN的架构,就是CNN+RNN的整合。CNN去提取每一帧的特征,然后用LSTM拟合出其在时序上的行为。
其实走到现在,end-to-end系统还有很多可供讨论的开放性问题,需要去优化,需要从业者联手去解决。