驶向『闭环』| LMDrive:首篇基于LLM的闭环端到端自动驾驶

人工智能 智能汽车
本文介绍了LMDrive,这是一个语言引导的端到端闭环自动驾驶框架。LMDrive结合了自然语言指令和多模式传感器数据,实现了复杂驾驶场景中的人机交互和导航。

本文经自动驾驶之心公众号授权转载,转载请联系出处。

写在前面&笔者的个人理解

汽车人这两天在arxiv上看到了港中文MMLab&商汤的一篇关于闭环自动驾驶的工作,结合了大语言模型。不幸汤老师于12月15日与世长辞,R.I.P.

尽管自动驾驶领域最近取得了重大进展,但当遇到长尾不可预见事件和具有挑战性的城市场景时,现代方法仍然很困难,可能会发生严重事故。一方面,大型语言模型(LLM)已经显示出接近“通用人工智能”的表达推理能力。另一方面,先前的自动驾驶方法往往依赖于有限的格式输入(例如传感器数据和导航路线点),限制了车辆理解语言信息和与人类互动的能力。为此,港中文 & MMLab重磅推出LMDrive,这是一种全新的语言引导、端到端闭环自动驾驶框架。LM-Drive独特地处理并集成了多模态传感器数据与自然语言指令,使其能够在现实的教学环境中与人类和导航软件进行交互。为了促进对基于语言的闭环自动驾驶的进一步研究,我们还公开发布了相应的数据集,其中包括大约64K的指令跟随数据clip,以及测试系统处理复杂指令和具有挑战性的驾驶场景的能力的LangAuto基准。进行了大量的闭环实验来证明LMDrive的有效性。据我们所知,本文是第一个利用LLM实现闭环端到端自动驾驶的工作。

开源链接:https://github.com/opendilab/LMDrive

总结来说,LMDrive的主要贡献如下:

  • 提出了一种新的端到端、闭环、基于语言的自动驾驶框架LMDrive,该框架通过多模态多视图传感器数据和自然语言指令与动态环境交互;
  • 提供了一个包含约64K个数据clip的数据集,其中每个片段包括一个导航指令、几个通知指令、一系列多模态多视图传感器数据和控制信号。clip的持续时间从2秒到20秒不等。
  • 提出了全新的基准—LangAuto,用于评估将语言指令作为导航输入的自主代理,其中包括误导性/长指令和具有挑战性的对抗性驾驶场景。
  • 本文进行了广泛的闭环实验,以证明所提出的框架的有效性,并分析了LMDrive的不同组件,以阐明沿着这一方向的持续研究。

相关工作回顾

端到端自动驾驶

最近,端到端自动驾驶领域取得了很大进展。UniAD设计了一个包含全栈驱动任务的框架,并利用查询统一接口在不同任务之间进行通信。ThinkTwice设计了一个Look模块来检索关键区域的信息,并利用这些特征来细化粗略预测。ReasonNet利用驾驶场景的时间和全局信息来提高感知性能并有利于遮挡检测。InterFuser提出了一种基于transformer的框架,以完全融合和处理来自多模态多视图传感器的信息,从而实现全面的场景理解。TCP提出了一种新的多步预测方法,将轨迹规划和直接控制这两个分支集成在一起。LAV引入了一些监督任务来学习视点不变表示,该表示可以在训练时提供更丰富的监督信号,并在推理过程中为复杂推理提供更多信息。除了之前讨论的模仿训练方法之外,还有几种方法试图结合强化学习策略。以监督的方式训练潜在DRL,以获得环境观测的潜在表示,并使用该表示作为输入进行强化学习。Roach使用了一个具有特权访问环境信息的强化学习代理,并提取一个模型作为最终代理。ASAPRL和TaEcRL利用抽象技能,通过促进有效的探索和奖励信号,有效提高强化学习效率和最终表现。然而,这些端到端的方法缺乏与人类(乘客)进行口头或文本交互的能力,并且在决策过程中通常具有较低的可解释性。

驾驶任务中的大语言模型

