SparseDrive - 清华地平线开源的e2e的框架

news2024/11/14 22:31:42

清华地平线合作开发的e2e的框架

SparseDrive资源
论文 https://arxiv.org/pdf/2405.19620
git https://github.com/swc-17/SparseDrive

个人觉得该文章厉害的地方

  1. 纯sparse mapping, 3d detection方案, 用的检测头sparse4D V3 sparsev1v2v3基本一致,map也是稀疏检测。这对落地的可能性大大提升。
  2. 使用两阶段实现了e2e,第一阶段mapping和3d detection的训练,第二阶段固定mapping和3d detection对planning和motion prediction训练。 这解决收敛难得问题,虽然分了两步,但是是比较实际得方案。

之前只关注了obstacle得部分,和个人得工作内容有关,最近看它得map实现也是基于sparse实现得,觉得还挺神奇得,看了它得消融实验和maptr比还是掉点得。58.7降低到56.2。 sparse得细节内容看 sparsev1v2v3

SparseDrive

整体结构

在这里插入图片描述

整体的SparseDrive的框架结构包含image encoder, symmetric sparse perception and parallel motion planner

  • image encoder:包含backbone和neck;
  • symmetric sparse perception module:特征图 I 由两组实例组成。这两组实例分别代表周围的obstacle和map,然后被输入到并行motion planner中,与初始化的自车实例进行交互。
  • motion planner:同时预测周围obstacle和自车的轨迹,并通过分层规划选择策略选择一条安全的轨迹作为最终的规划结果。

Symmetric Sparse Perception

代码实现内容: map和detection都有个InstanceBank
  • get: 拿anchor,feature,cached_feature,cached_anchor,time_interval
  • update: reffine后根据cls得分update anchor和feature
  • Cache: 该bs结束后,cache topk(confidence, self.num_temp_instances, instance_feature, anchor)
  • get_instance_id
  • update_instance_id
    MotionPlanning中有一个InstanceQueue来负责管理map和detection的结果的储存
  • get:输入detection的检测结果和map的mask以及feature等,
    • prepare_motion:使用detection结果对instance_feature_queue,anchor_queue更新
    • prepare_planning:使用feature_maps,map的mask对ego_feature_queue,ego_anchor_queue,ego_period进行更新
    • 融合temperal信息输出ego_feature, ego_anchor, temp_instance_feature, temp_anchor, temp_mask也就是planning的输入
  • cache_motion
  • cache_planning
anchor的理解

针对这个模块,是sparse头得基础实现,是由6层这样的模块重复实现而生,每次都在更新anchor和feature来获得最终得feature和anchor。bs是batch size.

  • 3d anchor: bs * 900 * 11 表征方式 [x,y,z,w,h,l,yaw,vx,vy,vz] (vcs坐标系)
    • 900 是3D的num query的数目
    • 11是代表一个3D检测框的属性,中心点,长宽高,角度,3个维度的速度
  • map anchor: bs * instance num * sample num * 2 (vcs坐标系) => reshape成 bs* [ instance num * sample num] * 2
    • instance num 最大instance的数目
    • sample num 每个instance采样的点
    • 2点的x,y坐标系
      在这里插入图片描述
      anchor会经过投影获得图像上的点在deformable aggregation在feature上进行采样,获得2D和3D的链接,这deformable aggregation这个方案的最重要理解的地方。

Parallel Motion Planner

  • Ego Instance Initialization: 对于ego feature Fe使用前视相机的最小featuremap进行初始化;对于ego anchor Be和车辆差不多一致初始化
  • Spatial-Temporal Interactions:由于自车实例在初始化时没有时间信息,而时间对于规划非常重要,设计了一个的实例记忆队列进行时间建模,H是4存储帧的数量。自车实例与周围的参与者进行拼接,以获得参与者级别的实例
    在这里插入图片描述
    下图是周围物体和自车的轨迹预测和对应得分:
    在这里插入图片描述

Km是Kp是运动预测和规划的模式数量,Tm 和 Tp 是运动预测和规划的未来时间戳数量,Ncmd 是规划的驾驶命令数量。

End-to-End Learning

  • 分阶段训练
    • stage1 从头开始训练对称稀疏感知模块,以学习稀疏场景表示;
    • stage2 稀疏感知模块和并行motion planer一起训练,没有冻结模型权重,充分利用端到端优化的优势。
  • Loss Functions: det+map+motion+plan+depth

消融实验

Backbone SparseDrive-S ResNet50 image size is 256×704. SparseDrive-B, ResNet101 512×1408
3D detection:49.6% mAP and 58.8% NDS;
multi-object tracking:50.1% AMOTA, ID switch of 632
online mapping: mAP of 56.2%
motion prediction: minADE 0.60 EPA↑ 0.555
planning: L2↓ 1s 0.29m; 3s 0.91m; Col. Rate(碰撞率)↓ 1s 0.01 3s 0.13
在这里插入图片描述

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

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

相关文章

秒懂:父子进程

1.概念 在操作系统中,当一个进程(称为父进程)创建另一个新进程(称为子进程)时,父子进程之间建立了一种特殊的关系。 2.创建父子进程的方法 2.1 fork()函数详解: fork 是一个系统调用&#xff0…

Qt 加载 WPS 时提示要登录

项目中Qt加载word时 默认用wps打开word文档 程序一运行老是提示要立即登录 看着很烦 可以按下面的方法去掉这个烦人的东西 在下面的项目中新建字符串enableforceloginforfirstinstalldevice,值为false即可。

品聚文化--打造票圈神话

热烈祝贺鸿玉祥安文票9月5号正式启动运营 尊敬的各位领导、合作伙伴、客户以及全体品聚的家人们 今天,我们迎来了公司文票正式启动这一历史性的时刻,在此,我谨代表公司及全体员工,向所有关心和支持我们发展的朋友们表示最热烈的祝…

