经典文献阅读之--DiffusionDrive(截断扩散模型用于端到端自动驾驶)

0. 简介

最近,扩散模型已经成为机器人策略学习的一种强大的生成技术,能够对多模式动作分布进行建模。利用其端到端自动驾驶的能力是一个有前途的方向。然而,机器人扩散策略中的大量去噪步骤和交通场景的更动态、开放世界的性质对以实时速度生成多样化的驾驶动作提出了实质性的挑战。为了解决这些挑战,《DiffusionDrive: Truncated Diffusion Model for End-to-End Autonomous Driving》提出了一种新的截断扩散策略,该策略结合了先前的多模式锚并截断扩散时间表,使模型能够从锚定高斯分布到多模式驾驶动作分布学习去噪。此外,我们设计了一个有效的级联扩散解码器,用于增强与条件场景上下文的交互。提出的模型,扩散驱动,证明了10×与普通扩散策略相比,减少了去噪步骤,只需两步即可实现卓越的多样性和质量。相关的代码将会在Github上开源。

1. 主要贡献

为了增强与条件场景上下文的交互,我们提出了一种高效的基于Transformer的扩散解码器,该解码器不仅与来自感知模块的结构化查询进行交互,还通过稀疏可变形注意机制与鸟瞰图(BEV)和透视图(PV)特征进行交互。此外,我们引入了一种级联机制,在每个去噪步骤中迭代地细化扩散解码器中的轨迹重建。

凭借这些创新,我们推出了DiffusionDrive,这是一种用于实时端到端自动驾驶的扩散模型。我们在以规划为导向的NAVSIM数据集上对我们的方法进行了基准测试,使用非反应性仿真和闭环评估。DiffusionDrive在NAVSIM navtest分割上以对齐的ResNet-34骨干网络实现了88.1 PDMS,显著超越了之前的最先进方法。即使与NAVSIM挑战赛获胜解决方案Hydra-MDP-V8192-W-EP [22]相比,该方案遵循VADv2,使用8192个锚定轨迹,并进一步结合后处理和额外监督,DiffusionDrive仍然通过直接从人类示范中学习并在不进行后处理的情况下推断,超越了1.6 PDMS,同时在NVIDIA 4090上以45 FPS的实时速度运行。

我们进一步在流行的nuScenes数据集[2]上验证了DiffusionDrive的优越性,通过开放循环评估,DiffusionDrive的运行速度比VAD快1.8倍,并且在相同的ResNet-50骨干网络下,L2误差降低了20.8%,碰撞率降低了63.6%,展示了最先进的规划性能。我们的贡献可以总结如下:

• 我们首次将扩散模型引入端到端自动驾驶领域,并提出了一种新颖的截断扩散策略,以解决在将普通扩散策略直接应用于交通场景时出现的模式崩溃和计算开销过大的问题。

• 我们设计了一种高效的基于变换器的扩散解码器,以级联方式与条件信息进行交互,从而实现更好的轨迹重建

• DiffusionDrive在没有额外复杂性的情况下,显著超越了之前的最先进方法,在相同骨干网络下,在NAVSIM navtest分割上实现了创纪录的88.1 PDMS,同时在NVIDIA 4090上保持45 FPS的实时性能。

• 我们定性展示了DiffusionDrive能够生成更具多样性和合理性的轨迹,在各种具有挑战性的场景中展现出高质量的多模态驾驶行为。

2. 初步介绍

2.1 初步任务表述

端到端自动驾驶以原始传感器数据作为输入,并预测自我车辆的未来轨迹。轨迹表示为一系列航点,记作 τ = { ( x t , y t ) } t = 1 T f \tau = \{(x_t, y_t)\}_{t=1}^{T_f} τ={(xt,yt)}t=1Tf,其中 T f T_f Tf 表示规划时间范围,而 ( x t , y t ) (x_t, y_t) (xt,yt) 是当前自我车辆坐标系下时间 t t t 每个航点的位置。

2.1 条件扩散模型

条件扩散模型将前向扩散过程视为逐渐向数据样本添加噪声,其定义为:

