DriveVLM 论文学习

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

解决了什么问题?

自动驾驶对交通行业有着革命性的作用,实现 FSD 的一个主要障碍就是场景理解。场景理解涉及在复杂且不可预测的环境中进行导航,这些环境可能包括恶劣的天气条件、复杂的道路布局以及不可预测的人类行为。现有的自动驾驶方案,通常包括 3D 感知、运动预测和规划,处理这些极具挑战性的场景理解问题是比较困难的。3D 感知存在局限性,倾向于检测和跟踪熟悉的目标,可能会忽略不常见的目标及其属性;运动预测和规划则关注于轨迹层面的行为,通常会忽略目标和车辆之间的决策级交互,没有充分考虑道路使用者之间的复杂互动。

相关工作

视觉-语言模型 VLMs

最近,在 VLM 领域涌现了大量的优秀工作,如 MiniGPT-4、LLaVA 和 Qwen-VL 等。VLM 能够应用在不同的场景中,尤其在机器人领域,VLM 能输出相应的动作,这些动作可以是高层级指令或低层级的动作。DriveVLM 将 VLM 应用于自动驾驶领域。

Learning-based Planning

自从 Pomerleau 的开创性工作以来,将学习框架整合到运动规划一直是研究的活跃方向,这包括使用机器学习方法来改进自动驾驶车辆和机器人的运动规划能力。一条有前景的研究方法是结合强化学习和模仿学习,这些方法可以学习一个端到端的规划策略,直接将原始的传感器输入映射为控制动作,无需复杂的中间表示。有一些工作通过构建密集的代价图(cost maps)来提高可解释性,这些代价图是从学习模块派生出来的。代价图是一种表示不同路径或行为的地图,用于指导运动规划决策。最近的一个趋势是以端到端的方式训练多个模块,这些方法能增强整体表现,但是依赖于未来轨迹预测损失的反向传播,决策过程缺乏可解释性。

驾驶字幕数据集

Driving caption dataset 是一种专门用于自动驾驶研究的数据集,它包含了驾驶场景的视频以及对应的文本描述。这些文本描述通常包括对视频中车辆行为的叙述(action narration)和对行为原因的推理。自然语言描述是联系人类知识和驾驶目标的重要媒介,有助于了解自动驾驶系统的决策和行为。Refer-KITTI 数据集对 KITTI 数据集中的物体做了语言提示注释,有助于系统通过自然语言来识别和引用多个物体。Talk2Car、NuPrompt、nuScenes-QA 引入了自由形式的字幕和文本标注。BDD-X 和 BDD-OIA 提供了带有自车行为和交通场景语言解释的数据集,这些数据集通过语言描述来增加对自车行为的理解。虽然这些数据集提供了一些场景来应用自然语言,但是它们覆盖的深度和范围都不够,缺乏关键的安全场景的数据。

提出了什么方法?

作者提出了 DriveVLM,它利用了视觉-语言模型(VLMs)来强化场景理解和路径规划能力。DriveVLM 包含了一个由三个核心模块组成的思维链(CoT):场景描述、场景分析和层级规划。场景描述模块用自然语言描述驾驶环境,识别出场景内关键的目标(车辆、行人、交通标志、信号灯等);场景分析模块专注于关键目标的特性(速度、大小、方向和可能的行为)以及它们对自车的影响;分层规划模块负责制定计划,从元动作(meta-actions)和决策描述到具体的路径点,规划过程从高层次的抽象动作(如“变道”、“超车”)开始,逐步细化到具体的操作(如通过特定的路径点)。这些模块分别对应了传统智驾方案的感知、预测、规划流程,区别是这些模块处理的是目标感知、意图级预测和任务级规划。这表明这些模块不仅是执行基础的感知和规划任务,而是在更深的层次上工作,这在过去是很难做到的。

意图级预测,指的是系统不仅要预测其他道路使用者可能的行动轨迹,还要预测他们的意图和目的,这需要对人类行为有更深入的理解。

任务级规划,指的是系统在规划时不仅考虑简单的路径规划,还要考虑更复杂的任务,如在特定情况下需要执行的特定动作或决策。

尽管 VLM 在视觉理解方面很强,但在空间定位和推理方面存在局限性,并且它们需要消耗大量的计算资源,作者提出了 DriveVLM-Dual,该混合系统结合了 DriveVLM 和传统自动驾驶系统的优势。DriveVLM-Dual 整合了 3D 感知和规划模块,如 3D 目标检测器、占用网络和运动规划器,能更好地理解目标在三维空间的位置,并且通过高频的路径规划,适应快速变化的驾驶环境。双系统设计类似于人脑的快速和慢速思维过程,可以高效地适应不同复杂性的驾驶场景,灵活地处理简单和复杂的驾驶情况,提高自动驾驶的适应性和安全性。

作者定义了场景理解和规划(SUP)任务,该任务涉及理解和分析驾驶场景,并基于这些理解来规划车辆的行为。为了评估 DriveVLM 在场景分析和 meta-action 规划方面的能力,作者提出了新的评价指标。针对 SUP 任务,作者进行了全面的数据挖掘和标注工作,创建了一个 SUP-AD 数据集,包含了大量的驾驶场景样本,用于训练和测试自己的自动驾驶方案。作者在 nuScenes 数据集和 SUP-AD 数据集上做了实验,证明了 DriveVLM 和 DriveVLM-Dual 的性能,它能够处理复杂的、难以预测的驾驶场景。DriveVLM-Dual不仅在实验中表现出色,而且超越了现有的端到端运动规划方法(端到端运动规划是指直接从感知输入到驾驶决策的连续处理过程)。最终,作者在一个量产车型上部署了 DriveVLM-Dual 方案,验证它在真实场景中的效果。

概览

