7月22日,百度自动驾驶事业部资深架构师、数据平台专家杨凡,百度自动驾驶资深架构师何玮,百度智能驾驶事业部资深架构师郁浩三名讲师在中关村创业大街车库咖啡,向参加沙龙的三百多名开发者们深度解析了Apollo平台与智能驾驶方案。
前两期,百度资深架构师杨凡为我们详细讲解了Apollo1.0开放内容及Apollo2.0展望,
回顾:
资深架构师何玮为我们重点讲解了Apollo ROS的改进,
回顾:
本期我们继续曝光干货,由百度自动驾驶资深架构师郁浩跟我们分享:
|郁浩讲师:《基于深度学习的End-to-End自动驾驶方案》
郁浩,百度智能驾驶事业部资深架构师,无人驾驶算法方向,重点关注基于深度学习的无人驾驶系统,从算法到工程再到项目落地,拥有丰富的经验。
基于深度学习(以 End-to-End 为主)的自动驾驶方兴未艾。百度拥有超大规模的训练数据,同时也在 CES Asia 上首次实车展示了这种自动驾驶。那么它与传统的规则式自动驾驶相比,有哪些区别和优劣势?未来的发展将会如何?百度在这个方向都有哪些实践?
一、Rule based系统
与End-to-End相对应的是传统规则式的无人驾驶系统,它经历了二三十年的研究和试跑过程,运用业界和学术界主流的Rule based系统,从车辆到控制形成闭环。
围绕这个闭环,除Apollo1.0以外,还有很多人提出了相关的或类似的架构。如:美国的SAE部门,他们在上面闭环基础上,细化出实时的、大环、小环和各个模块之间的关系。
并以此继续细化,便得到更复杂的功能模块图,但实际操作中会形成上千个模块。
|Rule base的特点:
1.系统复杂性,需要人工设计上千个模块。
2.高精地图的成本,更新必须及时。
3.车载硬件计算能力,每个模块都要深度学习,车辆最多可能需要运行十几个深度学习网络,对计算能力和消耗需求很大。
以上难度之大,已远超一家公司的能力范围,需要一个协作的生态(联盟)共同完成。比如去年百度和MAP合作框架,到今年百度已经和整个生态的合作。
二、End-to-End
|人,如何驾驶?
人类驾驶不需要知道路面的每一个特点,不需要精确的位置,不需要精确知道车距,多数时间是靠下意识完成。人们在很多自然的行驶过程中可以边打电话边开车,但需要集中注意力和实时判断,比如变道时要考虑前后车辆的情况、盲区等,依靠充分的深入判断做出决策,这需要很高等的行为思考能力。End-to-End系统更细化的是输入原始的传感器数据。
|End-to-End历史及现状
1988年,已经有人开始尝试使用End-to-End。但局限于30×32像素,还没有CNN,这样也能在简单道路上实现自动驾驶。
2005年,LeCUN也做了无人驾驶探索。2015年,提出了中间状态自动驾驶,无需生成各种复杂过程,只需要找出关键点生成决策控制。
2016年,在DAVE2基础之上,提供相机、卷积网络,更关键的是实车上路——在美国的很多路上进行测试。并做比较突出共享、评估体系和三目相机采集End-to-End数据。
2016年至今,Comma.ai,Drive.ai,Auto X等都相机进行了探索。
自动驾驶领域出现的End-to-End风潮,在整个机器人领域同样面临着变化。如很多人都畅想过家庭机器人,但为何在推广的时候有一个很大障碍?因为传统规则式机器人需要地图,我们不可能知道千千万万户的使用地图。但如果有End-to-End,先识别出一个家庭的情况,如何自己生成路线并执行End-to-End系统,这样就大大降低机器人进入千家万户的成本。
|End-to-End现状进行了总结
|功能、系统工程复杂度、算法要求
人们开车的时候有两类行为:一类可以边打电话边开车,我们称之为Reactive control(无脑操作)。需要集中注意力做出判断的,是Proactive planning。End-to-End系统到目前为止,主要实现了Reactive control,Proactive planning尚处于探索阶段。每一个message背后其实都是一个复杂的系统,End-to-End大部分系统自己完成,算法要求都很高。
|可解释性
自动驾驶对安全性要求极高,必须做可解释性的东西。很多公司不做End-to-End系统,主要原因是其不可解释,而Rule based是可解释的。但限制Rule based往前发展的恰恰就是面临的不确定性因素,尤其是复杂环境。可解释性不应该成为这两个系统选择或者是评比优劣的点,最终的评比应该是客观的指标性的东西,比如能安全运行多少公里。
|广铺成本
Rule based广铺成本面临的大问题是高精地图,End-to-End目前还不需要高精地图,普通导航系统即可。
|传感器成本
Rule based相对高一些,End-to-End相对低一些。并不是End-to-End系统需要的传感器少,而在于它对传感器的利用率高。以摄像头为例,宝马的自动驾驶方案中,前档有3个摄像头,周围一圈又有不少,每个摄像头都对应了Rule based系统中特定的功能。而End-to-End系统是用神经网络拟合,如不同的摄像头中所需要的像素级别的融合,可以自己用机器识别出,或者机器自己判断和加工中所需要的过程,更高效的利用传感器。
|车载计算资源、核心问题、关系
车载计算资源的实践差距非常大,Rule based的研发和广铺成本极高,而End-to-End系统核心问题主要在于数据,它的所有行为需要数据,而目前开源闭源都很难有优质的数据需要训练。Rule based和End-to-End更像互补关系。对于普通的,需要在边打电话边开车的场合,End-to-End更适合;对于入口和街区,Rule based更靠谱。
三、Apollo实践
1.数据
百度的地图采集车每年采集数百万公里的数据(图像数据及司机行为),通过这些数据训练出的模型可以在不同驾驶环境下,实现近似驾驶。目前,End-to-End系统没有明显的主动路径规划,旁边还是有车道线的总计可循。Apollo和长城汽车合作,用一个摄象头做自动驾驶系统。场地设计时在两端专门设计了一个比较急的弯,考验车能否转过来。实验中汽车学会了人的行为,先减速,然后再右靠。这时候工作人员把交通标志牌放在车道线上,自动驾驶车便识别出左拐标志,然后做后续的行为。在本期Apollo开放计划中,已经将实验中使用的数据开源出来了,这些数据是目前为止百度拥有的非常宝贵的资产。
|当前业界和学界的数据分别是?
这些数据分两类:真实数据和模拟器数据。
真实的数据,Udacity、Oxford、Comma.ai。主要有两方面,一方面太少,另一方面是几乎没有中国国情数据。
模拟器数据,事实上模拟器数据几乎不能用到真实的道路上,模拟器数据都是游戏渲染出来的,其纹理和真实场景的纹理千差万别。
Apollo的数据是通过地图采集车得来的,符合中国国情。大家在街上应该经常能看到地图采集车,上面装有摄象头、雷达,车内还有高精度GPS。在这么多年地图采集车采集数据中,其实没有看数据,但之前是高精度的位置数据已经足够了。
这次开放的数据主要摘取了前向数据,原始数据是比较高清的数据,从中截出正前方一小块数据,频率是8赫兹,除了图像数据,还会开源出采集车不是原生的原始坐标,根据原始坐标繁衍出一些行为出来。
百度地图通过复杂的地图工艺处理这些数据,最终会得到非常高精度的轨迹。
通过轨迹处理可以繁衍出横向和纵向指令,比如知道了汽车拐弯半径、曲率,进而推算出方向盘转角等。在低速场景下是典型的Ackermann模型,但在训练横向指令时,用的还是曲率。曲率或转弯半径二分之一更普世,二分之一方向盘之间的转化是车厂的业务,几乎每一家车厂都能支持并执行二分之一指令。
|数据开源
数据的每一个文件都对应着一次采集任务,一个文件对应一个采集车图像和姿态。开源没有开源出精准坐标,而是根据坐标繁衍出它的二分之一和纵向的指令。这两个指令可以和车厂合作,从而实现上路。
2.模型
回顾2016年的模型,一个典型的基于CNN的回归任务。衡量指标一个是准确度,另一个则是用CNN做系统时,务必注意性能问题,保证计算率快,能够达到精细的时间控制。根据之前实验至少达到30赫兹,也就是网络必须在30毫秒以内产出结果发给车。
随之而来的也需要我们思考两个问题:一般的CNN只能学习到正常的驾驶行为,如何处理异常行为?不同采集车模型不一样、其他的参数不一样,如何将一辆车的经验迁移到另外一辆车?
纵向模型,这是去年的模型,我们在探索的时间,一段实际的信息,通过一段视频对应到加速,但是目前还在研究阶段。这个套路变成了视频领域基本套路的问题,很多都可以拿来用,比如3D卷积,two—sdream等。
目前很多研究者或学者会把大多数精力放在精准预测上,但其实人们开车也不会预测出精准的运动,多数是判断“有障碍即潜在危险”的因果判断的关系。另外,还需要关注attention的问题,如何用注意力机制识别出交通标志或者是红绿灯等等。