MapTR文章研读

  MapTR为在线矢量化地图构建提供有效的端到端的网络结构。作者提出一种统一的基于排列的建模方法,即将地图元素的等效排列作为点集进行建模,避免地图元素模糊定义并且可以简化学习。在网络结构上,作者采用一种分层的query embedding方法来灵活的编码结构性地图信息并且使用分层的二分匹配方法学习地图元素信息。
  MapTR在nuScenes数据集上比现存的矢量化地图构建方法性能更好,MapTR-nano在RTX3090上推理速度为25.1FPS,比现存的实时的基于视觉方法快了8倍,与此同时,其mAP比其他方法高了3.3;MapTR-tiny比现有的多模态方法mAP高了13.5,并且速度更快。在质量评估结果中展示MapTR在复杂多样的驾驶场景下可以稳定的进行地图构建。
代码见:hustvl/MapTR: [ICLR’23 Spotlight] MapTR: Structured Modeling and Learning for Online Vectorized HD Map Construction (github.com)

1. 基于排列的建模方法

  MapTR主要以一种结构性的行为去建模和学习高精地图。高精地图是静态地图元素的集合,包括人行横道、车道线、路沿等等。对于结构性建模来讲,MapTR将地图元素简要概括成封闭形状(包括人性横道)和开放形状(包括车道线)。通过沿着形状边沿序列采样形成点集,封闭形状被描述成多边形(polygon),开放形状被描述成线段(polyline)。
在介绍之前,先看下图:
在这里插入图片描述

  在上图(a)中在车道线的两边有着相反的标识,那该车道线的方向就是不确定的,车道线的某个方向的终点也可视为起始点。在图1(b)中人行横道的顺序可以是逆时针也可是顺时针,改变点集排列顺序不影响多边形的几何形状。从图1可以看到,如果将点集强制规定成某一特定排列方式会导致模棱两可的定义。

  故在本文中,每一个地图元素都有如下定义: ( V , Γ ) {(V,\Gamma)} (V,Γ) V = { v j } j = 0 N v − 1 {V=\{v_j\}_{j=0}^{N_v-1}} V={vj}j=0Nv1表示地图元素点的集合,在元素轮廓等距离采样获得点集V,其中 N v {N_v} Nv表示点的数目。 Γ {\Gamma} Γ表示点集V的排列,枚举了所有可能的排列方法。
对于线段来说,有两种排列方法:
在这里插入图片描述

对于多边形来说,有 2 ∗ N v {2*N_v} 2Nv中等效排列方法:
在这里插入图片描述
从下图中也可以看到,对于线段和多边形来说,同一个点集有着不同的排列方式。
在这里插入图片描述

2. MapTR结构

MapTR采用encoder-decoder结构,具体网络结构见下图:
在这里插入图片描述

backbone

MapTR在encoder结构中首先通过resnet提取各路图片特征

Map Encoder

然后使用基于2D-to-BEV的GKT方法将各路特征转换到bev特征。

Map Decoder

作者采用分层的query embedding方法来编码每一个地图元素。定义实例级别的queries为 { q i ( i n s ) } i = 0 N − 1 {\{q_i^{(ins)}}\}_{i=0}^{N-1} {qi(ins)}i=0N1 ,和一个点级别的queries为 { q j ( p t ) } j = 0 N v − 1 {\{q_j^{(pt)}}\}_{j=0}^{N_v-1} {qj(pt)}j=0Nv1 ,点级别的queries是对所有地图元素共享的。对于第i个地图元素实例中的第j个点的queries定义如下:

在这里插入图片描述
map decoder部分包含多个级联的decoder层用来更新分层的queries。在每一个decoder层,采用MHSA(Multi-Head Self-Attention)交互queries信息。采用Deformable Attention将分层queries和bev特征融合。 会预测点pij在bev平面上二维的点坐标(xij,yij),然后采样点pij对应的bev特征用来更新queries。

Head

预测头包含分类分支和点回归分支。其中分类分支预测实例类别分数,点的回归分支预测点集。

3. 分层匹配方法

  MapTR参考DETR结构,设定有N个地图元素,其中N值大于在场景中实际地图元素数目。 Y ^ = { y ^ i } i = 0 N − 1 {\hat Y=\{\hat y_i\}_{i=0}^{N-1}} Y^={y^i}i=0N1 N {N} N个地图元素的预测结果集合, Y = { y i } i = 0 N − 1 {Y=\{ y_i\}_{i=0}^{N-1}} Y={yi}i=0N1为真实标签的地图元素集合,其中 y i = ( c i , V i , Γ i ) {y_i=(c_i,V_i,\Gamma_i)} yi=(ci,Vi,Γi),不满 N {N} N个地图元素的,用空值补满。为了结构性地图的建模和学习,MapTR引进分层匹配方法包括实例级别(instance-level)匹配和点级(point-level)匹配方法。

Instance-level匹配方法:


在这里插入图片描述

  其中,公式第一项为类别匹配损失函数,采用Focal Loss。第二项为位置匹配损失,文中为了计算 L p o s i t i o n {L_{position}} Lposition比较了两种计算方法,Chamfer distance和point2point,其中point2point方法和下面讲的point-level匹配方法类似,将所有点对计算Manhattan距离后累加之和作为损失计算最佳。下表是两种方法的比较。
在这里插入图片描述
计算得到损失矩阵,使用匈牙利匹配来找到最优匹配。

point-level匹配方法:

  在实例级别匹配后,每一个预测得到的地图元素都和一个真实地图元素对应,为了进一步确定预测的地图元素点集的排列方式,作者利用point2point方法(即计算点对的曼哈顿距离)实现下列损失最小:
在这里插入图片描述

  即将预测得到的元素点集和与之对应的真实元素点集的所有排列分别计算点对的曼哈对距离和,取距离最小的一种排列方法作为预测点集的排列方法。

4. 损失函数

在这里插入图片描述

包括类别损失、点对损失和边界方向损失三部分。
其中类别损失定义:
在这里插入图片描述

点对损失定义如下

在这里插入图片描述

边界方向损失定义如下:
在这里插入图片描述

  Point2point损失仅对对线段和多边形的节点进行限制,没有对点之间的边进行约束。为了准确地表示地图元素,作者提出将匹配的预测边和GT边的余弦相似度作为loss。

5. 实验结果

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

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
根你提供的引用内容,出现了几个ModuleNotFoundError错误。根据的引用,出现了No module named 'projects'错误。这意味着无法找到名为'projects'的模块。根据的引用,出现了No module named 'numpy.typing'错误。这意味着无法找到名为'numpy.typing'的模块。根据的引用,出现了No module named 'tkinter'错误。这意味着无法找到名为'tkinter'的模块。 而对于你提到的mim import requests ModuleNotFoundError: No module named 'requests'错误,这意味着无法找到名为'requests'的模块。 解决这些错误的一种方法是安装所需的模块。你可以使用pip工具来安装模块。例如,对于requests模块,你可以运行以下命令来安装它: pip install requests 对于其他的模块,你可以根据错误信息中提到的模块名使用pip来安装它们。如果这些模块不在Python Package Index(PyPI)上,你可能需要先在你的环境中配置正确的Python路径。你可以参考中提到的export PYTHONPATH的方法,将你的包路径添加到PYTHONPATH环境变量中。 希望这些解决方法能帮助你解决这些ModuleNotFoundError错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [MapTR复现记录](https://blog.csdn.net/Super_CoolC/article/details/132057051)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值