APP下载

深度学习在自动驾驶领域应用综述

2021-12-31段续庭周宇康田大新郑坤贤周建山孙亚夫

无人系统技术 2021年6期
关键词:神经网络决策自动

段续庭,周宇康,田大新,郑坤贤,周建山,孙亚夫

(1.北京航空航天大学交通科学与工程学院车路协同与安全控制北京市重点实验室,北京 102206; 2.综合交通大数据应用技术国家工程实验室,北京 100191;3.北京千方科技股份有限公司,北京 100085)

1 引 言

近年来,自动驾驶技术从概念设计阶段向实际应用阶段快速迈进。也有越来越多的企业和研究人员进入自动驾驶赛道,投身到自动驾驶领域的研究中来。

自动驾驶已有数十年的历史,但自动驾驶行业最初并未受到广泛关注。20 世纪80年代,无人车Naclab-1 完成了无人驾驶行驶试验,该型号无人车由美国卡耐基梅隆大学在雪佛兰厢式货车的基础上研制。这之后许多为无人车开放道路实验的法律法规相继出台。后续数年中对自动驾驶的研究逐渐流行开来,2009年,自动驾驶汽车的雏形图片被曝光,自动驾驶开始受到广泛关注。鉴于计算机工作的高稳定性与合逻辑性,可以预见自动驾驶技术一旦能够付诸应用,将极大减少目前因驾驶员因素造成的交通事故量,与之配套的车辆与基础设施互联技术也将通过车云交互极大减轻交通拥堵。为此,各个工业强国纷纷出台政策,为自动驾驶的发展提供便利。我国于2015年发布《中国制造2025》[1],强调智能制造、高端制造对产业升级的意义。2019年,我国发布《汽车产业中长期发展规划》[2],明确提出我国产业转型升级的一个重要方向是智能网联汽车。在人工智能方面,美国于2016年发布《国家人工智能研究与发展战略规划》,表明美国将持续对人工智能领域投资。2017年,国务院发布《新一代人工智能发展规划》[3],提出我国人工智能发展的战略目标与总体部署。2018年,科技部启动“新一代人工智能”重大项目申报[4],进一步推动了人工智能产学研结合、与传统行业融合的趋势。

自动驾驶技术包括环境感知、行为决策与控制执行3 个主要模块。感知系统对多种类型传感器所感知的数据进行处理,通过多种定位设备与高精度地图实现精准定位,并利用高精度地图获取路径与交通信号灯等固定信息,最终综合种种信息实现对当下行驶场景的场景理解。决策系统负责路线规划和行车动作决策,根据感知模块所传输的场景信息做出规则允许下实现乘客收益最大化的决策,除了车辆自身的软硬件系统外,以上功能的实现往往还需要车联网技术的支持。控制系统多与汽车底盘相关,负责执行决策模块做出的运动指令,控制车辆加减速、转向或刹车等。

自动驾驶技术的推广面临着许多问题,如感知系统中,为数众多的传感器会产生大量不同类型的数据交由主控电脑识别整理,去芜存菁;决策系统中,汽车在行进过程中的每个多样化情境都需要做出合理决策,既要高效快速,又要保证安全,对于决策问题,现行的解决方案包括基于规则的方法(如有限状态机法)和基于学习的方法(深度学习方法及决策树等机器学习方法)。有限状态机法的优点是逻辑清晰、实用性强,但在驾驶场景较复杂时,有限状态机的状态划分将变得繁琐,状态转移条件也将变得更加复杂。近年 来,随着深度学习方法在决策支持、图像处理等领域大放异彩,自动驾驶各模块中也越来越多地应用了深度学习算法。目前,已有一些工作对无人驾驶场景深度学习的应用进行总结与阐述,张新钰等[5]对基于深度学习的自动驾驶领域目标检测与识别、任务辅助等技术的研究现状进行了介绍,王玉龙等[6]对自动驾驶决策系统的拟人化决策算法进行了综述,这也是深度学习在决策系统应用的一个重要分支。Grigorescu 等[7]综述了深度学习在自动驾驶中的应用现状,并重点论述了自动驾驶系统面临的信息安全问题。此外,Fayyad等[8]针对自动驾驶感知与定位中的传感器融合问题,介绍了当前自动驾驶领域使用深度学习融合算法进行感知和定位的研究现状。Ni 等[9]介绍了自动驾驶汽车的发展历程,并综述了深度学习方法在自动驾驶所面临的几项主要问题中的应用,如障碍物检测、场景理解、车道检测与路径规划等。Gwak 等[10]对自动驾驶软件模块中包含的车道跟踪、图像识别、激光雷达检测等算法进行了综述,并重点介绍了其中的深度学习方法。然而现有的文献综述或只针对自动驾驶的单个功能模块进行介绍,而不涉及其他模块或全局性能的讨论,或仅基于问题进行综述,论述深度学习算法在自动驾驶所面临的几项典型问题中的应用,既不够全面也不够系统(并且往往不包含决策问题)。本文从自动驾驶的技术路径出发,以自动驾驶的感知、决策、控制3 大模块及端到端式解决方案作为章节划分的依据,在每一模块下介绍自动驾驶汽车所需要解决的问题及深度学习算法在其中的应用,并进一步探讨了两类自动驾驶全局解决方案——端到端式和分解式解决方案的优劣。

2 深度学习算法

深度学习是机器学习领域中的一项子内容。依靠深层结构和强大的特征学习机制,深度学习系列算法不仅在计算机科学方面表现出色,还极大地促进了其他科学领域的研究[11]。在自动驾驶领域,深度学习广泛用于解决感知、决策、控制算法中面临的难题,以提高自动驾驶系统的智能化水平。

机器学习作为实现人工智能的一种方式,其对人类神经网络的深入研究和模拟催生了人工神经网络。人工神经网络能够进行简单的特征学习,学到给定任务数据集上的特征,寻找到任务数据的内在结构,输出解决方案。然而,传统浅层神经网络由于参数和超参数较少,对复杂任务的学习能力有限,难以满足任务需求。后来研究人员发现,增加网络深度可以提升神经网络对复杂数据的表征能力,提高准确性,但是因为易过拟合,训练速度慢,且层次较少(<4)时并不比其他方法更优等原因而不受重视。2006年,Hinton 等[12]在实践中采用逐层调整和微调的方法成功训练了深度学习网络,证明深度学习模型是可以训练的。此外,其他研究人员也提出ReLU 和dropout 等方案来解决其过拟合的问题,提升了模型的泛化能力,深度学习的学习机制得以进一步完善。

深度学习通过多层的前馈或者循环网络结构,实现多层网络中大量的参数学习,最终实现对所需要的输入–输出间复杂映射的逼近[13]。此外,深度学习能够有效地从低级原始数据中学得低级特征,存储在网络前部的结构中,并通过不同的后部结构完成特征提取、分类、结果输出等任务。深度学习与传统神经网络之间的区别在于其深层性与层间连接的多样性。传统神经网络层数一般在3 层左右,层间一般采用全连接方式,而深层神经网络可达上千层。连接方式包括全连接、延时连接与随机连接等。含1 个隐藏层的深度学习模型如图1 所示。

图1 含1 个隐藏层的深度学习模型Fig.1 A deep learning model with one hidden layer

深度学习常用的方法包括卷积神经网络(Convolutional Neural Networks,CNN)、循环神经网络(Recurrent Neural Networks,RNN)和深度置信网络(Deep Belief Nets,DBN)等。其中,卷积神经网络的应用最为广泛。

2.1 卷积神经网络

卷积神经网络是人工神经网络的一个分支,也是应用最广泛的一类人工神经网络。它通常由一层输入层,多于一层的隐藏层(包含卷积层与池化层)以及一层全连接层和一层输出层组成,基本结构如图2 所示[9]。

图2 CNN 的基本结构[9]Fig.2 Basic structure of CNN[9]

卷积层是CNN 的核心组成部分。卷积核与输入图像的局部区域卷积。即[9]

式中,运算符*为二维离散卷积运算;w为滤波器矩阵,b为偏置参数;x为输入要素图,y为要素图的输出。卷积核通常被初始化为3×3 或5×5 的小矩阵。在网络的训练过程中,卷积核将通过学习不断更新,并最终获得合理的权重。激活函数运行时激活神经网络中某一部分神经元,激活函数在神经网络中加入了非线性因素,使得神经网络能够在解决非线性问题时获得满意的输出。

