2024年的端到端自动驾驶综述
这是一篇比较新的2024年端到端自动驾驶的综述文章。目前在arXiv上可以阅读到。
https://arxiv.org/abs/2306.16927v3arxiv.org/abs/2306.16927v3
阅读之后写下这篇文章记录我的一些学习心得。本文将遵循整篇论文的框架进行写作,但是我不太愿意翻译占据大量的篇幅,因为我觉得这很枯燥而且没有重点。更重要的一点,作者英语水平一般,我来翻译还不如gpt来翻译。所以总结+思考+知识拓展才是我觉得笔记该有的样子。
再说一点,在深度学习领域,我也算初学者,所以有些概念我比较模糊的地方,会啰嗦两句进行补充。
0 Abstract
自动驾驶中越来越多的算法在拥抱端到端(End-to-End)算法。因为相较于传统的分立模块设计的方式,端到端的方式能够充分利用传感器的数据来进行自动驾驶任务。端到端算法崛起的原因是什么?在有挑战性场景下对自动驾驶算法的需求以及出现了能够获取的大规模数据集等等。
在这篇论文中,论文的作者总结了超过270篇论文,涵盖了:动机(Motivation),发展路线(Roadmap),方法论(methodology),挑战(challenges),未来趋势(future trends)。
文章中讨论了几个重要的挑战:多模态(multi-modality), 可解释性(interpretability), causal confusion(不知道怎么翻译,但是后面会解释), 鲁棒性(robustness), and 世界模型(world models)。
除此之外,这篇文章还讨论了基础模块和视觉预训练上的一些进展。以及如何应用这些技术到端到端的自动驾驶框架中。
1 Introduction
什么是端到端的框架?端到端的框架相较于传统框架区别是什么?
端到端的框架中,输入:原始传感器器数据,输出:**规划结果,或者更底层的控制。**设计多个模块的拼接组合,通过构造最终任务的残差函数对所有的模块进行梯度下降优化。
传统的框架采用分立模块设计的形式,如上图所示,包含感知、预测、规划等模块,每个模块分工明确。这种方式基于规则设计,但是你懂的,靠人类很难穷尽路上会发生的情况,因此就不能设计出适应于所有路况下的规则。
所以利用大规模数据,使用深度学习的方法可能让自动驾驶的规划变得可能。
1.1 Motivation of an End-to-end System
动机是什么?肯定是传统方法的短板,刚好是端到端方式的长处。那么传统方法的优缺点是什么?
**优点:**传统的方式采用分立模块,每个模块负责一个功能。可解释性强、方便调试。
缺点:
-
每个模块的优化目标不统一,比如检测模块关注mAP,像我们定位模块关注rmse、apt,规划模块关注驾驶的舒适度和安全,等等等,整个系统都没有以一个目标进行优化(这应该是特点,不是缺点)。
-
每一个模块的误差会向后传递,误差会累计并且在信息传递的过程可能会导致信息丢失(例如,感知模块输出一个bbx,但是没有给后面的模块传递纹理信息,大概就这么一回事)。
-
计算负载大,因为模块间的数据交换要通过信息交换系统来处理(比如ros中的订阅发布)。
我个人觉得传统方法最大的缺点就是前面提到的,规则难以覆盖(cover all case)。这是表征问题,文章中说的这些可能是更深层的问题。
那么既然如此,端到端的方式又有什么优点呢?
-
最显而易见的,简单。可以把感知、预测、规划组合成一个模块,整个模块能够一起训练。
-
所有的模块都是以最终的目标为优化目标。
-
共享的主干网络会提升计算效率。
-
数据驱动的优化方式,很可能只需要扩大数据集就能获得提升。
最后,文章说端到端的方案不能被粗暴的定义为一个黑盒,只输出规控信息。它具有中间的一些表达(representations)(比如图b中的,中间模块会输出一些特征,预测?地图?,也可能是人类看不懂的高维表达)。实际上,SOTA的系统都是一个模型的设计,然后把所有的组件一起优化以达到巨好的表现。这里是原文引用的两篇SOTA论文
[1] S. Casas, A. Sadat, and R. Urtasun, “Mp3: A unified model to map, perceive, predict and plan,” in CVPR, 2021.
[2] Y. Hu, J. Yang, L. Chen, K. Li, C. Sima, X. Zhu, S. Chai, S. Du, T. Lin,W.Wang, L. Lu, X. Jia, Q. Liu, J. Dai, Y. Qiao, and H. Li, “Planning-oriented autonomous driving,” in CVPR, 2023.
1.2 RoadMap
端到端网络的发展历程,红色的CARLA表示的是benchmark,从左到右随着时间的推进,得分在2016年以后增长飞快。蓝色的字体表示的是那个时间段的代表性技术,灰色的表示代表作。
这个部分就不多说了。原文中对于过去的一些技术做了简单总结,我们重点关注21年及后面的事即可。发生了什么事呢?21年是转折点,各种各样的传感器涌现,开始步入多模态时代。并且随着对transformer的开发,导致了后面什么都要transformer一下,也迈入了注意力机制时代。
1.3 Comparison to Related Surveys
和其他综述文章的对比:一个字,全。
这一章,没什么可讲的,但是这一章文章中引用了很多的综述文章。有兴趣有时间可以查看一下。但是综述嘛,看个一两篇,我觉得可以了。
1.4 Contributions
更细节一点的abstract,不多讲了。
赶紧马不停蹄的进入最喜欢的方法论环节吧。
2 METHODS
本文中,分了两个基本方向:1.模仿学习(imitation learning,IL),2.强化学习(reinforcement learning,RL).
其中,模仿学习分为行为克隆(behavior cloning)和逆优化控制(inverse optimal control)。逆优化控制也称逆强化学习,听到这儿,你肯定头大了吧。
什么是逆强化学习?逆强化学习和强化学习有啥不同???
好了,如果你不知道,那你真是有福了。我网上冲浪的时候,找到了一篇中文论文,没错是中文论文。这种基础知识看看中文论文,我认为相当的高效。进去之后,看你需要的基础知识就可以了,剩余的可以有时间在研究。当然,在后续的章节,我也会进一步补充相关的知识。
逆强化学习:张立华,刘全,黄志刚,朱斐.逆向强化学习研究综述.软件学报,2023,34(10):4772-4803 DOI:10.13328/j.cnki.jos.006671
2.1模仿学习(IL)
模仿学习就如同字面意思一样,模仿人类的行为。如何模仿呢?首先要先收集数据,读研那会儿好像称这个为专家知识库。就是收集一个经验丰富的老司机,他开车的一些行为。数据集中包含着若干对“state-action”,即在当前车辆的状态下,驾驶员采取的行为措施。训练的最终目的就是让神经网络能够拟合专家策略 �� 。
神经网络的输出可以分为两类:
第一类 、让神经网络直接输出汽车的底层控制信息,因为这样数据采集比较简单。但是呢,这个方法问题在于:第一个,连续的场景下,神经网络输出的控制信号是不连续的(举个极端例子,这一帧加速,下一帧刹车)。第二个,控制信号的输出和车辆也是有关系的,训练后的神经网络可能会只适用于同种的车。
第二类、输出路径点**(waypoints),**这样把控制部分交给控制器来做。所以缺点在于,这种方案需要额外的控制器,控制器的设计也同等重要。
这篇文章不以神经网络输出的类型再进行分类,因为文章作者认为,这两者没有明显的性能上的差异,所以不针对这方面做讨论,想更深入了解,文章作者为了一篇参考文章:
[22] P. Wu, X. Jia, L. Chen, J. Yan, H. Li, and Y. Qiao, “Trajectory-guided control prediction for end-to-end autonomous driving: A simple yet strong baseline,” in NeurIPS, 2022.
2.1.1 Behavior Cloning(BC)
行为克隆,就是监督学习,把数据集中的"state-action"对喂给神经网络进行训练。早期的一些应用中会输入相机图像,产生控制输出。更进一步的发展,多模态输入、辅助任务、改进专家库的采集数据设计等等使得BC能够更好的解决复杂场景下的需求。
BC的优点就是简单高效,不像强化学习一样,需要设置奖励函数。
说了这么多BC有哪些缺点呢?
因为训练数据都是独立同分布的,所以会导致covariate shift(这是什么?),另一个是causal confusion(这又是啥?)。
简单的理一理,因为后面会细致说这两个东西
**covariate shift:**训练数据与测试数据的分布不同,测试数据的分布出现了变化。举个简单的例子,把图像旋转180°,神经网络就识别不了了。(目前我的理解是这样)
**causal confusion:**出现了因果关系混乱,举个例子:车子遇到红灯,踩刹车,速度变低。逻辑关系是:因为遇到红灯,所以踩刹车,导致速度变低。由于等红灯会等很久,如果这段数据被拿去训练很可能变成,因为车速低,所以我要踩刹车 。归根结底,是因为车子的行为依赖于过去的数据,而BC认为数据是独立同分布的。
关于这些挑战的更进一步讨论会放在第四章。拭目以待吧。
2.1.1 Inverse Optimal Control
这个就有意思了,博主若干年前搞过半年的强化学习,但也是第一次听到这个概念。我们上面讲过,逆最优控制就是逆向强化学习。
什么是强化学习我们就不讲了,大家可以网上冲浪,或者去参考上面的那篇中文论文。
在强化学习中,我们有基于策略的方法,也有基于价值方法。不管是哪个方法,我们要给定评分/奖励标准。但在逆强化学习中,我们即不从策略出发,也不从价值出发,而是关注评价函数。对,关注打分。强化学习中的打分员必不可少,但是逆强化学习中,我们要去学习如何打分,然后再采用强化学习的方式去学习。
所以你大概可以明白了吧,没那么多圈圈绕绕。第一步,学习打分(奖励函数),第二步,使用RL的方式训练策略网络。
采用生成对抗网络(GAN)的方式来了。先用生成器生成行为动作,再用判别器进行打分。即当裁判也当运动员。使用GAN,能够策略、评价一起学习。生成器根据state生成action,判别器以生成器的输出并以专家库的结果作为真值进行判别训练。
损失学习的方式也面临一些挑战。为了生成更真实的(打分/奖励/损失),通常会结合高清地图、辅助感知任务和多个传感器,这增加了多模态多任务框架学习和构建数据集的难度。但是逆强化学习能增强安全性,并且决策可以解释。所以这种方法很可能是端到端网络在真实世界应用的可行方法。
2.2 Reinforcement Learning
RL,自然不用多说, 最成功的领域就是打游戏。另外RL能做的IOC/IRL做的都比RL好。RL需要与真实世界交互,并且RL输出的动作会存在风险。因此目前大多数的研究都是在模拟器上进行,在模拟器上训练的结果如何迁移到真实世界,是个要考虑的问题。
RL在端到端的自动驾驶种也有成功的应用,比如先使用监督学习训练一个encoder,比如说训练一个语义分割网络。然后将encoder冻结,再加上一个策略头(policy head)然后通过Q-Learning学习。RL也可以用来为IL训练出的网络进行微调。
标签:学习,训练,综述,输出,驾驶,2024,模块,RL,强化 From: https://blog.csdn.net/NEON7788/article/details/142179676