“百面深度学习”系列连载 第十五期

自动驾驶

引言

现今无人驾驶技术和产业的蓬勃发展主要归功于美国国际高级研究计划局(Defense Advanced Research Projects Agency, DARPA)举办的无人驾驶挑战赛。这项比赛的初衷源于美国国会在2001年设定的目标,即到2015年实现美国地面部队的1/3车辆具备无人驾驶的能力。为了激励这项技术的发展,DAPRA于2004年举办第一届无人驾驶挑战赛。比赛地点位于美国西部的戈壁莫哈维沙漠,要求车辆在非人为控制下完成240公里的路程,奖金高达100万美元。遗憾的是在这场比赛中,所有参赛车队没有一支队伍完成这项任务,第一名仅完成了11.78公里的自动驾驶路程。在第二年的比赛中,各个车队都取得了飞跃性的进展,共有5支队伍完成了比赛。第一名来自于Google无人驾驶的开山鼻祖--Sebastian Thrun所带领的斯坦福车队。这两次比赛的场景还是崎岖空旷的山区道路。直到2007年,比赛首次引进了城市道路大赛,要求车辆可以自动识别、理解城市路况。这场比赛可以说是无人驾驶领域的分水岭事件。Google的无人驾驶项目也诞生于这场比赛。国际通用的自动驾驶等级划分有两套标准,第一套是由美国国家高速路安全管理局(National Highway Traffic Safety Administration, NHSTA)制定的 [1],第二套则是由国际汽车工程师协会(SAE International)制定的 [2]。如 Fig. 1 [2] 所示。

百面深度学习 | 第十五期:自动驾驶

Figure 1: 自动驾驶等级分类 [2]

问题1

如何基于深度神经网络

设计一个端到端的自动驾驶模型?

分析与解答

本题属于开放性设计题,回答者需要了解自动驾驶模型的基本功能和研发中涉及到的主要问题,并结合深度学习领域的相关知识给出设计方案。

自动驾驶模型是自动驾驶系统的重要组成部分,其在功能上试图模仿人类司机,通过给定当前的车辆状态和周围环境信息,输出为对车辆控制信号。传统的驾驶模型设计方法人为地将自动驾驶任务分解成车道识别、场景抽象、路径规划和控制决策等多个子任务,然后再根据各个子任务的输出,通过人工定义的规则来控制汽车的前进;而通过建立从输入信号到输出信号的端到端模型,可以

  • 无需引入大量的人工规则来控制汽车的行驶;

  • 使整个自动驾驶系统的结构更加简单、高效;

  • 使模型自主地学到人没有指定的子任务。

而对于端到端驾驶模型的具体设计,这里介绍业界较有影响力的工作——Nivdia于2016年提出的PilotNet模型以供参考。

PilotNet模型是一个端到端的深度神经网络,可以在自动驾驶系统中控制车辆前进的方向。模型根据安装在汽车挡风玻璃前的三个摄像头采集到的原始图片,通过深度神经网络学习出汽车前进所需要转动的角度。其整体架构如 Fig. 2 所示 [3]。

百面深度学习 | 第十五期:自动驾驶

Figure 2: Nivdia端到端的自动驾驶系统

PilotNet是一个9层神经网络,由1个归一化层(Normalization Layer)、5个卷积层(Convolutional Layer)和3个全连接层(Fully Connected Layer)组成,如 fig. 3 [4] 所示。模型的输入为映射到YUV平面的原始输入图像,输出为车辆前进需要偏转的方向。网络的前三个卷积层采用5*5的卷积核,后两个卷积层采用3*3的卷积核。训练数据包含在不同类型道路上(高速公路、住宅区的街道、乡间小路等)、不同光线强度、不同天气条件下的真实的汽车行驶过程中收集到的视频采样图片。

百面深度学习 | 第十五期:自动驾驶

Figure 3: PilotNet网络结构图

PilotNet在模拟仿真和实际路测均取得较好的实验结果。实验中定义车辆自动化程度为评测指标,即:

百面深度学习 | 第十五期:自动驾驶

模拟系统中车辆偏离道路中心线超过一米时会发生一次人工干预,并假设人工干预平均需要消耗的时间约为6s/次。PilotNet模型在仿真系统上的评测结果为90%,路测指标可以达到98%。

问题2

如何设计一个基于增强学习的自动驾驶决策系统?

简述算法设计思路

分析与解答