主要的激活函数有以下几种[9]:

卷积神经网络采用权值共享机制,大大降低了网络参数数量和计算量,同时采取网络局部连接机制限制隐藏层节点数。这在输入与要求输出间为复杂映射关系时尤其有效,极大地提高了计算效率。卷积神经网络广泛应用于图像处理等领域。

2.2 循环神经网络

有关循环神经网络的研究起源于20 世纪80年代,并在21 世纪初发展为深度学习的典型算法之一。典型的循环神经网络包括双向循环神经网络(Bidirectional RNN,Bi-RNN)和长短期记忆网络(Long Short-Term Memory Networks,LSTM)。RNN 的基本结构如图3 所示。图中X、S、O都是向量,分别表示输入层、隐藏层和输出层的值;U是输入层到隐藏层的权重矩阵,V是隐藏层到输出层的权重矩阵。循环神经网络的隐藏层的值St不仅仅取决于当前输入X,还取决于上一次输入时隐藏层的值St-1。权重矩阵W就是上一次隐藏层的值作为此次输入时的权重。

图3 RNN 的基本结构[14]Fig.3 Basic structure of RNN

RNN 的一般公式表示如下:

CNN 的状态仅依赖于当前输入,与前后输入无关,而RNN 的状态还与网络上一时刻的状态有关,因而可以处理前后输入相关的问题,RNN被广泛应用于自然语言处理领域,例如语音识别、语言建模、机器翻译等问题中。

2.3 生成对抗网络

Goodfellow 等[15]在2014年提出了生成对抗网络(Generative Adversarial Networks,GAN)的概念,GAN 使用无监督学习方式,同时训练生成模型和判别模型。生成模型的目的是产生尽可能消除生成样本与真实样本的差别,判别模型的目的是将生成样本与真实样本区分开,生成网络一般包含逆卷积层,而判别网络一般是CNN。GAN就是通过两个模块的不断博弈产生需要的结果。GAN 的基本结构如图4 所示。

图4 GAN 的基本结构[15]Fig.4 Basic structure of GAN

2.4 深度强化学习

强化学习的特点是在“试错”中学习,即在与外部环境的互动中根据当前行动获得的奖励不断调整行动策略。强化学习不需要对训练集进行标注,侧重在线学习,因此多用于解决无法严格标注“对错”的问题,如自动驾驶汽车的决策问题。机器学习、深度学习、强化学习、监督学习与深度学习之间的关系如图5 所示。

图5 各种机器学习方式与深度学习的关系[16]Fig.5 Relationships among deep learning and several machine learning methods

强化学习框架如图6 所示,标准的强化学习智能体框架由3 个模块组成:输入模块I、强化模块R和策略模块P,输入模块读取外部输入,强化模块确定智能体所要达到的目标,一般是使其获得的最终奖励最大,策略模块根据当前状态与强化目标选择智能体所要采取的动作。

图6 强化学习框架Fig.6 Framework of reinforcement learning

强化学习的策略(Policy,P)是智能体在给定状态S下,对所要做出的动作的选择,定义为

生成模型是用于产生指定分布数据的模型,生成模型将对网络输入数据的特征通过极大似然估计转化为指定的生成样本。

目前,GAN 主要应用于图像生成领域,如创建超分辨率图像、语义分割、文本到图像转换和人脸合成、图像修复等。 π。奖励是每次智能体与环境进行交互后环境给予的反馈,智能体的目标是使整个行动过程中的累计奖励最大。价值函数指一个状态在给定的策略π 下长期期望奖励的高低。环境是对真实世界的模拟。

强化学习具有解决决策问题的能力, 但学习复杂特征的能力较弱;而深度学习模型广泛应用于感知领域,能够学习复杂的抽象特征,但缺乏解决决策问题的能力。因此,结合两者优势的深度强化学习为复杂系统的决策问题提供了解决办法[17]。深度强化学习引入神经网络来解决强化学习的容量限制的问题,如将卷积神经网络与强化学习结合,典型例子是深度 Q 网络(Deep Q Network,DQN)利用深度神经网络来映射动作和状态的关系;或将循环神经网络与强化学习相结合,典型例子是深度递归Q 网络(Deep Recurrent Q Network,DRQN)。DQN 使用CNN 作为函数近似器,权重θ作为Q 网络,如下所示:

2.5 深度学习与自动驾驶技术

深度学习具有传统算法所不具有的种种优势,近年来被广泛应用于自动驾驶技术中。深度学习应用的核心目标就是让智能车辆能够像人一样从已有的道路交通资料及规章中学习驾驶技术,最终达到能够独立安全处理车辆行驶过程中所面临的各类问题的层次。自动驾驶按技术流程可被分为分解式和端到端式两种解决方案,分解式解决方案包括感知、决策、控制3 个主要模块,是一个3 个功能模块互相联系、分工协作的综合系统。感知模块接收车载传感器和V2X 通信获得的环境信息并对其进行处理,包括图像、点云识别与高精度定位等,最终实现对车辆行驶环境的场景理解。决策模块接收感知模块传来的环境信息,结合乘客乘车需求(如时间最短等),规划车辆行驶路径,并进行行驶过程中的行为决策。控制模块则接收决策模块传来的控制指令,实现对车辆的运动控制。而端到端式方案则多使用深度学习技术由所输入的传感器数据直接输出控制指令。两种解决方案的一般技术路径如图7 所示。自动驾驶分解式方案的架构及特点如图 8所示。

图7 两种自动驾驶解决方案Fig.7 Two plans of autonomous driving

图8 自动驾驶分解式架构Fig.8 Decomposed architecture for autonomous driving

在控制执行方面,深度学习技术用于学习控制系统,以控制对象和环境交互的特性,改善控制性能;在规划决策方面,深度学习技术被用于解读感知模块信息,并进一步利用感知信息解决无人汽车的路径规划与行为决策问题,主要解决汽车如何走的问题;在环境感知方面,深度学习算法广泛应用于车载传感器目标检测与识别,旨在从多种车载传感器数据中(一般为视觉传感器与激光雷达)准确检测识别出各类环境信息,如车道线、分隔栅栏、交通信号等。为系统决策和控制提供依据,是整个自动驾驶系统的基础,主要解决环境(外部条件)是如何的问题。

自动驾驶分解式方案感知、决策、控制的分工架构使其可解释性更强、驾驶规则更严谨,但同时也极大地增加了系统的复杂度和计算量,从而大大提高了系统的开发难度与对车载硬件的要求(包括算力、体积、功耗等)。对于其决策模块而言,由于自动驾驶车辆需要能够适应和处理各类复杂极端环境,因此其行驶规则库构建难度很大,目前仍存在许多难以用规则描述的环境,使得系统不能实现对驾驶场景的覆盖与处理。端到端自动驾驶方案通过直接进行传感器数据到控制指令的映射来实现车辆的自动驾驶,不需要感知、决策等中间模块,避开了感知算法融合、驾驶规则库构建等难题,极大地降低了系统复杂度,具有开发难度小、硬件要求低的优点。但中间模块的去除使得这种方案的可靠性、灵活性很差,几乎不具有解释分析性,安全性难以保证。

3 深度学习在自动驾驶中的应用

3.1 自动驾驶环境感知中的深度学习

环境感知位于自动驾驶系统和复杂的外界环境之间,是自动驾驶系统进行决策的核心和前提,其主要功能是为自动驾驶系统提供可靠的外部环境判断,判断自身所处位置和周边驾驶态势。自动驾驶环境感知包括障碍物检测、交通信号灯识别与车道线检测等,其基础技术主要是目标检测和语义分割等。目前,自动驾驶系统所使用的传感器主要包括摄像头、毫米波雷达、超声波雷达、激光雷达等[18]。

3.1.1 主要的传感硬件

