DiffAD:自动驾驶的统一扩散建模方法

25年3月来自新加坡公司 Carion 和北航的论文“DiffAD: A Unified Diffusion Modeling Approach for Autonomous Driving”。

端到端自动驾驶 (E2E-AD) 已迅速成为实现完全自动驾驶的一种有前途的方法。然而,现有的 E2E-AD 系统通常采用传统的多任务框架,通过单独的特定任务头来处理感知、预测和规划任务。尽管以完全可微分的方式进行训练,但它们仍然遇到任务协调问题,并且系统复杂性仍然很高。这项工作引入 DiffAD——一种扩散概率模型,它将自动驾驶重新定义为条件图像生成任务。通过将异构目标栅格化到统一的鸟瞰图 (BEV) 上并对其潜分布进行建模,DiffAD 统一各种驾驶目标并在单一框架中联合优化所有驾驶任务,显着降低系统复杂性并协调任务协调。逆过程迭代细化生成的 BEV 图像,从而产生更稳健和逼真的驾驶行为。

实现全自动驾驶不仅需要对复杂场景有深入的理解,还需要与动态环境进行有效的交互,并全面学习驾驶行为。传统的自动驾驶系统建立在模块化架构之上,感知、预测和规划都是独立开发的,然后集成到车载系统中。虽然这种设计提供可解释性并方便调试,但跨模块的单独优化目标往往会导致信息丢失和错误积累。

最近的端到端自动驾驶 (E2E-AD) 方法(例如 [3、16、20])试图通过实现所有组件的联合、完全可微分训练来克服这些限制,如图 (a) 所示。然而,仍然存在几个关键问题:

  1. 次优优化:像 UniAD [16] 和 VAD [20] 这样的方法仍然依赖于顺序流水线,其中规划阶段取决于前面模块的输出。这种依赖性可能会放大整个系统的错误。
  2. 查询建模效率低下:当前基于查询的方法(例如 [16, 20])部署数千个可学习查询来捕获潜在的交通元素。这种方法导致计算资源分配效率低下,过多关注上游辅助任务而不是核心规划模块。例如,在 VAD 中,感知任务消耗了总运行时间的 34.6%,而规划模块仅占 5.7%。
  3. 协调复杂性:由于每个任务头都使用不同的目标函数独立优化,并且目标的形状和语义含义各不相同,因此整个系统变得支离破碎,难以进行连贯训练 [5]。

为了解决这些限制,本文提出一种范式 DiffAD,它将所有驾驶任务的优化统一到一个模型中,如图 (b) 所示。具体来说,将感知、预测和规划中的异​​构目标栅格化到统一的鸟瞰图 (BEV) 空间中,从而将自动驾驶问题重塑为条件图像生成问题之一。

请添加图片描述

扩散模型,也称为基于分数的生成模型 [14, 39, 42],在正向(扩散)过程中逐渐将噪声注入数据,并通过反向(去噪)过程从噪声中生成数据。

如图所示,DiffAD 由三个主要组件组成:潜在扩散模型、BEV 特征生成器和轨迹提取网络 (TEN)。

请添加图片描述

训练过程:

  1. 栅格化和潜空间编码:DiffAD 首先将感知、预测和规划目标栅格化为 BEV 图像。然后使用现成的 VAE 编码器将 BEV 图像压缩到潜空间以进行降维。
  2. 特征提取和转换:将周围视图图像输入到特征提取器中,该提取器将生成的透视图特征转换为统一的 BEV 特征。
  3. 用于噪声预测的扩散模型:将高斯噪声添加到潜 BEV 图像中以获得噪声潜图像。训练扩散模型以根据 BEV 特征预测来自噪声潜表示的噪声。
  4. 轨迹提取:训练基于查询的 TEN,从潜 BEV 图像中恢复自我智体的矢量化轨迹。

