在自动驾驶领域,研究人员也在朝着 GPT/Sora 等大模型方向进行探索。清华叉院、理想提出DriveVLM,视觉大语言模型提升自动驾驶能力

在目前自动驾驶领域,传统的感知(perception)-预测(prediction)-规划(planning)的常规端到端自动驾驶在处理常规场景时表现尚可,但在面对复杂场景或者长尾场景时会遇到较大的挑战。论文作者认为主要是因为目前常规模块的设计缺乏“场景理解”能力所导致的,比如感知模块常常只是检测识别常见物体,忽略了长尾物体和物体特性的识别。鉴于近期大视觉语言模型(LVLMs)在视觉理解和推理展现出的强大能力,作者将VLM应用在自动驾驶领域,并设计了一套特殊的CoT推理过程,同时提出了一种与传统自动驾驶系统相结合的方法,提高了精度的同时又能确保实时性的部署。

与生成式 AI 相比,自动驾驶也是近期 AI 最活跃的研究和开发领域之一。要想构建完全的自动驾驶系统,人们面临的主要挑战是 AI 的场景理解,这会涉及到复杂、不可预测的场景,例如恶劣天气、复杂的道路布局和不可预见的人类行为。

现有的自动驾驶系统通常包括 3D 感知、运动预测和规划组成部分。具体来说,3D 感知仅限于检测和跟踪熟悉的物体,忽略了罕见物体及其属性, 运动预测和规划则关注物体的轨迹动作,通常会忽略物体和车辆之间的决策级交互。

自动驾驶需要从数据驱动迭代到知识驱动,通过训练具备逻辑推理能力的大模型才能真正解决长尾问题,只有这样才能迈向开放世界的 L4 级能力。随着 GPT4、Sora 等大模型通过涌现、规模效应展现出强大 few-shot/zero-shot 能力,人们正在思考一条新路。

最近清华大学交叉信息研究院、理想汽车提交的新论文中,作者提出了 DriveVLM,受到最近生成式 AI 领域兴起的视觉语言模型(VLM)启发,DriveVLM 在视觉理解和推理方面表现出了非凡的能力。 

在业界,这是第一个提出自动驾驶快慢系统的工作,方法充分结合了主流自动驾驶 pipeline 和具备逻辑思考的大模型 pipeline,并第一个完成端测部署的大模型工作(基于 Orin 平台)。

DriveVLM 包含一个 Chain-of-Though (CoT) 流程,该流程具有三个关键模块:场景描述、场景分析和分层规划。场景描述模块用语言描述驾驶环境,并识别场景中的关键对象;场景分析模块深入研究关键对象的特征及其对自我车辆的影响;分层规划模块从元动作和决策描述到路径点逐步制定计划。

这些模块分别对应于传统自动驾驶系统流程的感知 - 预测 - 规划流程三部分组件,不同之处在于它们处理对象感知、意图级预测和任务级规划,这些在过去是非常具有挑战性的。

虽然 VLM 在视觉理解方面表现出色,但它们在空间基础和推理方面存在局限性,而且其算力需求对端侧推理速度提出了挑战。因此,作者进一步提出了 DriveVLMDual,这是一种结合了 DriveVLM 和传统系统优点的混合系统。DriveVLM-Dual 可选择将 DriveVLM 与传统 3D 感知和规划模块(如 3D 物体探测器、占用网络和运动规划器)集成,使系统能够实现 3D 接地和高频规划能力。这种双系统设计类似于人脑的慢速和快速思维过程,可以有效地适应驾驶场景中不同的复杂性。

同时,新研究定义了场景理解和规划(SUP)任务,并提出了新的评估指标来评估 DriveVLM 和 DriveVLM-Dual 的场景分析和元动作规划能力。此外,作者还进行了全面的数据挖掘和注释管道,为 SUP 任务构建内部 SUP-AD 数据集。

经过 nuScenes 数据集和自有数据集上的大量实验,人们证明了 DriveVLM 的优越性,尤其是在少量镜头的情况下。此外,DriveVLM-Dual 超越了最先进的端到端运动规划方法。

论文《DriveVLM: The Convergence of Autonomous Driving and Large Vision-Language Models》