常见的摄像头分为单目[19]和双目[20]两类。单目摄像机结构简单,相机标定也简单,但单张照片难于确定物体的真实大小,只有在移动的情况下,才能推测深度信息。双目摄像机利用两架摄像机定位。对于物体上某个点,只需知道两个相机的准确位置,就可以知道该特征点在统一的同一个坐标系中的坐标值,即特征点的位置。视觉传感器安装简单,获取信息量巨大,算法多样,但易受光照和气象条件的影响。

激光雷达多用于三维目标检测,相比摄像机所获得的二维图像,它还能获得所处环境的深度信息。同时,它具有极高的分辨率和距离探测精度,最高可达厘米级[21],因此几乎所有自动驾驶传感器系统都包括激光雷达。激光雷达使用激光束进行探测,是激光技术与现代光电技术结合的高精度探测设备。毫米波雷达是指波长在毫米级别的雷达,主要工作频段在24 GHz、77 GHz、60 GHz[22]。24 GHz 用于短距防撞预警和盲点检测,77 GHz 具有更好的距离分辨力,能够提高道路上的测距精度。毫米波雷达不受天气影响,它的探测距离较远,性能稳定,距离分辨率较高且成本低[23],其缺点在于行人感知能力较弱,对建筑物无法建模,角度分辨率比较差。深度学习方法较多用于从2D 图像(由摄像头获得)和3D 点云(由激光雷达等获得)中检测和识别对象。

在自动驾驶中,三维感知主要基于激光雷达传感器,激光雷达数据以三维点云的形式供自动驾驶感知系统处理。三维目标探测精度由传感器的分辨率决定,目前先进的激光雷达已经能够提供2~3 cm 的精度[24]。激光雷达和视觉传感器各有优缺点,雷达即使在黑暗中也具有高分辨率和精确感知能力,但易受恶劣天气条件(如大雨)的影响,并且涉及移动部件。相比之下,相机成本更低,但感知效果受光照影响较大。此外,照相机对恶劣天气也很敏感。

除了以上传感器外,自动驾驶汽车还使用了其他雷达和超声波传感器以进一步增强感知能力。例如,除了5 个激光雷达传感器外,Waymo还使用了4 个毫米波雷达和8 个摄像头,而Tesla汽车配备了8 个摄像头、12 个超声波传感器和1个毫米波雷达[7]。Mobileye 公司的自动驾驶汽车上一共有12 个摄像头(前方3 个,角落2 个,朝前2 个,朝后2 个,朝侧3 个,用作停车),目前各类自动驾驶汽车的传感器使用情况如表1 所示[10]。

表1 各类自动驾驶车辆的传感器使用情况Table 1 Sensors of various autonomous vehicles

3.1.2 传感器目标检测

自动驾驶汽车能够检测的物体包括各类交通参与者、车道线、交通信号灯,障碍物等。传统的目标检测算法包括HOG、SVM 等,其流程为:(1)感兴趣区域提取;(2)区域内目标特征提取;(3)分类器设计(AdaBoost/SVM 等)[25]。传统方法的区域提取复杂度高,窗口冗余,且其目标特征需要手动构造,不能覆盖自动驾驶可能面临的全部场景。相比之下,深度学习算法不需要手动构造特征,简化了识别过程,在识别精度和速度上都有很大提升。

二维图像检测包含单级式和双级式两大类方法。单级式:直接输入图片,回归出含有特定目标的概率和目标的具体位置(4 个坐标),主要算法包括YOLO 算法和SSD 算法,直接用一个端到端的网络得出结果;双级式:双级式是基于区域的算法,先提取出可能包含物体的区域,再进行BoundBox 的回归,回归出物体在图像中的具体位置,包括 R-CNN、Fast R-CNN、Faster R-CNN、Mask-RCNN、RFCN 等目标检测算法,图9 为使用YOLOv3 进行目标检测的示例。单级检测方法的准确率不如双级算法,但速度更快。

图9 YOLO 目标检测示例Fig.9 An example of YOLO target detection

Redmon 等[26]提出的YOLO 算法,速度快,但精度较低,直接进行端到端回归,回归出来的结果是4 个坐标以及各种物体和背景的概率。YOLO 系列算法包括YOLOv1[27]、YOLOv2[26]、YOLOv3[28]、YOLOv4[29]、YOLOv5 等。Liu 等[30]提出的SSD算法,使用多尺度的特征图检测结果可以检测大 物体与小物体,同时对于每个中心点设置不同尺度和长宽比的Prior boxes,得到概率值和锚点(Anchor Offset)。SSD 系列算法包括R-SSD[31]、DSSD[32]、ASSD[33]、FSSD[34]、RetinaNet[35]等。张婷婷等[36]与黄健[37]、罗元[38]等比较了几种主要单级目标检测算法的性能,结果如表2 所示,VOC2007、2010、2012 与MS COCO 是用于目标检测的4 种不同数据集,目标检测精确度的度量标准为平均准确度(Mean Average Precision,MAP)。

表2 单级式算法性能对比Table 2 Performance comparison of single-stage algorithms

Grishick 等[40]提出了R-CNN 算法。算法分为三步:第一步为确定候选区域,之后运用选择性搜索算法,不断合并最相似的区域,最后选出符合条件的感兴趣区域;第二步将每个候选区域的尺寸改变为固定大小,送入CNN 模型中提取特征向量;第三步利用多类别SVM 分类器进行目标分类。Grishick[41]提出Fast R-CNN,对R-CNN进行改进,提出了空间金字塔池化网络,通过共享计算加速R-CNN,消除了许多重复计算。Ren等[42]提出了Faster R-CNN,对以上算法进行了进一步改进,用RPN 进行区域候选,用滑动窗口生成参考框的坐标值和存在检测客体的概率,并将这个值传给后续回归部分。Faster R-CNN 实现了端到端,能够将所有运算都用CNN 实现。He 等[43]提出了 Mask-RCNN,改进了感兴趣区域池化过程,将池化过程中的取整操作取消,改为通过双线性插值填补非整数位置,解决了池化过程中可能出现小数导致误差的问题,因为插值改进了检测过程的像素精度,Mask-RCNN 也可用于图像分割。Dai 等[44]提出了R-FCN,目标检测面临着平移不变性与敏感性间的矛盾,因此需要将位置信息加入感兴趣区域池化,并引入位置敏感得分图的概念,得到类别与位置信息。不同双级式算法在VOC2007、2012 及COCO 测试集上的性能对比如表3 所示。

表3 双级式算法性能对比Table 3 Performance comparison of two-stage algorithms

3.1.3 图像语义分割

图像语义分割是对图像中的每个像素点进行分类,为它确定一个标签,从而对整幅图像中不同类别的对象进行分类。图像语义分割技术已经广泛应用于自动驾驶可行驶区域检测、车辆及障碍物检测等任务中。深度学习在语义分割中取得了巨大成功,图10 为应用深度学习技术进行车辆可行驶区域语义分割的结果示例。目前,应用于图像语义分割领域的深度学习方法主要是全监督学习与弱监督学习[48],常用的语义分割模型包括以下几种:语义分割FCN、反卷积网络(Deconvolution Network, DeconvNet)、DeepLab、Refine Net、ResNet 和PSPNet 等。

图10 街道可行驶区域图像语义分割结果Fig.10 Semantic segmentation results of street drivable area

FCN 将CNN 最后的全连接层换成了卷积层,这是两者的主要区别。输入FCN 的图像可以是任意尺寸的,它将生成与之具有相同尺寸的分割图像,目前使用的深度学习语义分割模型基本都由FCN 发展而来。2015年,Long 等[49]首次提出了端到端训练的FCN,并将其用于图像分割。FCN是使用深度学习进行语义分割的先驱,但它有种种缺陷,包括不考虑上下文信息、实时性差以及不完全适用于非结构化数据等。

