【深度学习】为自动驾驶解决方案保驾护航 DeepDriving

点击“蓝字”关注,分分钟知晓汽车行业动态趋势!


  深度学习是什么

  深度学习是目前人工智能领域最流行的技术。深度神经网络由一些列简单可训练的神经元组成,这些单元相互协作可以学习完成甚至像驾驶这样的复杂任务。

三家代表性深度学习自动驾驶解决方案

  英伟达的DRIVE解决方案

  英伟达论文下载:http://pan.baidu.com/s/1bo4jTvx


 NVIDIA提供了用于训练、测试和应用的集成的自动驾驶解决方案。NVIDIA DRIVE解决方案为车厂、Tier1供应商和自动驾驶研究机构提供了强大灵活的解决方案让车辆可以感知、决策和学习。解决方案平台包含了训练平台NVIDIA DGX-1和用于车载计算的PX2。链接两者之间的是用于开发、模拟测试的的NVIDIA DriveWorks软件开发工具。

  DriveWorks支持在PX2上实现传感器同步、标定、数据采集和记录等一系列复杂过程。

  Mobileye的自动驾驶布局

  Mobileye论文下载:http://pan.baidu.com/s/1pK9ldrH

  Mobileye在自动驾驶的布局分为三个部分,可以认为是三个阶段:感知、高精地图和驾驶决策。


  当前比较成熟的,是它的感知技术,已经大量运用在已有产品中,主要提供一个环境模型(Environmental Model),包括运动和静止的物体、车道线、可行驶区域和交通标志等。

 多年的积累,让Mobileye在环境模型方面能够提供的内容远超竞争对手,在别人还在尝试提高单一车道线的检测精度时,Mobileye已经可以提供道路的语义级特征描述,例如当前行驶车道的左右车道线、左右车道的左右线以及道路分叉等等,均通过深度神经网络识别。

  谈到深度学习,就需要提一下现在很火的End-to-End方法。智驾深谈第一期的时候,我们曾经介绍了独行侠GeoHot和他的Comma.ai,Shashua对于端到端方法也有自己的看法,简单来说是不看好的。他认为端到端不考虑专家经验,不考虑领域知识,不考虑人工监督,对极端情况(Corner Cases)的应变能力比较差。相比来讲,Mobileye将感知任务划分成多个模块,每个对应一个人工监督的神经网络,所得出的效果已经可以产品化。

  第二个方面,是高精度地图技术(称作REM,Road Experience Management),该技术是自动驾驶不可或缺的支撑,区别是是否使用复杂的3D激光雷达来采集和制作地图,Shashua认为并不需要,而是通过图像中丰富的纹理和色彩特征来生成地图。Mobileye采取的策略是三维上稀疏,地面一维稠密的结构,三维元素不会包括原始图像数据,而是经过识别后的语义信息。

地面一维的信息则包括的比较多,建立了一个道路模型,包括车道线的精确位置、连接关系等。

 值得一提的是,当前高精度地图供应商,在生产和维护地图方面成本很高,而Mobileye则采取群体智能的方式来解决这个问题,通过大量装配在量产车上的Mobileye现有产品来分布式收集和更新数据。

  第三个方面,也是自动驾驶技术公认的难点,即决策与规划技术。目前Mobileye也在利用深度学习进行初步的尝试,跟DeepMind采用的DQN网络不同,他们还考虑了驾驶过程中的时序性。


地平线负责人介绍到:传统的机器学习或人工智能或数据挖掘的方法通常是这样的方法,从数据采集、数据处理到最后的预测。深度学习之前,绝大部分的研究工作,都需要数据的预处理和标记,数据标记的工作量相当之大。

深度学习是一个完美的框架,这个框架不需要人工构建中间很多的步骤,而是让机器自动从数据里面学习,这就是所谓端到端的思想。这个思想在很多领域都获得了成功,在视觉领域,在语音识别,在自动驾驶,在广告搜索等很多领域都应用深度学习的技术,取得了非常多的成果。

因为自动驾驶未来一定是大数据驱动的,但大数据驱动被人工标注限制住,那这个产业没有办法真正起飞。这两个案例的启发是:第一个是从自然数据里面学习,不需要人工标注,第二个观点是从Monte Carlo Simulations学习。把这两个思想放在一起,会突破我们现在构建人工智能系统做自动驾驶很多问题的核心点。这个壁垒是以前我们都构建被训练的系统,现在我们要构建主动学习的系统。主动学习系统相比人工训练系统,随着在路面跑的时间越长,汇聚在云端的数据使得路上每一辆车会随着时间迁移越来越聪明。



算法软件的设计有几个点我们要关注,第一个点是它的可解释性,因为这个系统关乎人身安全。如果完全是一个黑盒子系统那是不可接受的。我们希望,如果遇到有什么问题,我们找到它可解释的原因,然后用可解释原因找到相应方法控制它。第二个是叫做主动学习,端到端的学习,是我刚才讲的主动学习而不是被训练。第三个是整个软件设计要跟硬件相适应。