在过去的几个月里,大型语言模型(LLM)取得了新的进展。此外,视觉大语言模型(VLLM)进一步引入了视觉编码器,并为LLM不仅解释文本数据,还解释其他模态的图像和数据打开了大门。在自动驾驶领域,最近的研究将LLM集成到自动驾驶系统中,以更好地解释和与人类的自然互动。一些研究采用了视觉语言模型方法,该方法可以处理多模态输入数据,并为驾驶场景提供文本描述和控制信号。例如,DRIVEGPT4提出了一种多模态LLM框架,该框架将一系列帧作为输入,然后生成对人类询问的响应,并预测下一步的控制信号。然而,由于该框架缺乏输入命令,预测的控制无法遵循特定的导航命令,这表明该框架很难在真实场景中部署。与此同时,更多的研究人员专注于将驾驶情况转换为文本描述,作为LLM的输入,以直接解释和推理综合驾驶情况。在这一系列工作中,GPT-Driver通过将异构场景输入转换为语言标记,将运动规划重新表述为自然语言建模的任务。LanguageMPC利用LLM来推理复杂场景并输出高级驾驶决策。然后,该方法调谐参数矩阵以将决策转换为低电平控制信号。LLM-Driver利用数字矢量作为输入模态,并融合矢量化对象级2D场景表示,使LLM能够基于当前环境回答问题。

然而,这项工作只考虑了开环设置中的驾驶问题,而忽略了累积误差、时间动作一致性和端到端可训练性等问题,这些问题对于将模型带入实际的闭环驾驶任务至关重要。据我们所知,我们是第一个在闭环环境中基于语言的端到端自动驾驶方法。相关数据集、基准和训练模型也是开源的,以促进社区的进一步研究。

数据生成

数据集制作的目标是开发一种智能驾驶代理,该代理可以基于三种输入源生成驾驶动作:1)传感器数据(环视相机和激光雷达),使该代理能够生成感知并符合当前场景的动作;2) 导航指令(例如变道、转弯),使代理可以驾驶以满足自然语言的要求(来自人类或导航软件的指令);以及3)人类注意指令,使代理能够与人类互动并适应人类的建议和偏好(例如,关注对抗性事件、处理长尾事件等)。本节描述了如何生成训练代理所需的多模态数据集,以及导航指令和人工通知指令的提示设计。具体来说,我们选择CARLA作为仿真器,因为它可以模拟真实的动态闭环世界,并且在端到端自动驾驶领域被广泛采用。数据采集包括两个阶段:1)利用专家代理收集传感器数据和控制信号;以及2)用指令解析和标记所收集的数据。

传感器和控制数据收集。我们利用基于规则的专家代理来创建一个包括大约3M个驱动帧的数据集。由于专家代理可以访问CARLA中的特权信息,因此该数据集将包括相机数据、激光雷达数据和每帧的控制动作。为了增强所收集数据集的多样性,该代理在2.5k条路线、8个城镇和21种环境条件(如天气、一天中的时间)上运行。我们使用四个RGB相机(左、前、右、后)和一个激光雷达。侧面摄像头的角度为60°。此外,我们对前面的图像进行中心裁剪,作为额外的聚焦视图图像,以捕捉远处红绿灯的状态。激光雷达有64个通道,每秒产生600K个点。

解析和语言注释。在第二阶段,我们将收集的数据解析为clip,并用适当的导航指令和可选的通知指令标记每个片段。解析过程将一系列帧作为输入,并将这些帧分段为clip,其中每个clip对应一个导航指令。例如,如果代理在第T0帧开始左转并在第Tn帧结束,我们将把(T0,Tn)标记为新剪辑,并指示“在下一个十字路口左转”。此外,如果在时间Ta发生对抗性事件1,我们将在该片段中添加一条通知指令,模拟真实场景,当紧急情况发生时,乘客或侧面辅助系统将与驾驶员进行通信。如图2所示,每个片段包括传感器数据、控制信号、相应的导航指令和可选的通知指令。解析后的剪辑在剪辑长度和相应指令方面的分布如图3所示。在我们的数据集中,我们收集了64K个解析片段和464K条通知指令。

指令设计。我们考虑三种类型的导航指令(跟随、转向和其他)以及一种类型的通知指令,共由56种不同的指令组成。表1显示了一些示例,完整列表可在补充材料中找到。为了使代理能够在现实的教学环境中驾驶,其中指令来自导航软件或人类:

  • 使指令多样化:考虑到自然语言的内在丰富性,对于每种类型的指令,使用ChatGPT API生成了八种不同的变体,每个变体具有相同的语义,但措辞不同。这使得语言解释更加全面和灵活,能够适应相同指令的不同传达方式。
  • 包含误导性说明:在现实世界中,导航软件或乘客可能会向AV发出违反交通规则或引发安全问题的误导性说明。例如,在单行道上,遵循“变左车道”的指示是危险的。为了提高我们的模型对误导性指令的稳健性,我们模拟了这些场景,并将它们添加到我们的数据集中。
  • 连接多个指令:在许多情况下,指令可能由两到三个连续的指令组成,例如“在这个十字路口右转,然后直行到下一个十字路口再右转。”我们还构建了一些连续的复杂指令数据,以模拟真实的基于导航的驾驶场景。

LMDrive解析

