DriveWorld:一个预训练模型大幅提升检测+地图+跟踪+运动预测+Occ多个任务性能

本文主要是介绍DriveWorld:一个预训练模型大幅提升检测+地图+跟踪+运动预测+Occ多个任务性能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 写在前面

以视觉为中心的自动驾驶技术近期因其较低的成本而引起了广泛关注,而预训练对于提取通用表示至关重要。然而,当前的以视觉为中心的预训练通常依赖于2D或3D预训练任务,忽视了自动驾驶作为4D场景理解任务的时序特征。这里通过引入一个基于世界模型的自动驾驶4D表示学习框架“DriveWorld”来解决这一挑战,该框架能够从多摄像头驾驶视频中以时空方式进行预训练。具体来说,提出了一个用于时空建模的记忆状态空间模型,它由一个动态记忆库模块组成,用于学习时间感知的潜在动态以预测未来变化,以及一个静态场景传播模块,用于学习空间感知的潜在静态以提供全面的场景上下文。此外,还引入了一个任务提示,以解耦用于各种下游任务的任务感知特征。实验表明,DriveWorld在各种自动驾驶任务上取得了令人鼓舞的结果。当使用OpenScene数据集进行预训练时,DriveWorld在3D检测中实现了7.5%的mAP提升,在线地图中的IoU提升了3.0%,多目标跟踪中的AMOTA提升了5.0%,运动预测中的minADE降低了0.1m,占用预测中的IoU提升了3.0%,规划中的平均L2误差减少了0.34m。

2. 领域背景

自动驾驶是一项复杂的任务,它依赖于全面的4D场景理解。这要求获得一个稳健的时空表示,能够处理涉及感知、预测和规划的任务。由于自然场景的随机性、环境的部分可观察性以及下游任务的多样性,学习时空表示极具挑战性。预训练在从大量数据中获取通用表示方面起着关键作用,使得能够构建出包含共同知识的基础模型。然而,自动驾驶中时空表示学习的预训练研究仍然相对有限。

我们的目标是利用世界模型来处理以视觉为中心的自动驾驶预训练中的4D表示。世界模型在表示代理对其环境的时空知识方面表现出色。在强化学习中,DreamerV1、DreamerV2和DreamerV3利用世界模型将代理的经验封装在预测模型中,从而促进了广泛行为的习得。MILE利用3D几何作为归纳偏差,直接从专家演示的视频中学习紧凑的潜在空间,以在CARLA模拟器中构建世界模型。ContextWM和SWIM利用丰富的野外视频对世界模型进行预训练,以增强下游视觉任务的高效学习。最近,GAIA-1和DriveDreamer构建了生成性的世界模型,利用视频、文本和动作输入,使用扩散模型创建逼真的驾驶场景。与上述关于世界模型的先前工作不同,本文的方法主要侧重于利用世界模型学习自动驾驶预训练中的4D表示。

驾驶本质上涉及与不确定性的斗争。在模糊的自动驾驶场景中,存在两种类型的不确定性:偶然不确定性,源于世界的随机性;以及认知不确定性,源于不完美的知识或信息。如何利用过去的经验来预测可能的未来状态,并估计自动驾驶中缺失的世界状态信息仍然是一个未解决的问题。本文探索了通过世界模型进行4D预训练以处理偶然不确定性和认知不确定性。具体来说,设计了记忆状态空间模型,从两个方面减少自动驾驶中的不确定性。首先,为了处理偶然不确定性,我们提出了动态记忆库模块,用于学习时间感知的潜在动态以预测未来状态。其次,为了缓解认知不确定性,我们提出了静态场景传播模块,用于学习空间感知的潜在静态特征,以提供全面的场景上下文。此外,引入了任务提示(Task Prompt),它利用语义线索作为提示,以自适应地调整特征提取网络,以适应不同的下游驾驶任务。

为了验证提出的4D预训练方法的性能,在nuScenes训练集和最近发布的大规模3D占用率数据集OpenScene上进行了预训练,随后在nuScenes训练集上进行了微调。实验结果表明,与2D ImageNet预训练、3D占用率预训练和知识蒸馏算法相比,4D预训练方法具有显著优势。4D预训练算法在以视觉为中心的自动驾驶任务中表现出极大的改进,包括3D检测、多目标跟踪、在线建图、运动预测、占用率预测和规划。

3. 网络结构

DriveWorld的总体框架如下所示,由于自动驾驶严重依赖于对4D场景的理解,方法首先涉及将多摄像头图像转换为4D空间。在所提出的时空建模的记忆状态空间模型中,有两个基本组件:动态记忆库,它学习时间感知的潜在动态以预测未来状态;以及静态场景传播,它学习空间感知的潜在静态特征以提供全面的场景上下文。这种配置有助于解码器为当前和未来时间步重建3D占用和动作的任务。此外,基于预训练的文本编码器设计了任务prompt,以自适应地为各种任务解耦任务感知特征。

