25年1月来自浙江大学、上海AI实验室、慕尼黑工大、同济大学和中科大的论文“LeapVAD: A Leap in Autonomous Driving via Cognitive Perception and Dual-Process Thinking”。
尽管自动驾驶技术取得长足进步,但由于推理能力有限,数据驱动方法仍然难以应对复杂场景。与此同时,随着视觉语言模型的普及,知识驱动的自动驾驶系统也得到了长足发展。本文提出一种基于认知感知和 Dual-Process 思维的新方法 LeapVAD。该方法实现一种人类注意机制,识别和关注影响驾驶决策的关键交通要素。通过综合属性(包括外观、运动模式和相关风险)来描述这些目标,LeapVAD 实现更有效的环境表征并简化决策过程。此外,LeapVAD 还采用一种 Dual Process 决策模块,模仿人类驾驶的学习过程。该系统由一个通过逻辑推理积累驾驶经验的分析过程(系统 II)和一个通过微调和少样本学习来完善这些知识的启发式过程(系统 I)组成。LeapVAD 还包括反思机制和不断增长的记忆库,使其能够从过去的错误中学习并在闭环环境中不断提高其性能。为了提高效率,开发一个场景编码器网络,该网络可生成紧凑的场景表示,以便快速检索相关的驾驶体验。对两个自动驾驶模拟器 CARLA 和 DriveArena 进行的广泛评估表明,尽管训练数据有限,但 LeapVAD 的性能优于仅使用摄像头的方法。
自 21 世纪初以来,人类一直在探索使用计算机算法来代替人类驾驶员。最近的数据驱动方法 [1]、[2]、[3] 取得显著的成功。然而,它们往往严重依赖训练数据的分布,这可能导致对底层语义的肤浅理解,并在复杂或不熟悉的场景中导致误解。数据驱动方法通常会泛化观察的模式而没有推理能力,其性能限制在标注数据范围内。因此,迫切需要一个能够超越训练数据界限、进行推理并模仿人类认知过程的系统。几种基于知识的方法 [4]、[5]、[6]、[7] 采用大语言模型 (LLM) 和视觉语言模型 (VLM) 作为驾驶智体,标志着向更先进的自主系统迈出重要一步。然而,目前对这些方法的评估方法,如开环测试,无法捕捉自动驾驶汽车与其环境之间的动态交互 [8]。因此,驾驶智体的响应能力和适应性可能无法得到充分评估,这凸显对更全面的评估方法需求。
人类学习驾驶涉及闭环环境中的持续交互,其中根据周围环境做出决策并收到反馈。根据 Dual-Process 理论 [9],[10],[11],人类智能在两个系统上运行:1)系统 I(即启发式过程,其特点是快速、自动和经验性)和 2)系统 II(即分析过程,其特点是缓慢、理性和逻辑性)。这种 Dual Process 思维在新手司机过渡到有经验的司机时很明显。最初,他们依靠常识,但经过训练,他们通过反复试验和理性分析来发展技能(分析过程),从而形成肌肉记忆,从而可以在熟悉的情况下做出快速、本能的反应(启发式过程)。即使在获得驾照后,人们仍会继续从经验和事故中学习,以提高他们的驾驶技能。
虽然数据驱动方法 [1]、[2]、[3]、[40]、[41]、[42]、[43]、[44]、[45]、[46]、[47]、[48]、[49] 在学术界和工业界取得了显著成功,推动自动驾驶技术在日常生活中的广泛应用,但这些方法往往面临固有的局限性。具体而言,它们的性能与训练数据分布有关,导致在应用于多样化或未见过的环境时,在处理长尾场景时存在适应性问题和挑战 [50]、[51]。此外,人类驾驶员依靠深厚的常识和对世界的细致理解,使他们能够有效地应对意外情况。这强调向知识驱动方法过渡的重要性,这种方法强调经验推理、环境诱导和通过持续学习发展专业技能的能力 [52]、[53]、[54]、[55]。
在基础模型时代,LLM 和 VLM 表现出卓越的推理和应用知识的能力,在自动驾驶中的理解、推理和决策等复杂任务中表现出色 [34]、[56]、[57]。它们对各种数据集的广泛训练使它们具备世界知识和强大的解释和推理能力,引起了研究界的极大兴趣 [58]、[59]、[60]、[39]。
LeapVAD 框架由四个主要组件组成:用于场景理解的 VLM、用于提取场景 token 的场景编码器、由分析过程和启发式过程组成的 Dual-Process 决策模块,该模块与控制器配合使用。如下算法 1 和如图所示,LeapVAD 使用 VLM 分析多帧图像并描述闭环模拟器中的关键目标。场景编码器根据当前图像和车辆状态创建场景 tokens。这些目标描述和场景 tokens 被传递给 Dual-Process 决策模块,该模块执行场景推理并确定驾驶动作。然后将生成的高级决策发送到动作执行器以生成控制信号。一旦发生事故,系统将自动启动反思机制进行自我更新和持续改进。
VLM 场景理解
人类驾驶员将注意集中在车辆周围的关键目标上,以避免信息过载,提高反应时间,减少认知负荷。这一策略提高注意,降低事故风险。受此启发,LeapVAD 中的场景理解模块有选择地识别关键目标,简化环境描述并简化决策过程。
现成的基础 VLM 通常缺乏驾驶领域的特定知识。为了解决这个问题,执行监督微调 (SFT),并提示 VLM 生成可能影响驾驶决策目标的详细描述。这些描述包括语义、空间和运动属性以及行为推理。通过整合这些元素,系统可以更全面地了解环境,提高复杂驾驶场景中的安全性和适应性。
为了增强 VLM 在自动驾驶中的场景理解能力,为 SFT 开发一个摘要-细化数据结构,如图所示。数据包括两部分:多视图和多帧。值得注意的是,摘要仅用于闭环,而细化则保留用于训练。例如,VLM 生成的描述表示为 D = {D_s,i, D_l,i, D_m,i, D_r,i},其中 N 表示紧要目标的数量。
在多视图构造中,每个目标包括:
1)语义属性 D_s:描述目标的类别,通常是重要的交通参与者(例如车辆、骑自行车的人)和基础设施(例如交通信号灯、停车标志)。
2)空间属性 D_l:表示其边框、车道位置和与自车的距离,这对于安全和避免碰撞至关重要。
3)运动属性 D_m:指目标的运动方向。
4)行为推理 D_r:解释目标对自车驾驶决策的重要性和影响。例如,当自车直行时,右侧的停车标志至关重要,因为它表示需要在路口停车。
对于多帧数据,场景中目标的动态属性包含在摘要中,如上图右侧所示。具体而言,VLM 通过分析视频数据来描述关键目标的位置、运动趋势、距离和速度。此外,它还在最终帧中提供这些目标的边框。
场景 Token
为了便于在记忆库中检索类似场景以进行小样本提示,提出一种更高效、更精确的场景 token 提取方法。该方法不同于 LeapAD [12],因为可以避免场景描述的歧义、同义词和释义,从而与文本嵌入相比,性能有所提高。在本文中,LeapVAD 生成用于转向和速度调节的元动作,反映人类驾驶员采用的主要控制机制。主要见解是,需要类似人类控制响应(关于转向和制动)的场景可以在控制层面被视为类似。基于这一观察并受到 ACO [62] 的启发,开发一种在两个不同空间中运行的比较学习方法:用于转向的动作空间 (ACT) 和用于制动的加速度空间 (ACC)。这种双空间比较学习框架能够得出捕捉底层控制相似性的场景 tokens。
- 场景编码器:如图所示,给定一批图像 I 和自我状态 A,通过场景编码器 E 处理输入以得出场景 token t,其中包含 g_act 和 g_acc。动量更新的场景编码器 E_m 用于提取特征向量 t′。编码器参数的更新规则为:
θ_E_m ← α θ_E_m +(1−α)θ_E (1)
具体来说,意图是通过 one-hot 编码得出的。这些特征通过 MLP 与自我速度 V 连接起来,生成自我状态特征 f_ego。处理图像以提取 ViT 特征 f_img,然后使用最大池化或注意机制将其压缩成场景特征 f_scene。最终的场景 token t 是通过应用 MLP 后连接 f_ego 和 f_scene 生成的。
2)关键词典:遵循 MoCo [63],使用关键词典 H 来存储历史编码的场景 token t′,以实现更大的对比批次大小。本研究利用场景编码器 E_m 来生成场景 token t′。此过程与当前训练特征建立正对。它确保这些 token 存储在存储库 H 中,以在后续训练迭代中形成正样本和负样本对。当 H 的大小超过其预定容量时,词典中的样本将被系统地替换。
3)训练损失:在训练期间,将采样一批图像及其相应的自我状态。在数据增强之后,这些图像由 E 和 E_m 编码以获得 Q 特征 g_sp 和 K 特征 g′_sp。同时,从 H 和 g′_sp 中采样 N 个 K 特征以形成 K-集。然后计算损失 L_act 和 L_acc:
其中
在 ACC 空间中,当一辆车刹车而另一辆车不刹车时,就会识别出一对负对。
Scene Token 的整体对比损失为:
L = λ_act L_act + λ_acc L_acc (4)
其中 λ_act 和 λ_acc 是用于调整 L_act 和 L_acc 权重的超参。
分析过程
利用 VLM 提供的场景描述,开发分析过程,这是一个旨在模拟人类驾驶员特有的逻辑推理过程框架。分析过程利用逻辑推理来应对复杂场景,采用结构化分析和理性决策来确保驾驶任务的安全。
通过对各种数据集进行广泛的预训练,LLM 固有地积累大量的世界知识,使其能够通过细致入微的推理和理解来解决复杂问题 [35]。这种能力满足分析过程的需求,它依赖于彻底的分析和上下文-觉察来在驾驶场景中做出明智的决策。分析过程利用 LLM 中嵌入的世界知识来解释场景描述并做出高质量的驾驶决策。实证结果表明,结合特定交通规则,进一步提高系统在现实驾驶场景中的安全性和可靠性。此外,将 VLM 与分析过程结合起来进行闭环实验,从而能够收集高质量的决策数据和结果。这些结果作为“经验”存储在存储库中,并逐步积累,可以有效地迁移到启发式过程。这种迁移使启发式过程能够利用先前的经验在类似场景中快速响应。
反思机制:分析过程用于促进对交通事故的反思,如上述算法 1 底部所示。确切地说,在结合 VLM 和启发式过程的闭环驾驶场景中,任何事故的发生 O 都会激活反思机制。分析过程随后从事件发生之前的历史帧 Q 中分析场景描述 D、推理 R 和决策 S。该分析识别因果因素,检测错误,并提出纠正推理 R_n 以及决策策略 S_n。
从反思程序中获得的见解随后被整合到系统的记忆库中,使 LeapVAD 能够不断从过去的失败中学习,并在未来的驾驶场景中逐步做出更明智的决策。值得注意的是,记忆库中积累的经验,表现出很强的可迁移性和泛化性,使其可以直接应用于其他轻量级模型并轻松适应各种场景。
启发式过程
- LLM:尽管分析过程擅长通过其详细的分析和彻底的评估提供精确的驾驶推理和决策,但其固有的缓慢处理通常会导致重复和多余的工作,从而限制其在实际驾驶场景中的实用性。从人类驾驶行为中汲取灵感,驾驶员通过反复练习形成肌肉记忆,从而以最小的认知负荷做出有效的反应,在 LeapVAD 中引入一个结合轻量级语言模型的启发式过程。
为了实现有效的知识迁移,用存储库中积累的数据应用监督微调 (SFT)。该过程将分析过程中的知识蒸馏到轻量级模型中,使启发式过程能够适应不同的场景,同时运行速度显著加快(本文实验中大约快五倍)。之前的结果 [12] 表明,没有 SFT 的轻量级模型无法做出可靠的驾驶决策。
- 少样本提示:利用少样本提示 [35]、[12] 来增强启发式过程对未见过场景的泛化能力,减少幻觉,从而做出更稳健的决策。这种方法使启发式过程能够有效地从其记忆库中汲取见解,提高未来驾驶决策的准确性。
当前场景的场景 token t_q 与记忆库中大小为 M 的场景 token {t_i} 之间,计算余弦相似度:
选取相似度最高的前 k 个样本作为查询场景,这些样本的场景描述 {D_i}、推理 {R_i}、决策 {S_i},与当前场景描述 D_c 一起输入到启发式过程中,得到最终的推理 R_c 和决策 S_c。
数据准备
1)VLM 数据:整合从 Rank2Tell [61]、DriveLM [37] 和 CARLA [13] 收集的数据,构建一个用于 VLM 监督微调的指令跟随数据集。将紧要目标的引用格式标准化为: In camera view, properties coordinates 。
每个数据集都使用原始标签进行处理,以获得唯一的问答对。总体而言,对话是经过总结-细化的。细化包括紧要目标属性的四个方面:语义属性、空间属性、运动属性和重要性。除了多视图对话外,还添加多帧图像的摘要,引入了紧要目标的距离、速度和运动趋势等属性。用五帧构建对话,Rank2Tell 以 10 Hz 运行,其他以 2 Hz 运行。从 CARLA Towns 01-04、06、07 和 10 收集 5K 多视图摘要数据和 2K 多帧摘要数据来训练 VLM。
2)启发式过程的数据:在闭环设置中积累经验,并通过整合分析过程和 VLM 将其存储在记忆存储库中,作为后续 SFT 和启发式过程提示的少样本示例。该方法还结合动态更新机制来解决启发式过程遇到的问题。值得注意的是,这些样本是在闭环环境中收集的,无需人工干预。
3)场景编码器的数据:利用从 CARLA 和 nuScenes [64](训练集)收集的数据来训练场景编码器。具体来说,从 CARLA 模拟器收集 90K 个驾驶帧,其中 70% 用于训练。每帧都包含前视摄像头拍摄的图像以及意图、速度、转向和制动数据。转向值在 [-1, 1] 范围内归一化,而制动值范围为 [0, 1]。分别使用转向和制动作为 ACT 和 ACC 空间的标签,并将距离阈值 σ_sp (sp ∈ {act, acc}) 设置为 0.04。
实现细节
利用 Qwen-VL-7B [29] 和 InternVL2-8B [30] 作为场景理解的视觉语言模型 (VLM),使用 GPT-4o 作为推理和逻辑的慢速系统 (分析过程),并使用 Qwen1.5- 1.8B [66] 作为 LeapVAD 中自动快速思考的快速系统 (启发式过程)。场景编码器 E 实现“池化 + 状态”来提取场景 token,其中输入包括自我状态,并使用最大池化来提取 f_scene。
为了充分利用 VLM 在闭环驾驶实验中的能力,用基于指令的数据进行 SFT。对于 Qwen-VL-7B [29],用 AdamW 优化器 [67],超参数为 β_1 = 0.9 和 β_2 = 0.95。将其与学习率的余弦衰减相结合,最初设置为 1 × 10−5。批量大小设置为 8,模型在 8 个 A100 GPU 上训练 5 个 epochs,大约需要 69 个小时。对于 InternVL2-8B [30],使用相同的优化器,超参数为 β_1 = 0.9 和 β_2 = 0.99。初始学习率设置为 4 × 10−5,并使用余弦规划衰减。同样,批量大小为 8,模型在 8 个 A100 GPU 上训练 5 个 epochs,大约需要 7 个小时。输入图像分辨率设置为 448 × 448 像素。
对于启发式过程,用存储在存储库中的样本在 Qwen1.5-1.8B 上进行 5 个 epochs 的 SFT,大约需要 6 个小时。训练超参与 VLM 的训练程序一致。如图显示详细的微调过程。Dual Process 决策模块以 2 Hz 的频率输出元动作(如“AC”、 “DC”、 “LCL”、 “LCR”、 “IDLE”、 “STOP”),这些元动作进一步细化为控制信号。
对于场景 token,在自定义训练集上训练场景编码器,该训练集由 63K CARLA 数据样本和 nuScenes 数据集组成,持续 12 个 epochs,大约需要一小时。用 128 的批处理大小和 SGD 优化器,其超参设置如下:λ_act = λ_acc = 1、学习率为 0.03、权重衰减为 1e-4、H 大小为 4096。对于图像增强,用 DriveArena [14] 分别生成两个长宽比为 336 × 600 和 448 × 800 的批处理,同时确保布局和框与 nuScene 数据集一致。“池化”是指应用最大池化从 ViT 特征生成场景特征 f_scene,而“注意”表示使用可学习的权重矩阵从 ViT 特征创建场景特征 f_scene。