搜索
首页科技周边人工智能在线地图还能这样?MapTracker:用跟踪实现在线地图新SOTA!

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

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

在线地图还能这样?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!

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

在线地图还能这样?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,实时性能有点不足,尤其是在关键的崩溃事件中。优化效率和处理更复杂的现实世界道路结构是我们未来的工作。

以上是在线地图还能这样?MapTracker:用跟踪实现在线地图新SOTA!的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:51CTO.COM。如有侵权,请联系admin@php.cn删除
git中push -u是什么意思git中push -u是什么意思Jul 01, 2022 am 10:36 AM

在git中,“push -u”的意思是将本地的分支版本上传到远程合并,并且记录push到远程分支的默认值;当添加“-u”参数时,表示下次继续push的这个远端分支的时候推送命令就可以简写成“git push”。

在线地图还能这样?MapTracker:用跟踪实现在线地图新SOTA!在线地图还能这样?MapTracker:用跟踪实现在线地图新SOTA!Apr 25, 2024 pm 05:01 PM

写在前面&笔者的个人理解该算法允许在线高精度地图构建。我们的方法MapTracker将传感器流累积到两种显示的内存缓冲区中:1)鸟瞰图(BEV)空间中的Rasterlatents和2)道路元素(即人行横道、车道线和道路边界)上的Vectorlatents。该方法借鉴了目标跟踪中的查询传播范式,该范式明确地将前一帧的跟踪道路元素与当前帧相关联,同时融合了与距离步幅的内存latents子集,以进开源链接:https://map-tracker.github.io/总结来说,本文的主要贡献如下:一种新

git的pack文件有什么用git的pack文件有什么用Jun 30, 2022 pm 05:41 PM

在git中,pack文件可以有效的使用磁盘缓存,并且为常用命令读取最近引用的对象提供访问模式;git会将多个指定的对象打包成一个成为包文件(packfile)的二进制文件,用于节省空间和提高效率。

git中pull失败了怎么办git中pull失败了怎么办Jun 30, 2022 pm 04:47 PM

git中pull失败的解决方法:1、利用“git reset --hard”强制覆盖掉自己的本地修改;2、利用“git stash”推送一个新的储藏,拉取之后利用“git stash pop”将修改保存到暂存区;3、若依然出现问题,则将文件保存到暂存区并提交注释即可。

git分支能改名字吗git分支能改名字吗Jun 16, 2022 pm 05:55 PM

git分支能改名字。改名方法:1、利用git中的branch命令修改本地分支的名称,语法为“git branch -m 旧名字 新名字”;2、利用“git push origin 新名字”命令,在删除远程分支之后将改名后的本地分支推送到远程;3、利用IDEA直接操作修改分支名称即可。

git怎么删除某个分支git怎么删除某个分支Jun 24, 2022 am 11:11 AM

git删除某个分支的方法:1、利用“git branch --delete dev”命令删除本地分支;2、利用“git push origin --delete branch”命令删除远程分支;3、利用“git branch --delete --remotes”命令删除追踪分支。

用三行代码使你的git提交记录变干净用三行代码使你的git提交记录变干净Feb 28, 2023 pm 04:19 PM

本篇文章给大家带来了关于git的相关知识,其中主要跟大家聊一聊怎么让你的git记录保持整洁,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。

git中tag怎么改名git中tag怎么改名Jun 30, 2022 pm 05:31 PM

在git中,可以利用“git tag 新tag名 旧tag名”命令给tag改名;tag的作用是标记一个点作为版本号,利用该命令给tag改名之后,原来的旧标签名依然存在,利用“git tag -d 标签名”命令将旧标签名删除即可。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)