q ( τ i ∣ τ 0 ) = N ( τ i ; α ˉ i τ 0 , ( 1 − α ˉ i ) I ) , q(\tau^i | \tau^0) = \mathcal{N}(\tau^i; \sqrt{\bar{\alpha}^i} \tau^0, (1 - \bar{\alpha}^i) I), q(τiτ0)=N(τi;αˉi τ0,(1αˉi)I),

其中 τ 0 \tau^0 τ0 是干净的数据样本, τ i \tau^i τi 是时间 i i i 的带噪声数据样本(注意:我们使用上标 i i i 表示扩散时间步)。常数 α ˉ i = ∏ s = 1 i α s = ∏ s = 1 i ( 1 − β s ) \bar{\alpha}^i = \prod_{s=1}^{i} \alpha^s = \prod_{s=1}^{i} (1 - \beta^s) αˉi=s=1iαs=s=1i(1βs),其中 β s \beta_s βs 是噪声调度。我们训练反向过程模型 f θ ( τ i , z , i ) f_\theta(\tau^i, z, i) fθ(τi,z,i),以在条件信息 z z z 的指导下从 τ i \tau^i τi 预测 τ 0 \tau^0 τ0,其中 θ \theta θ可训练的模型参数。在推理过程中,训练好的扩散模型 f θ f_\theta fθ 逐步从在高斯分布中采样的随机噪声 τ T \tau_T τT 精炼到预测的干净数据样本 τ 0 \tau_0 τ0,其定义为:
p θ ( τ 0 ∣ z ) = ∫ p ( τ T ) ∑ i = 1 T p θ ( τ i − 1 ∣ τ i , z ) d τ 1 : T . p_\theta(\tau^0 | z) = \int p(\tau^T) \sum_{i=1}^{T} p_\theta(\tau^{i-1} | \tau^i, z) d\tau^{1:T}. pθ(τ0z)=p(τT)i=1Tpθ(τi1τi,z)dτ1:T.

3. 调研内容

3.1 将Transfuser [6] 转变为条件扩散模型

我们从代表性的确定性端到端规划器Transfuser [6] 开始,通过简单地用条件扩散模型UNet替换回归多层感知器(MLP)层,转变为生成模型TransfuserDP,遵循经典扩散策略 [5]。在评估过程中,我们随机采样噪声,并通过20个步骤逐步精炼它。表2显示,TransfuserDP在规划质量上优于确定性的Transfuser。

3.2 模式崩溃

为了进一步研究经典扩散策略在驾驶中的多模态特性,我们从高斯分布中采样了20个随机噪声,并使用20个步骤对其进行去噪。如图2所示,不同的随机噪声在去噪过程中收敛到相似的轨迹。为了定量分析模式崩溃现象,我们定义了一个基于每个去噪轨迹与所有去噪轨迹的并集之间的平均交并比(mIoU)的模式多样性评分D:

D = 1 − 1 N ∑ i = 1 N Area ( τ i ∩ ∑ j = 1 N τ j ) Area ( τ i ∪ ∑ j = 1 N τ j ) , D=1− \frac{1}{N} \sum_{i=1}^{N} \frac{\text{Area}(\tau_i \cap \sum_{j=1}^{N} \tau_j)}{\text{Area}(\tau_i \cup \sum_{j=1}^{N} \tau_j)} , D=1N1i=1NArea(τij=1Nτj)Area(τij=1Nτj),

其中, τ i \tau_i τi表示第 i i i个去噪轨迹, N N N是采样轨迹的总数, ∑ j = 1 N τ j \sum_{j=1}^{N} \tau_j j=1Nτj所有去噪轨迹的并集。更高的mIoU值表示去噪轨迹的多样性较低。表2中的定量模式多样性结果进一步验证了图2中所呈现的观察结果。
在这里插入图片描述

