UniGen:用于生成自动驾驶场景的初始智体状态和轨迹的统一建模

news2024/12/25 9:13:13

24年5月谷歌WayMo论文“UniGen: Unified Modeling of Initial Agent States and Trajectories for Generating Autonomous Driving Scenarios”。

本文介绍 UniGen,一种生成交通场景的新方法,用于通过仿真评估和改进自动驾驶软件。 其方法在一个统一的模型中对所有驾驶场景元素进行建模:新智体的位置、它们的初始状态以及它们未来的运动轨迹。 通过从共享的全局场景嵌入中预测所有这些变量的分布,确保最终生成的场景完全取决于现有场景所有可用的上下文。 将统一建模方法与自回归智体注入相结合,该方法基于所有现存智体及其轨迹调节每个新智体的放置和运动轨迹,从而产生了低碰撞率的真实场景。

如图所示:UniGEN 的自回归过程,用于迭代地将新智体注入场景中。 在每次迭代中,模型都会完全实例化新智体(以粉色突出显示)的初始状态(顶部)和未来轨迹(底部)。 新智体的所有属性都以场景上下文和现有智体的整个轨迹为条件(以白色显示)。

请添加图片描述
将交通场景表示为(R,S),其中R表示场景上下文,包括道路布局以及交通灯的位置和状态,并且S = {si},i ∈ {1,…, N } 代表场景中存在的 N 个智体。 每个智体的状态 si 特征是其初始状态 si0 及其位于 T 个时间步 t ∈ {1,…,T}的未来轨迹。 初始智体状态 si0 捕获位置 (xit , y0i ) 和其他属性,包括宽度 wi、长度 li、航向角 θ0i 和速度 v0i。 每个智体的未来轨迹由 {si1,…,siT} 捕获。

任务是生成一个完整的驾驶场景 (R, S),给定场景上下文 R 和一组初始智体 Sc ⊂ S(可能为空)。 换句话说,希望生成所有智体状态 p(S|R, Sc) 的条件分布。

如图所示是UniGen的整体设计。 该模型由一个共享场景编码器和三个独立的解码器头组成:一个用于生成新智体位置的占用预测器,一个用于初始化智体状态的属性预测器,以及一个用于生成未来运动的轨迹预测器。 除了从所有输入生成嵌入的共享全场景编码器之外,还有一个每新智体的Transformer编码器,它从每个新智体位置的有利位置对表示道路布局的折线进行编码。 除了全局场景嵌入之外,该编码器生成的道路布局编码还传递给智体属性解码器和智体轨迹解码器。

请添加图片描述
(a) 模型的稀疏输入包括道路布局的折线、代表交通信号灯的点以及从现有场景智体的 BEV 边框中均匀采样的点(如果有)。 (b) 这些点被编码成密集的场景嵌入。 三个独立的解码器预测要注入的新智体占用分布、它们的初始状态以及它们的未来轨迹。 © 占用解码器分别预测 C 个智体类的初始位置分布。 在每次迭代中,从占用热图中采样一个位置以注入新智体。 (d) 新智体的位置线性映射到密集场景嵌入中的位置,并提取该位置周围的特征块。 (e) 此外,以智体为中心的道路布局Transformer编码器提取并把归一化到注入位置坐标系的道路折线编码。 (f) 这种以智体为中心的道路布局编码与扁平化特征块融合,其通过1 层 MLP 从共享场景嵌入中提取。 (g) 将乘积馈送到属性解码器,将初始智体状态预测为 M模式的 5-D 多元混合分布。 (h) 对五个标量属性值进行采样,它们与采样的智体位置一起构成完整的初始智体状态。 (i) 除了来自 (f) 的融合特征编码之外,轨迹解码器还接收该初始智体状态,并预测一组 K 条轨迹以及跨越 T 个时间步长的相关概率。 每个轨迹路点都由 2D 高斯表示。 (j) 最后,从 K 个选择中采样单个轨迹。 至此,新智体已完全实例化。 新智体将添加到组件 (a) 中的场景输入中,并开始下一次迭代。 注意:在训练时,N 等于隐藏的真实智体数量。 在推理时,N 等于 1,用于在每次迭代中注入单个智体。

