DriveVLM 论文学习

news2024/9/29 13:55:46

论文链接: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.coloradmin.cn/o/2176919.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Git】克隆主项目,并同时克隆所有子模块

子模块 带有箭头的文件夹(relaxed_ik_core)通常表示这是一个 Git 子模块(submodule)。Git 子模块是一种嵌入式的 Git 仓库,它允许你在一个仓库中引用其他的 Git 仓库。换句话说,relaxed_ik_core 不是这个项…

uniapp实战教程:如何封装一个可复用的表单组件

在uniapp开发过程中,表单组件的使用场景非常广泛。为了提高开发效率,我们可以将常用的表单组件进行封装。本文将带你了解如何在uniapp中封装一个表单组件,让你只需要通过属性配置轻松实现各种表单,效果图如下: 一、准备…

《北方牧业》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问:《中国动物检疫》是不是核心期刊? 答:不是,是知网收录的正规学术期刊。 问:《中国动物检疫》级别? 答:省级。主管单位:河北省畜牧局 主办单…

【win11】关闭windows11系统的讲述人

如何关闭windows11系统的讲述人,经常误触启动 讲述人(Narrator) 设置里找到讲述人(Narrator) 开关讲述人及快捷键

物联网行业中天线定制的激光直接成型 (LDS)技术

01 什么是lds技术? 普通的手机天线都被安装在手机的主板上: 在当今的智能手机中,我们常见的手机天线通常都被巧妙地安装在手机的主板上。这些天线承担着接收和发送信号的重要任务,是实现通信功能的关键组件之一。 而 LDS 天线…

运放信号失真原因分析——增益带宽积,压摆率

运放失真原因分析——增益带宽积,压摆率 运放失真原因分析 运放失真原因分析——增益带宽积,压摆率一、压摆率二、仿真模拟电路1.OPAx333的增益带宽积以及压摆率参数2.将输入信号的频率设置为10kHz3.将输入信号的频率设置为25kHz4.失真原因分析 总结 一、…

【MySQL实战45讲4-5】索引

文章目录 索引的定义索引的常见模型哈希表有序数组二叉搜索树 InnoDB的索引模型索引维护页分裂页合并页分裂和页合并的影响避免页分裂 覆盖索引最左前缀原则索引下推 索引的定义 索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。一本500页的书&#x…

全开源/彩虹晴天多功能系统源码/知识付费系统/虚拟商城系统/完美可用+修复改良版

源码简介: 2024年最新全开源的彩虹晴天多功能系统源码,它可以作为知识付费系统、虚拟商城系统,完美可用,并且是修复改良版。 最让人兴奋的是,搭建这个系统完全不需要授权,不管是在国内还是国外的服务器&am…

Mybatis-Mapper接口方式

目录 配置方式和接口方式的区别 示例:Mapper接口方式实现数据库的CRUD 配置方式和接口方式的区别 Mybatis框架在配置方式的情况下,对数据库的CRUD操作直接通过SqlSession对象来操作,常用的方法有select、insert、update、delete等方法&…

企业内训|提示词工程师高阶技术内训-某运营商研发团队

近日,TsingtaoAI为某运营商技术团队交付提示词工程师高级技术培训,本课程为期2天,深入探讨深度学习与大模型技术在提示词生成与优化、客服大模型产品设计等业务场景中的应用。内容涵盖了深度学习前沿理论、大模型技术架构设计与优化、以及如何…

MySQL高阶1988-找出没所学校的最低分数要求

目录 题目 准备数据 分析数据 总结 题目 每年,学校会公布学生申请所需的最低分数要求。学校根据所有学生的考试成绩来决定其最低分数要求。 学校希望确保即使 每 一个满足分数要求的学生都申请该学校,学校也有足够的能力接纳每一个学生。学校也希望…

undeclared identifier ‘UNITY_PREV_MATRIX_M‘ - Unity Shader自己写URP,引用内部 hlsl

碰到这样的问题,居然非常淡定 这个链接里说了问题: 一个哥们A问,为什么include urp common.hlsl 提示莫名其妙 另一个哥们B说,这个issue 说了,可能是这个原因(也没正面答) 从issue我们知道&a…

手机软件何时统一——桥接模式

文章目录 手机软件何时统一——桥接模式凭什么你的游戏我不能玩紧耦合的程序演化合成/聚合复用原则松耦合的程序桥接模式桥接模式基本代码 手机软件何时统一——桥接模式 凭什么你的游戏我不能玩 时间:5月31日20点  地点:大鸟房间  人物…

从0学习React(5)---通过例子体会setState

上篇文章中,我们讲到了通过setState来更新组件的状态。我觉得上篇文章我讲的已经是比较详细的了,而且讲的很通俗易懂。但是上篇文章终归还是理论,没有实践,所以还是学了个表面而已。这篇文章我就结合一点实践来讲讲怎么使用这个se…

Java语言程序设计基础篇_编程练习题**18.37 (希尔伯特曲线)

目录 题目:**18.37 (希尔伯特曲线) 代码示例 代码逻辑解释 1. 初始化与布局 2. 绘制逻辑 3. 绘制过程 输出结果 题目:**18.37 (希尔伯特曲线) 希尔伯特曲线,由德国数学家希尔伯特于1891年第一个给出描述,是一种空间填充曲…

0108 Spring Boot启动过程

Spring Boot 的启动过程可以分为以下几个关键步骤: 1. SpringApplication 初始化 Spring Boot 应用的启动是通过调用 SpringApplication.run() 方法完成的。在这个过程中,Spring Boot 会通过 SpringApplication 类对应用进行初始化,包括设置…

ERP系统委外工单管理

1. 委外工单管理概念 1.1 定义与目的 委外工单管理是ERP系统中的一个关键组成部分,它涉及到将企业内部无法或不宜自行完成的生产任务,通过工单的形式委托给外部供应商进行加工、制造或服务的过程。委外工单管理的目的在于优化资源配置、降低生产成本、…

【Qt+Python项目构建】- 01-首次配置 Qt Creator 14.01 for Python

前言: 如何用QT实现Python的配置的交互界面。本文从0开始,进行实践的介绍。 在上一节里面,我们做了社区版本的配置: https://blog.csdn.net/yellow_hill/article/details/142597007?spm1001.2014.3001.5501 这一节&#xff0…

Android开发仿抖音底部加载进度条

Android开发仿抖音底部加载进度条 仿抖音底部加载进度条,从中间向两头伸的动画 一、思路: 自定义VideoLoadingBar控件 二、效果图: 三、关键代码: // 联系:893151960 public class VideoLoadingBar extends View …

阿布量化:基于 Python 的量化交易框架

阿布量化(AbuQuant) 是一个开源的量化交易框架,专为金融领域的研究者和交易者设计。它基于 Python 语言开发,提供了一整套从数据获取、策略开发、回测分析到交易执行的解决方案。阿布量化不仅能够帮助用户快速实现量化策略的设计与…