神经网络有一个最大的问题,它非常好用但是它是一个黑箱系统。我们看到除了神经网络以外,九十年代人工智能发展中有一个非常热的因果推理的框架,是在逻辑中引入不确定性,能够建立Bayes网络,这个模型是可解释的。通过把神经网络和Bayes网络结合,可以得到一个非常大的Bayes网络,这个网络里面可以分解成很多局部的条件概率。一个子网络可以单独训练,也可以整体在Bayes框架下面去训练。同时因为网络跟网络之间的接口具有语义定义,所以整个网络结构里面可以把先验或者基于规则的系统很自然的嵌入进去。另外还有一个好处是,整个网络结构是可以端到端的学习,所以我们可以构建一个增强学习的系统。

另外一点是怎么样根据硬件去设计软件,包括不同网络规模的稀疏化、结构化、定点化。还有一个很重要的是根据硬件特性,我们希望有一定的灵活度,但是这个灵活度不会损失它的效率。这里很重要的是构建系统软件,使得对于给的硬件总可以保证它的最高效率。

硬件设计在整个从感知到决策的过程中,它的计算模型形态是不一样的,有的计算形态更偏神经网络的计算,有的计算形态更像逻辑判断,所以这里要构建一个异构的计算平台,而不是一个单一化的计算平台来完成整个事情。这样的平台我们要考虑不同的硬件有不同的特性,比如CPU、FPGA、GPU包括现在非常热门的ASIC。比如FPGA的好处是算法可以变,但是像TPU是ASIC,就不能随便变。

对于一个给定的结构,ASIC能效总是最高的。地平线在构建自己的ASIC,今年我们有自己的第一款处理器发布。GPU的计算能力是最高的,但是它的效率是比较低的,TPU一开始是ASIC,我们做的也是ASIC。

如果只是在本地真实路上跑,一年收集几百万公里或者是千万公里的数据是可能的。但是要达到它的三个数量级,比如上百亿公里几乎是不可能的。这可以通过计算机仿真,充分暴露自动驾驶系统里的各个问题,特别是对边界条件的测试,这个对自动驾驶来讲,尤其对测试控制策略的算法非常有必要的。

最后总结一下,汽车未来一定是算法跟数据持续驱动的。要让我们的技术框架设计适应这样的趋势,就一定要突破现有的数据训练模型和方法,一定要让系统能够自主成长,自主学习。从工程实践来讲,我们需要构建透明可解释可控制的软件系统,使得问题能够清楚。另外它不仅是软件算法的工程,不仅是计算平台的事情,而是需要软件跟硬件的联合优化才能达到最高的效率。

什么是增强学习?

打一个比较形象的比方,如果过去的系统我们当做是计划经济的话,那么增强学习就是市场经济,可以理解它是一种结果导向的技术。准确描述这是一个智能主体跟环境不断博弈而来优化的一个过程。比如刚才的丰田的小车是一个增强学习的典型的案例,如果它碰撞了给它惩罚,如果没有碰撞给它奖励,多轮的循环会加强这些行为,达到一个期待值。深度学习可以用来做环境的感知,而增强学习可以用来做控制的东西,这样就可以构成一个完整的自动驾驶系统。

| 深度学习让自动驾驶从感知到控制

深度学习在中间的感知和决策都是有非常大的优势,可以进一步把这个事情分解一下。

我们跟过内的主机厂接触,由于现在国内有一些主机厂已经开始比较深的自动驾驶的研发,去讨论大量的细节。我们可以简单把它划分成这样的一个板块,就是态势感知和决策控制。

  • 态势感知和决策控制

态势感知一部分就是对外的态势,就是你要对整个的环境要有感知,对内就是对驾驶员的意要图要有感制,包括意图的判断。包括对外部物理的辨识,哪些是固定障碍物,哪些是栏杆,哪些是可行驶区域。对于驾驶,包括状态的识别其实非常重要。这也是整个自动驾驶业界流派之争的一个焦点。

以谷歌为代表的,他们想做的是全自动驾驶,但是我们还是要一步一步来,这面临有一个半自动驾驶的过程,谷歌觉得很难做到很好的人工和自动驾驶的切换,没有办法把这件事情做得特别的可靠。

其实这个我认为要这样来看,首先主机厂其实是一定会按照循序渐进的过程来走,因为他们是造车的。第二个在这件事情上深度学习可以很好地帮助缓解这个问题。我们不能说一定能全部解决,至少能够极大地缓解这件事情。因为深度学习对于驾驶员状态的综合理解比其他的手段要来得更好,因为它是基于大量对于驾驶员技术分析的基础上建立对它的一个综合理解,包括他的驾驶习惯、意图等。

决策控制包括几个部分。就是对于车辆来讲有一个局部的运动路径的规划,另外规划里面还有一个驾驶风格的情况,比如需要运动感强一点的,都不一样。最后一个是执行器控制,状态之间形成一个闭环去调校。