在这项工作中,我们提出了LMDrive,这是一个可以通过自然语言理解和遵循高级驾驶指令的框架。如图4所示,LM-Drive由两个主要组件组成:1)视觉编码器,处理多视图多模态传感器数据(相机和激光雷达),用于场景理解和生成视觉标记;2) 一个大型语言模型及其相关组件(标记器、Q-Former和适配器),该组件接收视觉标记和语言指令,以预测控制信号以及给定指令是否完成。

视觉编码器

在视觉语言社区中,对齐视觉和语言的最常见方法可以是使用预先训练的CLIP模型来编码图像特征。然而,CLIP模型的大触发器和参数大小增加了其在AV系统中的部署难度。此外,AV感知系统通常是3D的,以包括激光雷达输入。因此,受InterFuser和TF++的启发,我们设计了一种多视图多模态视觉编码器来编码/融合传感器数据。如图5所示,视觉编码器由传感器编码部分和BEV解码器组成,传感器编码部分分别对图像和激光雷达输入进行编码,BEV解码器融合图像和点云特征以生成视觉标记,然后将其传递到语言模型。值得注意的是,通过添加额外的预测头,对视觉编码器进行感知任务的预训练,然后冻结编码器以供大型语言模型稍后使用。

传感器编码。对于每个图像输入,使用2D主干ResNet来提取图像特征图。然后将特征图展平为一维token。为了从多个角度全面理解全局上下文,来自不同视图的令牌将通过标准K层transformer编码器进行融合,每一层都包含多头自注意力、MLP块和layer normalization。对于激光雷达输入,采用3D骨干PointPillars将原始点云数据处理为以自车为中心的激光雷达特征,其中每个pillar包含0.25m×0.25m区域内的点。然后使用PointNet来聚合特征,并将特征图下采样到C×H×W,随后用作BEV查询。

BEV解码器。然后将上面编码的传感器特征传递到BEV解码器中以生成视觉标记。具体而言,BEV解码器被设计为具有K层的标准transformer。BEV点云特征作为H×W查询被馈送到BEV解码器,以关注多视图图像特征并生成BEV令牌。我们还将N个可学习查询和1个可学习询问馈送到BEV解码器,以分别生成N个路点token和1个红绿灯token。因此,三种类型的视觉标记(BEV、航路点和红绿灯)将包含丰富的场景信息,然后将馈送给大型语言模型。

使用预测头进行预训练。我们考虑了三个视觉编码器预训练任务:目标检测、未来航路点预测和红绿灯状态分类。对于目标检测,BEVtoken将通过一个阶段的中心点来预测Hm×Wm区域中目标的边界框和速度。对于航路点预测,我们将N个航路点标记和导航航路点依次传递到GRU网络中,以预测N个未来航路点。对于红绿灯状态分类,将2层MLP应用于红绿灯令牌。考虑了三个相应的损耗项:1)InterFuser中的检测损耗;2) l1路失分;以及3)交叉熵交通信号灯状态损失。请注意,这些预测头仅用于视觉编码器的预训练,并且将在LLM的训练和整个模型的推理中被丢弃。

LLM for instruction-following auto driving

如图4所示,在我们的框架中,LLM在整个驾驶过程中充当“大脑”,处理冻结视觉编码器为每一帧生成的传感器token,理解自然语言指令,生成必要的控制信号,并预测给定指令是否完成。具体而言,我们选择LLaMA作为语言主干,它已被广泛用于许多语言和视觉教学调整模型。我们还有三个相关的组件来桥接LLM与指令、视觉信息输入和动作预测:1)标记器,2)Q-Former,3)两个适配器。

指令和可视化tokenization。给定导航指令和可选通知指令,使用LLaMA标记器将指令转换为文本标记。请注意,执行一条指令的持续时间将从几秒钟到几分钟不等,并且我们的模型是在闭环设置中部署的。因此,在每一帧,我们利用所有历史传感器信息(具有最大极限Tmax)来降低累积误差并提高模型的时间一致性。具体而言,对于每帧的多视图多模态传感器输入,我们利用上一节中预先训练的视觉编码器来生成视觉标记(H×W BEV标记、N个航路点标记和一个红绿灯标记)。然而,视觉标记的数量(例如,每帧406个标记)对于LLM来说迅速增长得太大,因为通常需要数百个帧来完成一条指令。为了克服这一点,本文遵循BLIP-2 使用Q-Former来减少视觉标记的数量。具体来说,对于每一帧,我们使用M个可学习查询来通过交叉注意力层处理视觉令牌,这可以将每一帧的视觉令牌数量减少到M。随后,我们使用2层MLP适配器将Q-Former提取的令牌转换为与语言令牌共享相同的维度,然后将其馈送到LLM中。

