0

0

在线地图还能这样?MapTracker:用跟踪实现在线地图新SOTA!

WBOY

WBOY

发布时间:2024-04-25 17:01:17

|

1049人浏览过

|

来源于51CTO.COM

转载

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

该算法允许在线高精度地图构建。我们的方法MapTracker将传感器流累积到两种显示的内存缓冲区中:1)鸟瞰图(BEV)空间中的Raster latents和2)道路元素(即人行横道、车道线和道路边界)上的Vector latents。该方法借鉴了目标跟踪中的查询传播范式,该范式明确地将前一帧的跟踪道路元素与当前帧相关联,同时融合了与距离步幅的内存 latents 子集,以进

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

在线地图还能这样?MapTracker:用跟踪实现在线地图新SOTA!

开源链接:https://map-tracker.github.io/

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

  • 一种新的矢量HD建图算法,将HD建图公式化为跟踪任务,并利用两种表示中的memory latents历史来实现时间一致性;
  • 一种改进的矢量HD建图基准,具有时间一致的GT和一致性感知的mAP metric;
  • SOTA性能!在传统和新的度量上比当前的最佳方法有显著改进。

相关工作回顾

本文通过两种方式来思考和解决一致向量HD建图问题。我们首先回顾了基于视觉的自动驾驶中使用Transformer和记忆设计的视觉目标跟踪的最新趋势。最后,我们讨论了竞争矢量HD建图方法。

使用transformers进行视觉目标跟踪。视觉目标跟踪有着悠久的历史,其中端到端transformer方法由于其简单性而成为最近的趋势。TrackFormer、TransTrack和MOTR利用注意力机制和跟踪查询来显式关联跨帧的实例。MeMOT和MeMOTR进一步扩展了具有记忆机制的跟踪transformer,以获得更好的长期一致性。本文通过将跟踪查询与更稳健的内存机制结合起来,将矢量HD建图公式化为跟踪任务。

自动驾驶中的Memory设计。单帧自动驾驶系统在处理遮挡、传感器故障或复杂环境方面存在困难。具有Memory的时间建模提供了有希望的补充。存在许多用于光栅BEV功能的Memory设计,这些功能构成了大多数自动驾驶任务的基础。BEVDet4D和BEVFormerv2将多个过去帧的特征叠加为Memory,但计算随着历史长度线性扩展,难以捕获长期信息。VideoBEV跨帧传播BEV光栅查询,以循环积累信息。在向量域中,Sparse4Dv2使用类似的RNN风格的内存进行目标查询,而Sparse4Dv3进一步使用时间去噪进行稳健的时间学习。这些思想已被矢量HD建图方法部分纳入。本文针对道路元素的光栅BEV潜伏时间和矢量潜伏时间提出了一种新的存储器设计。

矢量HD建图。传统上,高精地图是用基于SLAM的方法离线重建的,然后是人工管理,需要高昂的维护成本。随着精度和效率的提高,在线矢量高精地图算法比离线地图算法更受关注,这将简化生产流程并处理地图更改。HDMapNet通过后处理将光栅图分割转化为矢量图实例,并建立了第一个矢量HD建图基准。VectorMapNet和MapTR都利用基于DETR的transformer进行端到端预测。前者自回归地预测每个检测到的曲线的顶点,而后者使用分层查询和匹配损失来同时预测所有顶点。MapTRv2通过辅助任务和网络修改进一步补充了MapTR。曲线表示、网络设计和训练范式是其他工作的重点。StreamMapNet通过借鉴BEV感知中的流思想,朝着一致建图迈出了一步。该想法将过去的信息累积为memory latents,并作为条件(即条件检测框架)通过。SQD MapNet模仿DN-DETR,提出了时间曲线去噪以促进时间学习。

MapTracker

在线地图还能这样?MapTracker:用跟踪实现在线地图新SOTA!

鲁棒记忆机制是MapTracker的核心,它将传感器流累积为两种表示的latent memories:1)自上而下的BEV坐标系中车辆周围区域的鸟瞰(BEV)记忆作为潜在图像;和2)道路元素(即,行人专用区交叉口、车道线和道路边界)的矢量(VEC)记忆作为一组潜在量。