提出的记忆状态空间模型(MSSM)的总体架构。MSSM将传输的信息分为两类:时间感知信息和空间感知信息。动态记忆库模块利用运动感知层归一化(MLN)来编码时间感知属性,并与动态更新的记忆库进行信息交互。同时,静态场景传播模块使用BEV特征来表示空间感知的潜在静态信息,这些信息直接被传送到解码器。

虽然通过世界模型设计的预训练任务使得时空表示的学习成为可能,但不同的下游任务侧重于不同的信息。例如,3D检测任务强调当前的空间感知信息,而未来预测任务则优先考虑时间感知信息。过分关注未来的信息,如车辆未来的位置,可能会对3D检测任务产生不利影响。为了缓解这个问题,受到少样本图像识别中语义提示和多任务学习中视觉示例驱动的提示的启发,引入了“任务提示”的概念,为不同的头提供特定的线索,以指导它们提取任务感知特征。认识到不同任务之间存在的语义联系,利用大型语言模型来构建这些任务提示。

4. 损失函数

DriveWorld的预训练目标涉及最小化后验和先验状态分布之间的差异(即Kullback-Leibler(KL)散度),以及最小化与过去和未来3D占用,即CrossEntropy损失(CE)和L1损失。这里描述了模型在T个时间步上观察输入,然后预测未来L步的3D占用和动作。DriveWorld的总损失函数是:

5. 实验对比分析

数据集。在自动驾驶数据集nuScenes 和最大规模的3D占用数据集OpenScene 上进行预训练,并在nuScenes上进行微调。评估设置与UniAD 相同。

预训练。与BEVFormer 和UniAD 一致,使用ResNet101-DCN 作为基础骨干网络。对于3D占用预测,设置了16 × 200 × 200的体素大小。学习率设置为2×10−4。默认情况下,预训练阶段包含24个epoch。

微调。在微调阶段,保留用于生成BEV特征的预训练编码器,并对下游任务进行微调。对于3D检测任务,我们使用了BEVFormer 框架,微调其参数而不冻结编码器,并进行了24个epoch的训练。对于其他自动驾驶任务,我们使用了UniAD 框架,并将我们微调后的BEVFormer权重加载到UniAD中,对所有任务遵循标准的20个epoch的训练协议。对于UniAD,我们遵循其实验设置,这包括在第一阶段训练6个epoch,在第二阶段训练20个epoch。实验使用8个NVIDIA Tesla A100 GPU进行。

Occ任务和BEV-OD任务上的提升一览:

更多目标跟踪和规划任务性能提升一览:

 

参考文献

DriveWorld:一个预训练模型大幅提升检测+地图+跟踪+运动预测+Occ多个任务性能

DriveWorld: 4D Pre-trained Scene Understanding via World Models for Autonomous Driving 

这篇关于DriveWorld:一个预训练模型大幅提升检测+地图+跟踪+运动预测+Occ多个任务性能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Java使用MethodHandle来替代反射,提高性能问题

《Java使用MethodHandle来替代反射,提高性能问题》:本文主要介绍Java使用MethodHandle来替代反射,提高性能问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录一、认识MethodHandle1、简介2、使用方式3、与反射的区别二、示例1、基本使用2、(重要)

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

Python函数返回多个值的多种方法小结

《Python函数返回多个值的多种方法小结》在Python中,函数通常用于封装一段代码,使其可以重复调用,有时,我们希望一个函数能够返回多个值,Python提供了几种不同的方法来实现这一点,需要的朋友... 目录一、使用元组(Tuple):二、使用列表(list)三、使用字典(Dictionary)四、 使

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

Java的"伪泛型"变"真泛型"后对性能的影响

《Java的伪泛型变真泛型后对性能的影响》泛型擦除本质上就是擦除与泛型相关的一切信息,例如参数化类型、类型变量等,Javac还将在需要时进行类型检查及强制类型转换,甚至在必要时会合成桥方法,这篇文章主... 目录1、真假泛型2、性能影响泛型存在于Java源代码中,在编译为字节码文件之前都会进行泛型擦除(ty

Django之定时任务django-crontab的实现

《Django之定时任务django-crontab的实现》Django可以使用第三方库如django-crontab来实现定时任务的调度,本文主要介绍了Django之定时任务django-cront... 目录crontab安装django-crontab注册应用定时时间格式定时时间示例设置定时任务@符号

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删