论文链接:https://arxiv.org/abs/2402.12289

项目连接:https://tsinghua-mars-lab.github.io/DriveVLM/

DriveVLM 的整体流程如图 1 所示:

  1. 将连续帧视觉图像进行编码,通过特征对齐模块,与 LMM 进行交互;
  2. 从场景描述开始引导 VLM 模型的思考,先引导时间、场景、车道环境等静态场景,再引导影响驾驶决策关键障碍物;
  3. 对关键障碍物进行分析,通过传统 3D 检测和 VLM 理解的障碍物进行匹配,进⼀步确认障碍物的有效性并消除幻觉,描述该场景下的关键障碍物的特征和对我们驾驶的影响; 
  4. 给出关键的「元决策」,如减速、停车、左右转等,在根据元决策给出驾驶策略描述,并最终给出主车未来的驾驶轨迹。 

DriveVLM_自动驾驶

图 1.DriveVLM 和 DriveVLM-Dual 模型管道。一系列图像由大视觉语言模型 (VLM) 处理,以执行特殊的思想链 (CoT) 推理,从而得出驾驶规划结果。大型 VLM 涉及视觉变换器编码器和大语言模型(LLM)。视觉编码器产生图像标记;然后基于注意力的提取器将这些标记与 LLM 对齐;最后,LLM 进行 CoT 推理。CoT 过程可以分为三个模块:场景描述、场景分析和层次规划。

DriveVLM-Dual 是一种混合系统,利用 DriveVLM 对环境的综合理解和决策轨迹的建议,提升了传统自动驾驶 Pipeline 的决策和规划能力。它将 3D 感知结果合并为语言提示,以增强 3D 场景理解能力,并通过实时运动规划器进一步细化轨迹路点。

尽管 VLM 擅长识别长尾物体和理解复杂场景,但它们经常难以精确理解物体的空间位置和详细运动状态,这一不足构成了重大挑战。更糟糕的是,VLM 巨大的模型体量导致高延迟,阻碍了自动驾驶的实时响应能力。为了应对这些挑战,作者提出了 DriveVLM-Dual,让 DriveVLM 和传统自动驾驶系统进行合作。这种新方法涉及两个关键策略:结合 3D 感知进行关键对象分析,给出高维驾驶决策信息,以及高频轨迹细化。

另外,为了充分发挥 DriveVLM 和 DriveVLMDual 在处理复杂和长尾驾驶场景方面的潜力,研究人员正式定义了一项名为场景理解规划的任务,以及一组评估指标。此外,作者提出了一种数据挖掘和注释协议来管理场景理解和规划数据集。

为了充分训练模型,作者全新开发了⼀套 Drive LLM 的标注工具和标注方案,通过自动化挖掘、感知算法预刷、GPT-4 大模型总结和人工标注等多种方式相结合,形成了目前这⼀套高效的标注方案,每⼀个 Clip 数据都包含了多达数十种标注内容。 

DriveVLM_3D_02

图 2. SUP-AD 数据集的带注释样本。

作者还提出了一个全面的数据挖掘和注释管道,如图 3 所示,为所提出的任务构建场景理解规划 (SUP-AD,Scene Understanding for Planning in Autonomous Driving) 数据集,包含 100k+ 图像和 1000k+ 图文对 。具体来说,作者首先从大型数据库中进行长尾对象挖掘和具有挑战性的场景挖掘来收集样本,然后从每个样本中选择一个关键帧并进一步进行场景注释。

DriveVLM_3D_03

图 3. 用于构建场景理解和规划数据集的数据挖掘和注释管道(上图)。从数据集中随机采样的场景示例(如下)展示了数据集的多样性和复杂性。

SUP-AD 分为训练、验证和测试部分,比例为 7.5 : 1 : 1.5。作者在训练分割上训练模型,并使用新提出的场景描述和元动作指标来评估验证 / 测试分割上的模型性能。

nuScenes 数据集是一个大规模的城市场景驾驶数据集,有 1000 个场景,每个场景持续约 20 秒。关键帧在整个数据集上以 2Hz 的频率均匀注释。在这里,作者采用位移误差(DE)和碰撞率(CR)作为指标来评估模型在验证分割上的性能。 