DriveVLM 的架构如下图所示。通过一个 VLM 来处理一组输入图像,进行特殊的 CoT 推理,推导出驾驶规划的结果。DriveVLM 包括一个视觉 transformer 编码器和一个大语言模型。视觉编码器产生图像 tokens,然后一个基于注意力的提取器通过 LLM 来对齐这些 tokens。推理过程可以分为三个模块:场景描述、场景分析和分层规划

在真实场景的部署中,作者提出了一个混合系统 — DriveVLM-Dual。它结合了 DriveVLM 和传统自动驾驶方案的优点。

场景描述

场景描述模块负责描述驾驶环境,并识别出重要的目标。

环境描述

驾驶环境,如天气和道路条件,对驾驶难度有显著的影响。因此,需要对这些环境因素进行详细的描述和分析,以便更好地理解和预测它们对驾驶行为的影响。首先模型被提示输出驾驶环境的文本描述 E E E,这个描述包括几个条件: E = { E w e a t h e r , E t i m e , E r o a d , E l a n e } E=\{E_{weather}, E_{time}, E_{road}, E_{lane}\} E={Eweather,Etime,Eroad,Elane},每个都表示驾驶环境的一个关键方面。

  • 天气组成 E w e a t h e r E_{weather} Eweather 包括从晴天到雪天的场景,影响能见度和车子的牵引力。

  • 时间组成 E t i m e E_{time} Etime 区分白天和黑夜,由于能见度变化,也会影响驾驶策略。在夜间驾驶时,能见度降低,需要更多的注意力和不同的驾驶技巧。

  • E r o a d E_{road} Eroad 表示道路类型,如城市道路和高速公路,引入了不同的挑战。不同类型的道路有不同的交通规则、速度限制和驾驶环境,这都会影响驾驶决策。

  • E l a n e E_{lane} Elane 表示车道条件,关注当前的车道定位和可能的机动操作,这对于安全的驾驶决策至关重要,了解车辆在车道中的位置和即将进行的变道或转弯对于避免交通事故和遵守交规非常重要。

关键目标识别

除了环境条件,驾驶场景中的各类目标也极大地影响驾驶行为。传统的自动驾驶感知模块在一个特定的范围内检测物体,而本文作者受到人类司机在驾驶时的认知过程启发,只关注于重要目标的识别,而这些目标最有可能影响当前的场景。每个关键目标都标注为 O c O_c Oc,包括两个属性:目标类别 c c c 和它在图像上的边框坐标 b ( x 1 , y 1 , x 2 , y 2 ) b(x1,y1,x2,y2) b(x1,y1,x2,y2)。作者将类别和坐标映射到语言模态中对应的语言 t o k e n _ i d token\_id token_id,从而无缝地融合到后续的模块中。此外,DriveVLM 利用了预训练视觉编码器,能识别出长尾的重要目标,传统的 3D 目标检测器可能会检测不到,如道路杂物或小动物。

场景分析

在传统的自动驾驶方案中,预测模块通常关注在预测目标的未来轨迹上。VLM 的出现能提供我们更多的能力,更全面地分析当前的场景。场景级分析能汇总所有重要的目标和环境描述,提供关于场景的全面的理解,然后输入后续的规划模块使用。

重要目标分析

DriveVLM 从三个方面表示重要目标的特征:静态属性 C s C_s Cs运动状态 C m C_m Cm特殊行为 C b C_b Cb

  • 静态属性 C s C_s Cs 描述物体的内在特性,如路边广告牌的视觉信息和卡车超尺寸的货物,这些属性对于预测和规避潜在危险非常重要。
  • 运动状态 C m C_m Cm 表示物体在一段时间内的运动变化,包括位置、方向和行为,这些特征对于物体的未来轨迹和自车的潜在交互非常重要。
  • 特殊行为 C b C_b Cb 是物体可能采取的特殊动作或手势,这些行为可能直接影响自车的下一个驾驶决策。

并不是所有的物体都需要分析这三个方面的特征,在实际应用中,通常只有一到两个特征适用于关键物体。基于这些特征的分析,DriveVLM 能预测每个关键物体对自车的潜在影响,有助于自动驾驶系统作出更加安全、更加合理的决策。

分层规划

然后将场景级描述与路线、自车姿态和速度相结合,形成一个规划用途的提示。最后,DriveVLM 在三个阶段逐步地产生驾驶规划:meta-actions、决策描述和轨迹路径点。

Meta-actions A A A

元动作 a i a_i ai,表示驾驶策略的短期决策。这些动作有 17 个类别,包括但不受限于加速、减速、左转、变道、小幅度位置调整和等待。为了规划自车在未来一定时间内的操作行为,本方法输出一序列的元动作。

决策描述 D D D

决策描述 D D D 详细说明了自车更细粒度的驾驶策略。包括三个元素:动作 A \mathcal{A} A、主体 S \mathcal{S} S和持续时间 D \mathcal{D} D动作是关于元动作,如“转弯”、“等待”或“加速”。主体是指交互物体,如行人、交通信号、某一条车道。持续时间表明动作持续的时间范围,它什么时刻开始和进行多久。

轨迹路径点 W W W

有了决策描述 D D D 后,下一步就是生成相应的轨迹点。这些路径点记作 W = { w 1 , w 2 , . . . , w n } , w i = ( x i , y i ) W=\{w_1, w_2,...,w_n\}, w_i=(x_i, y_i) W={w1,w2,...,wn},wi=(xi,yi),代表自车在未来一段时间内的路径,时间间隔设定为 Δ t \Delta t Δt。为了做自回归生成,本文方法将这些数值路径点映射为自然语言 tokens。

DriveVLM-Dual

VLM 的推理速度比较慢,对空间和运动的理解不够准确。于是作者提出了 DriveVLM-Dual,将 DriveVLM 和传统的自动驾驶系统结合起来。这个方法包括两个核心策略:融合关键目标分析的 3D 感知、高频的轨迹修正。

融合 3D 感知