图2. Transfuser、TransfuserDP 和 DiffusionDrive 在 NAVSIM navtest 划分的挑战场景中的定性比较。使用来自前置摄像头和激光雷达的相同输入,DiffusionDrive 实现了最高的规划质量,获得了表2中所示的最高得分轨迹。我们在前视图中渲染了 DiffusionDrive 预测的多样化轨迹(以高亮显示)。图 (a) 和 (b) 显示,DiffusionDrive 的最高得分轨迹在直行和左转时均与真实轨迹紧密匹配。此外,DiffusionDrive 的前十名得分轨迹展示了高质量的变道能力——这是在多模式的 TransfuserDP 中未观察到的,而 Transfuser 则无法实现这一点。

3.3 去噪开销较重

DDIM [29] 扩散策略需要20个去噪步骤将随机噪声转化为可行轨迹,这引入了显著的计算开销,使得每秒帧数(FPS)从60降至7,如表2所示,这使得其在实时在线驾驶应用中变得不切实际。
在这里插入图片描述

表1. 在规划导向的NAVSIM导航测试分割上,使用闭环指标的比较。“C&L”表示同时使用相机和激光雷达作为传感器输入。“V8192”表示8192个锚点。“Hydra-MDP-V8192-W-EP”是Hydra-MDP [22] 的一个变体,经过进一步训练以适应EPe评估指标,并从基于规则的评估器获得额外的监督,同时使用加权置信度后处理。Diffusion Drive仅从人类演示中学习,并在没有后处理的情况下进行推断。最佳和第二佳结果用粗体和下划线表示。
表2. 从Transfuser到Diffusion Drive的路线图,基于NAVSIM导航测试分割。“TransfuserDP”表示使用经典DDIM扩散策略 [5] 的Transfuser。“TransfuserTD”表示使用截断扩散策略的Transfuser。“Step Time”表示每个去噪步骤的运行时间。“FPS”和运行时间是在NVIDIA 4090 GPU上测量的。“D”表示在公式(3)中定义的模式多样性评分。

4. 截断扩散

人类驾驶遵循固定的模式,这与经典扩散策略中的随机噪声去噪不同。基于此,我们提出了一种截断扩散策略,该策略从锚定的高斯分布开始去噪过程,而不是标准高斯分布。为了使模型能够学习从锚定的高斯分布到所需驾驶策略的去噪,我们在训练过程中进一步截断扩散计划,仅向锚点添加少量高斯噪声。

4.1 训练

我们首先通过向训练集上通过K-Means聚类得到的锚点 { a k } k = 1 N anchor \{a_k\}^{N_{\text{anchor}}}_{k=1} {ak}k=1Nanchor 添加高斯噪声来构建扩散过程,其中 a k = { ( x t , y t ) } t = 1 T f a_k = \{(x_t, y_t)\}^{T_f}_{t=1} ak={(xt,yt)}t=1Tf。我们截断扩散噪声计划,以将锚点扩散到锚定的高斯分布:
τ k i = α ˉ i a k + ( 1 − α ˉ i ) ϵ , ϵ ∼ N ( 0 , I ) , (4) \tau^i_k = \sqrt{\bar{\alpha}^i a_k + (1 - \bar{\alpha}^i) \epsilon}, \quad \epsilon \sim N(0, I), \tag{4} τki=αˉiak+(1αˉi)ϵ ,ϵN(0,I),(4)

其中 i ∈ [ 1 , T trunc ] i \in [1, T_{\text{trunc}}] i[1,Ttrunc] T trunc ≪ T T_{\text{trunc}} \ll T TtruncT 是截断的扩散步骤。

在训练过程中,扩散解码器 f θ f_\theta fθ N anchor N_{\text{anchor}} Nanchor 个噪声轨迹 { τ k i } k = 1 N anchor \{\tau^i_k\}^{N_{\text{anchor}}}_{k=1} {τki}k=1Nanchor 为输入,预测分类分数 { s ^ k } k = 1 N anchor \{\hat{s}_k\}^{N_{\text{anchor}}}_{k=1} {s^k}k=1Nanchor去噪轨迹 { τ ^ k } k = 1 N anchor \{\hat{\tau}_k\}^{N_{\text{anchor}}}_{k=1} {τ^k}k=1Nanchor