2015年,在FCN 的基础上,Vijay 等[50]发表Segnet 模型,它采用编码器-解码器对称结构,所完成的语义分割任务能够达到像素级别。相比于FCN,Segnet 的体量更小,采样过程中特征图及空间信息的损失也更小。DeepLab-v1 是Google团队研发的一种图像分割网络,是目前语义分割性能最好的模型之一。DeepLab 仍然采用了FCN的全卷积化结构,但它通过“Hole”算法引入空洞卷积[51],能够扩大感受野,保持分辨率,同时不增加模型的参数。DeepLab 还在后处理中引入全连接条件随机场,对FCN 图像细节较差的缺陷进行了改进。但引入空洞卷积的后果是计算量极大增加,需要大量内存。之后,Google 团队对DeepLab 进行了更新,在DeepLab-v2 中提出空洞空间卷积池化金字塔[52],以此提取多尺度特征。DeepLab-v3 对所提出的空洞金字塔进行了进一步改进[53]。针对DeepLab 空洞卷积计算代价大,并且需要大量的内存的问题,DeepLab 的做法是只预测原始输入的1/8。2016年,Lin[54]提出了一种高精度语义分割网络RefineNet,该网络将以往丢弃的低层细节特征融入到分隔任务中,辅助高层粗糙特征实现高精度的分类。RefineNet 在PASCAL VOC 2012 数据集上获得了截至其发表时各语义分割模型的最好成绩。表4 显示了几种图像语义分割方法准确率对比。

表4 几种图像语义分割方法准确率对比Table 4 Comparison of the accuracy of several image semantic segmentation methods

3.1.4 高精度定位

定位算法的目的是获得车辆的实时位置及姿态。目前,主流的定位方式是GPS/IMU 融合,这类算法精度可以达到米级。自动驾驶要求厘米级定位精度,目前使用GPS/IMU/LiDAR/HD Map融合的定位方案已经能够在无遮挡区域达到此要求。汽车在自动驾驶过程中大多通过实时与高精度地图比对来获得高精度定位[59]。但在存在高楼或隧道遮挡的情况下,以上系统的定位精度远远不能满足自动驾驶要求。深度学习在定位系统中主要应用于视觉定位(Visual Odometry,VO)与激光雷达定位,两者的原理都是通过相邻两帧的图像或者雷达数据估计本车的运动轨迹,从而估算当下状态相对于初始状态的位置。

(1)视觉里程计

根据所用相机的类型,视觉里程计可分为基于单目、立体或RGB-D 图像的VO 系统,按照所用方法,可分为特征点法及直接法VO 系统[60]。特征法从图像中提取一些特征进行跟踪和匹配计算,计算量小、计算速度快、鲁棒性与稳定性强,其一般流程如图11 所示。直接法不使用特征点,直接利用像素梯度计算相机位姿,直接法的计算量很大,目前主流的VO 系统大多使用特征点法。

图11 特征点法视觉里程计的一般流程Fig.11 Process of visual odometer using feature point method

视觉定位通过匹配相邻两帧图像间的特征点来估计相机的运动,同时重建当前环境。研究人

员已经证明,相比传统的车轮里程与航位推算技术,VO 的定位精度更高,成本也更低[61]。基于深度学习的视觉里程计无须传统方法的特征提取和复杂计算,有效降低了定位运算量[62]。Konda等[63]最先将深度学习与VO 系统结合起来,使用CNN 学习从视频到运动情况的映射。Liu 等[64]提出了一种基于深度学习的单目视觉里程计,以无监督的端到端方式训练,仅采用单眼图像作为输入,并直接以绝对比例生成姿态,RCNN-VO与 SMFLearning 的输入分辨率为 416×128,VISO2-MONO 与VISO2-Stereo 输入的图像分辨率为1242×376。在KITTI 数据集上的实验表示,该系统在平移和旋转精度方面优于其他单眼VO系统,由于SMFLearning 依赖于地面真实姿态进行比例恢复,测试中对其结果进行了后处理,以进行比较,表5 中显示了该算法与传统算法的性能对比情况。Wang 等[65]使用深度学习技术读取原始RGB 图像(视频)序列并输出相应姿态,该系统所使用的网络是递归神经网络(Recursive Neural Network,RNN),这种网络的架构是端到端的,它不依赖于传统VO 算法中的任何模块(甚至是相机校准)。

表5 基于RCNN 的VO 算法与传统VO 算法定位精度比较[64] Table 5 Comparison of positioning accuracy between VO algorithm based on RCNN and traditional VO algorithm

深度学习视觉定位能够有效降低定位计算量,并且可以通过端到端的方式极大简化视觉定位的中间过程,如参数标定、频率匹配等。但它也有一些明显的缺点,如模型可解释性差,解的精度较低,不具备泛化性等。Wang 等[65]提出的利用RCNN 的端到端VO 系统在精度上已经可以和传统VO 方法相比,但文章也指出,基于深度学习的VO 目前只能作为传统VO 的补充。

(2)激光里程计

激光里程计采集激光雷达扫描周围环境产生的三维点云作为数据输入进行车辆的位置识别。Jo 等[66]提出了使用Lidar 和相机结合的定位方法,并将其成功应用于移动机器人定位。

目前,深度学习LIDAR 定位已经具有能够满足应用要求的定位精度及计算速度,但也具有可解释性差、依赖样本质量、数量等缺点。此外,激光雷达在雨雪等极端天气下扫描效果很差,且LIDAR 定位具有漂移误差,因此大多都用于配合先验性地图及其他传感器共同定位。

3.2 自动驾驶决策规划中的深度学习

3.2.1 路径/轨迹规划

路径规划是自动驾驶汽车根据地图及传感数据,在起点和终点之间生成行驶路线的能力。简单地说,就是给定环境、汽车模型指定规划目标(如无碰撞等),自动搜索出车辆运动路径。路径规划分全局规划和局部规划,全局路径规划基于先验地图与环境信息,属于静态规划(离线规划),局部路径规划基于实时传感器信息,属于动态规划(在线规划)[67]。目前,深度学习技术主要用于局部路径规划。常用的路径搜索算法包含Dijkstra、Floyd-Warshall、人工势场法、蚁群算法等。常用的路径规划算法流程如图12 所示。

图12 路径规划算法流程[68]Fig.12 Process of path planning algorithm

深度学习路径规划的一个方向是基于传感器、目标和地图的端到端路径规划。这部分算法大多采用深度强化学习方式,因为强化学习可以从与环境的交互“试错”中学习,这种学习方式最接近人类思考过程,能够较好地解决无法简单标注对错的问题。该类算法的特点是只需制定规划目标,之后通过实际环境试验或仿真训练更新模型即可[67]。Grigorescu 等[69]基于神经网络提出了NeuroTrajectory,该方法能够从占用栅格和相应的驾驶命令中学习车辆局部状态轨迹。针对车辆所处的实际城市路网环境,肖浩等[70]基于深度 Q 学习和深度预测网络技术进行自动驾驶车辆的最短时间全局路径规划,与 Dijstra 算法、A*等静态算法相比,该算法行车时间最高减少17.97%。

深度学习路径规划的另一个方向是将深度学习技术与传统路径规划方法相结合,以提升传统算法性能。CL-RRT 算法可以考虑到复杂交通情况下车辆运动的多种约束,因此搜索出的最佳路径具有较高的安全性,但它的计算量大、计算时间过长。Chaulwar 等[71]使用3D-CNN 预测关键交通场景中的适合加速曲线,从而减少了 CL-RRT的计算时间。实验结果表明,与传统CL-RRT 方法相比,该方法将路径规划平均时间由5.05 s 降为0.62 s,而基本没有损害安全性(无碰撞路径率由100%降为99.63%)。深度学习于路径规划应用研究案例如表6 所示。

表6 深度学习路径规划应用研究案例Table 6 Examples of deep learning methods in path-planning problems

自动驾驶车辆存在路径与轨迹的区分,可以认为轨迹是同时考虑空间和时间因素的路径。当路径规划过程要满足车辆运动的纵向和横向动力学约束时,就成为轨迹规划。自动驾驶车辆纵向速度规划与时间密切相关,而车辆横向动力学对纵向速度的影响较大。轨迹规划的输入包括拓扑地图、障碍物及障碍物的预测轨迹、交通信号灯的状态,以及车辆定位、导航、车辆状态等信息。输出则是一个轨迹,即一个时间到位置的函数。传统车辆轨迹规划的方法主要有:基于状态空间的轨迹规划方法、基于参数化曲线的轨迹规划方法、针对系统特征的规划方法和基于滚动窗口的轨迹规划等[73]。