将 3D 检测器预测的物体记作 O 3 D = { c 3 D i , b 3 D i } O_{3D}=\{c_{3D}^i, b_{3D}^i\} O3D={c3Di,b3Di},其中 b 3 D i b_{3D}^i b3Di 表示第 i i i 个边框, c 3 D i c_{3D}^i c3Di 表示类别。3D 边框然后映射到 2D 图像上,得到对应的 2D 边框 b 2 D i b_{2D}^i b2Di。在 2D 框 b 2 D i b_{2D}^i b2Di b c j b_{c}^j bcj 之间做 IoU 匹配。 b c j b_{c}^j bcj 是之前识别的重要目标 O c r i t i c a l = { c c j , b c j } O_{critical}=\{c_c^j, b_c^j\} Ocritical={ccj,bcj} 的 2D 边框。如果一个目标和某个重要目标之间的 IoU 大于设定的阈值 τ \tau τ,而且它们的类别相同,则将其分类为匹配上的重要目标 O c m a t c h e d O_c^{matched} Ocmatched,定义为:

O c m a t c h e d = { c c j , b c j } , if  c c j = c 2 D i and aIoU ( b c j , b 2 D i ) > τ , where aIoU ( b c j , b 2 D i ) = S b c j ∩ b 2 D i S b 2 D i O_c^{matched}=\{c_c^j, b_c^j\},\ \ \text{if}\ c_c^j=c_{2D}^i\ \text{and}\ \text{aIoU}(b_c^j, b_{2D}^i)>\tau, \ \text{where aIoU}(b_c^j, b_{2D}^i)=\frac{S_{b_c^j \cap b_{2D}^i}}{S_{b_{2D}^i}} Ocmatched={ccj,bcj},  if ccj=c2Di and aIoU(bcj,b2Di)>τ, where aIoU(bcj,b2Di)=Sb2DiSbcjb2Di

3D 数据中,没有对应匹配的重要目标被标记为 O c u n m a t c h e d O_c^{unmatched} Ocunmatched

  • 在场景分析模块,对于 O c m a t c h e d O_c^{matched} Ocmatched,对应 3D 目标的中心坐标、朝向角、历史轨迹作为模型的语言提示使用,帮助目标的分析。

  • 对于 O c u n m a t c h e d O_c^{unmatched} Ocunmatched,只使用由图像推导出的语言 tokens 来分析。该设计使 DriveVLM-Dual 能更准确地理解重要目标的位置和运动,增强整体性能。

高频轨迹优化

为了实现实时的高频推理能力,作者加入了一个传统的规划器,产生一个 slow-fast 的双系统,结合了 DriveVLM 的优异表现和传统规划方法的效率。以较低的频率从 DriveVLM 得到一段轨迹后,记作 W s l o w W_{slow} Wslow,将其作为经典的高频轨迹优化方法的参考轨迹。针对基于优化的规划器, W s l o w W_{slow} Wslow 作为优化方法的初始方案使用。针对基于神经网络的规划器, W s l o w W_{slow} Wslow 作为输入 query 使用,和额外的输入特征 f f f 结合,然后解码为新的规划轨迹 W f a s t W_{fast} Wfast。这个过程表述为:

W f a s t = Planner ( [ W s l o w , f ] ) W_{fast} = \text{Planner}([W_{slow}, f]) Wfast=Planner([Wslow,f])

这个优化步骤确保了 DriveVLM-Dual 产生的轨迹质量更高,并满足实时的要求。实际使用时,这两个分支以 slow-fast 的方式异步执行,传统自动驾驶分支的规划器分支能够将 VLM 分支的轨迹输出作为额外的输入使用。

任务和数据集

为了充分地挖掘 DriveVLM 和 DriveVLM-Dual 处理复杂长尾场景的潜力,作者定义了一个任务叫做规划意图的场景理解,和一组评价指标。此外,作者提出了一个数据挖掘和标注协议,创建了一个场景理解和规划数据集。

任务定义

规划意图的场景理解定义如下。输入包括环视相机的多视图视频 V \mathcal{V} V,以及可选的感知模块输出的 3D 感知结果 P \mathcal{P} P。输出包括下面几个部分:

  • 场景感知 E E E:包括天气条件 E w e a t h e r E_{weather} Eweather、时间 E t i m e E_{time} Etime、道路条件 E r o a d E_{road} Eroad、车道条件 E l a n e E_{lane} Elane
  • 场景分析 S S S:包括目标级分析和场景级摘要 S S S
  • 决策描述 D D D:驾驶决策的详细描述。
  • 轨迹路径点 W W W:描述自车规划轨迹的路径点。

评价指标

为了全面地评价模型的表现,我们关心驾驶场景和决策的可解释性。因此,评价有两个方面:场景描述/分析评价、元动作的评价。

场景描述/分析评价

在场景描述中,考虑到人类评估具有主观性,为了减少主观性的影响,作者采用了一种结构化的方法,使用预训练的大语言模型来评估。该方法比较生成场景描述和人类标注的 ground-truth 描述。Ground-truth 描述由结构化的数据组成,如环境条件、导航、车道信息和重要事件(包含特定的目标、谓语和产生的影响)。LLM 根据生成的描述和 ground-truth 之间的一致性,对其做评价和打分。

元动作评价

元动作是一组事先定义好的决策选项。作者将一个驾驶决策表述为一个元动作序列。该评价方法使用了动态规划算法来比较模型输出的序列和人工标注的 ground-truth 序列。在评价过程中,还需要考虑各种元动作的重要性,将某些动作指定为“保守动作”,这些动作对整体上下文的影响较小。为了增强鲁棒性,首先使用 LLM 生成与真实序列在语义上等价的替代序列,这样做可以提供多个有效的参考点,以应对真实世界中可能的多样性和变化。与这些替代序列相似度最高的序列将用来计算最终的驾驶决策得分,这意味着评价模型的性能不只是基于与单一的真实序列的匹配度,而是基于与一组可能的、语义上等价的序列的相似度。

数据集构建

