社区供稿 | LMDrive: 大语言模型加持的闭环端到端自动驾驶框架

01/24 23:00
阅读数 17

00 引言


图1:LMDrive 框架功能概览图。

说明:LMDrive 接收语言指令和多模态多视角的传感器数据作为输入,并实时输出决策控制信号,以应对各种各样复杂的驾驶场景。


大语言模型(Large Language Model,LLM)可谓是 2023 年最火热也最重要的人工智能子领域,在各类机器学习任务中都展现出了惊艳的效果,相关的上下游应用也都发展得十分迅速。而将大语言模型应用在自动驾驶领域也有一些优秀的研究成果,但这些工作主要集中于开环场景的模型设计和实验验证,缺少基于闭环场景和端到端的自动驾驶工作。为了进一步探索大语言模型和自动驾驶结合的研究潜力,来自香港中文大学和上海人工智能实验室(OpenDILab 团队)等机构的研究者们提出了第一个利用大语言模型进行闭环端到端自动驾驶的工作结合自然语言指令和多模态传感器数据,实现了复杂驾驶场景中准确且高效的导航和人机交互。此外,还提供了完整的语言引导驾驶数据集和相应的评测框架,相关代码和模型都已在 GitHub 和 Hugging Face 上开源。


01 论文和代码地址



论文题目:

LMDrive: Closed-Loop End-to-End Driving with Large Language Models


论文地址:

https://arxiv.org/abs/2312.07488


项目主页:

https://hao-shao.com/projects/lmdrive.html


开源代码地址:

https://github.com/opendilab/LMDrive


数据集地址:

https://huggingface.co/datasets/OpenDILabCommunity/LMDrive


相关开源模型地址:

https://huggingface.co/collections/OpenDILabCommunity/lmdrive-658aee50ce38d143c4925a98



02 背景与贡献


尽管自动驾驶领域的算法研究和落地应用取得了诸多显著进展,但这些近期工作在遇到长尾事件和复杂城市驾驶场景时,仍存在一系列困难与挑战,甚至可能引发严重的驾驶事故。更具体来说,以往的自动驾驶方法倾向于依赖有限格式的输入(例如传感器数据和导航点),限制了车辆理解语言信息和与人交互的能力。而近期大语言模型(LLM)相关的最新研究成果则展现出接近“通用人工智能”的能力,包含一系列令人印象深刻的知识理解和推理能力。因此,如何将二者有效结合就成为了一个值得探索的研究课题。而 LMDrive 这篇工作就从以下四个方面进行了深入的探索和研究:


  1. 提出全新的自动驾驶框架 LMDrive:这是一个端到端、闭环、基于语言控制的自动驾驶框架,能够通过多模态多视角传感器数据和自然语言指令与动态环境进行交互。

  2. 构建约 64K 数据量的语言引导驾驶数据集:其中每个条目包含一条导航指令、几条提示指令、一系列多模态多视角传感器数据和车辆控制信号。每个数据片段的时长从2秒到20秒不等。

  3. 推出 LangAuto 基准测试框架:用于评估以语言指令为导航输入的自动驾驶Agent 性能,涵盖误导性/冗长指令和具有挑战性的对抗性驾驶场景。

  4. 进行广泛的闭环实验:通过实验验证所提出框架的有效性,并分析 LMDrive的不同组成部分,为沿此方向的研究提供分析。



03 LMDrive 数据集


图2:LMDrive 数据集中的两个示例。


构造生成高质量的多模态数据集,以及设计相应的导航指令和人类指令,是实现强大高效的决策智能体的必经之路。具体而言,LMDrive 选择了 CARLA 模拟器,因为它能够模拟真实的动态闭环世界,并且在端到端自动驾驶领域已经得到了广泛应用。数据集制作包括两个阶段:1) 使用专家智能体收集传感器数据和控制信号;2) 解析和标记收集到的数据及其指令。


传感器和控制数据收集:LMDrive 利用基于规则的专家自动驾驶智能体,创建了包含约300万驾驶帧的数据集。这个数据集将包括每一帧的摄像头数据、激光雷达数据和控制信号。为了增强数据集的多样性,智能体在2500条路线、8个小镇和21种环境条件(例如天气、一天中的时间)下运行。其中使用了四个RGB 摄像头(左、前、右、后)和一个激光雷达。


解析和语言标注:基于已收集好的初级数据,在第二阶段,将收集到的数据解析成数据片段,并为每个片段贴上适当的导航指令和可选的提示指令。例如,如果智能体在 T0 帧开始左转,在 Tn 帧结束,则会将(T0, Tn)标记为一个新的片段,并附上“在下一个十字路口左转”的指令。此外,如果在某个时刻发生了意外事件,还将在该片段中添加一条提示指令,模拟现实生活中乘客或辅助系统在紧急情况下与司机或者驾驶系统的沟通。最终一共收集了 64K 个解析过的视频片段和 464K 个提示指令。


