即插即用!高德西交的PriorDrive:统一的矢量先验地图编码,辅助无图自动驾驶

Driving with Prior Maps: Unified Vector Prior Encoding for Autonomous Vehicle Mapping

在这里插入图片描述

论文主页:https://misstl.github.io/PriorDrive.github.io/

论文链接:https://arxiv.org/pdf/2409.05352

代码链接:https://github.com/missTL/PriorDrive

写在前面&笔者的个人理解

最近出现了很多先验地图的论文,高德地图和西交的这篇工作PriorDrive也给出了他们的方法。使用车载传感器来在线构建高精地图已经成为一种很有前途的解决方案;然而,由于遮挡和恶劣天气等,这些方法可能会受到数据不完整的阻碍。本文提出了PriorDrive框架,通过利用先验地图来解决这些限制,显著提高了在线高精地图构建的鲁棒性和准确性。PriorDrive集成了各种先验地图,例如OpenStreetMap的SDMap,图商提供的过时高精地图,以及根据历史车辆数据预测的在线局部地图。为了有效地将这些先验信息编码到在线建图模型中,本文引入了一种混合先验表示(HPQuery)来表示所有地图元素。 PriorDrive的核心是统一矢量编码器(UVE),采用双重编码机制来处理任意的矢量数据。此外,本文提出了一种片段级和点级的矢量预训练策略,以提高UVE编码器的泛化性。通过对nuScenes数据集的广泛测试,证明PriorDrive与各种在线建图模型高度兼容,并大大提高了地图预测能力。通过PriorDrive框架整合先验地图,为单次感知的挑战提供了强大的解决方案,为更可靠的自动驾驶汽车导航铺平了道路。读完发现这篇文章提出的范式可以即插即用到其他矢量任务,特别是提出的UVE和预训练。

总的来说,本文的贡献如下:

1、本文介绍了一种统一的矢量编码器(UVE),它通过双重编码机制有效地编码各种矢量数据:矢量内编码器捕获精细的局部特征,而矢量间编码器融合全局上下文信息。

2、本文提出了一种向量数据的预训练范式,通过在片段级和点级别添加高斯噪声或掩码来学习向量数据的先验分布,并重建整个矢量地图。

3、本文提出了一个混合先验表示(HPQuery)来表示所有元素,并提出了一个带有矢量先验地图的PriorDrive框架来解决单次感知的局限性。对nuScenes数据集的综合评估表明, PriorDrive显着提高了在线地图模型的性能。
在这里插入图片描述

相关工作回顾

在线矢量高精地图构建。与基于SLAM的方法离线构建HDMaps不同,最近的研究直接使用车载传感器实现在线构建HDMaps,以降低成本并提供最新的道路。一些方法将HDMaps构建视为分割任务来预测像素级的光栅化地图,但是需要复杂的后处理以进行矢量化构建。所以后续的工作试图构建一个端到端的矢量化地图学习框架。VectorMapNet探索了关键点表示和从粗到细的两阶段网络。MapTR提出了点集的置换等效建模和类似DETR的一阶段网络。然而这些方法仅依赖于车载传感器的单次感知,在处理具有挑战性的场景(如遮挡或不利的天气)存在局限性。

基于先验地图的在线建图。最近的研究开始结合先验地图来提升模型建图性能。P-MapNet将SDMap编码为额外的条件分支,并利用masked autoencoder来捕捉HDMap的先验分布。NeuralMapPrior维护和更新全局神经地图先验,这种表示会自动更新自身并提高局部地图推理的性能。MapEX设计了三种合理类型的现有地图并改进基于查询的地图估计模型的匹配算法。现有的研究经常忽略了在线历史预测地图,本文将其作为先验地图为当前感知提供所需信息。并且本文直接以矢量的形式对现有的各种先验地图进行了广泛的研究。

基于掩码的预训练方法。在自然语言处理和计算机视觉领域,掩码预训练已经成为自监督表示学习的一种有效策略。BERT使用掩码语言建模来预测具有双向上下文的随机掩码token。Masked AutoEncoder (MAE)会屏蔽掉输入图像的随机patches,并根据未屏蔽的patches进行重建。与以前主要为文本和图像设计的工作不同,本文提出了面向矢量数据的预训练范式。