两个简单的想法与memory机制实现了一致的建图。第一个想法是使用历史的memory buffer,而不是当前帧的单个memory。单个memory应该保存整个历史的信息,但很容易丢失memory,尤其是在有大量车辆遮挡道路结构的杂乱环境中。具体地说,为了效率和覆盖率,我们基于车辆运动在每一帧选择过去latent memories的子集进行融合。第二个想法是将在线高精地图制定为跟踪任务。VEC memory机制保持每个道路元素的memory latents期序列,并通过借用跟踪文献中的查询传播范式使该公式变得简单。本节的其余部分解释了我们的神经架构(见图2和图3),包括BEV和VEC memory buffers及其相应的网络模块,然后介绍了训练细节。

Memory Buffers

BEV memory是BEV坐标系中的2D latent,以车辆为中心并在第t帧处定向。空间维度(即50×100)覆盖矩形区域,左/右15m,前/后30m。每个存储器潜伏时间累积整个过去的信息,而buffer在最后20帧中保持这样的memory latents时间,使得memory机制冗余但稳健。

VECmemory是一组向量潜伏时间,每个向量latents时间累积直到帧t的活动道路元素的信息。活动元素的数量随帧而变化。buffer保存过去20帧的latent vectors及其在帧之间的对应关系(即,对应于相同道路元素的矢量潜伏序列)。

BEV Module

在线地图还能这样?MapTracker:用跟踪实现在线地图新SOTA!

输入是 1)由图像主干处理的机载环视图像的CNN特征及其相机参数;2) BEV memory buffer和3)车辆运动。以下内容解释了BEV模块体系结构的四个组成部分及其输出。

  • BEV Query Propagation:BEV memory是车辆坐标系中的2D latent image。仿射变换和双线性插值将当前BEV memory初始化为先前的BEV memory。对于变换后位于latent image之外的像素,每像素可学习的嵌入向量是初始化,其操作在图3中表示为“MaskBlend”。
  • Deformable Self-Attention:可变形的自注意力层丰富了BEV memory。
  • Perspective-to-BEV Cross-Attention:与StreamMapNet类似,BEVFormer的空间可变形交叉注意力层将透视图信息注入MBEV(t)。
  • BEV Memory Fusion:buffer中的memory latents被融合以丰富MBEV(t)。使用所有的memories在计算上是昂贵且冗余的。

输出是1)保存到buffer并传递到VEC模块的最终memory MBEV(t);以及2)由分割头推理并用于损失计算的光栅化道路元素几何图形S(t)。分割头是一个线性投影模块,将memory latent中的每个像素投影到2×2的分割掩模,从而产生100×200的掩模。

VEC Module

输入是BEV memory MBEV(t)和vector memory buffer以及车辆运动;

  • Vector Query Propagation:vector memory是活动道路元素的一组潜在矢量。
  • Vector Instance Self Attention:标准的自注意力层;
  • BEV-to-Vector Cross Attention:Multi-Point Attention;
  • Vector Memory Fusion:对于当前存储器MVEC(t)中的每个潜在矢量,将缓冲器中与相同道路元素相关联的潜在矢量进行融合以丰富其表示。相同的跨步帧选择选择四个潜在向量,其中对于一些具有短跟踪历史的道路元素,所选择的帧π(t)将不同且更少。例如,跟踪了两帧的元素在buffer中只有两个latents。

输出是1)通过来自MVEC(t)的单个完全连接层的分类测试的“positive”道路元素的最终存储器MVEC(t);以及2)由来自MVEC(t)的3层MLP回归的正道路元素的矢量道路几何形状。

Training

BEV loss:

在线地图还能这样?MapTracker:用跟踪实现在线地图新SOTA!

VEC损失。受MOTR(一种用于多目标跟踪的端到端转换器)的启发,我们将基于匹配的损失扩展到明确考虑GT跟踪。新元素的最佳实例级标签分配定义为:

在线地图还能这样?MapTracker:用跟踪实现在线地图新SOTA!

然后归纳定义所有输出和GT之间的标签分配ω(t):

在线地图还能这样?MapTracker:用跟踪实现在线地图新SOTA!

矢量输出的跟踪样式损失为:

HMCSS通用企业网站系统1.0
HMCSS通用企业网站系统1.0

HMCSS是由河马工作室全新开发的通用的企业网站系统,是PHP+MYSQL的架构,采用DIV+CSS的方式进行网页布局,网站的功能包括有:企业简介,图片展示幻灯,产品图片滚动,企业荣誉,实力展示,产品分类及展示,网上招聘,在线留言,联系我们,在线地图等内容,另外还带有完整的管理后台,如网站SEO优化关键词等都可以自由设定。 HMCSS目前发布的是1.0版本,就是上述的这些内容。后面我们还要加上产品

下载