传统的自动驾驶决策系统多数采用人工定义的规则,但是人工定义的规则不够全面,容易漏掉一些边界情况,因而会考虑采用增强学习的原理设计一个自动驾驶的决策系统,使自动驾驶的决策系统能从数据中自动学习并优化自身的决策过程。

对于这一问题的解答可以参考Mobileye提出的基于增强学习的多智能体决策系统 [5] 。自动驾驶的决策系统不同于传统的机器人决策系统:首先,其属于多智能体的场景,其他智能体的行为难以预测,并会对主智能体的行为造成影响;其次,在决策中需要确保策略的安全性,安全地处理意料之外的场景,防止交通事故的发生。

百面深度学习 | 第十五期:自动驾驶

百面深度学习 | 第十五期:自动驾驶

百面深度学习 | 第十五期:自动驾驶

百面深度学习 | 第十五期:自动驾驶

百面深度学习 | 第十五期:自动驾驶

所以,

百面深度学习 | 第十五期:自动驾驶

百面深度学习 | 第十五期:自动驾驶

百面深度学习 | 第十五期:自动驾驶

百面深度学习 | 第十五期:自动驾驶

百面深度学习 | 第十五期:自动驾驶

Figure 4: 双向变道决策过程的DAG

扩展与总结

自动驾驶系统极其复杂,本章所涉及的内容仅仅涵盖了其中一部分研发问题与进展。深度学习在自动驾驶领域的应用在图像识别、场景分割等计算机视觉相关领域中较为广泛与深入,而在控制、决策方面的应用还处在初步的尝试阶段。通过本章的介绍,希望大家能够初步了解深度学习在自动驾驶系统中的应用现状与主流应用方式,而更深入的学习了解则请阅读相关参考文献。

[1] ADMINISTRATION N H T S. Preliminary statement of policy concerning automated vehicles[C]//2013.

[2] SMITH B W. SAE levels of driving automation[C]//2013.

[3] BOJARSKI M, TESTA D D, DWORAKOWSKI D, 等. End to end learning for self-driving cars[C]//https://arxiv.org/abs/1604.07316. 2016.

[4] BOJARSKI M, YERES P, CHOROMANSKA A, 等. Explaining how a deep neural network trained with end-to-end learning steers a car[C]//https://arxiv.org/abs/1704.07911. 2017.

[5] SHALEV-SHWARTZ S, SHAMMAH S, SHASHUA A. Safe, multi-agent, reinforcement learning for autonomous driving[C]//https://arxiv.org/abs/1610.03295. 2016.

下期预告

深度网络压缩

引言

近几年,深度网络在各个研究领域中发挥了重要的作用,如视觉领域中的图像分类、视频分析;文字领域中的文本翻译、语音识别等。然而,大部分的深度网络结构都有着大量参数,例如,经典的 VGG16 网络结构,它有着 60M 个参数,使用较为广泛的 Resnet50 网络,也有着 25M 的参数。这使得深度网络面临着存储和计算消耗的瓶颈,使其无法在移动及嵌入式设备(如手机、芯片等) 中使用。

深度网络中有着大量的参数冗余,这种现象被称之为深度网络的过参数化。过参数化是深度网络公认的特性。因此,这使得网络压缩,让网络更为紧凑变得十分重要。如何压缩网络才能够在减少模型存储空间、降低运算时间和内存消耗的同时,尽可能保持网络在各个任务中的性能呢?使用不同的方法、从不同角度进行网络压缩成为了研究领域近几年来的热点话题。

问题

针对神经网络,可以从哪些方面进行加速及压缩?

由于时差关系,丁老师晚饭时一直萎靡不振,眼皮打架。然后,顺嘴问了一句Doubly Robust Estimator的问题,丁老师瞬间话匣子打开,接下来的一个小时,丁老师精神抖擞!

丁老师二三事

说明:“丁老师二三事”是取材于Hulu日常的虚构创作,如有雷同,您别当真~

关注Hulu公众号

你就是最爱学习的仔~

百面深度学习 | 第十五期:自动驾驶

相关文章:

  • 2021-05-31
  • 2021-10-17
  • 2021-04-24
  • 2021-05-04
  • 2021-11-28
  • 2021-11-01
  • 2021-10-06
猜你喜欢
  • 2021-11-24
  • 2021-10-10
  • 2021-11-17
  • 2021-09-30
  • 2021-12-25
  • 2021-10-17
  • 2021-11-04
相关资源
相似解决方案