作者提出了一个全面的数据挖掘、标注方案来构建规划意图的场景理解(SUP-AD)数据集,如下图所示。特别地,作者从一个大规模数据集里做长尾目标和困难场景的挖掘,搜集样本,然后选择每个样本的关键帧来进一步做场景标注。

长尾目标挖掘

根据真实世界道路目标的分布,作者首先定义了一组长尾目标的类别,如异形车辆、道路异物、穿越道路的小动物等。然后,作者使用一个基于 CLIP 的搜索引擎来挖掘这些长尾场景,使用自然语言 queries 来挖掘驾驶数据。随后,通过人工审核,过滤掉与特定类别不一致的场景。

困难场景挖掘

除了长尾目标,我们也要挖掘出困难的场景,需要根据驾驶条件来调整自车的驾驶策略。作者根据记录的驾驶行为的差异性来挖掘这些场景。

关键帧选取

每个场景其实就是一个视频 clip,我们要识别出其中的关键帧来标注。在大多数场景中,关键帧就是速度和方向发生明显变化的时刻。基于充分的测试,作者选取实际操作之前 0.5 秒到 1 秒的帧作为关键帧,确保决策有最佳的反应时间。对于驾驶行为没有变化的场景,作者选择与当前驾驶场景相关的帧作为关键帧。

场景标注

作者使用了多位标注人员来进行场景标注,包括场景描述、场景分析、规划。路径点是用车辆的 IMU 数据自动标注的。为了提高场景标注的效率,作者制作了一个视频标注工具,

  • 标注员能够来回滑动进度条,回放视频的某一部分;
  • 标注某一关键帧时,标注员能够在图像上标注边框和自然语言描述;
  • 标注员能够从一组动作和决策的候选项中选择,标注驾驶规划。

每个标注都是由三名标注人员仔细地审核,保证准确率和效率,确保模型训练的数据足够可靠。图2 展示了一个带有详细标注的样本场景。

实验

设定

作者在 SUP-AD 数据集和 nuScenes 数据集上测试了 DriveVLM 和 DriveVLM-Dual。

SUP-AD 数据集

SUP-AD 数据集是用本文的数据挖掘和标注方案构建的。它按照 7.5:1:1.5 的比例被分为训练、验证和测试集。作者在训练集上训练模型,在测试集上使用作者提出的场景描述和元动作评价方案来测试模型。作者也使用额外的数据集来 co-tuning 模型,确保 LLM 的泛化性。

nuScenes 数据集

nuScenes 数据集是一个大规模的城市场景的驾驶数据集,有 1000 个场景,每个场景长度大约为 20 秒。作者使用了 Displacement Error 和 Collision Rate 作为模型表现的评测指标。

Co-tuning

为了保留 LLM 在微调过程的泛化能力,作者使用多个数据集做 co-tuning。这些数据集包括 Talk2Car、BDDX、Drama、SUTD、LLAVA。对于每个数据集,作者根据 SUP-AD 和 nuScenes 数据集的体量,按照 1:1 的比例随机选择样本。然后,作者发现,在场景描述和元动作的评测方法下,SUP-AD 数据集的分数没有变,同时保留了 LLM 原来的能力和泛化性。

基线模型

作者使用 Qwen-VL 作为默认的视觉-语言模型,它在问答、视觉定位和文本识别方面具有很强的能力。它包括 96 亿个参数,包括视觉编码器(19亿)、视觉-语言适配器(8000万)、大语言模型(Qwen, 77亿)。将图像缩放为 448 × 448 448\times 448 448×448 的分辨率,然后输入视觉编码器。训练时,随机选择一组图像(当前时刻 T T T T − 1 T-1 T1 T − 2 T-2 T2 T − 3 T-3 T3)作为输入。确保了选取的图像包含了当前的时间,以递增的时间序列排列。

结果

SUP-AD

在表1中,作者展示了 DriveVLM 和其他几个 VLM 的性能。DriveVLM 使用了 Qwen-VL 作为主干,取得了最佳的表现,因为它在问答任务有着很强的表现。尽管 GPT-4V 在视觉和语言处理上有着鲁棒的性能,但它不能微调,只能通过上下文学习来获取新知识,在场景描述任务上,GPT-4V 可能会生成一些无关的额外信息。在本文的评价标准下,额外的信息通常会被归类为“幻觉”,使其在评价指标上的分数比较低。

上下文学习是指模型通过观察给定任务的示例来学习如何执行该任务,而不是通过传统的模型参数微调方式。

nuScenes

如下表所示,DriveVLM-Dual 在 nuScenes 规划任务上取得了 SOTA 的表现。证明本文的方法在常见的场景也能表现优异。

消融实验

模型设计

为了更好地理解 DriveVLM 各模块的作用,作者进行了不同组合的消融实验,如下表所示。重要目标分析使模型能够识别并优先处理驾驶场景中的重要元素,增强决策的准确率,使导航更加安全。融入 3D 感知结果后,模型能提升对周围环境的理解能力,预测得更加准确。

传统的 AD 流程

为了证明 DriveVLM-Dual 双系统设计的泛化性,作者在 nuScenes 验证集上测试了不同的传统的自动驾驶流程。如下表所示,DriveVLM-Dual 适应不同的 AD 流程。尽管单独的 MLP 方法与 VAD 有明显的差距,但 DriveVLM-Dual 变种方法都取得了几乎一致的性能,强调了双系统设计的效果和鲁棒性。

定性结果

下图展示了 DriveVLM 的定性结果。在左图中,DriveVLM 准确地预测了当前场景的条件,关于靠近的电动车,它做出了深思熟虑的规划决策。在右图中,DriveVLM 准确地理解了交警的手势,让自车向前行进,也考虑到了右边运动中的三轮车,因此做出了合理的决策。这些定性结果证明模型的优异性能,能理解复杂的场景、做出适合的驾驶规划。

上车部署和测试