在线地图还能这样?MapTracker:用跟踪实现在线地图新SOTA!

转换损失。我们借用StreamMapNet中的转换损失Ltrans来训练PropMLP,这强制潜在空间中的查询转换保持向量几何和类类型。最后的训练损失是:

在线地图还能这样?MapTracker:用跟踪实现在线地图新SOTA!

Consistent Vector HD Mapping Benchmarks

Consistent ground truth

MapTR从nuScenes和Agroverse2数据集创建了矢量HD建图基准,被许多后续研究采用。然而,人行横道是天真地合并在一起的,而且跨框架不一致。分割线也与其图形跟踪过程的失败不一致(对于Argoverse2)。

StreamMapNet继承了VectorMapNet的代码,并创建了一个具有更好真实性的基准,该基准已在研讨会挑战中使用。然而,仍然存在一些问题。对于Argoverse2,分隔线有时会拆分为较短的线段。对于nuScenes,大型人行横道有时会分割出小环路,其不一致性在每帧中随机出现,导致暂时不一致的表示。我们在附录中提供了现有基准问题的可视化。

我们改进了现有基准的处理代码,以(1)增强每帧的GT几何结构,然后(2)计算它们在帧之间的对应关系,形成GT“轨迹”。

(1) 增强每帧几何图形。我们继承和改进了在社区中流行的MapTR代码库,同时进行了两个更改:用StreamMapNet中的处理取代步行区处理,并通过更多的几何约束来提高质量;以及通过增强图跟踪算法来处理原始注释的噪声来增强除法器处理中的时间一致性(仅适用于Argoverse2)。

(2) Forming tracks。给定每帧道路元素的几何结构,我们求解每对相邻帧之间的最优二分匹配问题,以建立道路元素的对应关系。成对的对应关系被链接以形成道路元素的轨迹。一对道路元素之间的匹配分数定义如下。道路元素几何图形是多边形曲线或环形。我们根据车辆运动将旧帧中的元素几何体转换为新帧,然后将具有一定厚度的两条曲线/循环光栅化为实例遮罩。他们在并集上的交集是匹配的分数。

Consistency-aware mAP metric

mAP度量不会惩罚暂时不一致的重建。我们将重建的道路元素和每个帧中的地面实况与倒角距离独立匹配,如在标准mAP过程中一样,然后通过以下检查消除暂时不一致的匹配。首先,对于不预测跟踪信息的基线方法,我们使用与获得GT时间对应关系相同的算法来形成重建道路元素的轨迹(我们还扩展了算法,通过权衡速度来重新识别丢失的元素;详细信息请参阅附录)。接下来,让“祖先”是属于前一帧中相同轨迹的道路元素。从序列的一开始,如果它们的祖先中有任何一个不匹配,我们就会将每帧匹配(重建元素和地面实况元素)删除为暂时不一致。然后利用剩余的暂时一致的匹配来计算标准mAP。

实验

我们基于StreamMapNet代码库构建我们的系统,同时使用8个NVIDIA RTX A5000 GPU在nuScenes上为72个epoch和Argoverse2上为35个epoch训练我们的模型。三个训练阶段的批量大小分别为16、48和16。训练大约需要三天时间,而推理速度大约为10 FPS。在解释了数据集、指标和基线方法之后,本节提供了实验结果。

在线地图还能这样?MapTracker:用跟踪实现在线地图新SOTA!

在线地图还能这样?MapTracker:用跟踪实现在线地图新SOTA!

我们的贡献之一是在两个现有的对应物(即MapTR和StreamMapNet)上实现了暂时一致的地面实况(GT)。表1和表2显示了在三个GT中的一个上训练和测试系统的结果(如第一列所示)。由于我们的代码库是基于StreamMapNet的,我们在StreamMapNet GT和我们的临时一致GT上评估我们的系统。

nuScenes结果。表1显示,MapTRv2和StreamMapNet都使用我们的GT实现了更好的mAP,这是我们在修复其原始GT中的不一致性时所期望的。StreamMapNet的改进略高,因为它具有时间建模(而MapTR没有),并利用了数据中的时间一致性。MapTracker显著优于竞争方法,尤其是在我们的一致性GT在原始和一致性意识mAP得分中分别提高了8%和22%以上的情况下。注意,MapTracker是唯一产生明确跟踪信息(即,重构元素在帧之间的对应关系)的系统,这是一致性区域mAP所需要的。一个简单的匹配算法为基线方法创建轨迹。