概述PriorDrive
在这里插入图片描述

集成方法

先验地图特征的提取。本文提出的UVE作为一个统一的矢量编码器,可以直接编码各种矢量数据信息,如位置 ( x , y ) (x,\:y) (x,y)、方向 ( v x , v y ) (v_{x},\:v_{y}) (vx,vy)和点的类型(c)。使用表示点 p = [ x , y , v x , v y , c ] p\:=\:[x,y,v_{x},v_{y},c] p=[x,y,vx,vy,c],向量通常由多个有序的点集合组成, v = v= v= [ p 1 , p 2 , … , p n ] [p_1,p_2,\ldots,p_n] [p1,p2,,pn] ,其中n变化。先验地图由多个向量组成, M p r i o r = { v 1 , v 2 , … , v m } M_{prior}=\{v_{1},v_{2},\ldots,v_{m}\} Mprior={v1,v2,,vm}其中m是可变的。用 E u v e E_{uve} Euve表示UVE模型,对先验地图特征的提取过程,记为 f p r i o r f_{prior} fprior,可表示为:
f p r i o r = E u v e ( M p r i o r ) . f_{prior}=E_{uve}(M_{prior}). fprior=Euve(Mprior).

集成方法。本文总共提出了多种方法将先验地图特征整合到在线建图模型中。对于没有可学习查询Q的方法,如HDMapNet,本文直接reshape先验特征 f p r i o r f_{prior} fprior,并使用Deconv上采样来匹配BEV特征的形状,然后将其与BEV特性连接,并通过Conv对齐:
f b e v ∗ = C o n v ( c a t [ f b e v , D e c o n v ( r e s h a p e ( f p r i o r ) ) ] ) , f_{bev}^*=Conv(cat[f_{bev},\:Deconv(reshape(f_{prior}))]), fbev=Conv(cat[fbev,Deconv(reshape(fprior))]),

对于基于可学习查询Q的方法,如矢量化模型MapTR系列,本文提出了包含add/replace/concat三种操作的HPQuery。具体来说,Q通常由两部分组成, Q = { q i j } i = 0 , j = 0 m , n = Q=\{q_{ij}\}_{i=0,j=0}^{m,n}= Q={qij}i=0,j=0m,n= { q i i n s + q j p t } i = 0 , j = 0 m , n \{q_{i}^{ins}\:+\:q_{j}^{pt}\}_{i=0,j=0}^{m,n} {qiins+qjpt}i=0,j=0m,n , q i i n s q_i^{ins} qiins q i p t q_{i}^{pt} qipt分别表示实例级和点级的可学习查询。先验特征也由实例级特征和点级特征组成, f p r i o r = { ( f i i n s , f j p t ) } i = 0 , j = 0 m ′ , n ′ f_{prior}=\{(f_{i}^{ins},f_{j}^{pt})\}_{i=0,j=0}^{m^{\prime},n^{\prime}} fprior={(fiins,fjpt)}i=0,j=0m,n。因此,本文分别在实例级和点级与查询Q交互。add/replace/concat三种操作的HPQuery可以分别表示为:

q i j ∗ = q i i n s . a d d ( f i i n s ) + q j p t . a d d ( f j p t ) , q_{ij}^*=q_i^{ins}.add(f_i^{ins})+q_j^{pt}.add(f_j^{pt}), qij=qiins.add(fiins)+qjpt.add(fjpt),

q i j ∗ = q i i n s . r e p l a c e ( f i i n s ) + q j p t . r e p l a c e ( f j p t ) , q_{ij}^*=q_i^{ins}.replace(f_i^{ins})+q_j^{pt}.replace(f_j^{pt}), qij=qiins.replace(fiins)+qjpt.replace(fjpt),

q i j ∗ = c o n c a t [ q i i n s , f i i n s ] + c o n c a t [ q j p t , f j p t ] . q_{ij}^*=concat[q_i^{ins},\:f_i^{ins}]+concat[q_j^{pt},\:f_j^{pt}]. qij=concat[qiins,fiins]+concat[qjpt,fjpt].

UVE模型结构
在这里插入图片描述

