在过去的十年里,自动驾驶汽车技术取得了越来越快的进步,主要得益于深度学习和人工智能领域的进步。作者就自动驾驶中使用的深度学习技术的现状以及基于人工智能的自驱动结构、卷积和递归神经网络、深度强化学习范式进行了详细的阐述。并对这些方法在自动驾驶场景感知、路径规划、行为仲裁和运动控制算法进行综述,同时就目前自动驾驶设计中使用人工智能体系结构所遇到的挑战,如安全性、训练数据源和计算硬件进行了详细的阐述,本文将从以下脑图结构内容展开。
图-1 目录结构
1.简介
深度学习和人工智能成为计算机视觉、机器人和自然语言处理(NLP)等领域取得重大突破的主要技术。它们在当今学术界和工业界也产生了重大影响。自动驾驶汽车开始从实验室开发和测试条件转向在公共道路上驾驶。它的部署将减少了道路事故和交通拥堵,并改善了我们在拥挤城市中的流动性。“自动驾驶”的名称似乎不言而喻,但实际上有五个SAE级别用于定义自动驾驶。SAE J3016标准(SAE委员会,2014年)引入了一个从0到5的汽车自动化分级标准。较低的SAE级别具有基本的驾驶员辅助功能,而较高的SAE级别则向无需任何人工交互的车辆移动。5级车不需要人工输入,甚至不需要方向盘或脚踏板。尽管大多数驾驶场景可以用经典的感知、路径规划和运动控制方法相对简单地解决,但剩余的未解决场景是传统方法失败的案例。
上世纪80年代,恩斯特·迪克曼开发了第一批自动汽车,这为Prometheus等旨在开发全功能自主汽车的新研究项目铺平了道路。1994年,这辆无人驾驶汽车成功地行驶了1600公里,其中95%是自主驾驶的。同样,在1995年,CMU Navlab演示了6000公里的自主驾驶,98%的人是自主驾驶的。自主驾驶的另一个重要里程碑是2004年和2005年的DARPA大挑战赛,以及2007年的DARPA城市挑战赛。目标是让无人驾驶汽车在没有人为干预的情况下,尽可能快地驶过一条越野路线。2004年,15辆车都没有完成比赛。斯坦利等人利用机器学习技术在非结构化环境中进行了导航,这是自动驾驶汽车发展的一个转折点,从此机器学习和人工智能在自动驾驶的核心组成部分中开始被探索,这一转折点在本调查报告中也很明显,因为大多数调查工作都是在2005年以后进行的。
2.自动驾驶系统
自动驾驶是一种自主决策系统,它处理来自不同车载来源的观测流,如照相机、雷达、激光雷达、超声波传感器、GPS装置和/或惯性传感器。这些观察结果被汽车的计算机用来做驾驶决定。人工智能汽车的基本框图如图1所示。
图1:基于深度学习的自动驾驶汽车。该体系结构可以实现为一个顺序感知规划动作管道(a),也可以实现为一个终端系统(b)。在顺序流水线的情况下,可以使用人工智能和深度学习方法设计组件,也可以基于经典的非学习方法设计组件。End2End学习系统主要基于深度学习方法。通常设计一个安全监视器来确保每个模块的安全。
决策是在模块化的感知(图1(a))中计算的,或者是在第2终端学习方式(图1(b))中计算的,其中感知信息直接映射到控制输出。模块化流水线的组件可以基于人工智能和深度学习方法设计,也可以使用经典的非学习方法设计。图1(a)中的模块化流水线被分层分解为四个组件,可以使用深度学习和人工智能方法或经典方法进行设计。这些组件包括:
感知和定位、高级路径规划、行为仲裁或低级路径规划、运动控制器。
自动驾驶汽车的首要任务是了解周围环境并使其本地化。在此基础上,规划了一条连续的路径,并通过行为仲裁系统确定了汽车的未来行为。最后,运动控制系统反应性地校正在执行所计划的运动时产生的误差。有关这四个组件的经典非人工智能设计方法的回顾,请参见(Paden等人,2016)。接下来将介绍自动驾驶中使用的深度学习和人工智能技术,以及设计上述分层决策过程所使用的不同方法,此外该论文还概述了end2end学习系统。
3. 深度学习技术综述
在卷积神经网络的基础上进行视觉的感知是自动驾驶系统中最常用的方法,本文就关键的深度强化学习进行阐述,对最初的DQN算法进行了一些独立的改进(mnih等人,2015)。DeepMind提供了一项关于如何将这些改进与深度强化学习相结合的研究,其中名为Rainbow的组合算法能够优于独立竞争的方法。DeepMind(Hessel等人,2017年)提出了对DQN基础的六个扩展,每个扩展都解决了一个明显的问题:
双Q学习解决了高估偏差问题,并使行动的选择和评估脱钩;
从需要学习信息的数据中更频繁地对重播样本进行优先排序;
决斗网络旨在提高基于价值的RL;
多步骤学习用于提高训练速度;
分布rl改进了bellman方程中的目标分布;
噪声网络提高了网络忽略噪声输入的能力,并允许状态条件探测。
以上所有的补充性改进都在ATARI2600挑战赛上进行了测试。关于自动驾驶车辆的一个好的实现应该从所述的DQN扩展开始。考虑到深度强化学习的进展,该算法的直接应用仍然需要一个训练过程,在该过程中,人们应该模拟和建模所需的自动驾驶汽车的行为。智能体无法直接访问模拟的环境状态。相反,传感器读数提供了关于环境真实状态的线索。为了解真实的环境状态,仅映射传感器读数的一个快照是不够的。时间信息也应该包含在网络的输入中,因为环境的状态会随着时间而改变。对于自动驾驶汽车,离散动作将转换为离散命令,例如左转、右转、加速或中断。上述DQN方法已扩展到基于策略梯度估计的连续行动空间,它描述了一种无模型的actor-critic算法,其能够直接从原始像素输入中学习不同的连续控制任务。尽管使用日间行车灯进行连续控制是可能的,但在自动驾驶中,日间行车灯最常见的策略是基于离散控制。这里的主要挑战是训练,因为智能体必须探索其环境
4驾驶场景感知与定位深度学习
4.1传感硬件:摄像机与激光雷达之争
深度学习方法特别适合于从摄像机和lidar(光探测和测距)设备获取的2d图像和3d点云中检测和识别对象。在自动驾驶中,三维感知主要基于激光雷达传感器,它以三维点云的形式提供对周围环境的直接三维表示。激光雷达的性能是根据视场、距离、分辨率和旋转/帧速率来衡量的。3D传感器,如Velodyne?通常具有360度水平视野。为了高速行驶,一辆自动驾驶汽车至少需要200米的行驶距离,使汽车能够及时对路况的变化作出反应,三维目标检测精度取决于传感器的分辨率,最先进的激光雷达能够提供3cm的精度。摄像机则是对获取的图像通过深度学习方法进行处理,其主要依赖于分辨率的高度和算法的精准程度。
4.2驾驶场景理解
一辆自动驾驶汽车应该能够检测到交通参与者和可行驶区域,特别是在城市地区,那里可能出现各种各样的物体外观和遮挡。基于深度学习的感知,特别是卷积神经网络(CNN)成为目标检测和识别的事实标准,在ImageNet大规模视觉识别挑战赛等比赛中取得显著成绩。不同的神经网络结构用于检测二维感兴趣区域或图像中的像素分割区域,3DLidar点云中的边界盒以及组合相机Lidar数据中对象的三维表示。场景感知结果的示例如图3所示。图像数据信息丰富,更适合于目标识别任务。然而,由于在将成像场景投影到成像传感器上时丢失了深度信息,因此必须估计被检测对象的真实3d位置。
4.2.1边界盒型目标探测器
图像中最常用的二维目标检测结构是单级和双级检测器。流行的单级探测器有“你只看一次”(Yolo)、单点多盒探测器(固态硬盘)。双级检测器,如RCNN、Faster RCNN或R-FCN,其将目标检测过程分为两部分:感兴趣区域候选方案和边界框分类。一般来说,单级探测器的性能不如双级探测器,但速度要快得多。图4根据Pascal VOC 2012数据集和测量的平均精度(MAP)对上述目标检测器进行了比较,交叉超过并集(IOU)值分别为50和75。
4.2.2语义和实例分割
驾驶场景的理解也可以通过语义分割来实现,表示图像中每个像素的分类标记。在自动驾驶环境中,像素可以用分类标签来标记,代表可驾驶区域、行人、交通参与者、建筑物等,这是一项高级任务。其中Segnet、ICnet、ENET、Adapnet或Mask R-CNN等语义分割网络主要是具有像素级分类层的编码器-解码器架构。它们基于一些常见网络拓扑的构建块。图5显示了基于城市景观数据集的四个关键语义分割网络的测试结果。其中每类平均交集是指多类分割,每个像素被标记为属于特定的对象类,而每类是指前景(对象)-背景(非对象)分割。输入样本的大小为480px320px。
4.2.3 定位
定位算法的目的是计算自主车辆导航时的姿态(位置和方向)。这可以通过GPS等系统来实现,但在下面的文章中将重点介绍基于视觉定位的深度学习技术。视觉定位,也称为视觉里程计(vo),通常是通过匹配连续视频帧中的关键点标记来确定的。给定当前帧,这些关键点用作透视N点映射算法的输入,用于计算车辆相对于前一帧的姿态。深度学习可以直接影响关键点检测的精度,从而提高精度。此外,随着摄像机姿态的计算,环境的结构可以逐步映射。这些方法属于同步定位与映射(slam)领域。为了安全地在驾驶现场导航,一辆自动驾驶的汽车应该能够估计周围环境的运动,也称为场景流。以往基于激光雷达的场景流估计技术主要依赖于人工设计的特征。本文注意到一种趋势,即用能够自动学习场景流的深度学习体系结构取代这些经典方法。在占用网格上训练编码深度网络,以在连续时间步之间找到匹配或不匹配的位置。虽然在基于深度学习的定位领域已经取得了很多进展,但是该技术仍然以经典的关键点匹配算法为主,并结合惯性传感器提供的加速度数据。这主要是因为关键点检测器计算效率高,可以很容易地部署在嵌入式设备上。
4.3使用Occupancy Maps感知
Occupancy Maps也称为占用网格,它是将驾驶空间划分为一组单元并计算每个单元的占用概率的环境表示。图6示出了几个Occupancy Maps数据样本。
深度学习用于Occupancy Maps的上下文中,用于动态对象检测和跟踪,车辆周围占用图的概率估计或用于推导驾驶场景上下文。在后一种情况下,Occupancy Maps是通过随着时间的推移积累数据来构建的,而深层神经网络则用于将环境标记为驾驶上下文类,例如高速公路驾驶、停车场或市中心驾驶。Occupancy Maps代表一个车内虚拟环境,以更适合路径规划和运动控制的形式集成感知信息。深度学习在估计中起着重要作用,因为用于填充网格单元的信息是从使用场景感知方法处理图像和lidar数据中推断出来的。
5.深入学习路径规划和行为仲裁
自动驾驶汽车在两个点(即起始位置和所需位置)之间找到路线的能力表示路径规划。根据路径规划过程,自动驾驶汽车应考虑周围环境中存在的所有可能障碍物,并计算沿无碰撞路线的轨迹。一般的认为自动驾驶是一种多智能体设置,在这种设置中,当车辆在超车、让路、合流、左转和右转时,以及在非结构化城市道路上行驶时,宿主车辆必须与其他道路使用者应用复杂的谈判技巧。文献研究结果指出,一个非琐碎的策略。本文提出的解决方案是构造一个由可学习部分和非可学习部分组成的策略函数。可学习的策略试图最大化奖励功能(包括舒适性、安全性、超车机会等)。同时,不可学习策略遵循功能安全的硬约束,同时保持可接受的舒适度。用于路径规划的il和drl都有其优缺点。然而,在拐角情况下(例如,驶离车道、车辆碰撞等),这些数据是稀缺的,使得训练网络在遇到不可见数据时的响应是不确定的。另一方面,尽管DRL系统能够在模拟世界中探索不同的驾驶情况,但这些模型在移植到现实世界时往往会有偏差行为。
6.基于人工智能的自动驾驶汽车运动控制器
运动控制器负责计算车辆的纵向和横向转向指令。学习算法既可以作为学习控制器的一部分,在图1(a)的运动控制模块中使用,也可以作为完整的末端控制系统,直接将感觉数据映射到转向命令,如图1(b)所示。
6.1学习控制器
传统的控制器利用由固定参数组成的先验模型。当机器人或其他自治系统被用于复杂的环境,如驾驶时,传统的控制器无法预见系统必须处理的所有可能情况。与具有固定参数的控制器不同,学习控制器利用训练信息随时间学习其模型。随着每一批训练数据的积累,真实系统模型的近似变得更加精确,从而使模型灵活性、一致性、不确定性估计和预期在部署之前无法建模。在以前的工作中,学习控制器已被引入基于简单函数逼近,如高斯过程(GP)建模,或支持向量回归。学习技术通常用于学习动力学模型,该模型反过来改进了迭代学习控制(ILC)中的先验系统模型和模型预测控制(MPC)。迭代学习控制(ilc)是一种控制重复工作系统的方法,例如自动驾驶汽车的路径跟踪。它已成功应用于越野地形的导航、自动泊车和自动赛车转向动力学建模。这些方法使用学习机制来识别非线性动力学,用于mpc的轨迹成本函数优化,其使得人们能够更好地预测干扰和车辆的行为,从而获得应用于控制输入的最佳舒适性和安全性约束。此外,学习控制器的一个主要优点是,它能将传统的基于模型的控制理论与学习算法最佳地结合起来。这使得仍然可以使用已建立的控制器设计和稳定性分析方法,以及应用于系统辨识和预测级别的鲁棒学习组件。
6.2终端学习控制
在自主驾驶的背景下,末端学习控制被定义为从感觉数据到控制命令的直接映射。输入通常来自高维特征空间(如图像或点云)。如图1(b)所示,这与传统的处理过程相反,在传统的处理过程中,首先在输入图像中检测对象,然后规划路径,最后执行计算出的控制值。表1总结了一些最受欢迎的End2End学习系统。
end2end学习也可以表示为一种扩展到复杂模型的反向传播算法。这种模式最早出现在20世纪90年代,当时在一个神经网络系统中建立了自主陆地车辆。在过去的几年里,计算机硬件的技术进步促进了end2end学习模型的使用。在并行图形处理单元(gpu)上实现了深度网络中梯度估计的反向传播算法。这种处理允许训练大型和复杂的网络体系结构,而这又需要大量的训练样本。End2End控制文件主要使用在现实世界和/或合成数据上离线训练的深层神经网络或在模拟中训练和评估的深度强化学习(DRL)系统。Nvidia?在过去几年中推广了End2End方法。方法是训练一个CNN,它将原始像素从一个正面摄像头直接映射到转向命令。训练数据由在不同灯光和天气条件下以及在不同道路类型上执行的驾驶场景中收集的图像和转向命令组成。在训练之前,通过增加数据,在原始数据的基础上增加人工移位和旋转来丰富数据。一般的,评估分为两个阶段:第一阶段是模拟,第二阶段是测试车。自主性能指标表示神经网络驱动汽车的时间百分比:
当模拟车辆偏离中心线超过1米时,假设6秒是人类重新控制车辆并将其恢复到所需状态所需的时间,则认为发生了干预。从Holmdel到美国新泽西州大西洋高地的20公里车程实现了98%的自主性,其中重点是确定输入交通图像中哪些元素对网络的转向决策影响最大。基于drl的控制的下一个趋势似乎是包含了经典的基于模型的控制技术。经典控制器提供了一个稳定的、确定性的模型,在此基础上对神经网络的策略进行了估计。这样,模型系统的硬约束就转化为神经网络策略
7.自动驾驶中的深度学习安全
自动驾驶中的深度学习安全意味着没有导致系统危险的条件,而系统的安全性在很大程度上取决于技术类型和应用程序上下文。因此,关于深度学习技术的安全性的推理需要:
?理解可能的故障的影响;
?理解更广泛的系统中的上下文;
?定义关于系统上下文和可能使用它的环境的假设;
?定义安全行为的含义,包括非功能约束。
8.用于训练自动驾驶系统的数据源
不可否认,使用真实世界的数据是训练和测试自动驾驶组件的关键要求。这些组成部分的发展阶段需要大量数据,这使得在公共道路上收集数据成为一项有价值的活动。为了获得对驾驶场景的全面描述,用于数据采集的车辆配备了多种传感器,如雷达、激光雷达、GPS、摄像机、惯性测量单元(IMU)和超声波传感器。传感器设置因车辆而异,具体取决于数据的计划使用方式。图7中示出了用于自主车辆的公共传感器设置。
下表是目前公开可用的最相关数据集以及相关的显著特征。
9.计算硬件和部署
在目标边缘设备上部署深度学习算法并不是一项简单的任务,在车辆方面的主要限制是价格、性能问题和功耗。因此,嵌入式平台由于其可移植性、多功能性和节能性成为集成汽车内人工智能算法的关键。Nvidia是为在自主汽车内部署深度学习算法提供硬件解决方案的市场领导者。drive-px(nvidia,b)是一款人工智能汽车计算机,旨在使汽车制造商能够直接专注于自主汽车的软件。最新版本的drivepx架构基于两个tegra x2(nvidia,f)片上系统(socs)。每个soc包含两个denve核、4个arm a57核和一个pascal图形计算单元(gpu)。nvidia驱动器px能够执行实时环境感知、路径规划和定位。它结合了深度学习、传感器融合和环绕视觉来改善驾驶体验。此外,现场可编程门阵列(FPGA)是另一种可行的解决方案,在深度学习应用中,它在性能和功耗方面都有很大的提高。FPGA适用于深度学习算法,其适用性可以从四个主要方面进行分析:效率和功率、原始计算能力、灵活性和功能安全性。此外,由微软和Xilinx等制造商提出的研究表明,在计算复杂度相同的算法时,GPU可以消耗比FPGA多十倍的功率,这表明FPGA可以更适合于汽车领域的深学习应用。