深度学习技术的快速发展为轨迹规划提供了更多可能,基于深度学习的轨迹规划算法大多属于端到端类方法,根据所输入的信息直接产生车辆运动轨迹。上述算法的一个分支是利用深度神经网络。Pfeiffer 等[74]使用一个端到端的卷积神经网络来学习从2D 激光测距结果与目标位置到转向命令的映射。仿真结果显示,该运动计划器的内容略优于完全了解地图的专家计划器。Lin 等[75]使用深度学习模型从人类驾驶员泊车轨迹中学习车辆动力学指标与所处地图环境同车辆控制动作间的关系,意在使该模型用于人类驾驶员驾车的高级驾驶辅助系统。

利用深度学习进行轨迹规划的另一分支是深度强化学习。Yu 等[76]提出了一种基于深度强化学习的路径规划方法,该方法训练的路径规划模型可以根据传感器数据及旧动作直接输出控制动作和轨迹序列。Du 等[77]使用深度强化学习进行智能车辆自动泊车轨迹规划,仿真结果显示泊车成功率超越90%,泊车时长根据所用计算平台不同在11~97 s 间波动。

目前,深度学习在路径规划与轨迹规划领域应用较少,因为使用神经网络规划路径/轨迹的整体效果并不理想,原因在于规划环境复杂多变,而神经网络的泛化能力差,可解释性不足。但相比传统算法,神经网络算法的学习能力与鲁棒性更强。深度学习算法通过学习大量驾驶数据集,在测评中显示出较低的误差率,但由于数据集中极端情况数据缺乏(如越野驾驶、车辆碰撞等),使得模型在面对未知数据时的响应不确定。

3.2.2 行为决策

这里的自动驾驶的决策模块是指狭义的决策系统,其根据车辆感知系统所获得的环境与车辆状态信息,发出合理的行驶指令(加/减速和转向等),并将指令传递给控制执行模块。目前,自动驾驶决策系统主要分为两类,分别是基于规则的决策系统和基于机器学习的决策系统。基于规则的决策系统需要建立庞大的驾驶规则库,对本车可能面临的驾驶场景选择对策。该方法的缺点在于不能应对陌生场景,只适用于几种简单情况。研究人员提出了许多基于深度学习的决策模块。Loiacono 等[78]提出了一种使用深度Q 网络(Deep Q Network, DQN)的自动驾驶汽车超车策略,DQN的算法流程如图13 所示。作者考虑直线/大转弯或急转弯两种情况下车辆的超车决策问题,并在TORCS 中进行了仿真实验,表明该算法能够进行合理超车决策。Sun 等[79]针对自适应巡航状况下的重型商用车辆,提出了一种用于确定不同曲率道路中车辆巡航目标的深度确定性策略梯度(Deep Deterministic Policy Gradient,DDPG)算法。通过合理设计强化学习参数,大大缩短了Agent 的训练时间,并解决了传统基于规则算法在复杂陌生环境中无法解决的问题。Zheng 等[80]根据仿真数据,建立了基于强化学习的自动驾驶决策系统,将车辆决策过程建模为马尔科夫决策过程(Markov Decision Process, MDP),并使用强化学习改进MDP 的性能。高速环路环境下的仿真测试表明了该方法的有效性,表7 中总结了近年来部分应用深度学习技术进行自动驾驶车辆决策的研究。其中,文献[81]为数值仿真方式测试,未说明具体仿真平台。

图13 DQN 算法流程[82]Fig.13 Process of DQN algorithm

表7 部分深度学习决策研究Table 7 Examples of deep learning methods in decision-making problems

以上都是针对特定场景的决策研究,但自动驾驶的应用要求决策系统能够解决汽车行驶过程中所面临的几乎所有问题,目前有些使用深度学习技术构建的决策系统已经被应用于无人驾驶车辆。Mobileye 公司[86]使用基于深度强化学习的驾驶决策系统,并将其置入“感知—决策—控制”的传统自动驾驶架构中,实现了3 个主要模块的协同性。Waymo 的自动驾驶决策系统使用深度学习技术来进行场景理解,并且能够预测行人或车辆下一步的动作,并判断该动作对自身车辆行驶的影响,最终做出合理的决策。

基于深度学习的自动驾驶决策系统目前已经能解决一些驾驶场景下的决策问题,并表现出了卓越的数据学习能力。但深度学习决策模型的性能受样本情况及算法结构影响较大,如果样本数量不足、质量较低,会导致决策模型对场景了解不足,不能做出有效决策。如果算法过于复杂,会导致决策时间过长,训练复杂,不能满足对决策时间的限制。对深度学习决策模型,一方面要保证样本质量和数量,一方面要采取合适的算法结果,合理确定神经网络层数。

3.3 自动驾驶控制执行中的深度学习

根据接受到的传感器数据,实现无人车辆的自主运动控制是自动驾驶最基本的任务之一。深度学习在此模块中的应用有两种方向,其中之一是利用深度学习进行控制器构建,即根据已有驾驶和环境数据来训练模型,使模型参数更精确,鲁棒性和适应性更强;另一个是基于深度学习的端到端控制系统,利用深度学习进行控制器构建,直接从传感器输入数据中学习,输出车辆方向盘转角等控制量。在自动驾驶的业界领域,除具备车辆底盘部件研发能力的传统车企外,大部分研发企业都只做到规划决策水平,而将执行控制的部分交给供应商。

传统汽车使用底盘控制器(Central Power Control,CPC)来根据驾驶人的动作执行相应的转向与速度指令。传统控制器通过规定控制器模型参数的方式实现汽车运动精确控制。但标准控制器往往只针对一般场景和近似汽车模型实现参数拟合,当面对恶劣环境(如泥泞、雨雪、多石路段等)或汽车运动模块受损(如轮胎损坏、刹车不灵等)时,传统模型无法适应以上变化,而从已有数据中学习可以解决这类问题。

深度学习控制器的一个研究方向是从已有控制器的输入输出数据中学习,从而构建适应性更强的控制器模型。Ostafew 等[87]提出了一种基于学习的非线性预测控制(Nonlinear Model Predictive Control,NMPC)算法。该算法适用于户外越野机器人,利用实际经验来减少路径跟踪错误,而不是预先编程目标地形下的轮–地作用,形成地形拓扑或机器人动力学的精确分析模型。

深度学习还与模型预测控制(Model Predictive Control, MPC)相结合,模型预测控制是一种通过求解优化问题来计算控制行为的控制策略。深度学习与其结合从数据中学习不同驾驶风格,并依据不同风格输出转向和速度命令[88]。Chen等[89]提出了一种输入凸的神经网络(Input Convex Recurrent Neural Network,ICRNN)用于系统建模,并将系统模型嵌入到MPC 框架中,求解其最优控制值。这一类控制策略为了获得车辆运动中的最优约束,使用深度神经网络学习MPC中的车辆非线性动力学以更好地预测控制指令对车辆运动的影响。

深度学习控制器的主要优势在于其能够将深度学习技术与传统控制理论结合起来。这样不仅能发挥传统控制理论的优点,还能利用已有成果进行控制器设计和稳定性分析。但目前将深度学习用于控制领域的研究和应用都较少,原因在于神经网络控制模型需要面临两个问题,一是神经网络的可解释性问题,控制模块作为汽车最底层的执行模块,需要满足对汽车安全性和可解释性的要求;二是模型的泛化能力问题,所训练的模型需要能够应用于不同车辆、不同场景,以降低开发成本。此外,一般来说,深度神经网络的优化求解过程中包含很多局部最优点,所以很容易陷入局部最优解[89]。而很多控制问题的求解对稳定性有极高的要求,如航空航天系统控制、车辆运动控制等,这在一定程度上限制了深度学习在实际控制问题中的应用。

3.4 端到端自动驾驶

基于传统“感知—决策—控制”流程的自动驾驶系统的优势在于技术积累深厚,路线清晰可解释性强。但也存在着许多问题,如硬件要求高,并且分解式系统往往十分庞大,系统复杂度极高。为了解决以上问题,研究人员开始将端到端深度学习用于自动驾驶。端到端自动驾驶系统直接从传感数据映射到转向命令[90],能够大幅降低系统的各项成本。