为了构建用于训练模型的真实数据,将真实智体随机分为两组输入和隐藏智体,将数据集中的每个真实场景转换为多个训练示例,如图所示。 被训练来预测隐藏智体的位置、属性和轨迹,仅将输入智体作为输入。 当生成每个真实示例时,首先对随机概率 pkeep 进行采样,以控制要保留在输入中的智体比例。 使用各种分数可以使模型在训练期间看到空旷和拥挤的场景。
请添加图片描述
这种方法在概念上类似于 BERT [24] 和掩码自动编码器 [25]。 随机掩码鼓励模型学习场景动态,以便能够预测隐藏的智体信息。 此外,由于每个真实场景都可以以多种不同的方式进行分割,因此该策略有效地增加了可用的训练数据量。

遵循 StopNet [13],用稀疏输入,它可以充分捕获静态场景上下文以及由智体边框的位置和范围捕获的场景动态元素。 更具体地说,道路布局由多段线表示,这些多段线映射车道中心、车道边界、道路边界、人行横道、减速带和停车标志的位置。 交通信号灯的状态也作为放置在交通控制车道的末端点输入到模型中。 此外,该模型还接收从任何现有或之前注入的场景智体鸟瞰图 (BEV) 边框内部均匀采样的点作为输入。 为了对智体轨迹进行编码,为每个时间步长布置单独的边框,并为每个时间步长采样单独的点网格。 这些点携带对所有相关属性进行编码的特征向量,包括位置、航向、速度和表示时间步长的 one-hot 向量。 尽管很稀疏,但这种输入表示使模型可以轻松查看智体边框占据的区域。

所有稀疏输入均使用 PointPillars 编码器 [26] 立即进行编码,其中每个pillar使用多层感知器(MLP)对其中的点进行编码,并使用最大池化从它们中生成单个特征向量。 使用 CoAtNet 主干网 [27] 对密集特征图进行进一步编码,以对不同Pillar特征之间的全局交互进行编码,共享编码器的输出是密集特征图。

密集占用解码器输出初始位置的分布,供新智体插入到场景中。 它接收共享编码器的输出作为输入,并使用卷积神经网络将其解码为大小为 H × W 的 C 个不相交占用网格,对应于 C 个不同的智体类,例如车辆、行人、骑自行车的人。 真值占用网格是通过渲染隐藏(屏蔽)智体的中心点来构建的,如上图所示。

虽然共享场景嵌入对于捕获智体和道路元素之间的全局交互很有用,但其低空间分辨率对于回归位置敏感属性(如方向)并不理想,对于相反车道中的两个附近智体来说,这可能完全不同。 为此,在预测智体属性和轨迹时,用以智体为中心的道路布局嵌入来增强共享场景嵌入。

对于每个新智体,从共享编码器的输出中,双线性采样 k × k × Dd 特征块,其中 k 是固定的超参数。 共享嵌入中补丁的位置是将场景中的初始智体位置 (xi0, y0i) 线性映射到密集特征图 Hd × Wd 中的位置来确定的。 对于每个智体,从以智体为中心的道路布局编码器获得 1 × Dr 特征向量。 这两个特征图被展平并通过1层MLP以获得1×D特征向量。

当新智体的位置 (xi0 , y0i ) 是从占用网格中采样时,其他初始状态属性由属性解码器预测。属性解码器为每个初始状态属性 a 预测 M 个不同的模式和相关概率。 受轨迹预测方法[28]的启发,用分类和回归项组成的损失函数来学习属性的分布。