图3:LMDrive 数据集中不同指令类别的具体示例。


在指令设计方面,LMDrive 考虑了三种类型的导航指令(跟随、转弯和其他)以及提示指令,共计56种不同的指令类型。并且,为了使智能体能够在来自导航软件或人类的、真实的指令设置中完成驾驶,LMDrive 还采取了以下措施:


多样化指令考虑到自然语言的丰富性,对于每种类型的指令,在数据收集时额外使用 ChatGPT API 生成了八种不同的变体,每种变体在措辞上不同但语义相同。这样可以更全面地覆盖和灵活地解释语言,适应相同指令的多种表达方式。


纳入误导性指令:在现实情况中,导航软件或乘客可能会给自动驾驶车辆提供违反交通规则或引起安全顾虑的误导性指令。为了提高模型对误导性指令的鲁棒性,LMDrive 在设计时模拟这些场景并将它们添加到的数据集中。


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



04 LMDrive 方法介绍

图4:LMDrive 的模型结构概览图。

说明:其中包括两大组件:1)视觉编码器处理多视角多模态传感器数据(摄像头和激光雷达),实现场景理解并生成视觉 tokens;2)大语言模型及其相关组件(tokenizer、Q-Former 和 adapter)处理所有历史视觉 tokens 和语言指令(导航指令和可选提示指令),以预测控制信号和判断给定指令是否完成。


LMDrive 框架的设计目标是通过自然语言理解和遵循高级驾驶指令的方式实现自动驾驶。在神经网络模型结构方面(如图4所示),LMDrive 主要由两个关键组件组成:1) 视觉编码器,用于处理多视角多模态传感器数据(相机和LiDAR)以进行场景理解和生成视觉 tokens;2) 大语言模型及其相关组件,用于接收视觉 tokens 和语言指令,预测车辆控制信号以及确定给定指令是否已完成。


视觉编码器


视觉编码器基于处理多视角多模态数据进行设计,旨在编码/融合传感器数据。具体结构如下(图5):


  • 传感器编码器:对每个图像输入,使用处理 2D 数据的 ResNet 提取图像特征图,并将其展平为一维 tokens。对于 LiDAR 输入,采用处理 3D 数据的PointPillars 处理原始点云数据,生成自车中心的 LiDAR 特征。使用 PointNet 聚合特征并将特征图降采样,用作 BEV(鸟瞰图)查询时的特征。

  • BEV 解码器编码过后的传感器特征将传递给 BEV 解码器,生成视觉 tokens。BEV 解码器采用标准 Transformer 结构。BEV 点云特征作为查询输入,用于关注多视角图像特征并生成 BEV tokens、waypoints tokens 和 traffic light tokens。这三种视觉 tokens 包含丰富的场景信息,并将递给大语言模型。

图5:LMDrive 视觉编码器的结构示意图。


另外,为了提高视觉编码器的性能,LMDrive 还额外采用了三个预训练任务:目标检测、未来航点预测和交通灯状态分类。具体设计如下:


  • 目标检测:使用 CenterPoint 进行一阶段目标检测,预测一定区域内对象的边界框和速度。

  • 航点预测:使用 GRU 网络,将 waypoints tokens 和目标 waypoint 输入进行序列预测,预测未来航点。

  • 交通灯分类:对 traffic light tokens 应用2层 MLP 进行状态分类。


大语言模型(LLM)


LLM 在整个驾驶过程中作为“控制中心”和“大脑”存在。具体来说,语言模型需要处理视觉编码器为每一帧数据生成的视觉 tokens,理解自然语言指令,生成控制信号并预测指令是否完成。以下是其相关组件:

  • Tokenizer:使用 LLaMA Tokenizer 将导航指令和可选的提示指令转换为文本 tokens。

  • Q-Former:使用可学习 queries 对视觉 tokens 进行跨注意力层的降维,将每帧的视觉 tokens 数量减少到4。

  • Adapter:使用2层 MLP 将 Q-Forme r提取的视觉 tokens 转换为与语言 tokens 相同的维度,以作为 LLM 的输入。


LLM 接收一系列指令和视觉 tokens,并预测未来2s内的 waypoints。还同时使用一个2层 MLP 网络用于预测给定指令是否完成。为增强监督信号,模型训练过程中会对每个历史帧进行预测并计算相应的损失函数。在模型推断时仅执行最新帧的预测。最终的控制信号由两个 PID 控制器生成,用于横向和纵向控制,以使车辆跟踪模型预测的 waypoints 的位置和速度。



05 LangAuto 测试框架