作者在一辆部署了两块 OrinX 处理器的自动驾驶车辆上部署了 DriveVLM-Dual,将高频的端到端驾驶系统部署在 OrinX-1 上,将 DriveVLM 部署在 OrinX-2 上。这俩系统以异步的方式执行和协作。此外,作者优化了 DriveVLM,在 OrinX 上的推理速度达到了 410ms。视频验证效果可以在 https://www.youtube.com/watch?v=MMCO0TLMT74 观看。

作者进行了多项对比实验,为边端部署提供了一些思路。注意,所有的 VLMs 都是在常用的数据集和本文专门的自动驾驶数据集上预训练和微调的。

基线 LLM

由于车辆硬件的内存和带宽限制,作者无法使用过大的 LLM 来保持实时性。因此,作者选择了参数量低于 40 亿的模型。如下表所示,实验表明在 Orin 架构上,"层宽且层数少"的 Qwen 系列要比“层窄且层数多”的模型要推理得快。

视觉编码器

在自动驾驶领域,高分辨率图像对于细粒度视觉理解非常关键。如下表,与基础的 ViT 相比,作者研究了其他的视觉编码器,包括不同的 GridPatch 策略和位置编码插值方法。最终,为了实时推理,作者选择了更加简单的 SigLIP-L-384 模型和位置编码插值,能取得较高的分辨率输入。

视觉 Token 压缩

为了解决高分辨率图像带来的计算负担,作者使用 LDPNetV2 降低了 75 % 75\% 75% 的图像 tokens 个数,而没有牺牲表现,如下表所示。此外,作者将 LDPNetV2 的平均池化层替换为一个卷积层,增强表现。

视频输入

在自动驾驶场景,需要更多的时域上下文来准确地评价目标的运动变化。作者使用了一个短时间的 memory bank 策略,在一个特征队列中储存历史帧的视觉特征。只提取当前时刻的特征,和多个历史帧的特征融合,然后输入 LLM。除了时空池化,作者增加了 SE 模块来加权融合多个时域帧。

投机采样

使用投机采样来加速推理,抢先生成可能的输出。该方法显著提升了预测的速度,不会造成明显的准确率损失。如下表所示,作者测试了两种采样方法:Medusa 和 Eagle。Eagle 在解码延迟上取得了 2.7 × 2.7\times 2.7× 的加速,Medusa 取得了 2.17 × 2.17\times 2.17× 的加速,使实时的车载部署成为可能。

投机采样(Speculative Sampling)是一种用于加速大型语言模型(LLM)推理过程的方法。在自回归模型中,通常需要逐步串行地解码,每次生成一个Token,这个过程受限于内存访问带宽,成为推理速度的瓶颈。为了解决这个问题,投机采样采用了以下策略:

  • 使用两个模型:一个小型的草稿模型(Draft Model)和一个大型的目标模型(Target Model)。草稿模型参数较少,可以快速生成一系列Token,而目标模型则参数较多,生成质量更高。

  • 草稿模型生成Token:草稿模型首先生成一系列可能的Token序列。

  • 目标模型验证:然后,目标模型并行验证这些Token,如果验证通过,则接受这些Token作为输出。

Medusa和Eagle是两种采用投机采样策略的方法:

  • Medusa:Medusa方法遵循投机采样框架,通过增加多个解码头(Decoding Heads)来并行预测多个Token,从而减少推理延迟。Medusa的关键组件包括Medusa头和树注意力机制,这些组件可以提高生成效率,同时保持高准确率。

  • EAGLE:EAGLE方法则是在特征层面上进行投机采样,使用一个轻量级的自回归头(Auto-regression Head)来预测原始LLM的特征,然后使用原始LLM的冻结分类头来预测下一个词。这种方法通过在特征层面上进行预测,而不是直接在Token层面上,从而提高了效率。

SUP-AD 数据集

元动作

元动作统计

使用元动作序列来表示驾驶策略,元动作可以分类为 17 个类别。作者在下图中展示了每个元动作类别在元动作序列中排列第一、第二和第三的分布情况。这表明在 SUP-AD 数据集中,元动作相当的多样化。在下图中,作者也展示了每个场景中,元动作的长度分布。大多数场景包括两个或三个元动作,少数复杂的场景中包含了四个甚至更多的元动作。

元动作标注

根据未来帧的驾驶策略,人工标注每个场景的元动作序列。这些元动作包括一个完整的驾驶策略,和自车的未来轨迹保持一致。它们可以分为三个主要类别:

  • 速度-控制动作。通过分析自车的状态数据,特别时加速度和制动信号,可以识别出车辆正在进行的特定驾驶动作。这些动作包括:加速、减速、快速减速、缓慢直行、匀速直行、停止、等待、倒车
  • 转向动作。从转向信号可以推导出,这些动作包括左转、右转、调头
  • 车道控制动作。包括车道选择决策,这些动作是从方向盘信号和地图或感知数据的组合得到的。具体动作包括:向左变道、向右变道、轻微左移、轻微右移

场景类别