采用基于 Transformer 的轨迹解码器以及 MultiPath++ [29] 和 Wayformer [28] 的损失。 然而,这些轨迹预测方法需要智体当前和最近位置,而该方法可以仅根据在地图上任意位置采样的特征来预测轨迹。 轨迹解码器采用与属性解码器相同的输入,即来自共享场景嵌入的补丁以及智体周围道路布局折线的每智体编码。 轨迹解码器还接收智体的初始位置和航向作为初始状态。 此时初始位置已经确定。 在评估和推理时,初始方向由从属性解码器的输出采样的属性确定。 在训练时,只需使用隐藏智体的真实状态。

用一种自回归方法,通过每次向场景中注入一个新智体,在推理时生成新场景。对于每个新智体,首先从占用网格中预测的智体位置分布中采样初始位置 (xi0, y0i )。 该采样位置用于提取预测初始状态属性分布所需的融合特征向量。 从此分布中采样一组属性即可实例化智体的初始状态。 该初始智体状态与融合特征向量一起用于预测智体未来轨迹的分布。 然后从该分布中采样特定轨迹以完全实例化并注入智体,完成自回归生成的一次迭代。 在下一次迭代中,新生成的智体将作为模型输入的一部分包含在内,影响模型生成的后续智体所有属性。 这种自回归方法与统一模型相结合,产生了智体初始状态和未来轨迹彼此一致的现实场景。

如图是一些UniGEN的例子:

请添加图片描述

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

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

相关文章

RabbitMq出现Not management user问题解决

在RabbitMq登录的时候突然弹出如下图: 提示“当前用户不是管理员用户”进入mq控制命令台下: windows版本在mq安装路径下的sbin下进入cmd弹出框; Linux版本没有测试; 输入以下命令: rabbitmqctl list_users 查询当…

python:__new__和__init__

python:__new__和__init__ 1 前言 在Python中,每个对象都有两个特殊的方法:__new__和__init__。这两个方法在对象的创建和初始化过程中起着重要的作用,但它们的功能和用法有所不同。 1.1 功能上的区别 __new__方法是Python中的…

【管理咨询宝藏101】普华永道并购尽调内部培训

【管理咨询宝藏101】普华永道并购尽调内部培训 【格式】PDF版本 【关键词】普华永道、兼并收购、尽职调查 【核心观点】 - 尽职调查的目的,发现潜在的致命缺陷,判断是否继续交易进程;发现潜在的问题,制定交易前后相应的应对措施。…

换个暴露又发一区(IF=10.1)!双样本孟德尔随机化+脂质组学发了高分

孟德尔随机化的热度一直很高,不少想发文的对此肯定又爱又恨。今天我们看的这篇文章就仅用了双样本孟德尔随机化的方法,看似显而易见的关系,竟然结合了脂质组学,立马升华,发表一区(IF10.1)&#…

ARIMA预测模型介绍

ARIMA(Autoregressive Integrated Moving Average)模型是一种常用的时间序列分析方法,能够对非平稳时间序列进行建模和预测。本文将详细介绍ARIMA模型的建模步骤,包括数据预处理、模型识别、参数估计和模型检验等环节,…

`unordered_map` 和 `unordered_set`

unordered —— 无序的,从表面上来看,与 map 和 set 不同之处就在于,unordered_map 和 unordered_set 无法保证插入数据是有序的; 尽管如此,由于这两种容器内部封装了“哈希桶”,可以实现快速查找数据 ——…

白话机器学习5:卷积神经网络(CNN)原理

1.神经元 激活函数f(z)的种类: 2.卷积方法种类 https://mp.weixin.qq.com/s/FXzTbMG64jr93Re31Db2EA 标准卷积(Standard Convolution): 特点:每个卷积核在输入数据的整个深度上滑动,计算输出特征图的一个元素。应用场…

STM32有什么高速接口吗?

STM32 有一些高速接口,比如 USART、SPI、I2C 等,这些接口可以用于与外部设备进行高速数据传输。我这里有一套stm32入门教程,不仅包含了详细的视频讲解,项目实战。如果你渴望学习stm32,不妨点个关注,给个评论…