作者展示了 DriveVLM 与几种大型视觉语言模型的性能,并将它们与 GPT-4V 进行比较,如表 1 所示。DriveVLM 利用 Qwen-VL 作为其骨干,其实现了与其他开源 VLM 相比的最佳性能,具有应答和灵活交互的特点。其中前两个大模型已开源,使用了同样的数据进进了微调训练,GPT-4V 使用了复杂的 Prompt 进行 Prompt 工程。 

DriveVLM_3D_04

表 1. 在 SUP-AD 数据集上的测试集结果。这里使用了 GPT-4V 的官方 API,对于 Lynx 和 CogVLM,利用训练分割来进行微调。

如表 2 所示,DriveVLM-Dual 与 VAD 配合时,在 nuScenes 规划任务上取得了最先进的性能。这表明新方法虽然是为理解复杂场景而定制的,但在普通场景中也表现出色。请注意,DriveVLM-Dual 比 UniAD 有了显著提升:平均规划位移误差降低了 0.64 米,碰撞率降低了 51%。

DriveVLM_人工智能_05

表 2. nuScenes 验证数据集的规划结果。DriveVLM-Dual 实现了最佳性能。† 表示使用 Uni-AD 的感知和占用预测结果。‡ 表示与 VAD 合作,所有模型都以自我状态作为输入。

DriveVLM_自动驾驶_06

图 4. DriveVLM 的定性结果。橙色曲线代表模型在接下来 3 秒内计划的未来轨迹。

DriveVLM 的定性结果如图 4 所示。在图 4a 中,DriveVLM 准确预测当前场景条件,并结合有关接近我们的骑车人的有思考的规划决策。DriveVLM 还有效地理解了前方交警手势,向自我车辆发出继续前进的信号,并且还考虑了右侧骑三轮车的人,从而做出正确的驾驶决策。这些定性结果证明了 DriveVLM 模型具有理解复杂场景并制定合适驾驶计划的卓越能力。

DriveVLM_3D_07

图 7:SUP-AD 数据集中的各种驾驶场景。

DriveVLM_数据集_08

图 9. SUP-AD 数据集中牛群和羊群的示例。一群牛在本车前方缓慢移动,要求策略推理出本车缓慢行驶并与牛保持安全距离。

DriveVLM_自动驾驶_09

图 16. DriveVLM 输出的可视化。DriveVLM 可以精确检测倒下的树木及其位置,随后规划合适的绕行轨迹。

DriveVLM的主要贡献

提出了一种将大视觉语言模型用于自动驾驶场景的方法DriveVLM,设计了场景描述、场景分析和层级规划地递进式思维链(CoT),分别对应于传统自动驾驶流程中的感知、规划和控制三个模块,期望借助大视觉语言模型的强大泛化和认知能力,实现比传统模块更优越的性能。

提出了一种大模型与传统自动驾驶模块相结合的方法DriveVLM-Dual,通过有选择性地与传统感知和规划模块进行交互,一方面将匹配的物体感知3D信息引入VLM一侧实现更好地特征分析,另一方面VLM输出的轨迹点可选择地送入传统规划模块,实现实时且更精细地轨迹规划。

提出了一套挖掘复杂和长尾驾驶场景的数据挖掘流程,并以此构建了多样化地SUP-AD数据集。该数据挖掘流程依次包括长尾/挑战性场景挖掘,人工筛选过滤,视频关键帧选取,场景标注,人工检验。

DriveVLM可视化结果

作者提供了几个DriveVLM的可视化场景展示。在图1中,DriveVLM在夜晚识别出前方慢速行驶的车辆,并提供了变道超车的驾驶决策。

DriveVLM_人工智能_10

DriveVLM_自动驾驶_11

在图2中,DriveVLM识别了一个倒塌的树木,并给出了稍微向右偏移的驾驶决策。

DriveVLM_3D_12

DriveVLM_自动驾驶_13

在图3中,DriveVLM准确的捕捉出交警示意继续前行的手势,展示了其对于物体行为理解的能力。

DriveVLM_3D_14

DriveVLM_人工智能_15

详解DriveVLM