SUP-AD 数据集包括 1000 个驾驶场景的视频 clips。如下图所示,它包括了各种驾驶场景,超过 40 个类别。下面是一些场景的解释:

  • AEB 数据:自动紧急刹车数据。
  • 道路施工:临时的施工区域,有警告标志、路障和施工设施。
  • 近距离切入:其他车辆突然插入自车所在车道的行为。
  • 环岛:一种交通路口,车辆在一个连续的环形道路上行驶。
  • 动物横穿马路:动物在自动驾驶车辆前方横穿道路。
  • 刹车:人类驾驶员操作自车时踩下刹车。
  • 交警:交警在管理和指挥交通。
  • 切入到其他车辆:自车插入到其他车辆的车道中。
  • 匝道:连接高速公路主路和分支道路的弯曲道路。
  • 道路上的异物:道路上的各种碎片或垃圾。
  • 窄路:需要谨慎驾驶的狭窄道路。
  • 行人突然出现:行人突然在自动驾驶车辆前方出现,可能需要减速或刹车。
  • 公交车上的广告人物:公交车上的广告可能干扰感知系统,因为广告上的人物可能被误认为是真实的行人。
  • 并入高速:指从低速道路驶入高速道路,通常需要加速以匹配高速路上的车辆速度。
  • 障碍门:可以升起以阻挡道路的障碍物。
  • 倒下的树木:指道路上的倒树,需要谨慎驾驶以避免潜在危险。
  • 复杂环境:指需要谨慎驾驶的复杂驾驶环境。
  • 混合交通:指车辆、行人和自行车等在同一或相邻道路上出现的拥堵情况。
  • 过河:指通过桥梁过河。
  • 屏幕:指道路一侧的屏幕,可能会干扰感知系统。
  • 牛羊群:指乡村道路上的牛羊群,需要小心驾驶以避免惊扰这些动物。
  • 弱势道路使用者:指更容易在道路上受伤的使用者,如行人、自行车手和摩托车手。
  • 有碎石的道路:指布满碎石的尘土飞扬的道路。
  • 摩托车和三轮车:指这些类型的车辆可能出现在道路上。
  • 交叉路口:指多条道路相交的地方。
  • 持伞行人:指下雨天持伞的行人。
  • 载车车辆:指运输其他车辆的大型车辆。
  • 载树枝的车辆:指运输树枝或其他长物体的车辆。
  • 载管车辆:指运输管道的车辆。
  • 婴儿车:指推婴儿车的人。
  • 儿童:指在道路上可能出现的儿童。
  • 隧道:指通过山体或地下的道路。
  • 下行匝道:指从主路通往辅路的斜坡。
  • 人行道摊贩:指在人行道上设置的摊位。
  • 雨天:指下雨天气。
  • 穿越铁路:指穿越铁路轨道。
  • 无保护的U型转弯:指没有交通信号或标志的U型转弯。
  • 降雪:指下雪天气。
  • 大型车辆侵占:指大型车辆侵占道路。
  • 落叶:指秋天落叶覆盖道路。
  • 烟花:指节日或活动中燃放的烟花。
  • 洒水器:指用于浇灌道路两旁植被的洒水器。
  • 坑洼:指道路上的坑洞。
  • 翻倒的摩托车:指发生事故翻倒的摩托车。
  • 自燃和火灾:指车辆自燃或发生火灾。
  • 风筝:指可能在道路上空飞行的风筝。
  • 农业机械:指在农田或乡村道路上使用的农业机械设备。

标注示例

作者在下图中提供了一些示例。场景类别为翻倒的自行车和摩托车、牛群和羊群、倒下来的树、过河、障碍门和暴雪天气。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评测方法

自动驾驶方案能否准确地理解驾驶场景,做出合理恰当的决策非常重要。如本文所述,自动驾驶任务的 VLM 的评测主要关注在两个方面:场景描述/分析评测和元动作评测。

场景描述/分析评测

关于场景描述和分析评测,解释和表述驾驶场景具有固有的主观性,因为对于相似的场景,我们可以有多种有效的方法在文本上进行描述,使用一个固定的度量来评价场景描述就很困难。为了克服这一挑战,作者使用 GPT-4 来评价模型生成的场景描述和人工标注的描述之间的相似度。首先,通过提示 GPT-4 从每个场景描述中提取单独的信息片段。然后,将根据信息片段与人工标注的真实描述的匹配程度来打分,并汇总这些分数以得到整体的相似度评分。

场景描述的 ground-truth 标签包括环境描述和事件摘要两个部分。环境条件描述包括天气条件、时间条件、道路环境和车道条件。事件摘要则包括关键目标的特征和影响。作者利用 GPT-4 从环境描述和事件摘要中提取独特的关键信息。然后比较和量化提取的信息,以评估模型生成的描述和人工标注的描述之间的一致性。每个匹配的信息都会被分配一个分数,这个分数基于匹配的程度来估计:

  • 完全匹配:信息完全一致。
  • 部分匹配:信息部分一致。
  • 不匹配:信息不一致或丢失。

如果模型产生了不真实的信息(幻觉信息),则会从总分中扣除一定的分数作为惩罚。所有匹配对的分数汇总起来,就是场景描述的最终得分。

Score = 1.0 × n m a t c h e d + 0.5 × n p a r t i a l n g t − 0.25 × n h a l l u c i n a t i o n n g t \text{Score} = \frac{1.0 \times n_{matched} + 0.5 \times n_{partial}}{n_{gt}} - \frac{0.25 \times n_{hallucination}}{n_{gt}} Score=ngt1.0×nmatched+0.5×npartialngt0.25×nhallucination

为 GPT-4 设计的评估场景描述的提示是精心设计的,如下表所示。首先,使用一个角色提示来建立 GPT-4 作为一个智能和逻辑的评估者的身份,它需要具备适当的驾驶风格的全面理解。接着,提示中会指定输入的格式,告知 GPT-4 它的任务是将输出的描述和 ground-truth 描述进行比较。这种比较是基于从两个描述中提取和分析关键信息。GPT-4 需要从场景描述中提取关键信息,进行分析,以确定描述的准确性。最后,提示中会概述评分的标准,包括如何根据信息的匹配程度打分;提示中也会规定评价输出的格式,确保评估过程是结构化和系统的。

在这里插入图片描述

元动作评价

在自动驾驶的场景理解任务中,元动作是指高层次的决策选项,如变道、加速或减速等。评估这些元动作序列时,不仅要考虑元动作的数量,还要考虑它们在序列中的顺序安排。为了比较模型生成的元动作序列和人工标注的基准序列,作者使用了动态规划的方法。该方法类似于识别两个序列的最长子序列的方法。但在评估元行动序列时,还需要考虑两个额外的因素。