JavaSE——集合框架一(2/7)-Collection集合的遍历方式-迭代器、增强for循环、Lambda、案例

目录 Collection的遍历方式 迭代器 增强for循环(foreach) Lambda表达式遍历集合 案例 需求与分析 代码部分 运行结果 Collection的遍历方式 迭代器 选代器是用来遍历集合的专用方式(数组没有选代器),在Java中…

【爬虫之scrapy框架——尚硅谷(学习笔记one)--基本步骤和原理+爬取当当网(基本步骤)】

爬虫之scrapy框架——基本原理和步骤爬取当当网(基本步骤) 下载scrapy框架创建项目(项目文件夹不能使用数字开头,不能包含汉字)创建爬虫文件(1)第一步:先进入到spiders文件中&#x…

LabVIEW开发RS422通信

LabVIEW开发RS422通信 项目围绕LabVIEW软件开发的程序在RS422通信技术检测方面的应用进行展开,通过软件编程将上位计算机虚拟化为检测设备,控制其通信端口与被测产品进行RS422通信,以此检验产品的性能优劣。该虚拟检测仪器在实际测试中表现出…

C++17新特性 结构化绑定

一、Python中的相似功能 熟悉python的应该对下面的代码很熟悉 def return_multiple_values():return 11, 7x, y return_multiple_values()函数返回一个元组,元组自动分配给了x和y。 二、C11中的元组 c11中就存在类似python元组的概念了: std::tupl…

【简单介绍下Milvus】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

CV每日论文--2024.5.10

1、Attention-Driven Training-Free Efficiency Enhancement of Diffusion Models 中文标题:扩散模型的注意力驱动的训练免费效率增强 简介:扩散模型在生成高质量和多样化图像方面取得了出色的表现,但其卓越性能是以昂贵的架构设计为代价的,特别是广泛使…

激光SLAM总结——Fast LIO / Fast LIO2 / Faster LIO

激光SLAM总结——Fast LIO / Fast LIO2 / Faster LIO 在之前的工作中有接触过LOAM,最近在工作中又接触到Faster LIO相关的工作,于是想着对Fast LIO / Fast LIO2 / Faster LIO这一系列工作进行一个简单的总结,以加深自己对激光SLAM算法的理解…

网络网络层之(5)IPv6协议

网络网络层之(5)IPv6协议 Author: Once Day Date: 2024年5月12日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文档可参考专栏:通信网络技术_Once-Day…

未授权访问:Docker未授权访问漏洞

目录 1、漏洞原理 2、环境搭建 3、未授权访问 4、通过crontab反弹宿主机shell 防御手段 今天继续学习各种未授权访问的知识和相关的实操实验,一共有好多篇,内容主要是参考先知社区的一位大佬的关于未授权访问的好文章,还有其他大佬总结好…

【机器学习】机器学习与人工智能融合新篇章:自适应智能代理在多元化复杂环境中的创新应用与演进趋势

🔒文章目录: 💥1.引言 🚋1.1 机器学习与人工智能的发展背景 🚌1.2 自适应智能代理的概念与重要性 🚐1.3 研究目的与意义 ☔2.自适应智能代理的关键技术 🛣️2.1 环境感知与信息处理技术 …

whisper报错:hp, ht, pid, tid = _winapi.CreateProcess [WinError 2] 系统找不到指定的文件。

in _execute_child hp, ht, pid, tid _winapi.CreateProcess(executable, args, FileNotFoundError: [WinError 2] 系统找不到指定的文件。 原因: 没装ffmpeg 或者 ffmpeg没添加到…

Nios实验使用串口输出“Hello Nios-II”字符到笔记本电脑

目录 实验过程 创建工程 修改程序 编译工程 运行项目 效果实现 总结 参考 实验过程 硬件设计见博主上篇博客 软件部分设计 下面使用 Nios II Software Build Tools for Eclipse 来完成当前项目的软件开发。 启动 Nios II SBT 按照下图所示点击 Nios II Software Build…