受BERT在文本相关任务上的启发,本文提出了一个统一的矢量编码器(UVE),将矢量点类比为单词,矢量地图元素类比为句子。

Hybrid Prior Embedding. 对于给定的先验地图,本文首先构造UVE的输入,称为混合先验嵌入(Hybrid Prior Embedding,HPE)。本文使用正弦嵌入获得(x, y)和(v_x, v_y)的点位置嵌入和方向嵌入。本文将这两个嵌入拼接为点级嵌入。 为了获得整个矢量的特征表示,本文在每个矢量的开头添加一个特殊的[VEC]标记,并使用该标记的嵌入作为实例级嵌入。 此外,本文引入了可学习的实例嵌入和类型嵌入来区分矢量实例。为了保证点的顺序,本文还引入了二维可学习位置嵌入。最后,这些嵌入被聚合成HPE,然后作为UVE的输入嵌入。

Intra and Inter-Vector Encoder. 由于矢量点本身的信息量有限,学习矢量实例的概念对模型来说具有挑战性,需要矢量内的点之间进行更多的交互,以增强每个点对同一矢量中其他点的感知能力。因此,UVE编码器使用M层矢量内注意编码器和N层矢量间注意力编码器,使用注意掩蔽机制促进不同矢量实例内部和之间的特征交互。通过这种双重编码机制,UVE可以深度理解和表示矢量数据,为在线高精地图建设等关键任务提供有力支持。

预训练:位置建模
在这里插入图片描述

由于在线建图模型的推理能力有限,历史预测地图存在一定的误差。因此,本文使用位置建模对UVE进行预训练,以提高其编码和降噪能力。

Noise & Mask Generator. 噪声主要分为片段级噪声和点级噪声。在点级噪声中,随机噪声被添加到整个地图上5%矢量点。对于段级噪声,在随机选择10\%的地图元素后,将随机噪声添加到子矢量段内的所有矢量点。使用 M o r g M_{org} Morg表示原始地图元素,加入高斯噪声的过程可以用以下公式表示:
M o r g ∗ = M o r g [ r a n d o m i n d e x ] + ϵ , M_{org}^*=M_{org}[random_index]+\epsilon, Morg=Morg[randomindex]+ϵ,
其中 ϵ ∼ N ( 0 , 1 ) \epsilon\sim\mathcal{N}(0,1) ϵN(0,1)是一个随机高斯噪声,它只被添加到每个点的横纵坐标上。

与添加噪声类似,添加掩码选择也分为点级和片段级。选择要添加掩码的点后,这些点的坐标将被掩码为-1。
M o r g ∗ = M o r g [ r a n d o m i n d e x ] . r e p l a c e ( M a s k ) . M_{org}^*=M_{org}[random_index].replace(Mask). Morg=Morg[randomindex].replace(Mask).
Loss Function. 本文将矢量地图经过噪声掩码生成器后送入UVE编码,然后使用MLP对所有矢量点的坐标进行解码,并计算到真实坐标的平均欧几里德距离作为监督:
L = R M S E ( P , m l p ( E u v e ( M o r g ∗ ) ) ) , \mathcal{L}=RMSE(P,\:mlp(E_{uve}(M_{org}^{*}))), L=RMSE(P,mlp(Euve(Morg))),

其中 P = { ( x i , y i ) } i = 0 k P=\{(x_{i},y_{i})\}_{i=0}^{k} P={(xi,yi)}i=0k代表 M o r g M_{org} Morg中所有的矢量点。

实验分析

主要结果
在这里插入图片描述