{ s ^ k , τ ^ k } k = 1 N anchor = f θ ( { τ k i } k = 1 N anchor , z ) , (5) \{\hat{s}_k, \hat{\tau}_k\}^{N_{\text{anchor}}}_{k=1} = f_\theta(\{\tau^i_k\}^{N_{\text{anchor}}}_{k=1}, z), \tag{5} {s^k,τ^k}k=1Nanchor=fθ({τki}k=1Nanchor,z),(5)

其中 z z z 表示条件信息。我们将与最近锚点最接近的噪声轨迹分配给真实轨迹 τ gt \tau_{\text{gt}} τgt 作为正样本 ( y k = 1 y_k = 1 yk=1),其余作为负样本 ( y k = 0 y_k = 0 yk=0)。训练目标结合了轨迹重建和分类:

L = ∑ k = 1 N anchor [ y k L rec ( τ ^ k , τ gt ) + λ BCE ( s ^ k , y k ) ] , (6) L = \sum^{N_{\text{anchor}}}_{k=1} [y_k L_{\text{rec}}(\hat{\tau}_k, \tau_{\text{gt}}) + \lambda \text{BCE}(\hat{s}_k, y_k)], \tag{6} L=k=1Nanchor[ykLrec(τ^k,τgt)+λBCE(s^k,yk)],(6)

其中 λ \lambda λ 平衡简单的 L1 重建损失 L rec L_{\text{rec}} Lrec 和二元交叉熵 (BCE) 分类损失。

4.2 推理

我们使用一种截断去噪过程,该过程从锚定高斯分布中采样的噪声轨迹开始,并逐步将其去噪至最终预测。在每个去噪时间步,来自上一步的估计轨迹被传递给扩散解码器 f θ f_\theta fθ,后者预测分类分数 { s ^ k } k = 1 N infer \{\hat{s}_k\}^{N_{\text{infer}}}_{k=1} {s^k}k=1Ninfer 和坐标 { τ ^ k } k = 1 N infer \{\hat{\tau}_k\}^{N_{\text{infer}}}_{k=1} {τ^k}k=1Ninfer。在获得当前时间步的预测后,我们应用 DDIM [29] 更新规则以采样下一时间步的轨迹。

…详情请参照古月居

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

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

相关文章

使用BMFont创建适用于Unity的艺术字

最近经常使用艺术字,虽然之前的工作经验我知道只需要修什么哪些就可以弄好艺术字的创建和间隔,所以打算做个总结,接下来分为以下几步(其中会有补充,最后会有如何解决unity艺术字的字距问题) 第1步 下载BMF…

区间和并—acwing

题目一:区间和并 803. 区间合并 - AcWing题库 代码 PII存储区间,排序左端点。first存左端点。 遍历区间,考虑边界情况。每访问一个区间,都更新为最右边的那个端点(max) 是否合并区间通过,该区间&#x…

C语言程序设计P6-1【应用指针进行程序设计 | 第一节】——知识要点:指针的概念、定义和运算、指针变量作函数的参数

知识要点:指针的概念、定义和运算、指针变量作函数的参数 视频: 目录 一、任务分析 二、必备知识与理论 三、任务实施 一、任务分析 输入两个整数,按大小顺序输出,要求用函数处理,而且用指针类型的数据作函数参数…

Ubuntu系统下部署大语言模型:Ollama和OpenWebUI实现各大模型的人工智能自由

之前在window下安装过 Ollama和OpenWebUI搭建本地的人工智能web项目(可以看我之前写的文章),无奈电脑硬件配置太低,用qwen32b就很卡,卡出PPT了,于是又找了一台机器安装linux系统,在linux系统下测试一下速度能否可以快一些。 系统硬件介绍 Ubuntu 22.04.4 LTS CPU: i5…

算法知识-16-树

一、树的基本概念 度(Degree) 一个结点的子树个数,称为这个结点的度。 树中各结点度的最大值,称为这棵树的度。 深度(Depth) 一棵树中所有的结点层次的最大值称为树的深度。 二、二叉树的概念 定义 …

学习threejs,加载天地图

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️Web墨卡托投影 二、&#x…

DCI format2_6会配置在哪些cell上去接收?

根据38.213中的描述,DCI format 2_6可以在PCell和SpCell上检测,而相关cell的定义如上。