第一个因素就是不同元动作的权重差异。某些元行动,如“减速”(Slow Down)、“等待”(Wait)和“缓慢直行”(Go Straight Slowly),更多地强调的是态度而不是具体的行动。这些元行动在序列中的出现或缺失并不会改变驾驶决策的基本语义本质,而是修改驾驶策略,使其更加积极或更加谨慎。例如,“减速 -> 停止 -> 等待”的元行动序列传达的驾驶决策与只包含“停止”的序列相似。因此,这些序列不应该像其他元行动(如“左转”(Turn Left)或“向右变道”(Change Lane to the Right))那样受到同等程度的处罚。这些其他元行动通常涉及更明确的、对驾驶路径有显著影响的动作。由于这些元行动(如“减速”、“等待”、“缓慢直行”)通常被视为“保守行动”,在序列评估中,如果保守行动不匹配,不会像其他关键行动那样对总体得分产生严重影响,从而确保评估过程更加合理和细致。

第二个因素就是不同的元动作序列可能表达相同或相似的驾驶意图。例如,两个序列“向左变道 -> 加速 -> 匀速直行 -> 向右变道”和“向左变道 -> 快速加速 -> 匀速直行 -> 向右变道”都可能代表超车行为的有效方法。为了处理这种语义平等的情况,研究者们首先使用GPT-4生成具有可比较语义意义的变体序列,以及唯一的人工标注的真实元行动序列。在评估的序列匹配阶段,所有这些变体序列以及人工标注的真实序列都被考虑在内。然后,从所有这些序列中选择最高得分的匹配作为最终决策评估的确定性得分。这种方法确保了评估过程不仅考虑了精确的序列匹配,还考虑了可能表达相同驾驶策略的不同序列,从而提高了评估的准确性和灵活性。

在这里插入图片描述
动态规划的状态被保存在一个二维矩阵中,矩阵的每一行对应着基准序列中的一个元动作,每一列对应模型输出序列中的一个元动作,记作 S r , c S^{r,c} Sr,c。动态规划从两个序列的第一个元动作开始递归计算。二维矩阵的每个元素包含了当前匹配位置的最优得分,以及产生最优匹配的前一个匹配状态。动态规划算法有三个转换方程来处理不同的情况:

  • S m i s s i n g S_{missing} Smissing 表示缺失匹配,当基准序列中的元动作缺失时使用。
  • S r e d u n d a n t S_{redundant} Sredundant 表示冗余匹配,当模型生成序列中的元动作多余时使用。
  • S m a t c h i n g S_{matching} Smatching 表示成功匹配,当参考序列和模型生成序列在相应位置的元动作相同。

成功匹配是当参考序列的第 r r r 个位置和模型生成序列的第 c c c 个位置的元动作完全相同时,发生成功匹配。缺失匹配是参考序列的第 r r r 个位置的元动作没有匹配,提示比较参考序列的第 r − 1 r-1 r1 个位置和模型生成序列的第 c c c 个位置的元动作。冗余匹配是模型生成序列的第 c c c 个位置的元动作没有匹配,那么会进一步检查参考序列的第 r r r 个位置与模型生成序列的第 c − 1 c-1 c1 个位置。这些例子的转换等式如下所示:

在这里插入图片描述

其中, s m a t c h i n g = 1.0 s_{matching}=1.0 smatching=1.0 表示成功匹配的奖励得分。如果一个动作被认为是丢失或冗余,且被分类为保守动作,则惩罚项 p m i s s i n g p_{missing} pmissing p r e d u n d a n t p_{redundant} predundant 的分数为 0.5 0.5 0.5。如果一个动作不是保守的,则惩罚项为 1.0 1.0 1.0。该方法基于一个前提,忽略了一个重要的元动作或引入了一个不存在的动作,对动作序列的有效性所带来的伤害是相同的。最终得分 S c o r e a c t i o n Score_{action} Scoreaction 可以除以参考元动作序列的长度,

S c o r e a c t i o n = S r , c N r Score_{action}=\frac{S^{r,c}}{N_r} Scoreaction=NrSr,c

定性分析

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/434833.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日OJ题_牛客_HJ108求最小公倍数_C++_Java

目录 牛客_HJ108求最小公倍数_C_Java 题目解析 C代码 Java代码 牛客_HJ108求最小公倍数_C_Java 求最小公倍数_牛客题霸_牛客网 题目解析 A 和 B 的最小公倍数 A * B / 两者的最大公约数。最大公约数&#xff1a;辗转相除法。 C代码 #include <iostream> #includ…

【车联网安全】车端网络攻击及检测的框架/模型

参考标准&#xff1a; 《汽车数据安全管理若干规定&#xff08;试行&#xff09;》ISO/SAE 21434《道路车辆 网络安全工程》威胁分析和风险评估&#xff08;TARA&#xff09;ISO/DIS 24089R155法规的国标转换&#xff1a;《汽车整车信息安全技术要求》&#xff08;UN R155&…

Kafka:架构与核心机制

Apache Kafka 是一种高吞吐量的分布式消息队列&#xff0c;广泛应用于实时数据流处理和大数据架构中。本文将详细探讨 Kafka 的架构、Replica 管理、消息读取、分区策略、可靠性保障等核心机制。 1. Kafka 的架构 1.1 组件概述 Kafka 的架构由多个组件构成&#xff0c;主要包…

Ps:打开与置入

在 Adobe Photoshop 中&#xff0c;理解不同的“打开”和“置入”命令及其用途&#xff0c;可以根据不同的需求选择最佳方式来管理和编辑图像文件。 ◆ ◆ ◆ 打开 1、Ps菜单&#xff1a;文件/打开 File/Open 快捷键&#xff1a;Ctrl O 用于直接打开现有的图像文件。 打开的…

音视频入门基础:FLV专题(3)——FLV header简介

一、引言 本文对FLV格式的FLV header进行简介&#xff0c;FLV文件的开头就是FLV header。 进行简介之前&#xff0c;请各位先从《音视频入门基础&#xff1a;FLV专题&#xff08;1&#xff09;——FLV官方文档下载》下载FLV的官方文档《video_file_format_spec_v10_1.pdf》和…