DriveVLM_人工智能_16

图中是DriveVLM的模型pipeline,主要包括场景描述、场景分析、层级规划三个主要模块设计,下面将分别介绍。

一.场景描述

场景描述模块的功能主要分为两部分——环境描述和关键物体识别。其中环境描述主要是对共性的驾驶环境的描述,比如天气和道路状况等;关键物体识别则是为了找出对于当前驾驶决策产生较大影响的关键物体。

环境描述.

环境描述共包括以下四个部分:天气、时间、道路类型、车道线状况。
天气(E_weather):描述了当前驾驶场景的天气状况,比如晴天或者下雪等。像雨雪或者雾天这种天气状况自然会需要更加谨慎地驾驶策略。
时间(E_time):描述当前的时间段,比如白天还是夜间场景。像夜间场景由于能见度低也需要采取谨慎地驾驶策略。
道路类型(E_road):描述当前驾驶所处路段的类型,比如城市、高速、乡村等。不同路段可能存在不同类型的挑战,即需要不同地驾驶风格。
车道线状况(E_lane):提供了车道线状况的描述,包括自车所处车道和潜在的车道线选择。这些信息对于我们车道的选择和安全变道至关重要。

关键物体识别

区别于传统自动驾驶感知模块将所有待检测物体都检出,DriveVLM借鉴了人类在驾驶时的思考过程,专注于识别当前驾驶场景中最有可能影响自车驾驶决策的物体,称之为关键物体。得益于海量数据的预训练,VLM相比于传统3D目标检测器能够更好的识别出长尾的关键物体,比如路面杂物或者非常见动物等。对于每个关键物体,DriveVLM会分别输出其语义类别c和对应的2D目标框b。

二.场景分析

在传统端到端自动驾驶流水线中,预测(prediction)模块一般只输出物体的未来轨迹,来辅助后续规划模块进行决策。但这种单一的轨迹预测不能全面体现物体对自车驾驶决策的影响,很多物体对自车产生的影响不单单限于其未来潜在轨迹这么简单。得益于大视觉模型的发展,DriveVLM对当前驾驶场景进行更加全面的场景分析。
关键物体分析。在之前得到驾驶场景中的关键物体后,DriveVLM对关键物体特征和其对自车潜在的驾驶影响进行分析。在这里,作者将物体特征分为3个方面——静态属性(Cs)、运动状态(Cm)和特殊行为(Cp)。静态属性描述了物体固有的属性,比如道路标志中的标号或者标语,超出卡车车身长度的货物等,这些属性有助于自车确定一些潜在驾驶风险或对应的。
运动状态(Cm),包括位置、方向和动作等,描述物体在一段时间内的运动状态,与传统轨迹预测模块类似。特殊行为(Cp)则是指某些专属于该物体做出的可能影响自车驾驶的特定行为或者手势等,比如交警指挥交通的手势,面前的人在使劲挥手示意等。在实际应用中,作者并没有强制DriveVLM对于所有关键物体都输出这三方面的信息,而是使模型学会应该自适应地输出某个物体在这三方面中可能包含的方面。

场景总结

在分析完所有关键物体后,DriveVLM会对当前驾驶场景进行一个总结,除去汇集之前的分析信息之外,还有一些场景级别的额外的场景级别的分析会在这里完成。之后,所有信息会作为上下文进行后续的分层级规划。

层级规划

DriveVLM提出了一种逐渐递进地层级式规划,依次推理对应自车未来驾驶决策的元动作、决策描述、轨迹点三种规划目标。
元动作:每个“元动作”对应驾驶决策的一个基本粒度的动作,一系列元动作的序列可以一定程度上描述未来短时间内的驾驶决策。作者将元动作的类型归为了17种,比如加速、等待、向左\右变道等。可以按照其特点归为速度控制类、转向类、车道线控制类这三大类别。

