本文经自动驾驶之心公众号授权转载,转载请联系出处。
论文信息
- 论文题目:Continuously Learning, Adapting, and, Improving: A Dual-Process Approach to Autonomous Driving
- 论文发表单位:浙江大学,上海人工智能实验室,华东师范大学
- 论文地址:https://arxiv.org/abs/2405.15324
- 代码地址:https://github.com/PJLab-ADG/LeapAD
研究动机
最近的数据驱动方法在自动驾驶领域取得了巨大的成功, 然而,这些方法在很大程度上依赖于训练数据分布,它们主要是对观察到的模式进行归纳,而没有推论的能力。自动驾驶算法虽然能学会一些模式,但在遇到复杂情况时,它可能会做出错误的判断,因为它没有理解底层的语义信息和事物之间的关系。这就好比是,让一个只见过斑点狗的人来描述所有狗的外貌,可能会有些不准确。因此,迫切需要一种能够对未见过的场景进行推理并以人类认知方式利用驾驶知识的系统。
我们人类学习开车的过程其实是个不断尝试和学习的过程。人类司机会根据周围的情况作出决定,然后根据反馈来调整驾驶行为。这是因为人类的大脑有两套系统在协同工作:1) 一个是快速、基于经验的,就好像是直觉——启发式过程(系统-I);2) 另一个是缓慢、理性的,更像是逻辑推理——分析过程(系统-II)。这两种思维方式在我们学习开车的过程中都发挥了作用。
刚开始学开车的时候,我们很依赖常识和直觉。通过不断的练习和试错,我们逐渐培养出开车的技能,并且开始更理性地思考我们的行为。随着时间的推移,这些技能变成了习惯,就像是肌肉记忆一样,让我们在熟悉的路况下可以快速、本能地做出反应。即使我们拿到驾照后,我们还会通过日常的驾驶和意外事故来不断学习,不断提高我们的驾驶技能。
基于双过程理论的自动驾驶系统
基于上述动机,我们开发了一个具有不断学习、适应和改进能力的双过程闭环自动驾驶系统——LeapAD。与人类的注意力机制类似,LeapAD中的场景理解模块主要关注可能影响驾驶决策的关键物体,简化环境描述和决策过程。基于场景理解模块提供的环境描述,我们设计了一个模拟人类认知过程的双过程决策模块,包括启发式过程和分析过程。通过闭环实验,分析过程积累经验并构建包含高质量驾驶决策的可转移记忆库。这些知识可以适应各种场景并能够迁移到启发式过程中,用于后续的闭环决策。当交通事故发生时,分析过程介入并分析历史事件并更新记忆库,使系统能够通过自我反思不断改进。
LeapAD框架介绍
如下图所示,LeapAD由3部分组成:(1)用于场景理解的VLM;(2)由分析过程和启发式过程组成的双进程决策模块 ;(3)以及用于低级控制的操作执行器。
场景理解模块:、我们人类在开车时会特别关注周围的重要事物,这样可以避免我们的大脑负担过重,提高我们的反应速度,减少出错的可能性。这种方法有助于我们更专注地驾驶,减少发生事故的可能。
在LeapAD中,场景理解模块的设计灵感来源于人类驾驶中的注意力管理,它聚焦于关键对象,以减少决策过程中的信息过载。通过这种方法,系统能够快速识别并理解车辆、自行车、交通信号、停车标志等重要元素,这些元素的详细描述有助于驾驶者做出准确和及时的反应。
基础视觉语言模型(VLM)在通用领域表现良好,但在驾驶特定领域的知识上有所欠缺。因此,我们采取了有监督微调(SFT)策略,利用11K个经过标注的数据样本,对VLM进行训练。这个过程让模型能够输出与驾驶决策直接相关的语言描述,包括:
- 语义属性:模型能识别并描述交通参与者(如车辆和自行车)和交通设施(如信号灯和标志)的类别。
- 空间属性:提供物体的位置信息,如边界框、车道位置以及与车辆的距离,这对于避免碰撞至关重要。
- 运动属性:物体的运动方向,帮助驾驶者预测其可能的动向。
- 行为推理:模型能理解这些物体对驾驶的影响,比如预测它们的行驶意图,从而支持驾驶者做出相应的决策。
通过这种方式,LeapAD的场景理解模块不仅提升了对驾驶环境的理解,还提高了驾驶者的决策效率和安全性,确保在复杂驾驶场景中保持灵活和警觉。
分析过程:LeapAD的大脑,它像我们人类的理性思维一样,用逻辑推理来处理复杂情况,做出安全的驾驶决策。大语言模型(LLM) 通过在各种数据集上进行广泛的预训练,已经囊括了大量的世界知识,具有很好的推理理解和处理复杂问题的能力。这种能力恰好符合我们对驾驶场景中分析过程的需求,因为决策必须基于深入的环境分析和情境理解。分析过程利用 LLM 的强大功能,利用其蕴含的世界知识来理解场景描述并执行高质量的驾驶分析和决策。
分析过程通过闭环实验积累了很多经验,就像我们的记忆一样。这些经验可以帮助LeapAD在未来类似情况下更快速地做出反应。我们还引入了反思机制,就像是用分析过程来反思交通事故。就像下面的图表所示的那样,当系统的启发式部分在进行闭环驾驶时,任何意外事件都会触发反思机制。在这个过程中,分析过程会仔细分析事故发生前的情况,找出错误,并提供正确的决策。从这个反思过程中得到的见解会被整合到记忆库中,这样LeapAD就能不断地从失败中学习,并在未来的驾驶中做出更加明智、更准确的决策。
启发式过程:就好比是LeapAD的直觉,它虽然不像分析过程那样能提供非常精确的推理和决策,但它的处理速度非常快,就像我们人类驾驶员的肌肉记忆一样。通过不断的练习和经验,它能够迅速适应各种情况,而且在处理速度上比分析过程快了很多(在我们的实验中大约快 5 倍)。为了让启发式过程更好地应用这些经验,我们使用了有监督微调(SFT),就像是把知识内化到直觉中,让它更好地适应各种情况。此外,它通过一种few-shot策略来增强对未曾见过的场景的处理能力,从而做出更加稳健的决策。
在few-shot策略中,启发式过程主要依靠当前场景描述与记忆库中存储的描述之间的特征相似性来检索相似的驾驶场景。然而,由于场景描述中存在冗余的语言信息,直接根据原始描述计算文本相似度使场景之间的区分变得困难。因此,我们聚焦于关键元素,如对象类别、车道位置以及与车辆的距离,来简化相似场景的查找过程。这样,我们优先考虑对驾驶决策影响重大的元素,提高了相似度计算的效率和决策的稳健性。这种方法有效地减少了冗余信息的影响,使得直觉在处理新场景时更加精准和有效。
实验结果
我们在 CARLA仿真中进行闭环实验,以评估LeapAD的性能。为了验证有效性,我们在Town05基准上进行了闭环驾驶场景的综合评估。我们的评估指标包括驾驶分数 (DS)、路线完成度 (RC) 和违规分数 (IS)。RC表示代理成功导航的路线的比例,IS表示因事故而受到的处罚。通过将 RC 乘以 IS,我们获得了最终的度量 DS,用于评估我们的方法在路线上的驾驶性能。
如表1所示,LeapAD优于所有其他仅依赖相机传感器输入的方法此外,我们的方法超越了TransFuser,后者还利用了 LiDAR 传感器输入。
此外,我们还进行了一系列的消融实验来验证LeapAD的持续学习能力。我们发现,当shot个数从0个增加到3个,系统的闭环表现逐步提升。证明了记忆库中经验的价值和few-shot这种形式对反思过程的有效性。并且我们的实验还表明随着记忆库大小的增加,性能会逐渐提高。这进一步证明了我们提出的LeapAD的持续学习能力,表明我们的模型的性能可以随着经验的积累而提高。另外我们还从反思过程和记忆库的迁移性两方面的消融实验进一步证明LeapAD的可持续学习能力。我们选择了一些得分较低的路线进行多轮反思实验,反思后的经验被添加到记忆库中。通过图 5我们可以看到反思5次后,DS可以从29.34提升到88.89,这证明了反思机制能够显著提高LeapAD的性能。
Demo 示例
下面是几个简单的闭环实验示例:
这段视频主要展现了我们的模型对于车祸这种corner case的反应。即使训练数据中很少有这样的场景,面对突发情况LeapAD也可以及时制动。
这段视频主要反映了车应对复杂十字路口的情况,可以看到LeapAD可以轻松跟随红绿灯的指示。
这段视频反映了车辆面对一些停车标识和突然出现的行人的反应。车辆在经过并看到停止信号时停止,启动后,面对横穿的行人能够及时制动。
总结
LeapAD是一套先进的自动驾驶系统,它具备持续学习、灵活适应和不断优化的能力,仿佛赋予了车辆一颗智慧之心。与人类注意力的运作机制相类似,该系统能够精准捕捉对驾驶决策至关重要的信息,从而有效简化驾驶环境,降低决策过程中的复杂性。LeapAD拥有两种截然不同的决策模式。一种模式依赖于快速且基于经验的决策机制,仿佛人类的直觉一般迅捷而准确;而另一种模式则通过深入细致的分析推理来做出决策,就如同人类深思熟虑的过程。这两种模式共同协作,使LeapAD能够在各种驾驶场景中展现出卓越的性能。不仅如此,LeapAD还具备强大的自我完善能力,能够不断学习和进步。它能够与现有的智能汽车系统完美地无缝融合,在车辆运行过程中,LeapAD能够同时进行双过程决策,即在边缘运行中进行启发式决策,同时又能借助云端处理更为复杂的驾驶场景。这种独特的能力使得LeapAD在自动驾驶领域脱颖而出,为未来的智能交通发展奠定了坚实的基础,为人们提供更为安全、舒适的驾乘体验。