Java进阶13讲__第十讲

IO流、File 1. File 1.1 创建对象 1.1.1 File指向 指向文件 File f1 new File("E:\\TableFace\\Finished\\合同审核.txt"); 指向文件夹 File f2 new File("E:\\TableFace\\Finished"); 指向不存在文件 File f2 new File("E:\\T…

用最简单的话来解释大模型中的Transformer架构

开篇 我个人的观点是要想系统而又透彻地理解 Transformer,至少要遵循下面这样一个思路(步骤): 理解NLP基础 在探讨Transformers之前,了解自然语言处理(NLP)的一些基本知识至关重要。NLP使计算机能够理解和生成自然语…

GEE数据集:美国国家结构清单(NSI)用于评估和分析自然灾害的点式结构清单

简介 国家结构清单 国家结构清单(NSI)是一个数据库系统,其中包含不同质量和空间覆盖范围的结构清单。 NSI 数据库的目的是促进存储和共享用于评估和分析自然灾害的点式结构清单。 洪水风险是主要用途,但每个结构都有足够的数据来…

prompt实用技巧-竞对分析-飞书发布会上多维表和低代码平台原型分析

prompt engineer 工程师的一天 ,竞品分析相关。 “作为企业软件咨询公司整理出uipath,salesforce,airtable,zapier的官网地址,功能点详情,优势,劣势 生成表格4*4,表头为:uipath,salesforce,airtable,zapier, 第一例为&…

Nvidia股价反弹,博雅分析师力挺“行业首选”

在周四的交易中,Nvidia(NVDA)股价成功收复部分失地,上涨1%,这一积极走势得益于博雅全球研究公司(美国银行全球研究)发布的一份看涨报告。博雅分析师重申了对Nvidia的“行业首选”评级&#xff0…

『功能项目』Unity本地数据库读取进入游戏【29】

本章项目成果展示 打开上一篇28Unity连接读取本地数据库的项目, 本章要做的事情是通过读取本地数据库登录进入游戏场景 首先创建一个脚本文件夹: 新建脚本:MySqlAccess.cs 编写脚本:MySqlAccess.cs using UnityEngine; using MyS…

自定义v-model的两种形式

1 使用update (1)在组件中使用v-model"value" (2)props中接收modelValue (3)然后在value值发生变化的时候:this.$emit("update:modelValue", this.value); (4&…

【压力测试】如何确定系统最大并发用户数?

一、明确测试目的与了解需求 明确测试目的:首先需要明确测试的目的,即为什么要确定系统的最大并发用户数。这通常与业务需求、系统预期的最大用户负载以及系统的稳定性要求相关。 了解业务需求:深入了解系统的业务特性,包括用户行…

大语言模型(LLM)如何更好地继续预训练(Continue PreTraining)

预训练(Pretraining)是一个非常消耗资源的工作,尤其在 LLM 时代。随着LLama2的开源,越来越多人都开始尝试在这个强大的英文基座模型上进行中文增强。但,我们如何才能保证模型在既学到「中文知识」的情况下,…

这本PyTorch官方出品的《Deep Learning With PyTorch》终于有了中文版!

导读: 一些线上或线下的关于PyTorch的课程和大学里的计划课程,以及大量的线上博客和教程,使得PyTorch学习起来更容易。然而,关于PyTorch的图书很少。随着本书的出版,我们最终有了一本关于PyTorch的官方权威著作。 它非…

下载适用于 Linux 的 MongoDB Shell教程

下载适用于 Linux 的 MongoDB Shell教程 下载地址 MongoDB Shell Download | MongoDB 2、往下拉,选择Linux对应的版本下载

怎么快速入门大模型技术——AI大模型学习方法

“ 师父领进门,修行在个人 ” 有两个成语,一个是事半功倍,一个是事倍功半;为什么会有这种情况?‍‍‍‍‍‍‍ 原因就是方式方法的问题,有些人掌握了正确的方法就会觉得做什么事都顺风顺水,事…

电脑黑屏开不了机怎么办?教你4招轻松解决

在使用电脑的过程中,有时候会遇到电脑黑屏开不了机的情况。这种问题确实让人感到困惑和焦虑,因为它意味着硬件故障或者系统问题。本文将针对电脑黑屏开不了机的原因进行分析,并提供相应的解决方法,帮助大家快速解决这一问题。 操作…

孙宇晨:区块链领域的时代先锋,每一步引领未来趋势

​孙宇晨,这位在区块链领域崭露头角的青年企业家,凭借着敏锐的洞察力和坚定的决心,成为了数字经济时代的领航者。他的每一步,都走在技术创新的最前沿,推动着区块链技术的发展与应用,给全球经济带来了深远的…

智慧水务:“六变形战士”,这很全面!

在当今快速发展的智慧城市建设中,‌水务管理作为城市运行的重要一环,‌其智能化、‌高效化的需求日益凸显。‌为了满足这一需求,‌一款全新的智慧水务平台——“六边形战士”应运而生,‌它以“生产管网营销运营调度APP”六大核心功…

测试CUDA __threadfence的行为

CUDA __threadfence测试 一.测试小结二.复现过程三.截图 测试CUDA __threadfence的行为 一.测试小结 测例0:没有任何同步,执行到leftt0时,left的数据未加载完成,出现long soreboard的stall 405次测例1:__threadfence会等待memory数据加载完成,leftt0没有出现long scoreboard的…

基于golang实现简单的文件监控

基于golang实现简单的文件监控 package mainimport ("log""syscall""unsafe" )type FileNotifyInformation struct {Action uint32Name string }func Fswatch(path string) (chan FileNotifyInformation, error) {handle, err : syscall.Crea…