决策描述:相对于简单动作粒度级别的“元动作”,“决策描述”包含了对于驾驶决策更加详细多维地描述。一个完整的“决策描述“一般包含三个基本元素:动作A,主体S,以及持续时间D。动作类似之前的元动作,比如“加速”,”转弯”,“等待”等。主体指的是自车动作所施加的物体,例如行人、交通信号或特定的车道等。持续时间表示动作的执行时间,比如动作应该持续多久或何时开始等。
文中提供了一个对应“决策描述”示例的分析:等待(A)行人(S)通过街道,然后(D)开始加速(A),并且汇入右侧车道(S)。这种结构化的决策描述有助于VLM输出规范且易于的驾驶指令。
轨迹点: 输出较为详细的轨迹描述后,DriveVLM接下来输出相应的轨迹点预测,记为W = {w1, w2, ..., wn}, wi = (xi , yi),代表未来固定时间间隔t时刻的位置。通过这种分层级设计,引导DriveVLM一步步地输出由易到难地决策规划,最后对应的轨迹点可以送入专门的规控模块进行进一步的改善和细化。

DriveVLM-Dual

尽管现有的大视觉语言模型在识别长尾物体和理解复杂场景方面表现优越,但根据现有研究和作者的初步实验表明,VLM有时在涉及到推理物体的细微运动状态改变时表现不佳。另外,由于大语言模型巨大的参数量,导致模型的推理时间相比传统自动驾驶系统往往具有较高的延迟,阻碍了其对环境的快速实时反应。为此,作者提出了DriveVLM-Dual,一种VLM与传统自动驾驶系统互相协作的解决方案。该方法包含两个关键性设计,一是在3D感知信息融合,二是高频轨迹细化操作。

3D感知信息融合

DriveVLM_人工智能_17

对于匹配的关键物体,将其在感知模块中预测得到的历史轨迹、朝向、中心点坐标等作为语言prompt送入VLM中的关键物体分析模块,用来辅助物体特征的推理。对于没有匹配的关键物体,比如一些传统3D感知模块难以识别的长尾物体,也依旧进行关键物体分析,只不过不使用的3D感知信息作为辅助。通过这种设计,能使得DriveVLM更加准确的理解关键物体的空间位置和细粒度的运动状态变化等。

高频轨迹优化

与传统规划器相比,由于DriveVLM具有视觉语言模型(VLMs)固有的巨大参数量,在生成轨迹时速度显著较慢。为了实现快速实时的推理能力,作者将它与传统的planner相结合形成了一个快-慢双系统设计。

在DriveVLM输出一个规划轨迹Wslow之后,将其作为一个参考轨迹送入经典的规划模块进行一个二阶段的轨迹优化。具体来说,对于基于优化的planner,Wslow作为优化求解器的初始解;对于基于神经网络的planner,Wslow作为输入query的形式,与原本planner的输入特征f相结合,经过网络生成新的轨迹Wfast。在实际应用时,该双系统是异步运行的,VLM分支主要负责task-level的规划,传统分支中的planner主要负责motion-level的规划,只在固定重叠时间接受来自VLM分支的轨迹输入。

任务与数据集

SUP任务

为了更好地衡量大语言模型在处理复杂和长尾驾驶场景中的能力,作者定义了名为SUP(scene understanding for planning)的任务和相应的评估指标。
输入数据包括来自周围摄像头的多视角视频集V,以及可选的来自感知模块的3D感知结果P,输出包括场景描述E,场景分析S,元动作A,决策描述D,轨迹点W。对于轨迹点W可以采用位移误差(DE)和碰撞率(CR)作为指标来评估生成的好坏,但对于文本内容的场景描述和分析,以及元动作序列的好坏并没有已有的评估方法,于是作者分别提出了使用LLM和动态规划的评估方法,详细可参见附录。

数据集构建

针对之前定义的SUP任务,作者提出了一种数据挖掘和标注的方法。并以此为基础构建了一个超过40个场景类别的自动驾驶数据集SUP-AD。该方法流程图如下所示,首先从海量自动驾驶数据中进行长尾目标挖掘和挑战性场景挖掘来收集样本数据,之后对于每个场景选择一个关键帧,并进行相应的场景信息标注。

DriveVLM_人工智能_18