Argoverse2结果。表2显示,MapTRv2和StreamMapNet都通过我们一致的GT获得了更好的mAP分数,它除了暂时一致之外,还具有更高质量的GT(用于人行横道和分隔物),使所有方法都受益。MapTracker在所有设置中都以显著的优势(即分别为11%或8%)优于所有其他基线。一致性意识评分(C-mAP)进一步证明了我们卓越的一致性,比StreamMapNet提高了18%以上。

Results with geographically non-overlapping data

在线地图还能这样?MapTracker:用跟踪实现在线地图新SOTA!

nuScenes和Agroverse2数据集的官方训练/测试划分具有地理重叠(即,训练/测试中出现相同的道路),这允许过度拟合。表3比较了StreamMapNet和MapTracker提出的基于地理上不重叠分割的最佳基线方法。MapTracker始终以显著的优势表现出色,表现出强大的跨场景泛化能力。请注意,对于这两种方法,nuScenes数据集的性能都会降低。经过仔细检查,道路要素的检测是成功的,但回归的坐标误差很大,导致性能低下。附录提供了更多分析。

Ablation studies

在线地图还能这样?MapTracker:用跟踪实现在线地图新SOTA!

表4中的消融研究证明了MapTracker中关键设计元素的贡献。第一个“基线”条目是StreamMapNet,它没有时间推理能力(即没有BEV和矢量流存储器和模块)。第二个条目是StreamMapNet。两种方法都训练了110个时期,直到完全收敛。最后三个条目是MapTracker的变体,包含或不包含关键设计元素。第一种变体丢弃BEV/VEC模块中的存储器融合组件。该变体利用跟踪公式,但依赖于单个BEV/VEC存储器来保存过去的信息。第二种变体添加了内存缓冲区和内存融合组件,但没有跨步,即使用最新的4帧进行融合。这种变体提高了性能,证明了我们记忆机制的有效性。最后一种变体添加了内存跨步,从而更有效地利用了内存机制并提高了性能。

Qualitative evaluations

在线地图还能这样?MapTracker:用跟踪实现在线地图新SOTA!

图4显示了MapTracker和基线方法在nuScenes和Argoverse2数据集上的定性比较。为了更好地可视化,我们使用一种简单的算法将每帧矢量HD地图合并为全局矢量HD地图。有关合并算法和每帧重建的可视化的详细信息,请参阅附录。MapTracker产生了更精确、更干净的结果,显示出卓越的整体质量和时间一致性。对于车辆正在转弯或没有轻微向前移动的场景(包括图1中的两个示例),StreamMapNet和MapTRv2可能会产生不稳定的结果,从而导致破碎和嘈杂的合并结果。这主要是因为基于检测的公式难以在复杂的车辆运动下维持时间相干重建。

结论

本文介绍了MapTracker,它将在线HD映射公式化为跟踪任务,并利用raster and vector latents的历史来保持时序一致性。我们使用查询传播机制来跨帧关联被跟踪的道路元素,并将所选择的memory entries的子集与距离步幅融合以增强一致性。我们还通过使用跟踪标签生成一致的GT,并通过时序一致性检查增强原始mAP指标,来改进现有的基准。当使用传统度量进行评估时,MapTracker在nuScenes和Agroverse2数据集上显著优于现有方法,并且当使用我们的一致性感知度量进行评估后,它表现出了卓越的时序一致性。

局限性:我们确定了MapTracker的两个局限性。首先,当前的跟踪公式不处理道路元素的合并和分割(例如,U形边界在未来的帧中分割成两条直线,反之亦然)。基本事实也不能恰当地代表他们。其次,我们的系统仍处于10 FPS,实时性能有点不足,尤其是在关键的崩溃事件中。优化效率和处理更复杂的现实世界道路结构是我们未来的工作。

相关专题

更多
golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

75

2025.09.05

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

36

2025.11.16

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

60

2025.11.17

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

40

2025.11.27

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

372

2026.01.21

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

405

2023.08.14

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2037

2024.08.16

传感器故障解决方法
传感器故障解决方法

传感器故障排除指南:识别故障症状(如误读或错误代码)。检查电源和连接(确保连接牢固,无损坏)。校准传感器(遵循制造商说明)。诊断内部故障(目视检查、信号测试、环境影响评估)。更换传感器(选择相同规格,遵循安装说明)。验证修复(检查信号准确性,监测异常行为)。

471

2024.06.04

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

25

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3万人学习

HTML教程
HTML教程

共500课时 | 5万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 10.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号