【Python】FeinCMS:轻量级且可扩展的Django内容管理系统

在互联网飞速发展的今天&#xff0c;内容管理系统&#xff08;CMS&#xff09;成为了网站开发中的核心工具&#xff0c;尤其对于需要频繁更新内容的企业和个人站点而言&#xff0c;CMS 提供了极大的便利。市场上有许多不同的 CMS 工具可供选择&#xff0c;其中基于 Django 框架…

从Web2到Web3:探索下一代互联网的无限可能性

互联网经历了从Web1到Web2的重大变革&#xff0c;现在正迈向Web3。Web2通过社交媒体、电子商务和内容平台改变了我们的数字生活&#xff0c;但同时也伴随着中心化平台的垄断和用户数据被广泛控制的问题。而Web3的出现&#xff0c;则试图通过去中心化技术解决这些挑战&#xff0…

预售限制加强:Shopee越南调整优选卖家标准

自北京时间2024年10月14日起&#xff0c;Shopee将对越南跨境店铺的优选卖家标准进行重要更新。此次调整主要针对预售商品占比指标&#xff0c;旨在提升买家购物体验及平台整体服务质量。根据更新内容&#xff0c;如果卖家店铺在过去30天内预售商品的比例超过10%&#xff0c;该店…

Unreal Engine 5 C++: 插件编写03 | MessageDialog

在虚幻引擎编辑器中编写Warning弹窗 准备工作 FMessageDialog These functions open a message dialog and display the specified informations there. EAppReturnType::Type 是 Unreal Engine 中用于表示应用程序对话框&#xff08;如消息对话框&#xff09;返回结果的枚举…

tauri开发配置文件和文件夹访问路径问题

文件夹没权限&#xff1a;Unhandled Promise Rejection: path not allowed on the configured scope: /Users/song/Library/Application Support/com.pakeplus.app/assets/default.png 没有文件夹&#xff0c;需要先创建&#xff1a;Unhandled Promise Rejection: path: /Users…

宝塔环境下MinDoc的安装教程

安装 本教程只适用于CentOS 7&#xff0c;其它系统教程参考&#xff1a;Github地址。 1、下载MinDoc并解压 访问https://github.com/mindoc-org/mindoc/releases下载最新版本并解压 #创建一个目录 mkdir mindoc && cd mindoc#一般宝塔带wget和unzip&#xff0c;如果…

大语言模型知识点分享

1 目前主流的开源模型体系有哪些&#xff1f; Prefix Decoder 系列模型 核心点&#xff1a; 输入采用双向注意力机制&#xff0c;输出为单向注意力。双向注意力意味着输入的每个部分都可以关注到输入的所有其他部分&#xff0c;这在理解上下文时具有很强的优势。 代表模型&a…

CICD 持续集成与持续交付

一 、CICD是什么 CI/CD 是指持续集成&#xff08;Continuous Integration&#xff09;和持续部署&#xff08;Continuous Deployment&#xff09;或持续交付&#xff08;Continuous Delivery&#xff09; 1.1 持续集成&#xff08;Continuous Integration&#xff09; 持续集…

在公司网络环境下,无法访问公共网络时,可在插件端配置网络代理后使用通义灵码

在公司网络环境下&#xff0c;无法访问公共网络时&#xff0c;可在插件端配置网络代理后使用通义灵码。 通义灵码插件下载&#xff1a;通义灵码_智能编码助手_AI编程-阿里云 配置网络代理 公司网络通常使用 HTTP 代理服务器在网络流量发送到目标位置之前进行拦截&#xff0c;以…

LeetCode[中等] 17. 电话号码的字母组合

给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 思路 回溯法 log&#xff1a;当前结果数组&#xff1b;level&#xff1a…

vue-cli,element-plus,axios,proxy

一、vue-cli vue-cli俗称vue脚手架&#xff0c;是vue官方提供的快速生成vue 工程化项目的工具。 1.官网&#xff1a;https://cn.vuejs.org/ 中文官网: https://cli.vuejs.org/zh/ 特点&#xff1a;基于webpack&#xff0c;功能丰富且易于扩展&#xff0c;支持创建vue2和vu…

【学习笔记】手写 Tomcat 四

目录 一、Read 方法返回 -1 的问题 二、JDBC 优化 1. 创建配置文件 2. 创建工具类 3. 简化 JDBC 的步骤 三、修改密码 优化返回数据 创建修改密码的页面 注意 测试 四、优化响应动态资源 1. 创建 LoginServlet 类 2. 把登录功能的代码放到 LoginServlet 类 3. 创…

springcloud 面试题

什么是微服务&#xff1f; 本文导图&#xff1a;SpringCloud 梳理-ProcessOn 分布式架构CAP理论 CAP定理是分布式系统中最基础的原则&#xff0c;所以理解和掌握了CAP对系统架构的设计至关重要。分布式架构下所有系统不可能同时满足以下三点&#xff1a;Consisteny&#xff08…

一起发现CMake太美-02-CMake是什么CMake的运行原理

本系列课程的主要内容包括&#xff1a; 点击本课程的 链接 可以进入视频课程的学习。 下面介绍本系列课程的第二课的主要内容&#xff0c;本节课从CMake是什么&#xff0c;能做什么&#xff0c;以及CMake的远亲近邻入手&#xff0c;让大家对CMake有一个大致的了解。 1. CMak…

解释器模式原理剖析和Spring中的应用

解释器模式原理剖析和Spring中的应用 解释器模式 是一种行为型设计模式&#xff0c;它定义了一种语言的文法表示&#xff0c;并提供了一个解释器来处理该文法的表达式。解释器模式可以用于构建语法解释器&#xff0c;例如计算器、简单编程语言的解释器等。 核心思想&#xff1a…