应该说在现在有很多初创的公司,包括像英伟达这样的公司做大量的尝试,如何把整个的系统用深度学习的方法进行优化。英伟达做得比较暴力,直接忽略了中间的决策这一部分,是直接把传感器的输入和车的状态的输入直接关联,做这样一个预测。也就是说Y就是执行器刹车、油门、转向,输入就是车的信息、环境的信息,非常暴力,不做任何中间人工智能的分析。



Nvidia在做自动驾驶的时候,思路和传统思路果然有些差异。比如Google使用的是激光雷达+摄像头+IMU+惯导系统+GPS等等。Nvidia做法是采取end2end的方法,就是直接从摄像头的像素->汽车的控制。就是把采集的图片作为输入,汽车的轮子的角度作为输出。没有了特征提取,语义分析等等过程,直接指向最终要的输出。这个思路很简单,效果从视频Nvidia自动驾驶视频 上来看在雨天,雪天,无车道线环境下行驶还算是流畅。但是可以发现这里的环境都是相对静态环境,变数很小。如果是在城市中行驶,有红绿灯、人群等等情况的时候,效果就不能保证了。

我觉得这个思路是比较新颖的,但是我觉得从安全性来看,以及面对更加复杂的状况,以及更多的语义信息需要加入其中,Nvidia做的显然还有很远的路要走。当然,Nvidia做这个对推广其自家的Nvidia DevBox,Nvidia DRIVE PX有不小的推动作用。

我觉得在自动驾驶这个方面,使用深度增强学习可以有不错的效果。然后再加上一些额外的硬件保障系统,加入地图,IMU等等,那么其效果或许可以媲美激光雷达吧。我感觉Nvidia的做法把自动驾驶弄得一下子不如以前那么高大上了,看CMU和Standford在DARPA上的自动驾驶的车的论文就知道自动驾驶的坑很深。

其实Nvidia是使用CNN做的是车在路上走不撞车,之前为了实现这个,可能会进行车道线检测、图片分割、路径规划和控制。具体要往某个目的地走,它没有涉及。

Implementation


以上这个系统叫做DAVE-2,DAVE其实是(DARPA Autonomous Vehicle的缩写,无人车比赛最早就是DARPA搞出来的)。

整个系统采用的是三个摄像头:

图片被送入CNN,然后计算可能的驾驶指令。然后把这个可能的指令和标记进行对比来更新CNN的权值(就是BP)。Nvidia使用的是Torch 7进行训练。

那么这里有个trick,就是我们人类只输入的是正确的样本,那么怎么让计算机面对错误的环境来做调整呢?很简单的trick,在车上面再安装两个摄像头,不过这两个摄像头的位置不在正中间,那么这两个摄像头看到的样本就是错误的。其他的偏移中间及旋转则可以根据3d变化来模拟出来。那么对应的偏移及旋转的控制量也可以计算出来。这样就有了一一对应的样本了。那么这里我们也应该看到,输出是很简单的,就是汽车驾驶的轮子的角度。并没有速度控制。这一定程度上大大简化了训练的要求。

当网络训练好了以后,就是用中间的摄像头的结果输入到CNN进行计算输出给汽车的命令。

Data for Training

训练数据一共有72个小时,每小时30f。包含了各种天气和各种路况。这个数据集看来收集得还不错。想要的同学点击这里下载:数据下载

Network

训练的网络的loss function是使用MSE。一共有9层,归一化层+5层卷积+3层全连接。输入的数据是YUV。

在选取训练数据的时候,会把有车道线的部分选上。然后每秒选择10f,因为选太多会有很多重复。

对于车处于比较差的位置的时候,会人为地给它加入一些旋转和偏移作为矫正。再做训练。

Simulation

在真车上路之前需要进行软件模拟。
整个模拟的框架如下:

由此可见出现状况的的主要原因是来自于传感器和算法的限制,按规矩行驶的车辆或是行走的行人以及其他常规障碍物在被传感器识别后,都可以通过特定的算法加以处理,进而形成决策。可对于突发情况而言,存在着许多的变量,这是常规的算法所无法处理的,因此面对突发情况自动驾驶车辆就会“丑态百出”。



自动驾驶车型在目前出现事故并不可怕,每一个巨大的成功都是由无数次失败组成的,根据国外机构预测,2018年L4级别的自动驾驶将来到我们的身边,相信在2018年自动驾驶技术将获得前所未有的突破。


峰会预告


峰会

温馨提示:2018国际智能网联汽车创新峰会(2018年4月12-13日,上海),携手国内外数十家媒体,车联网联盟组织,整车厂,科研院所及互联网科技公司等,以“智能 · 合作 · 未来——融合创新共享智慧出行”为主题,峰会将围绕行业的趋势发展、现阶段面临的瓶颈、人工智能与传感等新技术的应用、ADAS综合区域、智能网联汽车开发仿真测试技术以及车载系统信息安全等领域进行深入探讨,力图打造一个集信息共享、经验交流、技术支持的业内交流盛会,更好的推动智能网联汽车生态圈持续健康的发展。


 更多车联网行业资讯

  欢迎关注微信ID:enmoretmt



点击“阅读原文”立刻报名参加大会!


会员登录
登录
我的资料
留言
回到顶部