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与本文提出的预训练策略相结合,显著提高了最先进的映射模型的性能。本文的方法不仅解决了动态和复杂环境中实时高精地图构建相关的挑战,而且还提供了一个可扩展的解决方案,随着时间的推移不断提高地图精度。迭代使用历史预测地图作为先验,导致逐步细化的地图输出,从而确保最新的道路信息可用于自主导航。