推理过程:

  1. 条件去噪:DiffAD 首先根据 BEV 特征,从纯高斯噪声中生成去噪的潜 BEV 图像。
  2. 规划提取:TEN 然后从潜 BEV 图像中提取自智体的规划轨迹。
  3. 解码 BEV:通过将潜 BEV 图像解码回像素空间,可以获得预测的 BEV 图像以供解释和调试。

据说开环评估不足以满足 E2E 模型的要求 [19, 26]。为了解决这个问题,用 Bench2Drive 数据集在 CARLA 模拟器中进行训练和闭环评估[8]。Bench2Drive 提供三个数据子集:mini(10 个剪辑用于调试)、base(1,000 个剪辑)和 full(10,000 个剪辑用于大规模研究)。按照 [19] 的方法,用基础子集进行训练。

训练。用来自 Stable Diffusion[36] 的现成预训练变分自动编码器 (VAE) 模型 [23]。VAE 编码器的下采样因子为 8。在所有实验中,扩散模型都在潜空间中运行。保留来自 DiT [34] 的扩散超参。为了促进学习过程,在第一阶段从感知部分(即检测和地图)的单幅图像学习开始,而预测和规划 BEV 图像则用零填充。然后在时间设置中与所有感知、预测和规划部分联合训练模型。

推理。利用 DDIM-10 采样器 [40] 进行推理,并使用官方评估工具 [19] 来计算闭环指标。对于车辆控制,采用官方提供的 PID 控制器。

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

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

相关文章

Python四大核心数据结构深度解析:列表、元组、字典与集合

在Python编程语言中,数据结构是组织和存储数据的基本方式。Python提供了四种内置的核心数据结构:列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)。这…

网络编程—Socket套接字(TCP)

上篇文章: 网络编程—Socket套接字(UDP)https://blog.csdn.net/sniper_fandc/article/details/146923670?fromshareblogdetail&sharetypeblogdetail&sharerId146923670&sharereferPC&sharesourcesniper_fandc&sharefro…

SkyWalking+Springboot实战(最详细)

本篇文章记录了作者在0到1学习SkyWalking的过程,记录了对SkyWalking的部署,学习,使用Bug解决等等过程 一、什么是SkyWalking 官方文档: Apache SkyWalkinghttps://skywalking.apache.org/ SkyWalking 是一个开源的分布式追踪、性…

Arduino示例代码讲解:Row-Column Scanning an 8x8 LED matrix with X-Y input LED矩阵