1989年,卡耐基梅隆大学的Pomerleau 等[91]利用单隐藏层全连接网络,以手中的驾驶样本对其训练得到了第1 个端到端驾驶系统,这也是端到端自动驾驶系统的起源。因神经网络层数及样本数量的限制,该系统所表现出的驾驶效果差强人意。但在之后的数十年中,端到端驾驶系统发展迅速,得益于深度神经网络训练的突破,目前端到端自动驾驶系统所用的神经网络层数大大增加,Nvidia 的端到端自动驾驶系统所使用的深度学习网络层数达到了9 层(归一化层1 个,卷积层5 个,全连接层3 个)[92]。在大数据时代,所能用于训练的数据量也大大增加,Lecun 等[93]使用10 万张图像训练驾驶模型,并使其具有了避障能力,并通过训练使车辆获得了避障能力。LSTM网络具有时序记忆功能,一些研究将其和 CNN的数据处理能力结合,组成混合模型应用于端到端驾驶系统。Eraqi 等[94]提出了一种复合神经网络,用于估计方向盘的角度。该网络包括一个CNN 和一个 LSTM 网络,使用相机作为输入,CNN 用于逐帧处理相机图像。CNN 提取驾驶场景的特征,然后将其传递到LSTM 层的堆栈中。这些功能的时间依赖性可以通过 LSTM 网络了解。最后,转向角预测由输出层执行。

强化学习具有强大的试错学习能力,能够从环境互动和错误中学习最优策略。Sallab 等[95]提出了一个使用深度强化学习的自主驾驶框架。基于TORCS 的仿真测试表明,该系统在能够较好地完成车辆在复杂道路中的转弯决策。表8 总结了目前业界和学术界几种端到端自动驾驶方法及其优劣势。

表8 几种端到端自动驾驶方法及其优劣势Table 8 Several end-to-end autonomous driving plans and their advantages and disadvantages

目前深度学习端到端自动驾驶系统多处于理论及实验阶段,Comma.ai 公司将端到端自动驾驶系统应用于其无人车辆,该类型无人车已经行驶约1.35×106km,累计行驶时间约22000 h[96],但其最终因为安全隐患被美国交通部叫停。

英国自动驾驶企业Wayve 的端到端无人驾驶车辆实现了社区道路自主行驶,并发布了Demo视频。此外,Nvidia 的端到端自动驾驶系统架构如图14 所示,但其车辆并未进行路测。

图14 NVIDIA 端到端自动驾驶学习框架Fig.14 NVIDIA end-to-end learning framework of autonomous driving

相比于传统基于规则的系统,端到端自动驾驶系统的复杂度和算力要求更低,所需传感器成本也更低,但其缺点也有很多,包括:(1)不能利用车辆动力学模型[25],迁移性差,对于不同的车辆与传感器,端到端系统需要进行重新校准;(2)现实世界中对于同一驾驶场景,不同驾驶员 可能做出不同的反应,端到端的学习可能随之也出现不稳定现象,从而变成一个不适定问题;(3)以表8 中TORCS-DRL[95]为代表的强化学习式端到端自动驾驶系统面临虚拟仿真环境到实际道路环境的迁移问题,以FCN-LSTM[94]为代表的监督学习式端到端自动驾驶系统面临数据需求量过大、对低占比样本不能有效学习的问题;(4)目前端到端自动驾驶系统大多基于图像数据进行训练,但在恶劣天气下视觉传感器的可靠性将大打折扣,影响行驶安全。

4 基于深度学习的自动驾驶平台

4.1 北京航空航天大学研发的自动驾驶平台

目前,自动驾驶高效的研发流程是,先在计算机软件上通过仿真测试技术升级算法,确保它在虚拟环境中可以运行成功,再进行硬件在环测试,接着在封闭场地测试,最后再进行道路测试。北京航空航天大学车路协同北京市重点实验室立 足自动驾驶技术虚拟仿真测试及实车验证需求,研发联合TORCS 与Torch7 的仿真测试平台及基于ROS 的实车验证平台。

4.1.1 自动驾驶端到端强化学习仿真训练开发平台

如图15(a)所示,仿真平台底层基于TORCS游戏引擎生成虚拟道路场景,基于Torch7 机器学习库构建基于深度学习框架的端到端自动驾驶模型,TORCS 与Torch7 之间通过ubuntu 的共享内存实现数据互传,游戏引擎将生成的视觉图像信息传给Torch7 中的端到端自动驾驶模型以生成控制指令,之后再通过共享内存回传控制指令,控制虚拟场景中的自动驾驶车辆在道路上行驶。仿真平台对所测试的端到端自动驾驶模型从5 个方面展开定量评价,包括最初性能、收敛步数、

图15 自动驾驶端到端强化学习仿真平台及模型Fig.15 Autonomous driving end-to-end reinforcement learning simulation platform and the model

最优性能、最终性能和总体性能,如图15(b)所示。各指标的具体定义如下。

(1)最初性能:被训练模型在强化学习阶段第一次获得的平均奖励;

(2)收敛步数:被训练模型在强化学习阶段某一训练步数后连续5×106 个训练步获得的平均奖励标准差不超过500 时,此训练步数为收敛步数;

(3)最优性能:被训练模型在强化学习阶段获得的最高平均奖励;

(4)最终性能:被训练模型在强化学习阶段的最终学习效果,为训练结束时获得的平均奖励;

(5)总体性能:模型训练过程中累计的总奖励(即学习曲线下的面积(AUC))。我们使用梯形法则来逼近AUC:

式中,f(xs)是第s训练步数时的奖励;Δxs=是估算步长。

4.1.2 自动驾驶软件开发平台

如图16 所示,实车验证软件平台联合ROS、Apollo、Autoware 与Torch7 搭建而成,其中ROS作为软件平台的底层框架主要支持各个模块之间松耦合通信;基于百度Apollo 研发适配其他车型的CANBus 模块,反馈无人车当前的状态(航向,角度,速度等信息),并且发送控制命令到无人车线控底盘;基于Autoware 深度研发高精度地图与组合定位结合的自适应定位算法,向上层基于Torch7 的端到端自动驾驶模型提供必要信息;基于Torch7 研发学习驱动的自动驾驶模型,在底层各个模块提供的信息基础上,深度神经网络得到最佳车辆驾驶动作并交由CANBus 模块传达线控底盘执行。

图16 自动驾驶软件开发平台Fig.16 Autonomous driving software development platform

在系统的内部功能模块之外,针对自动驾驶系统设计的人机交互问题,本文所提软件平台还开发了如图17 所示的图形操作界面。图形操作界面意在以良好的可视化界面提供车辆实时动态、周围环境动态、程序算法状态等信息,从而更方便用户操作与观察当前系统开发情况。

图17 系统可视化界面Fig.17 Visualization interface of auto-driving software platform

4.1.3 百度Apollo 自动驾驶教学开发平台

本文所提实车验证平台将其软件平台部署于如图18 所示的百度Apollo 开发者套件。在各类驾驶环境下(十字交叉口、丁字路口、雨雪天气) 测试算法的性能,以验证所开发软件系统的智能性与安全性。

图18 百度Apollo 开发者套件Fig.18 Baidu autonomous driving develop kit (Apollo D-kit)

4.1.4 实车线控底盘教学开发平台

百度Apollo 开发者套件能够实现对自动驾驶系统感知、规划等模块的效果检验与即时调试,但是开发者套件的底盘同实车的线控底盘还有较大差别,要想让自动驾驶系统真正落地,还需要在实车拆卸下的线控底盘(如图19)中对CANBus模块进行测试,使其能够适配乘用车的线控系统。

图19 实车线控底盘Fig.19 Vehicle wire control chassis

4.2 Nvidia 自动驾驶平台

2017年9月,Nvidia 发布其端到端自动驾驶平台Nvidia DRIVE,产品涵盖车载计算平台、开源软件堆栈。

4.2.1 车载计算平台

