LMDrive: 采用大语言模型的闭环端到端自动驾驶

23年12月来自香港中文大学、商汤科技、InnoHK 感知交互智能中心、多伦多大学和上海AI实验室的论文“LMDrive: Closed-Loop End-to-End Driving with Large Language Models“。

尽管自动驾驶领域最近取得了重大进展,但当遇到长尾不可预见事件和具有挑战性的城市场景时,现代方法仍然很困难,可能会发生严重事故。一方面,大语言模型(LLM)显示出眩目的推理能力,接近“通用人工智能”。另一方面,以前的自动驾驶方法往往依赖于有限的格式输入(例如传感器数据和导航路线点),限制了车辆理解语言信息和与人类互动的能力。为此,本文介绍LMDrive,一种语言引导、端到端的闭环自动驾驶框架。LMDrive处理并集成多模态传感器数据与自然语言指令,在现实指令设置中与人类和导航软件进行交互。方便基于语言的闭环自动驾驶的进一步研究,作者公开发布相应的数据集,包括大约64K的指令跟从数据片段,以及LangAuto基准,其测试系统处理复杂指令和具有挑战性驾驶场景的能力。

如图就是以语言为导向的闭环端到端驱动框架LMDrive。LMDrive以语言指令和多模态多视图传感器数据为输入,实时输出控制信号,在复杂场景下进行驾驶。

添加图片注释,不超过 140 字(可选)

自动驾驶车(AV)的智能系统可分为两种主要方法:1)模块化方法,将系统分解为感知、预测和规划等几个子模块,并设计固定接口将它们集成在一起[2,23];以及2)通过神经网络将传感器数据直接转换为控制信号的端到端方法[16,35]。虽然这两种方法都被广泛采用,并在具有挑战性的基准上不断取得突破,但它们都有一个共同的局限性,即它们只依赖于固定格式的输入,如传感器数据、目标航路点和动作命令,这限制了智体理解多模态信息以及与人类和环境交互的能力。

这项工作试图回答这个问题:“能否在LLM之上构建认知自动驾驶系统,仅通过自然语言即可与人类乘客或导航软件进行交互?”

实际上期待LLM解决许多以前不简单的问题。举几个例子:1)在长尾不可预见事件和具有挑战性的城市情况下(如复杂密集的十字路口),现代AV系统通常会遇到困难[41],甚至会发生严重事故[37],只要遵循乘客或导航软件的导航指令,语言-觉察的AV可以很容易地生存下来。2) AV可以简单地通过自然语言来适应乘客的突然通知(例如,感知系统很容易错过的小目标),以前这需要大量手工制定的规则。
许多开创性的工作已经探索了使用大语言模型来增强AV系统在开环环境中的推理能力、可解释性和整体性能的潜力。最常见的策略[6,11,28,32]是:1)首先用LLM将场景感知结果和导航命令转换为文本描述;2) 将这些文本描述输入LLM以生成文本驾驶决策;然后3)将文本驾驶决策转换为可执行的控制命令。但这种类型的方法,即不同的LLM单独处理子任务,很难以端到端的方式进行训练,失去了利用大量数据进行扩展的能力,并且对感知错误和不确定性不强。例如,由于后两个阶段中的LLM不能访问传感器数据,因此第一阶段中的不准确或检测遗漏可能导致后两个步骤中大的累积误差。

为了解决这些问题,已经提出了端到端的基于语言的驾驶方法[46]。然而,都是在开环环境中进行训练和评估,其中生成动作并采用专家动作评估,但不在实际环境中执行。值得注意的是,当执行诸如“右转”之类的导航指令时,AV智体不仅应该生成一系列动作,还应该考虑这些动作给环境带来的变化。缺乏闭环评估导致对累积误差、人机交互和动作的时间一致性等关键问题考虑不足,难以在短时间范围内扩展,在实际系统中无效。

本文工作的目标是开发一种智能驾驶智体,基于三种输入源生成驾驶动作:1)传感器数据(多视图相机和激光雷达),能够生成觉察并符合当前场景的动作;2) 导航指令(例如变道、转弯),驾驶满足自然语言的要求(来自人类或导航软件的指令);以及3)人类通知指令,能够与人类互动并适应人类的建议和偏好(例如,关注对抗性事件、处理长尾事件等)。

选择CARLA[12]作为模拟器,因为它可以模拟真实的动态闭环世界,并且在端到端自动驾驶领域被广泛采用。数据采集包括两个阶段:1)利用一个专家智体收集传感器数据和控制信号;以及2)用指令解析和标记所收集的数据。

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

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

添加图片注释,不超过 140 字(可选)

解析后的剪辑在剪辑长度和相应指令方面的分布如图所示。在数据集中,收集了64K个解析片段和464K条通知指令。

添加图片注释,不超过 140 字(可选)

指令设计。考虑三种类型的导航指令(跟随、转向和其他)以及一种类型的通知指令,共由56种不同的指令组成。下表显示了一些示例。为了能够在现实的指令环境中驾驶,其中指令来自导航软件或人类,做以下设计:

添加图片注释,不超过 140 字(可选)