为了评估本文的方法在不同模型架构、评估指标和矢量先验图中的有效性,本文将uve编码的先验地图集成到HDMapNet和矢量化模型MapTRv2中。SD地图提供的先验信息主要由简单中心线骨架组成,导致了最小的改进,分别提升3.0 mAP和1.9 mIoU。对于基于查询的模型,本文的方法有更大的改进,因为本文提出的HPQuery更好地利用了先验信息。提供最新道路状况的在线局部地图带来了更显著的改进分别提升 4.2 mAP和2.2 mIoU的增强中。这些结果表明局部地图通过提供更全面和最新的信息有助于提高性能。下图说明了在线局部地图有效地恢复遮挡的车道分隔线、人行横道和道路边界。虽然离线高精地图的精度很高,但由于缺乏完整的先验信息,分别提升了3.6 mAP和3.2 mIoU。此外,本文使用更严格的阈值0.5m来评估结果,SD地图、在线局部地图和过时高精地图分别提升了4.1 map、6.1 map和5.7 map。这些结果强调了本文的方法在更严格的评价条件下提供了更实质性的改进。总的来说,本文的方法在所有不同先验建图的基线模型中展示了一致的性能改进,突出了其通用性和对其他建图框架的潜在适用性。
在这里插入图片描述

结论

在本文中介绍了一个新的框架PriorDrive,它有效地利用各种类型的先验地图来提高自动驾驶汽车在线高精地图构建的准确性和鲁棒性。本文的方法的核心是UVE,本文设计它来有效地编码各种矢量数据。通过综合实验,本文证明了UVE与本文提出的预训练策略相结合,显著提高了最先进的映射模型的性能。本文的方法不仅解决了动态和复杂环境中实时高精地图构建相关的挑战,而且还提供了一个可扩展的解决方案,随着时间的推移不断提高地图精度。迭代使用历史预测地图作为先验,导致逐步细化的地图输出,从而确保最新的道路信息可用于自主导航。

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

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

相关文章

基于python+django+vue的学生成绩管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于协同过滤pythondjangovue…

用Python解决综合评价问题_模糊综合评价,决策树与灰色关联分析

一:模糊综合评价 模糊综合评价是一种有效的处理不确定性和模糊性的评价方法,特别是在人才评价等领域。它允许我们综合考虑多个评价指标,并给出一个综合的评价结果。以下是利用模糊综合评价对人才进行评价的步骤: 确定评价指标&am…

Git常用指令整理【新手入门级】【by慕羽】

Git 是一个分布式版本控制系统,主要用于跟踪和管理源代码的更改。它允许多名开发者协作,同时提供了强大的功能来管理项目的历史记录和不同版本。本文主要记录和整理,个人理解的Git相关的一些指令和用法 文章目录 一、git安装 & 创建git仓…

【AI大模型】ChatGPT模型原理介绍(上)

目录 🍔 什么是ChatGPT? 🍔 GPT-1介绍 2.1 GPT-1模型架构 2.2 GPT-1训练过程 2.2.1 无监督的预训练语言模型 2.2.2 有监督的下游任务fine-tunning 2.2.3 整体训练过程架构图 2.3 GPT-1数据集 2.4 GPT-1模型的特点 2.5 GPT-1模型总结…

深度学习-神经网络

文章目录 一、基本组成单元:神经元二、神经网络层三、偏置与权重四、激活函数1.激活函数的作用2.常见的激活函数1).Sigmoid2).Tanh函数3).ReLU函数 五、优点与缺点六、总结 神经网络(Neural Network, NN)是一种模拟人类大脑工作方式的计算模型…

Debian11.9镜像基于jre1.8的Dockerfile

Debian11.9基于jre1.8的Dockerfile编写 # 使用Debian 11.9作为基础镜像 FROM debian:11.9 # 维护者信息(建议使用LABEL而不是MAINTAINER,因为MAINTAINER已被弃用) LABEL maintainer"caibingsen" # 创建一个目录来存放jre …

LabVIEW提高开发效率技巧----VI服务器和动态调用

VI服务器(VI Server)和动态调用是LabVIEW中的两个重要功能,可以有效提升程序的灵活性、模块化和可扩展性。通过这两者的结合,开发者可以在运行时动态加载和调用VI(虚拟仪器),实现更为复杂的应用…

【我的 PWN 学习手札】Unsortedbin Attack

前言 Unsortedbin Attack不能说是一种getshell的方式,而只能说是一种利用手法。在glibc2.28之前有效,条件是存在uaf,效果是能在某一地址写一个大数(glibc上的一个地址)。 一、Unsortedbin的unlink过程 unsortedbin …

Android Framework(六)WMS-窗口显示流程——窗口内容绘制与显示