长尾目标挖掘。 作者首先预定义了一系列长尾目标类别,比如异形车辆、道路杂物和横穿马路的动物等。接下来,作者使用基于CLIP的搜索引擎从海量自动驾驶数据中挖掘这些长尾场景,该搜索引擎能够使用语言 query 从大量的自动驾驶视频数据中挖掘与类别相关的驾驶数据。在此之后进行人工检查,以筛选出与指定类别不一致的场景。
挑战性场景挖掘。 除了长尾物体外,作者同样对具有挑战性的驾驶场景进行了挖掘。在这些场景的数据中,需要根据不断变化的驾驶条件调整自车(ego vehicle)的驾驶策略。这些场景一般是根据记录的驾驶操作变化得到的,例如急刹车等。在得到相应数据后,同样会进行人工筛选来过滤出不满足要求的数据。
关键帧选择。 每个挖掘出来的驾驶场景都是一个十几秒视频片段,在这么长的时间跨度中,选取“关键帧”至关重要。在大多数具有挑战性的场景中,关键帧是在需要显著改变速度或方向之前的时刻。根据综合测试,作者选择在实际操作前0.5秒到1秒作为关键帧,以确保改变驾驶决策的最佳反应时间。对于不涉及驾驶行为变化的场景,作者选择与当前驾驶情景相关的帧作为关键帧。
场景标注。 对于选取好关键帧后的数据,由一组标注员进行场景标注,包括任务提到的场景描述、场景分析和规划等内容信息。同时为了便于场景标注,作者开发了一个视频标注工具,能够比较方便的针对特定标注内容进行对应的标注和检查。最终某个场景关键帧的标注结果如下图所示

DriveVLM_人工智能_19

DriveVLM_自动驾驶_20

实验部分

Main Results

作者在提出的SUP-AD和nuScenes数据集上进行了相应的实验来验证DriveVLM的有效性。其中SUP-AD按照  7.5:1:1.5的比例来划分训练、验证和测试集,按照上文提出的两种评价指标进行了评测。 在nuScenes数据集上,作者遵循之前的工作,采用位移误差(DE)和碰撞率(CR)作为指标来评估模型在验证集上生成轨迹的性能。

其中在SUP-AD数据集上,作者展示了DriveVLM与几种大型视觉-语言模型在之前的性能比较,并与GPT-4V进行了对比,如表1所示。

DriveVLM采用Qwen-VL作为其基座模型,由于其本身强大的模型性能,相较于其他开源VLMs,如Lynx和CogVLM取得了最佳性能。尽管GPT-4V在视觉和语言处理方面表现出强大的能力,但无法对其进行微调,只能以in-context learning的方式来进行测试。作者提到这样通常会导致在场景描述任务中生成无关信息,按照所提的评估方法,这些额外信息经常被分类为幻觉信息,导致得分不高。

在nuScenes数据集上,作者将DriveVLM和DriveVLM-Dual与之前的经典方法进行了对比,如表2所示。当与VAD进行协同时,DriveVLM-Dual在规划任务的L2和CR指标下都取得了最先进的性能。虽然DriveVLM是为了理解复杂场景所设计的,但在nuScenes这种普通场景上也同样表现出色。

Ablation Study

模型设计。 为了验证每部分模块设计的必要性,作者在nuScenes数据集上对不同模块组合进行了消融实验,如表3所示。其中“Base”表示只进行层级规划,而不采用所提出的特殊的CoT推理设置;“CO”表示引入关键物体分析;“3D”表示引入匹配的3D感知结果作为额外的语言prompt。

可以看出,包含关键物体分析这一设计使得DriveVLM提高了决策的准确性,从而实现更安全的导航。而引入3D感知结果后,DrvieVLM生成的轨迹在L2和CR上都会有比较明显的下降,表明引入3D感知结果对于捕捉运动动态并改善轨迹预测至关重要。

推理速度。另外,作者还在NVIDIA Orin平台上测试了DriveVLM和DrvieVLM-Dual的推理速度,

由于 LLM 的参数量巨大,DriveVLM 的推理速度比类似于 VAD 的传统自动驾驶方法慢一个数量级,使得其很难在对实时性要求较高的车载环境中进行部署。然而,在与传统自动驾驶 Pipeline 以异步的快-慢速协作模式配合后,整体延迟取决于快速分支的速度,使得 DriveVLM-Dual 成为了现实世界部署的理想解决方案。