指令多样化:考虑到自然语言的内在丰富性,对于每种类型的指令,用ChatGPT API生成了八种不同的变体,每个变体具有相同的语义,但措辞不同。这使得语言解释更加全面和灵活,能够适应相同指令的不同传达方式。

包含误导指令:在现实世界中,导航软件或乘客可能会向AV发出违反交通规则或引发安全问题的误导性指令。例如,在单行道上,遵循“变左车道”的指示是危险的。为了提高模型对误导性指令的稳健性,模拟这些场景,并将它们添加到数据集中。

连接多个指令:在许多情况下,指令可能由两到三个连续的指令组成,例如“在这个十字路口右转,然后直行到下一个十字路口再右转。”还构建一些连续的复杂指令数据,以模拟真实的基于导航的驾驶场景。

如图所示,LMDrive由两个主要组件组成:1)视觉编码器,处理多视图多模态传感器数据(相机和激光雷达),用于场景理解和生成视觉tokens;2) 一个大语言模型及其相关组件(token化器、Q-Former和适配器),该组件接受视觉tokens和语言指令,预测控制信号以及确保给定指令是否完成。

添加图片注释,不超过 140 字(可选)

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

添加图片注释,不超过 140 字(可选)

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

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

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

在LMDrive框架中,LLM在整个驾驶过程中充当“大脑”,处理冻结视觉编码器为每一帧生成的传感器tokens,理解自然语言指令,生成必要的控制信号,并预测给定指令是否完成。具体而言,选择LLaMA[39]作为语言主干,其已被许多语言[14,49]和视觉[25,51]指令调优模型广泛采用。还有三个相关组件来桥接LLM与指令、视觉信息输入和动作预测:1)token化器,2)Q-Former(参考BLIP-2【22】),3)两个适配器。

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

动作预测。在接收到指令和视觉tokens序列之后,LLM预测动作tokens。然后应用另一个2层MLP适配器来预测未来的路点,以及用一个标志表明给定指令是否已完成。注意,为了增强监督信号,还在训练期间对每个历史帧进行预测,并且在推理时只执行最新帧的预测。为了获得最终的控制信号,包括制动、油门和转向,按照LBC[4],用两个PID控制器进行横向和纵向控制,分别跟踪预测航路点的航向和速度。
训练目标。当微调LLM及其相关组件时,考虑两个损失项:1)L1航路点损失;2) 分类损失(交叉熵),其确定当前帧是否完成给定指令。

LMDrive的训练分为两个阶段:1)视觉编码器预训练阶段;以及2)指令微调阶段,对齐指令/视觉和控制信号。

视觉编码器预训练阶段。视觉编码器将单帧的传感器数据作为输入,用收集的数据集进行训练。具体来说,由于指令标注过程会丢弃一些帧,用指令标注之前的原始数据集进行视觉编码器预训练,其中包括大约3M帧的数据。只有视觉编码器通过感知任务进行预训练,用于场景理解。

指令微调阶段。在指令的指导下,整个系统都接受端到端自动驾驶的训练,其中Q-Former和Adapters是可训练的,其他组件是冻结的。当LMDrive将一系列帧作为输入时,训练过程设置了一个固定的序列长度Tmax来构建批数据。训练使用生成的指令-跟从数据指导。为了使模型能够拒绝误导性指令,在给出误导性指令约1秒后,将相应的数据标记为“已完成”。由于数据集是以高频率(~10Hz)收集的,因此相邻帧的数据高度相似。为了鼓励有效的训练,按照视频预测方法[13,33,43],以固定的间隔对训练帧进行采样,并应用时域增强,其随机地向前或向后移动训练帧,随机移动要小于固定间隔。

LangAuto(语言引导自动驾驶)的CARLA基准,是一个评估语言指令下闭环驾驶性能的基准。与之前的CARLA基准Town05[29]和Longest06[8]相比,该基准仅为AV提供自然语言的导航指令和可选的通知指令。

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

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

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

指标。考虑CARLA排行榜[36]引入的三个主要指标:路线完成度(RC)、违规得分(IS)和驾驶得分(DS)。路线完成是指已完成的路线总长度的百分比。它只考虑沿着预定路线行进的距离,其中预定路线的每个分段对应于导航指令。如果智体偏离路线太远,则被视为违反指令,并且该事件被标记为失败并终止。违规分数衡量由智体触发的违规行为。当发生碰撞或违反交通规则时,违规分数会相应地减少一个折扣系数。驾驶分数是路线完成率和违规分数的乘积,描述了驾驶进度和安全性。它通常被认为是主要的排名指标。

指令方面,下表显示了一个示例,其中为导航指令“右转”生成了八个短语。

添加图片注释,不超过 140 字(可选)

在下表中列出了56种不同类型的导航和通知说明的完整列表。

添加图片注释,不超过 140 字(可选)

如表展示如何生成误导性指令。第一列是智体所在的驱动场景,第二列表示生成的可能具有误导性的指令。例如,当AV在单行道上时,误导性的指示“将路线改为左侧车道”违反了交通规则,并引发了安全问题。

添加图片注释,不超过 140 字(可选)

下表展示了一些连接指令的示例。

添加图片注释,不超过 140 字(可选)

  • 19
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值