文章目录 窗口显示流程明确目标 窗户内容绘制与显示流程窗口Surface状态完整流程图 应用端处理finishDrawingWindow 的触发 system_service处理WindowState状态 -- COMMIT_DRAW_PENDING本次layout 流程简述 窗口显示流程 目前窗口的显示到了最后一步。 在 addWindow 流程中&…

C语言中数据类型

一、C 语言中数据类型 基本数据类型: 整型(int):用于存储整数,如:1、2、3等。字符型(char):用于存储单个字符,如:‘a’、‘b’、c’等。浮点型&a…

中秋献礼!2024年中科院一区极光优化算法+分解对比!VMD-PLO-Transformer-LSTM多变量时间序列光伏功率预测

中秋献礼!2024年中科院一区极光优化算法分解对比!VMD-PLO-Transformer-LSTM多变量时间序列光伏功率预测 目录 中秋献礼!2024年中科院一区极光优化算法分解对比!VMD-PLO-Transformer-LSTM多变量时间序列光伏功率预测效果一览基本介…

一种多策略改进小龙虾智能优化算法MSCOA 改进策略:种群混沌映射初始化+透镜成像反向学习+黄金正弦变异策略

一种多策略改进小龙虾智能优化算法MSCOA 改进策略:种群初始化精英反向透镜成像反向学习黄金正弦变异策略 文章目录 一、小龙虾COA基本原理二、改进策略2.1种群初始化 映射2.2 透镜成像反向学习2.3 黄金正弦变异策略 三、实验结果四、核心代码五、代码获取六、总结 一…

每日一个数据结构-跳表

文章目录 什么是跳表?示意图跳表的基本原理跳表的操作跳表与其他数据结构的比较 跳表构造过程 什么是跳表? 跳表(Skip List)是一种随机化的数据结构,它通过在有序链表上增加多级索引来实现快速查找、插入和删除操作。…

react hooks--useState

概述 useState 可以使函数组件像类组件一样拥有 state,也就说明函数组件可以通过 useState 改变 UI 视图。那么 useState 到底应该如何使用,底层又是怎么运作的呢,首先一起看一下 useState 。 问题:Hook 是什么? 一个 Hook 就是…

TensorRT-LLM——优化大型语言模型推理以实现最大性能的综合指南

引言 随着对大型语言模型 (LLM) 的需求不断增长,确保快速、高效和可扩展的推理变得比以往任何时候都更加重要。NVIDIA 的 TensorRT-LLM 通过提供一套专为 LLM 推理设计的强大工具和优化,TensorRT-LLM 可以应对这一挑战。TensorRT-LLM 提供了一系列令人印…

Double Write

优质博文:IT-BLOG-CN 一、存在的问题 为什么需要Double Write: InnoDB的PageSize是16kb,其数据校验也是针对这16KB来计算的,将数据写入磁盘是以Page为单位的进行操作的。而计算机硬件和操作系统,写文件是以4KB作为基…

Python基础语法(1)上

常量和表达式 我们可以把 Python 当成一个计算器,来进行一些算术运算。 print(1 2 - 3) print(1 2 * 3) print(1 2 / 3) 这里我们可能会有疑问,为什么不是1.6666666666666667呢? 其实在编程中,一般没有“四舍五入”这样的规则…

基于Python DoIPClient库的DoIP上位机开发手顺

代码 address, announcement DoIPClient.await_vehicle_announcement()logical_address announcement.logical_addressip, port addressprint(ip, port, logical_address) 效果 代码 address, announcement DoIPClient.get_entity(ecu_ip_addresssIp, protocol_version3…

二叉树OJ题——相同的树

文章目录 一、题目链接二、解题思路三、解题代码 一、题目链接 相同的树 二、解题思路 时间复杂度:O(min(n,m)) 三、解题代码

解决IDEA每次创建新项目时都要指定Maven仓库和Maven配置文件的问题

文章目录 0. 前言1. 打开新项目的设置2. 搜索 Maven 相关的配置3. 更改Maven主路径、配置文件、本地仓库4. 更改新项目的Maven配置后没生效 0. 前言 在 IDEA 中每次创建新项目时,使用的都是默认的 Maven 仓库和默认的配置文件,需要我们手动修改&#xf…