Arduino示例代码讲解:Row-Column Scanning an 8x8 LED matrix with X-Y input LED矩阵 Row-Column Scanning an 8x8 LED matrix with X-Y input LED矩阵功能概述硬件部分:软件部分:代码逐行解释定义常量定义变量`setup()` 函数`loop()` 函数`readSensors()` 函数`refreshScr…

多线程编程中的锁策略

目录 1.悲观锁vs乐观锁 关键总结 悲观锁: 乐观锁: 选择建议 用 悲观锁 当: 用 乐观锁 当: 2.重量级锁vs轻量级锁 选择建议 用 轻量级锁: 用 重量级锁: 3.挂起等待锁vs自旋锁 关键细节说明 选择…

负载均衡是什么,Kubernetes如何自动实现负载均衡

负载均衡是什么? 负载均衡(Load Balancing) 是一种网络技术,用于将网络流量(如 HTTP 请求、TCP 连接等)分发到多个服务器或服务实例上,以避免单个服务器过载,提高系统的可用性、可扩…

React-01React创建第一个项目(npm install -g create-react-app)

1. React特点 JSX是javaScript语法的扩展,React开发不一定使用JSX。单向响应的数据流,React实现单向数据流,减少重复代码,比传统数据绑定更简单。等等 JSX是js的语法扩展,允许在js中编写类似HTML的代码 const …

小程序中的网络请求

在小程序中,使用 wx.request( ) 这个方法来发送网路请求,整个请求的方式和 jQuery 里面的 $.ajax 方法是非常相似的。 在 wx.request( ) 这个方法中,接收一个配置对象,该配置对象中能够配置的项目如下表: 关于服务器…

jvm 的attach 和agent机制

Java 的 Attach 和 Agent 机制在实际应用中得到了广泛的成功应用,尤其是在监控、调试、性能分析、故障排查等方面。以下是这两种机制在实际场景中的一些成功应用案例: 1. 性能监控与分析 Java Agent 和 Attach 机制广泛应用于性能监控和分析&#xff0…

基于SpringBoot的“留守儿童网站”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“留守儿童网站”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统整体功能图 局部E-R图 系统首页界面 系统注册…

iPhone XR:一代神机,止步于此

什么样的 iPhone ,才配称为一代神机? 我曾经用过iPhone 4S、iPhone 6S Plus、iPhone 8 Plus,iPhone SE2、iPhone XR、iPhone 13、iPhone 14 Plus、iPhone 15/Pro。 不管硬件再怎么卷,不管囊中是否羞涩,主力机基本没考…

【VUE】RuoYi-Vue3项目结构的分析

【VUE】RuoYi-Vue3项目结构的分析 1. 项目地址2. RuoYi-Vue3项目结构2.1 整体结构2.2 package.json2.2.1 🧾 基本信息2.2.2 🔧 脚本命令(scripts)2.2.3 🌍 仓库信息2.2.4 📦 项目依赖(dependenc…

架构师面试(二十五):分布式存储 Leader 设计

问题 在非常多的分布式存储系统中,如:Zookeeper、Etcd、Kafka等,往往会存在一个 【Leader】 角色,并由该角色负责数据的写入,这样设计最主要的原因是什么呢? A. 唯一负责数据写入的 Leader 角色可以避免并…

使用YoloV5和Mediapipe实现——上课玩手机检测(附完整源码)

目录 效果展示 应用场景举例 1. 课堂或考试监控(看到这个学生党还会爱我吗) 2. 驾驶安全监控(防止开车玩手机) 3. 企业办公管理(防止工作时间玩手机) 4. 监狱、戒毒所、特殊场所安保 5. 家长监管&am…

GPT-4o从语义分割到深度图生成,大模型狂潮下的计算机视觉:技术进步≠替代危机

随着上周,GPT-4o原生多模态图像生成功能的推出,更多玩法也被开发出来。一夜之间,GPT-4o原生多模态能力的释放,让图像生成、语义分割、深度图构建这些曾需要专业工具链支持的复杂任务,变成了普通人输入一句话就能实现的…

Pytorch 张量操作

在深度学习中,数据的表示和处理是至关重要的。PyTorch 作为一个强大的深度学习框架,其核心数据结构是张量(Tensor)。张量是一个多维数组,类似于 NumPy 的数组,但具有更强大的功能,尤其是在 GPU …

小程序中跨页面组件共享数据的实现方法与对比

小程序中跨页面/组件共享数据的实现方法与对比 在小程序开发中,实现不同页面或组件之间的数据共享是常见需求。以下是几种主要实现方式的详细总结与对比分析: 一、常用数据共享方法 全局变量(getApp())、本地缓存(w…

vue中的 拖拽

拖拽总结 实现方式特点适用场景HTML5 原生拖拽 API✅ 直接使用 dataTransfer 进行数据传输 ✅ 兼容性好(大部分浏览器支持) ✅ 适合简单的拖拽场景低代码平台、表单生成器、组件拖拽Vue/React 组件库(如 Vue Draggable、SortableJS&#xff…

MySQL 函数(入门版)

目录 一、字符串函数 1、常用的字符串函数 2、函数演示 3、具体案例 二、数值函数 1、常用的数值函数 2、函数演示 3、具体案例 三、日期函数 1、常用的日期函数 2、函数演示 3、具体案例 四、流程函数 1、常用的流程函数 2、函数演示 3、具体案例 在MySQL中&a…

基于快速开发平台与智能手表的区域心电监测与AI预警系统(源码+论文+部署讲解等)

需要源代码,演示视频,ppt设计原稿资料,请文末卡片联系 !](https://i-blog.csdnimg.cn/direct/242d53cd069940b5b7a6db2bb031d406.png#pic_center)