C++多线程实战:掌握图像处理高级技巧

文章结尾有最新热度的文章,感兴趣的可以去看看。 本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,用中立态度客观事实描述事情本身 导读 在当今的计算世界中,…

深度优先遍历(DFS)

深度优先遍历(DFS) 1. 计算布尔二叉树的值2. 求根节点到叶节点数字之和3.二叉树剪枝4.验证二叉搜索树5. 二叉搜索树中第 K 小的元素6. 二叉树的所有路径 深度优先遍历(DFS,全称为Depth First Traversal),是…

免费下载 | 2024算网基础设施成熟度研究报告

《2024算网基础设施成熟度研究报告(2023年)》的核心内容概括如下: 算网基础设施总体发展态势: 算网基础设施成为数字化转型的坚实底座,推动算力与网络的深度融合。 算网基础设施已上升为各国信息战略的重要抓手。 算…

ITK-腐蚀

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 腐蚀原理 ‌‌图像形态学腐蚀是图像处理中的一种基本操作,主要用于图像细化、目标提取、去除小的干扰物体以及在特定…

MySQL多表查询时有哪些连接方式?

大家好,我是锋哥。今天分享关于【MySQL多表查询时有哪些连接方式?】面试题。希望对大家有帮助; MySQL多表查询时有哪些连接方式? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 MySQL 中进行多表查询时,常见的连接方式有以下…

Ollama管理本地开源大模型,用Open WebUI访问Ollama接口

现在开源大模型一个接一个的,而且各个都说自己的性能非常厉害,但是对于我们这些使用者,用起来就比较尴尬了。因为一个模型一个调用的方式,先得下载模型,下完模型,写加载代码,麻烦得很。 对于程序的规范来说,只要东西一多,我们就需要一个集中管理的平台,如管理python…

Docker 安装 sentinel

Docker 安装系列 1、拉取 [rootTseng ~]# docker pull bladex/sentinel-dashboard Using default tag: latest latest: Pulling from bladex/sentinel-dashboard 4abcf2066143: Pull complete 1ec1e81da383: Pull complete 56bccb36a894: Pull complete 7cc80011dc6f: Pull…

Python实现中国象棋

探索中国象棋 Python 代码实现:从规则逻辑到游戏呈现 中国象棋,这款源远流长的棋类游戏,承载着深厚的文化底蕴与策略智慧。如今,借助 Python 与 Pygame 库,我们能够在数字世界中复刻其魅力,深入探究代码背后…

Spring--07-01---@Transactional注解失效的8大场景

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Transactiona1.默认回滚:RuntimeException 1.Transactional注解失效的8大场景1.数据库引擎是否支持事务3.方法不是public的4.自身调用5.数据源没有配置事…

SMMU软件指南SMMU编程之寄存器

安全之安全(security)博客目录导读 本博客介绍了SMMUv3的编程接口: • SMMU寄存器 • 流表(Stream table) • CD(Context Descriptor) • 事件队列(Event queue) • 命令队列(…

负载均衡oj项目:介绍

目录 项目介绍 项目演示 项目介绍 负载均衡oj是一个基于bs模式的项目。 用户使用浏览器向oj模块提交代码,oj模块会在所有在线的后端主机中选择一个负载情况最低的主机,将用户的代码提交给该主机,该主机进行编译运行,将结果返回…

python 基于 docx 文件模板生成 docx 或 PDF 文件

需求背景 提供一个Word文档模板,使用python程序替换里边的占位符,替换内容包括文本和图片,然后输出docx或者PDF文件。 功能演示 输入示例 输出示例 实现程序 import os import shutil import subprocess import timefrom docx import Doc…

使用 Ansys Fluent 对气体泄漏检测进行建模

了解使用 Ansys Fluent 仿真气体泄漏和确保安全的前沿技术。 挑战 气体泄漏对人类安全和环境构成重大风险。及早检测气体泄漏可以防止潜在的灾难,包括爆炸、火灾和有毒物质暴露。有效的气体泄漏检测系统对于石油和天然气、化学加工和住宅基础设施等行业至关重要。…