2019年12月,Nvidia 发布了其全新自动驾驶芯片Drive AGX Orin,该类型芯片每秒可运行200 万亿次计算,相较于上一代 Xavier 的性能,提升了7 倍。Orin 可处理在自动驾驶汽车和机器人中同时运行的大量应用和深度神经网络,并且达到了ISO 26262 ASIL-D 等级系统安全标准。自此,Nvidia 形成了其包含NVIDIA DRIVE AGX XAVIER、NVIDIA DRIVE AGX PEGASUS 与NVIDIA DRIVE AGX ORIN 的NVIDIA DRIVE AGX 自动驾驶计算平台系列。NVIDIA DRIVE AGX 系列嵌入式计算平台能够处理来自摄像头、普通雷达和激光雷达传感器的数据,以感知周围环境、在地图上确定汽车的位置,以及规划和执行安全的行车路线。这款AI 平台支持自动驾驶、驾驶室功能和驾驶员监控,以及其他安全功能[97]。Nvdia 各型号计算平台的性能对比如表9 所示。

表9 Nvidia DRIVE AGX 各型号计算平台性能对比Table 9 Performance comparison of Nvidia DRIVE AGX computing platforms

4.2.2 开源软件

Nvidia 自动驾驶开源软件堆栈包括自动驾驶安全操作系统DRIVE OS、自动驾驶软件开发套件DriveWorks SDK、自动驾驶感知、控制、规划应用层 DRIVE AV 与舱内感知应用平台DRIVE IX。

DRIVE OS 操作系统包括处理传感器数据的NvMedia、Nvidia CUDA 库、NVIDIA TensorRT等,可满足汽车最高安全等级ASIL-D。DRIVE OS为应用程序提供了安全的执行环境,例如安全启动、安全服务、防火墙和无线更新。另外,它提供了带有实时操作系统(Real Time Operating System,RTOS)和服务质量管理程序的实时环境。

NVIDIA DRIVE 开源软件堆栈的架构如图20所示。

图20 Nvidia DRIVE 软件堆栈的架构[98]Fig.20 Architecture of Nvidia DRIVE software stack

4.3 百度Apollo 平台

2017年4月,百度发布“Apollo”,为自动驾驶领域的研究人员和业界需求提供一个开放式软件平台[99]。同年7月,百度开放Apollo1.0。截至目前,Apollo 平台已经更新至5.5 版本,平台架构涵盖云端、软件与硬件,具体架构如图21 所示。

图21 百度Apollo 平台架构[100]Fig.21 Structure of Baidu Apollo platform

4.3.1 开源软件平台

如图21 所示,Apollo 的开源软件平台包括自动驾驶的感知、规划与控制部分。感知模块提供基于毫米波雷达/激光雷达点云数据对障碍物的检测,基于相机的红绿灯检测识别,对车辆进行多种传感器融合的高精度定位和基于运动的跟踪。Apollo Cyber RT 是为Apollo 自动驾驶一系列功能模块定制的开源运行框架,Apollo Cyber RT采用高度集成的并行计算模型,能够实现任务执行的高并发、低延迟以及高吞吐量。针对自动驾驶业务场景的定制开发,使其能够满足自动驾驶解决方案的高性能要求[100]。Apollo 规划模块能够根据车辆通过传感器及V2X 通信获得环境信息,结合乘客乘车需求规划路径,进行行为决策。其控制模块能够适配不同路况、不同车速、不同车型和不同的底盘交互协议[100]。RTOS 由 Ubuntu 14.04+ApolloAuto/apollo-kernel 组成。

4.3.2 开源硬件平台

Apollo 开源硬件平台涵盖各类自动驾驶传感器(GPS/IMU、毫米波雷达、激光雷达等)、汽车人机接口设备、传感器单元、扩展单元与车载计算单元等。其中,传感器单元负责收集车载传感器信息,并可通过与工控机通信实现对车辆的控制;扩展单元允许使用者插入其他插件来增强Apollo 的性能;车载计算单元是整车实现功能的核心,具有CAN 总线接口和百兆以太网接口,负责完成对自动驾驶各任务的计算。

5 深度学习应用挑战及发展方向

5.1 自动驾驶领域深度学习应用挑战

近年来,深度学习迅速发展,在图像处理、大数据分析、复杂博弈问题决策等问题中取得了一系列成果。然而,由于车辆行驶环境变化多样,面临的问题复杂且难以量化,自动驾驶领域中深度学习的应用还面临着以下挑战。

5.1.1 系统计算速度与可靠性挑战

汽车在道路上的行驶速度限制了自动驾驶系统从感知到决策的时间,要求自动驾驶系统的感知、决策和执行各个模块能够对所采集的各类信息进行实时处理。但随着自动驾驶软件系统的升级,其计算量已经达到了10~1000TOPS(每秒万亿次操作)级别,这对车载硬件的计算性能提出了很高的要求。而当前的车载硬件不能在性能、体积、噪声与散热问题上同时达到要求。媒体人在体验百度无人车时,曾提到其位于车后部的计算设备的噪音与散热问题。因此,要让自动驾驶汽车的安全性与舒适性都满足要求,还需进一步提升车载硬件的性能。

5.1.2 信息安全挑战

信息安全是指保证计算机信息的完整性、保密性以及可用性等。深度学习系统中的信息安全风险包括:(1)数据传递阶段的入侵,在深度学习系统不同模块间数据的传输过程中添加干扰,造成传递信息的失真;(2)利用“对抗样本”现象,对原始数据添加微小扰动,造成深度学习模型输出的明显转变;(3)侵犯深度学习系统的模型与数据隐私等。在使用中,深度学习系统需要满足保证用于驾驶的模型安全及数据隐私,确保系统运行正常可靠。值得一提的是,将区块链技术应用于车联网系统中以保证信息安全是当前的一个热门研究方向[101]。

5.1.3 传统自动驾驶系统的复杂性挑战

传统的自动驾驶框架包括感知、决策、控制3 个子系统,每个系统内又包括许多不同的功能模块,如目标检测、语义分割、融合定位等,这使得其算法架构庞大臃肿。此外,传统自动驾驶系统的层级架构使其在场景遍历广度上存在瓶颈,难以处理复杂情况。

5.1.4 深度学习技术的可解释性挑战

可解释性是指解决某个问题的过程中获得足够可理解信息的能力[99]。具体到人工智能领域,可解释性指深度模型能够给出每一个预测结果的决策依据[102]。深度学习技术在图像识别、语义分割及自然语言处理等领域获得了广泛应用,并表现出了卓越的性能。然而深度学习技术的卓越表现更多依赖于模型高度的非线性和调参技术,而其模型内部的学习进展及决策历程不可探知[103]。也就是说,模型的输出几乎是不可解释的。为了提高深度学习模型的可解释性,需要探明黑盒结构的运行原理。目前,提出的可解释性算法主要有以下几类[103-104]。

(1)内部可视化方法。

内部可视化方法是对模型内部学习的权重参数、神经网络的神经元或者特征检测器等进行可视化的方法。这类方法能够将模型的运算过程直观地展示出来,但对可解释性的提高较小。Castanon 等[105]采取将网络特征图在输入图像中可视化的方法,观察图像的哪些部分会影响识别结果。

(2)数据扰动测试方法。

基于鲁棒性扰动的方法尝试通过对输入数据添加扰动元素,观察模型输出结果的变化情况,分析扰动部分在模型处理过程中的重要程度。Koh 等[106]提出了影响函数的概念,以影响函数定量地表示样本添加扰动后对结果的影响,从而理解深度学习模型行为。

(3)建立可解释学习模型的方法。

近年来,一些研究人员尝试通过改进深度学习模型的构建方法或通过在其运行过程中迁入辅助解释模型的方式,来提高模型本身的可解释性。Sabour 等[107]在2017年提出一种名为“胶囊”的张量神经元,并使用一组该神经元代替神经网络的一层,“胶囊”所输出向量的长度表征了某个实例(物体,视觉概念或者它们的一部分)出现的概率,其方向表征了物体的某些图形属性。该网络采取协议路由机制,每个胶囊能够编码一个特定语义的概念,从而可以清晰地知道每一个“胶囊”所做的工作,一定意义上增强了模型的可解释性[104]。

5.1.5 深度学习模型的鲁棒性挑战