另外,LMDrive 还提出了LangAuto(Language-guided Autonomous Driving)CARLA 测试框架,这是第一个评估在语言指令下闭环驾驶性能的测试框架。与先前的基于 CARLA 模拟器的测试框架(例如Town05和Longest6)相比,之前的框架使用离散的驾驶指令或目标路径点引导自动驾驶智能体,而LangAuto 仅为自动驾驶车辆提供自然语言中的导航指令和可选的提示指令。LangAuto 涵盖 CARLA 的8个城镇,包括各种场景,共16种环境条件,涵盖不同天气和光线条件。LangAuto 有三个 tracks 测试自动驾驶算法的指令遵循能力:

  • LangAuto track:根据智能体当前的位置提供导航指令,分为三个子赛道,以测试不同路线长度下模型的性能。

  • LangAuto-Notice track:在 LangAuto 基础上添加提示指令,模拟实时提示场景。

  • LangAuto-Sequential track:合并连续的2到3个指令,以模拟多句指令的情况。


此外,LangAuto 中还以约5%的概率随机提供误导性指令,要求智能体拒绝并执行安全操作,直到下一个正确指令。这样设计旨在全面评估智能体在语言引导下的驾驶性能。


06 实验和可视化分析



在上图所示的表格中,LMDrive 使用不同预训练或随机初始化的大语言模型来评估算法的有效性:其中 LLaMA 和 LLaMA2 使用大规模公共语言数据集进行预训练;Vicuna 和 Vicuna-v1.5在预训练的基础上额外进行了人类对话数据的微调;LLaVA-v1.5 则整合了多模态数据(如语言、图像)进行训练。根据实验表格所示,可以观察到 LLaVA-v1.5 超过其他 LLM,这表明采用预训练的多模态模型对于指令驾驶至关重要。此外,使用指令数据进行微调的模型表现更好(Vicuna-v1.5 > LLaMA2 ~ Vicuna > LLaMA)。而随机初始化的语言模型的实验表明,它在相同量的训练数据下很难完成正常的驾驶行为,这证明了对于遵循指令驾驶任务,使用预训练的 LLM 的必要性。



进一步地,在上图所示的表3中,对 LMDrive 的不同组件进行了对比实验。首先,LMDrive 设计了一种“w/o Q-Former”变体,其直接将 BEV 特征降采样到4x4,而不是使用Q-Former 减少 BEV token 的数量,然后将它们输入LLM。这种变体的平均驾驶分数从36.2下降到31.7。其次,实验中还尝试了去除输入到 LLM 解码器的 BEV 标记(表中标记为“w/o using BEV tokens”),这种变体则会导致违规次数增加(从0.81降至0.72)。一个可能的解释是 BEV 特征对于检测和推理周围的障碍物和道路结构很重要。另外,如果移除视觉编码器的预训练阶段,并在指令微调阶段直接从头开始训练。驾驶分数会降至16.9(表中标记为“w/o visual pre-training”),这证明了 LMDrive 提出的视觉编码器预训练过程的重要性。



还有,正如表4所示,LangAuto-Notice 测试框架在发生对抗事件时会向自动驾驶智能体提供一些提示指令,而 LMDrive 能够实时有效地利用提示信息,从而显著减少碰撞和违反交通规则的发生。

图6:LMDrive 训练结果可视分析示意图。


最后,图6中的可视化分析展示了 LMDrive 可在给定传感器输入和不同导航指令的情况下,预测出不同的未来路径。在前两个指令下,LMDrive 相应地预测不同的路径点。而对于第三个误导性指令(在只能左转的车道上右转)。模型适当地拒绝了错误的指令,生成了一个更慢的速度且符合场景的安全路径。


07 展望和未来工作


在未来的工作中,LMDrive 还将尝试为模型添加思维链(COT)相关技术,使其决策控制的过程更具有逻辑性,进一步提高性能。同时,也将会在数据集和评测场景中添加更多可解释的场景描述,提供更易于调试,更有可解释性的端到端自动驾驶框架。欢迎研究者和开源爱好者们一起探索自动驾驶领域的更多可能。

图7:LMDrive 在 Hugging Face 上的开源数据集概览图(Dataset Card)。


开源代码地址:

https://github.com/opendilab/LMDrive

数据集地址:

https://huggingface.co/datasets/OpenDILabCommunity/LMDrive


相关开源模型地址:

https://huggingface.co/collections/OpenDILabCommunity/lmdrive-658aee50ce38d143c4925a98




本文由 H
ugging Face 中文社区内容共建项目提供,稿件由社区成员投稿,经授权发布于 Hugging Face 公众号。文章内容不代表官方立场,文中介绍的产品和服务等均不构成投资建议。了解更多请关注公众号:

如果你有与开源 AI、Hugging Face 相关的技术和实践分享内容,以及最新的开源 AI 项目发布,希望通过我们分享给更多 AI 从业者和开发者们,请通过下面的链接投稿与我们取得联系:

https://hf.link/tougao

本文分享自微信公众号 - Hugging Face(gh_504339124f0f)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部