行为预测。在接收到一系列指令和视觉标记后,LLM预测动作标记。然后应用另一个2层MLP适配器来预测未来的路点,以及指示给定指令是否已完成的标志。注意,为了增强监督信号,我们还将在训练期间对每个历史帧进行预测,并且在推理时只执行最新帧的预测。为了获得最终的控制信号,包括制动、节流和转向,遵循LBC,使用两个PID控制器进行横向和纵向控制,分别跟踪预测航路点的航向和速度。

训练目标。当微调LLM及其相关组件时,我们考虑两个损失项:1)l1航路点损失;2) 分类损失(交叉熵),用于确定当前帧是否完成给定的指令。

LangAuto基准

我们提出了LangAuto(语言引导的自动驾驶)CARLA基准,这是第一个评估语言指令下闭环驾驶性能的基准。与之前的CARLA基准测试Town05和Longest6相比,我们的基准测试仅为AV提供自然语言的导航指令和可选通知指令。

具体而言,LangAuto基准涵盖了CARLA的所有8个公共城镇,包括各种场景(如高速公路、十字路口、环形交叉口)。我们还考虑了16种环境条件,包括7种天气条件(晴朗、多云、潮湿、中雨、多云、大雨、软雨)和3种日光条件(夜间、中午、日落)的组合。此外,LangAuto由三个轨道组成,以全面测试agent的指令跟随能力:

  • LangAuto跟踪:对于每条路线,都会根据代理的当前位置向代理提供并更新导航指令。我们还将这条赛道分为三个不同路线长度的经典赛道,以更好地区分性能。路线长度超过500米的LangAuto,路线长度在150米到500米之间的LangAuto Short,以及路线长度短于150米的LangAuto Tiny。
  • LangAuto-Notice跟踪:在LangAuto跟踪的基础上,我们向代理添加了额外的通知说明。该设置模拟了乘客或其他辅助系统可以在长距离复杂或对抗性场景中发出实时通知的真实情况,这通常是AV系统难以自行处理的。理想情况下,能够理解和利用指令的代理可以实现更好的性能。
  • LangAuto-Sequential跟踪:基于LangAuto跟踪,我们将10%的连续2到3条指令合并为一条长指令。此设置模拟了来自乘客或导航软件的多语句指令的现实场景。

请注意,误导性指示将随机(~5%)间歇性地提供给驾驶代理,并持续一定的时间(1-2秒)。驾驶代理应拒绝这些误导性指令,并执行符合当前场景的安全操作,直到产生下一个正确指令。

实验结果

定量结果

消融实验

LangAuto-Notice Benchmark

LangAuto-Sequential Benchmark

可视化结果

结论

本文介绍了LMDrive,这是一个语言引导的端到端闭环自动驾驶框架。LMDrive结合了自然语言指令和多模式传感器数据,实现了复杂驾驶场景中的人机交互和导航。我们还提出了语言引导驾驶数据集,包括大约64K个多模态数据片段以及相应的导航指令。此外还建立了LangAuto基准,用于评估考虑自然语言指令的自动驾驶系统。通过广泛的闭环实验证明了LMDrive的有效性,强调了改善自动驾驶汽车与人类和环境相互作用的潜力。我们的工作是在基于语言的闭环端到端自动驾驶领域进一步探索和发展的一个鼓励起点。

原文链接:https://mp.weixin.qq.com/s/2TSWGZTiBYkwF8xteKcu8w

责任编辑:张燕妮 来源: 自动驾驶之心
相关推荐

2024-06-05 09:22:43

2024-01-04 09:27:00

模型自动驾驶

2023-04-28 09:24:50

自动驾驶数据

2023-10-30 09:47:00

自动驾驶技术

2024-04-29 09:36:14

仿真器传感器

2024-08-29 10:20:00

3D自动驾驶

2023-08-05 13:08:54

2024-04-15 11:40:37

自动驾驶端到端

2023-08-24 09:52:44

自动驾驶设计

2020-09-28 14:00:06

自动驾驶AI网络

2024-08-14 10:40:00

模型自动驾驶

2024-02-21 09:14:32

端到端自动驾驶

2023-10-13 09:43:36

自动驾驶数据

2023-12-08 09:50:44

自动驾驶机器学习数据

2024-01-04 09:35:41

自动驾驶端到端

2022-08-29 09:15:54

自动驾驶数据

2022-08-09 14:42:44

自动驾驶算力

2024-03-13 09:39:45

端到端自动驾驶

2023-12-11 10:29:11

自动驾驶系统

2024-04-17 09:50:28

自动驾驶端到端
点赞
收藏

51CTO技术栈公众号