研究表明,尽管具有卓越的初始性能,深度学习模型却很容易对添加很小的扰动的样本(即对抗样本)产生误判。这大大限制了深度学习模型的应用范围与场景,同时也影响了其安全性。目前的模型鲁棒性分析方法主要分为两大类:精确方法可以获得精确的鲁棒性边界,但其计算复杂度很高,只能用于小规模的神经网络。一个典型算法是基于混合整数非线性规划(Mixed Integer Nonlinear Programming, MINLP)的方法,Cheng等[108]将鲁棒性边界定为可容忍的最大输入或传感器扰动,通过启发式算法与并行化技术大大减少了MINLP 问题的计算量,并使用此算法计算了多个神经网络的鲁棒性边界;近似方法无法获得精确的鲁棒性边界,大多采取计算其下界的方式,近似方法的计算量较小,典型算法有基于区间传播的方法、基于概率的方法和基于控制论的方法等。

目前,提升模型鲁棒性的方法主要有以下几种:改变神经网络结构,如改变网络的深度、构成或损失函数等;添加外部模块,借助具有所需功能的外部模块来提升网络的鲁棒性。但是,在现阶段,实现深度学习模型的完全鲁棒性是很困难的,以上几种方法都不能完全满足要求。

5.1.6 法律适用挑战

目前,在无人驾驶汽车法律规制方面我国的相关法规刚刚起步,无人汽车行驶的法规依据始终不明,存在国内对无人驾驶汽车上路合法化的法规依据问题,在我国法律“人–物”二分原则下无人驾驶汽车的归属认定问题[109],同时这也是对现行汽车保险制度的挑战[110]。事实上,自动驾驶汽车定责的法律问题相当复杂,不仅涉及到设计、制造、用户等之间的多重法律关系,还需要理清包括合同责任、侵权责任、产品责任等在内的一系列问题[111]。

5.2 深度学习应用未来发展方向

深度学习的自动驾驶领域应用面临着许多挑战,但它也给车辆的智能化、网联化进程带来了巨大的机遇。Google 研发的无人汽车在汽车的感知、决策、控制系统中都广泛应用了深度学习算法。自动驾驶的快速发展不仅能实现巨大的经济与社会效益,释放人力,避免人为事故,大大缓解交通拥堵,还将深刻改变汽车行业的布局,并推动其他领域人工智能的应用,如智慧城市、广泛物联网等。在未来,深度学习技术在自动驾驶领域的应用方面将具有如下发展趋势。

5.2.1 无监督/半监督学习

目前应用的深度学习模型大多采用监督学习方式进行训练,监督学习的方法需要对数据做出标签,为算法规定出一组“标准答案”,这不仅会大大增加人工成本,也严重依赖人为因素。而自动驾驶车辆所处的行车环境复杂多样,此外,受限于“长尾效应”,训练符合要求的自动驾驶系统所需的带标签数据量是巨大的。与此同时,在现代社会,大数据时代的到来使寻找大量数据变得越来越容易,因此标签依赖性低的无监督/半监督学习将是深度学习技术未来的发展趋势之一。

5.2.2 深度学习模型的并行化计算

深度学习可以提取材料中的抽象特征,完成之前只能人工完成的任务,如语音识别、图像识别和检测等。传统避免过拟合的方法不能充分发挥硬件性能,这导致随着模型复杂度的提高训练时间会迅速增长。因此通过并行化计算加快深度神经网络模型的训练将是未来的发展方向,包括数据并行与模型并行。数据并行是指对训练数据做切割,使用多个模型同时使用所切分开的各个数据分块进行训练,数据并行需要参数交换器进行参数交换;而模型并行是指对训练模型进行切分,同时进行训练,当模型分块间出现数据交换时,产生通信开销。由于通信开销的存在,多数情况下,模型并行带来的速度收益低于数据并行。目前,多数选择是同时通过数据并行和模型并行加快训练。Google 的Distbelief 系统、百度的Paddle平台、腾讯的Mariana 平台等都是这一探索的典型代表。不过,数据并行和模型并行都有并行数量的限制,如果并行数量太多,同步消耗和通信开销将急剧增加,使并行收益下降。

5.2.3 全自动神经网络

深度学习依靠深层神经网络自主拟合输入与输出间的映射关系,神经网络中各层的参数通过对训练集的学习获得。但神经网络的超参数依然需要人工调试,如神经网络的层数、每层神经元个数、学习率高低等。这些参数的选择对最终学习效果影响很大,然而这部分工作没有放之四海而皆准的规则,大多数时候依赖研究者的经验来完成。未来的深度神经网络应当也能够学习网络本身的超参数,如DeepMind 提出的Learning to Learn 算法[112],神经网络能够同时学习,从而能更快收敛到理想精度。

5.2.4 量子计算与深度学习

量子计算是一种遵循量子力学规律调控量子信息单元进行计算的新型计算模式。量子计算机与传统计算机在所解决问题上并无不同,但量子力学叠加性的存在使其得计算效率大大提升,2020年12月,中国科学技术大学的研究人员使用量子计算机在200 s 内求解出了传统超级计算机需要耗费数十亿年才能完成的“高斯玻色取样”问题的计算。量子计算与深度学习的结合方式包括:(1)利用量子计算强大的计算能力将深度学习中受限于计算能力的问题变为可能;(2)将量子理论的并行性于深度学习算法结合,建立一类量子深度学习模型,提高学习效率与准确度。不过,对量子计算的研究目前距离通用化实用化还有很大距离,在通用量子计算机研究成功之前,量子计算与深度学习的结合都将处于早期探索阶段。

5.2.5 5G 车云协同与车路协同

2018年10月23日,湖南湘江新区智能系统测试区进行了基于5G 的车路协同及车车协同的V2X 应用测试,测试内容包括前向碰撞预警、逆向超车预警、紧急制动预警、变更车道盲区预警和紧急车辆提醒等多项场景。在自动驾驶等高级应用场景下,车联网要求网络时延在10 ms 以下且可靠性达到99.999%,4G 网络因其技术限制,无法满足以上要求。而5G 网络快速且稳定的数据通信能力能够极大增强智能车辆与交通系统的数据交流能力,5G 网络能够为车辆提供毫秒级时延,最高10 GB/s 的传输速率,99.999%的可靠性,以及106/km2的超多连接数[113]和容忍500 km/h的移动,从而有效实现车路协同,扩大车辆的探测感知范围,有效弥补车辆传感器的不足,同时降低因传感器故障导致事故的概率,保障行驶的安全性。

自动驾驶与深度学习技术都处于快速发展成熟阶段,汽车驾驶是一个涉及人工智能、图像识别、机器视觉与模糊决策的综合应用场景,其发展方向必将受到以上多领域技术发展的深刻影响。但总的方向是解决深度学习算法在不同车型、不同驾驶风格、多样行驶问题下的多场景适配问题、硬件要求问题与算法稳定性、可解释性问题,实现汽车自动驾驶系统的安全性、稳定性、即时性与智能化。

6 结束语

得益于深度学习的助力,过去几年中自动驾驶技术快速发展,进一步向实用化迈进。深度学习方法的应用不仅体现在传统自动驾驶感知—规划—执行方案的完善,还催生了能够直接从传感器数据映射到驾驶操作的端到端自动驾驶系统。但汽车自动驾驶系统是一个需要兼顾效率、成本与安全的复杂系统,深度神经网络的应用还面临着许多挑战,包括可解释性、信息安全问题、训练数据集构建等。深度学习在自动驾驶中的应用具有广阔的发展空间,但其技术走向成熟,实现大规模应用尚需时日。目前,不论是深度学习算法,还是自动驾驶技术都处于快速发展阶段,需要持续不断深入研究与应用验证。但毋庸置疑的是,在当今社会智能化网联化的趋势以及5 G 网络普及化的背景下,自动驾驶汽车具有巨大的发展潜力与光明的前景。本文对深度学习技术在自动驾驶感知、规划、控制模块与端到端驾驶系统中的应用进行了介绍,为基于深度学习的自动驾驶系统的进一步研究提供了参考。

猜你喜欢

神经网络决策自动
为可持续决策提供依据
自动捕盗机
神经网络抑制无线通信干扰探究
决策为什么失误了
基于神经网络的中小学生情感分析
让小鸭子自动转身
自动摇摆的“跷跷板”
关于自动驾驶
基于神经网络的拉矫机控制模型建立
基于支持向量机回归和RBF神经网络的PID整定