MapTRv2: An End-to-End Framework for Online Vectorized HD Map Construction
摘要
高精(HD)地图提供了驾驶场景中丰富且精确的静态环境信息,是自动驾驶系统规划模块中基础且不可或缺的核心组件。本文提出 Map TRansformer,一种用于在线矢量化高精地图构建的端到端框架。我们提出一种统一的排列等价建模方法,即将地图元素建模为具有若干等价排列的点集,从而精确描述地图元素的形状并稳定学习过程。我们设计了一种层次化查询嵌入方案,以灵活编码结构化的地图信息,并采用层次化二分匹配进行地图元素学习。为加速收敛,我们进一步引入辅助的许多对一匹配与密集监督。所提方法能够很好地处理具有任意形状的各类地图元素。
introduce
存在诸多问题:1) 流程复杂且成本高昂;2) 难以保持地图的时效性;3) 与自车对齐存在偏差,且定位误差较高(经验数据显示,纵向误差为0.4米,横向误差为0.2米)。
鉴于上述局限性,近年来,在线高清地图构建技术吸引了日益增加的关注。该技术利用车载传感器在运行时围绕自车构建地图,从而有效解决了上述问题。
早期工作[4–6]利用线状先验知识,仅通过前视图像感知开放形状的车道。然而,它们局限于单视角感知,无法处理具有任意形状的其他地图元素。随着鸟瞰图(BEV)表示学习的发展,近期工作[7–10]通过执行BEV语义分割来预测栅格化地图。但是,栅格化地图缺乏向量化的实例级信息(例如车道结构),而这对下游任务(如运动预测和规划)至关重要。
为了构建向量化高清地图,HDMapNet[11]将像素级分割结果分组为向量化实例,但这需要复杂且耗时的后处理。VectorMapNet[12]将每个地图元素表示为一个点序列。它采用级联的由粗到细框架,并利用自回归解码器顺序预测点,导致推理时间长且存在误差累积问题。
当前的在线向量化高清地图构建方法受到效率和精度的限制,尤其是在实时场景中。最近,DETR[13]采用了一种简单高效的编码器-解码器Transformer架构,实现了端到端的目标检测。一个自然的问题是:我们能否设计一种类似DETR的范式,以进行高效端到端的向量化高清地图构建?通过我们提出的Map Transformer(MapTR),我们证明了答案是肯定的。
在我们之前的会议版本[14] MapTR中,我们提出了一种针对没有固定顺序的地图元素(如车道分隔线、道路边界和人行横道)的新颖排列等价建模方法。该方法将每个地图元素建模为一个点集,并伴随一组等价排列。点集定义了地图元素的位置,而排列组包含了与相同几何形状对应的所有可能的点组织序列,从而消除了形状表示中的歧义。基于这种排列等价建模,我们开发了一个基于Transformer的编码器-解码器框架,命名为MapTR。该框架处理来自车载传感器的数据,输出向量化高清地图。我们将在线向量化高清地图的构建过程简化为一个并行回归问题,并引入了分层查询嵌入,以在实例级和点级高效编码信息。
尽管MapTR已成为在线高清地图构建领域流行且最先进的(SOTA)方法,并引起了广泛关注,但MapTR仍存在一些问题。最初,MapTR被设计用于建模缺乏物理方向的地图元素。然而,车道中心线作为下游运动预测和规划的关键元素,本质上具有实际的方向性和连通性,而MapTR并未对此进行考量。此外,MapTR将分层查询嵌入展平以形成非常长的序列,并直接在该序列上应用普通自注意力机制。这种实现方式导致了巨大的内存和计算成本,阻碍了MapTR向更多实例和更多点的扩展。
为了解决上述问题,我们引入了MapTRv2,这是会议版本的升级版。MapTRv2通过图遍历算法将车道中心线图视为路径[15],并提出了语义感知的形状建模与匹配。具体而言,对于中心线语义的地图元素,MapTRv2不对它们进行排列,而是直接选择给定的顺序作为目标排列。为了降低计算和内存成本,我们提出了分离的自注意力机制用于查询间的交互,即分别在实例间维度和实例内维度执行注意力操作。与MapTR中使用的普通自注意力相比,MapTRv2将内存消耗和计算复杂度从O((N×Nv)2)O((N \times N_v)^2)O((N×Nv)2)降低到O(N2+Nv2)O(N^2 + N_v^2)O(N2+Nv2),其中NNN和NvN_vNv分别是实例查询数和点查询数。
通过上述改进,我们可以使用相同的框架,以更低的计算复杂度和内存消耗同时预测无向地图元素和有向地图元素。为了进一步加速收敛,我们也改进了MapTR的训练策略。我们在训练期间添加了一个辅助的一对多匹配分支,从而增加了正样本的比例。为了进一步利用语义和几何信息,我们在透视视图(PV)和鸟瞰图(BEV)上引入了辅助前景分割,并利用深度监督指导骨干网络学习3D几何信息。
我们在nuScenes[16]数据集和Argoverse2[17]数据集上进行了大量实验。结果表明,MapTRv2在准确性和效率方面均显著优于MapTR和以前的SOTA方法。特别是在nuScenes上,基于ResNet18骨干网络的MapTRv2在RTX 3090上以实时推理速度(33.7 FPS)运行,比之前的最先进(SOTA)基于摄像头的方法VectorMapNet快15倍,同时mAP高出6.3。当使用ResNet50作为骨干网络时,MapTRv2在14.1 FPS下达到68.7的mAP,比VectorMapNet-ResNet50的mAP高出22.7,速度快6倍,甚至优于多模态VectorMapNet。MapTRv2还展示了比MapTR-ResNet50更快的收敛速度(训练周期缩短4倍,mAP高出2.8,见图7)。当扩展到更大的骨干网络VoVNetV2-99时,MapTRv2仅使用摄像头输入就创造了新的纪录(73.4 mAP和9.9 FPS)。在Argoverse2上,使用相同的骨干网络ResNet50,MapTRv2在3D地图构建方面比VectorMapNet的mAP高出28.9。正如可视化所示(图9和图10),MapTRv2在复杂多样的驾驶场景中保持了稳定且鲁棒的地图构建质量。
我们的贡献总结如下:
- 我们提出了一种针对各类地图元素(有向和无向)的统一基于排列的建模方法,即将地图元素建模为具有排列组的点集,这准确地描述了地图元素的形状并稳定了学习过程。
- 基于这种新颖的建模,我们提出了一种用于高效在线向量化高清地图构建的结构化端到端框架。我们设计了分层查询嵌入方案,以灵活编码实例级和点级信息,并提出分离的自注意力机制以降低内存消耗和计算复杂度。
- 我们引入了针对简单编码器-解码器框架的高级训练策略,大幅提升了性能并改善了收敛性。
- 所提出的MapTRv2以完全端到端的方式,在不同模型尺寸下实现了最佳精度与速度的权衡。
本期刊论文(MapTRv2)是发表于ICLR 2023[14]的会议论文(MapTR)的扩展版本。与前一版本相比,改进之处如下:首先,MapTRv2将MapTR扩展到对中心化中心线的建模和学习,这对下游运动规划至关重要[18, 19]。其次,我们引入了专为分层查询机制定制的分离自注意力机制,这极大地减少了内存消耗并带来了收益。第三,我们在透视视图和鸟瞰图上采用了辅助密集监督,显著提升了性能。第四,我们引入了辅助的一对多集合预测分支以加速收敛。第五,我们提供了关于所提出模块的更多理论分析和讨论,揭示了我们的框架工作机制的更多细节。最后,我们将框架扩展到3D地图构建(会议版本仅学习2D地图),并在Argoverse2数据集[17]上提供了额外的实验。
2 相关工作
高清地图构建。近年来,随着PV-to-BEV方法[20, 21]的发展,高清地图构建被表述为基于车载摄像头捕获的环视图像数据的分割问题。[7–10, 22–27]通过执行BEV语义分割生成栅格化地图。为了构建向量化高清地图,HDMapNet[11]通过启发式和耗时的后处理,将像素级语义分割结果分组以生成向量化实例。VectorMapNet[12]作为第一个端到端框架,采用两阶段由粗到细的框架并利用自回归解码器顺序预测点,导致推理时间长且存在排列歧义。与VectorMapNet不同,我们的方法为地图元素引入了新颖统一的形状建模,解决了歧义并稳定了学习过程。我们进一步构建了一个结构化且并行的单阶段框架,具有更高的效率。
我们的会议版本[14]的并发及后续工作关注端到端高清地图构建的其他有前途的设计[28–43],并扩展到其他相关任务[15, 44–48]。BeMapNet[29]和PivotNet[49]提出了基于贝塞尔曲线的表示和基于枢轴的表示来建模地图几何形状。NMP[44]引入了全局地图的神经表示,支持自动全局地图更新并增强局部地图推断性能。TopoNet[45]提出了一个综合框架来学习车道的连接关系以及车道与交通元素之间的分配关系。PolyDiffuse[31]将扩散机制引入MapTR,通过条件生成程序进一步优化结果。MapVR[30]将可微栅格化应用于MapTR产生的向量化结果,以结合精确且感知几何的监督信息。MapTRv2将MapTR扩展为一个更通用的框架。它支持中心线学习和3D地图构建,并实现了更高的精度和更快的收敛速度。
车道检测。车道检测可以被视为高清地图构建的子任务,专注于检测道路场景中的车道元素。由于大多数车道检测数据集仅提供单视角注释并关注开放形状元素,相关方法[4–6, 50–57]局限于单视角。LaneATT[51]利用基于锚点的深度车道检测模型,在准确性和效率之间实现了良好的权衡。LSTR[5]采用Transformer架构直接输出车道形状模型的参数。GANet[52]将车道检测 formulate 为关键点估计和关联问题,并采用自下而上的设计。[53]提出了基于参数化贝塞尔曲线的车道检测方法。[58]没有在2D图像坐标系中检测车道,而是提出了3D-LaneNet,它在BEV中进行3D车道检测。STSU[6]在BEV坐标系中将车道表示为有向图,并采用基于曲线的贝塞尔方法从单目摄像头图像预测车道。Persformer[4]提供了更好的BEV特征表示,并优化了锚点设计,以同时统一2D和3D车道检测。BEVLaneDet[50]提出了虚拟摄像头以保证一致性,并提出了一种高效的空间变换金字塔模块。
基于轮廓的2D实例分割。另一条相关的工作线路是基于轮廓的2D实例分割[59–67]。这些方法将2D实例分割重新表述为对象轮廓预测任务,其中对象轮廓是一个闭合形状的多边形,并估计轮廓顶点的图像坐标。CurveGCN[68]利用图卷积网络预测多边形边界。PolarMask[60]通过在极坐标系中进行实例中心分类和密集距离回归来生成实例轮廓。Deep-snake[69]提出了一个两阶段轮廓进化过程,并设计循环卷积以利用轮廓特征。BoundaryFormer[70]采用先进的Transformer架构并遵循两阶段范式,基于第一阶段预测的中间框结果生成多边形顶点。SharpContour[59]提出了一种高效且通用的基于轮廓的边界细化方法,通过以离散方式更新偏移量来迭代变形轮廓。
检测Transformer。作为开创性工作,DETR[13]消除了对手工设计组件(如锚点生成、基于规则标签分配、非极大值抑制后处理)的需求,并构建了第一个完全端到端的目标检测器。它将对象框表示为一组查询,并直接采用统一的Transformer编码器-解码器架构执行对象框检测。由于DETR及其变体[71–78]的有效性和简洁性,其范式已被广泛迁移到许多复杂任务中,如2D实例分割[79–81]、2D姿态估计[82–84]、3D目标检测[10, 85–90]。直接继承DETR的简洁性和端到端方式,我们提出了MapTRv2,以高效地在线生成高质量向量化高清地图。
3 形状建模
MapTRv2 旨在以统一的方式对高精地图进行建模与学习。高精地图是由一系列矢量化的静态地图元素组成的集合,包括人行横道、车道分隔线、道路边界、中心线等。在结构化建模方面,MapTRv2 将地图元素从几何上抽象为闭合形状(如人行横道)和开放形状(如车道分隔线)。通过在形状边界上依次采样点,闭合形状元素被离散化为多边形,而开放形状元素则被离散化为折线。初步地,多边形和折线均可表示为一个有序的点集 VF=[v0,v1,…,vNv−1]V_F = [v_0, v_1, \dots, v_{N_v-1}]VF=[v0,v1,…,vNv−1](见图 2(Vanilla))。其中,NvN_vNv 表示点的数量。然而,点集的排列顺序并未被明确定义,也不具有唯一性。对于多边形和折线,存在多种等价的排列方式。例如,如图 3(a)所示,在两条相反方向车道之间的车道分隔线(折线)中,定义其方向是困难的。车道分隔线的两个端点均可视为起点,点集可以沿两个方向进行组织。在图 3(b)中,对于人行横道(多边形),点集可以按两个相反的方向进行组织(逆时针和顺时针)。并且,对点集排列进行循环变换不会影响多边形的几何形状。对点集施加固定的排列顺序作为监督信号是不合理的。所施加的固定排列顺序与其他等效排列,从而阻碍学习过程。
为了弥补这一差距,MapTRv2 采用 V=(V,Γ)V = (\mathcal{V}, \Gamma)V=(V,Γ) 来表示每个地图要素。其中,V={vj}j=0Nv−1\mathcal{V} = \{\mathbf{v}_j\}_{j=0}^{N_v-1}V={vj}j=0Nv−1 表示地图要素的点集(NvN_vNv 为点的数量)。Γ={γk}\Gamma = \{\gamma_k\}Γ={γk} 表示点集 V\mathcal{V}V 的一组等效排列,涵盖了所有可能的组织序列。
具体而言,对于无特定方向的折线元素(见图 2 左侧),Γ\GammaΓ 包含两种等效排列:
Γpolyline={γ0,γ1}={γ0(j)=j%Nv,γ1(j)=(Nv−1)−j%Nv.(1) \Gamma_{\text{polyline}} = \{\gamma_0, \gamma_1\} = \begin{cases} \gamma_0(j) = j \% N_v, \\ \gamma_1(j) = (N_v - 1) - j \% N_v. \end{cases} \quad (1) Γpolyline={γ0,γ1}={γ0(j)=j%Nv,γ1(j)=(Nv−1)−j%Nv.(1)
对于具有特定方向的折线元素(例如中心线),Γ\GammaΓ 仅包含一种排列:{γ0}\{\gamma_0\}{γ0}。
对于多边形元素(见图 2 右侧),Γ\GammaΓ 包含 2×Nv2 \times N_v2×Nv 种等效排列:
Γpolygon={γ0,…,γ2×Nv−1}={γ0(j)=j%Nv,γ1(j)=(Nv−1)−j%Nv,…γ2×Nv−2(j)=(j+Nv−1)%Nv,γ2×Nv−1(j)=(Nv−1)−(j+Nv−1)%Nv.(2) \Gamma_{\text{polygon}} = \{\gamma_0, \dots, \gamma_{2 \times N_v - 1}\} =\begin{cases} \gamma_0(j) = j \% N_v, \\ \gamma_1(j) = (N_v - 1) - j \% N_v, \\ \dots \\ \gamma_{2 \times N_v - 2}(j) = (j + N_v - 1) \% N_v, \\ \gamma_{2 \times N_v - 1}(j) = (N_v - 1) - (j + N_v - 1) \% N_v. \end{cases} \quad (2) Γpolygon={γ0,…,γ2×Nv−1}=⎩
⎨
⎧γ0(j)=j%Nv,γ1(j)=(Nv−1)−j%Nv,…γ2×Nv−2(j)=(j+Nv−1)%Nv,γ2×Nv−1(j)=(Nv−1)−(j+Nv−1)%Nv.(2)
通过引入等效排列的概念,MapTRv2 以统一的方式对地图要素进行建模,并解决了歧义性问题。
4 架构

MapTRv2 采用编码器-解码器范式。整体架构如图 4 所示。
4.1 地图编码器
地图编码器从传感器数据中提取特征,并将特征转换为统一的特征表示,即鸟瞰图(BEV)表示。MapTRv2 兼容多种车载传感器。以多视图图像 I={I1,…,IM}\mathbf{I} = \{I_1, \dots, I_M\}I={I1,…,IM} 为例,我们利用传统的骨干网络生成多视图特征图 F={F1,…,FM}\mathbf{F} = \{F_1, \dots, F_M\}F={F1,…,FM}。随后,将车视图(PV)图像特征 F\mathbf{F}F 转换为 BEV 特征 B∈RH×W×C\mathbf{B} \in \mathbb{R}^{H \times W \times C}B∈RH×W×C。我们支持多种 PV 到 BEV 的转换方法,例如 CVT [8]、LSS [22, 24, 91, 92]、可变形注意力 [10, 71]、GKT [7] 和 IPM [93]。在 MapTRv2 中,为了显式地利用深度信息 [91],我们选择基于 LSS 的 BEVPoolv2 [94] 作为默认的转换方法。将 MapTRv2 扩展到多模态传感器数据是直接且简单的。
4.2 地图解码器 (Map Decoder)
地图解码器由地图查询 (map queries) 和若干解码器层组成。每个解码器层利用自注意力 (self-attention) 和交叉注意力 (cross-attention) 来更新地图查询。具体设计细节如下:
分层查询 (Hierarchical Query)。我们提出了一种分层查询嵌入方案,以显式地编码每个地图元素。具体而言,我们定义了一组实例级查询 {qiins}i=0N−1\{q^{ins}_i\}_{i=0}^{N-1}{qiins}i=0N−1 和一组由所有实例共享的点位级查询 {qjpt}j=0Nv−1\{q^{pt}_j\}_{j=0}^{N_v-1}{qjpt}j=0Nv−1。每个地图元素(索引为 iii)对应一组分层查询 {qijhie}j=0Nv−1\{q^{hie}_{ij}\}_{j=0}^{N_v-1}{qijhie}j=0Nv−1。第 iii 个地图元素的第 jjj 个点的分层查询公式化为:
qijhie=qiins+qjpt.(3) q^{hie}_{ij} = q^{ins}_i + q^{pt}_j. \quad (3) qijhie=qiins+qjpt.(3)
自注意力变体 (Self-Attention Variants)。MapTR [14] 采用 vanilla 自注意力使分层查询之间交换信息(包括实例间 inter-instance 和实例内 intra-instance),其计算复杂度为 O((N×Nv)2)O((N \times N_v)^2)O((N×Nv)2)(NNN 和 NvN_vNv 分别为实例查询和点位查询的数量)。随着查询数量的增加,计算成本和内存消耗急剧增加。
在 MapTRv2 中,为了减少计算和内存开销,我们采用了解耦自注意力 (decoupled self-attention),即分别在实例间维度 (inter-ins. dimension) 和实例内维度 (intra-ins. dimension) 执行注意力机制,如图 4 所示。解耦自注意力极大地降低了内存消耗和计算复杂度(从 O((N×Nv)2)O((N \times N_v)^2)O((N×Nv)2) 降低至 O(N2+Nv2)O(N^2 + N_v^2)O(N2+Nv2),并取得了比 vanilla 自注意力更高的性能。
另一种变体是仅执行实例间自注意力。仅通过实例间自注意力,MapTRv2 也达到了相当的性能(见第 6.3 节)。
交叉注意力变体 (Cross-Attention Variants)。解码器中的交叉注意力旨在使地图查询与输入特征进行交互。我们研究了三种类型的交叉注意力:基于 BEV 的、基于 PV 的以及混合交叉注意力。
对于基于 BEV 的交叉注意力,我们采用可变形注意力 (Deformable Attention) [10, 71],使分层查询与 BEV 特征进行交互。对于 2D 地图构建,每个查询 qijhieq^{hie}_{ij}qijhie 预测参考点 pijp_{ij}pij 的 2 维归一化 BEV 坐标 (xij,yij)(x_{ij}, y_{ij})(xij,yij)。对于 3D 地图构建,每个查询 qijhieq^{hie}_{ij}qijhie 预测参考点 pijp_{ij}pij 的 3 维归一化 3D 坐标 (xij,yij,zij)(x_{ij}, y_{ij}, z_{ij})(xij,yij,zij)。然后,我们在参考点周围采样 BEV 特征并更新查询。
地图元素通常具有不规则形状,且需要长程上下文信息。每个地图元素对应一组具有灵活且动态分布的参考点 {pij}j=0Nv−1\{p_{ij}\}_{j=0}^{N_v-1}{pij}j=0Nv−1。这些参考点 {pij}j=0Nv−1\{p_{ij}\}_{j=0}^{N_v-1}{pij}j=0Nv−1 可以适应地图元素的任意形状,并捕捉用于地图元素学习的丰富上下文信息。
对于基于 PV 的交叉注意力,我们将参考点 pijp_{ij}pij 投影到 PV 图像上,然后在投影后的参考点周围采样特征。密集的 BEV 特征被弃用。
混合交叉注意力是上述两种交叉注意力方式的结合。关于这些交叉注意力变体的消融实验见第 6.3 节。
预测头 (Prediction Head)。预测头非常简单,由一个分类分支和一个点位回归分支组成。分类分支预测实例类别分数。点位回归分支预测点位集 V^\hat{V}V^ 的位置。对于每个地图元素,它输出一个 2Nv2N_v2Nv 维或 3Nv3N_v3Nv 维的向量,表示 NvN_vNv 个点的归一化 2D 或 3D 坐标。
5 训练
5.1 分层二分匹配 (Hierarchical Bipartite Matching)

(图 5 说明:分层二分匹配。MapTRv2 执行实例级匹配以找到最优的实例级分配 π^\hat{\pi}π^,并执行点位级匹配以找到最优的点对点分配 γ^\hat{\gamma}γ^(见第 5.1 节)。基于最优的实例级和点位级分配 (π^\hat{\pi}π^ 和 {γ^i}\{\hat{\gamma}_i\}{γ^i}),定义了一对一集合预测损失(见第 5.2 节),用于端到端学习。)
MapTRv2 遵循基于查询的目标检测和分割范式 [13, 72, 79] 的端到端范式,在一次前向传播中并行推断固定大小的 NNN 个地图元素。NNN 被设置为大于场景中典型的地图元素数量。设 NNN 个预测的地图元素集合为 Y^={y^i}i=0N−1\hat{Y} = \{\hat{y}_i\}_{i=0}^{N-1}Y^={y^i}i=0N−1。真实标签 (GT) 地图元素集合通过填充 ∅\emptyset∅(无物体)形成大小为 NNN 的集合,记为 Y={yi}i=0N−1Y = \{y_i\}_{i=0}^{N-1}Y={yi}i=0N−1。yi=(ci,Vi,Γi)y_i = (c_i, V_i, \Gamma_i)yi=(ci,Vi,Γi),其中 ci,Vic_i, V_ici,Vi 和 Γi\Gamma_iΓi 分别是 GT 地图元素 yiy_iyi 的目标类别标签、点位集和排列群。y^i=(p^i,V^i)\hat{y}_i = (\hat{p}_i, \hat{V}_i)y^i=(p^i,V^i),其中 p^i\hat{p}_ip^i 和 V^i\hat{V}_iV^i 分别是预测的分类分数和预测的点位集。为了实现结构化的地图元素建模和学习,MapTRv2 引入了如图 5 所示的分层二分匹配,即依次执行实例级匹配和点位级匹配。
实例级匹配 (Instance-Level Matching)。首先,我们需要在预测的地图元素 {y^i}\{\hat{y}_i\}{y^i} 和 GT 地图元素 {yi}\{y_i\}{yi} 之间找到最优的实例级标签分配 π^\hat{\pi}π^。π^\hat{\pi}π^ 是 NNN 个元素的一个排列 (π^∈ΠN\hat{\pi} \in \Pi_Nπ^∈ΠN),具有最低的实例级匹配成本:
π^=argminπ∈ΠN∑i=0N−1Lmatchins(y^π(i),yi).(4) \hat{\pi} = \arg \min_{\pi \in \Pi_N} \sum_{i=0}^{N-1} L^{ins}_{match}(\hat{y}_{\pi(i)}, y_i). \quad (4) π^=argπ∈ΠNmini=0∑N−1Lmatchins(y^π(i),yi).(4)
Lmatchins(y^π(i),yi)L^{ins}_{match}(\hat{y}_{\pi(i)}, y_i)Lmatchins(y^π(i),yi) 是预测值 y^π(i)\hat{y}_{\pi(i)}y^π(i) 和 GT yiy_iyi 之间的成对匹配成本,同时考虑地图元素的类别标签和点位集的位置:
Lmatchins(y^π(i),yi)=LFocal(p^π(i),ci)+Lposition(V^π(i),Vi).(5) L^{ins}_{match}(\hat{y}_{\pi(i)}, y_i) = L_{Focal}(\hat{p}_{\pi(i)}, c_i) + L_{position}(\hat{V}_{\pi(i)}, V_i). \quad (5) Lmatchins(y^π(i),yi)=LFocal(p^π(i),ci)+Lposition(V^π(i),Vi).(5)
LFocal(p^π(i),ci)L_{Focal}(\hat{p}_{\pi(i)}, c_i)LFocal(p^π(i),ci) 是类别匹配成本项,定义为预测分类分数 p^π(i)\hat{p}_{\pi(i)}p^π(i) 和目标类别标签 cic_ici 之间的 Focal Loss [95]。Lposition(V^π(i),Vi)L_{position}(\hat{V}_{\pi(i)}, V_i)Lposition(V^π(i),Vi) 是位置匹配成本项,反映了预测点位集 V^π(i)\hat{V}_{\pi(i)}V^π(i) 与 GT 点位集 ViV_iVi 之间的位置相关性。利用匈牙利算法 (Hungarian algorithm) 找到最优的实例级分配 π^\hat{\pi}π^,遵循 DETR [13] 的方法。
点位级匹配 (Point-Level Matching)。在完成实例级匹配后,每个预测的地图元素 y^π^(i)\hat{y}_{\hat{\pi}(i)}y^π^(i) 被分配一个 GT 地图元素 yiy_iyi。然后,对于每个被分配正标签 (ci≠∅c_i \neq \emptysetci=∅) 的预测实例,我们执行点位级匹配,以在预测点位集 V^π^(i)\hat{V}_{\hat{\pi}(i)}V^π^(i) 和 GT 点位集 ViV_iVi 之间找到最优的点对点分配 γ^∈Γ\hat{\gamma} \in \Gammaγ^∈Γ。γ^\hat{\gamma}γ^ 是在预定义的排列群 Γ\GammaΓ 中选择具有最低点位级匹配成本的一个:
γ^=argminγ∈Γ∑j=0Nv−1DMht(v^j,vγ(j)).(6) \hat{\gamma} = \arg \min_{\gamma \in \Gamma} \sum_{j=0}^{N_v-1} DM_{ht}(\hat{v}_j, v_{\gamma(j)}). \quad (6) γ^=argγ∈Γminj=0∑Nv−1DMht(v^j,vγ(j)).(6)
DMht(v^j,vγ(j))DM_{ht}(\hat{v}_j, v_{\gamma(j)})DMht(v^j,vγ(j)) 是预测点位集 V^\hat{V}V^ 的第 jjj 个点与 GT 点位集 VVV 的 γ(j)\gamma(j)γ(j) 个点之间的曼哈顿距离 (Manhattan distance)。
5.2 一对一集合预测损失 (One-to-One Set Prediction Loss)
MapTRv2 基于最优的实例级和点位级分配 (π^\hat{\pi}π^ 和 {γ^i}\{\hat{\gamma}_i\}{γ^i}) 进行训练。基本损失函数由三部分组成:分类损失、点对点损失和边方向损失:
Lone2one=LHungarian(Y^,Y)=λcLcls+λpLp2p+λdLdir,(7) L_{one2one} = L_{Hungarian}(\hat{Y}, Y) = \lambda_c L_{cls} + \lambda_p L_{p2p} + \lambda_d L_{dir}, \quad (7) Lone2one=LHungarian(Y^,Y)=λcLcls+λpLp2p+λdLdir,(7)
其中 λc,λp\lambda_c, \lambda_pλc,λp 和 λd\lambda_dλd 是用于平衡不同损失项的权重。
分类损失 (Classification Loss)。利用实例级最优匹配结果 π^\hat{\pi}π^,每个预测的地图元素被分配一个类别标签。分类损失是一个 Focal Loss 项,公式化为:
Lcls=∑i=0N−1LFocal(p^π^(i),ci).(8) L_{cls} = \sum_{i=0}^{N-1} L_{Focal}(\hat{p}_{\hat{\pi}(i)}, c_i). \quad (8) Lcls=i=0∑N−1LFocal(p^π^(i),ci).(8)
点对点损失 (Point-to-Point Loss)。点对点损失监督每个预测点的位置。对于索引为 iii 的每个 GT 实例,根据点位级最优匹配结果 γ^i\hat{\gamma}_iγ^i,每个预测点 v^π^(i),j\hat{v}_{\hat{\pi}(i),j}v^π^(i),j 被分配一个 GT 点 vi,γ^i(j)v_{i,\hat{\gamma}_i(j)}vi,γ^i(j)。点对点损失定义为每对分配点之间的曼哈顿距离之和:
Lp2p=∑i=0N−11{ci≠∅}∑j=0Nv−1DMht(v^π^(i),j,vi,γ^i(j)).(9) L_{p2p} = \sum_{i=0}^{N-1} \mathbb{1}\{c_i \neq \emptyset\} \sum_{j=0}^{N_v-1} DM_{ht}(\hat{v}_{\hat{\pi}(i),j}, v_{i,\hat{\gamma}_i(j)}). \quad (9) Lp2p=i=0∑N−11{ci=∅}j=0∑Nv−1DMht(v^π^(i),j,vi,γ^i(j)).(9)
边方向损失 (Edge Direction Loss)。点对点损失仅监督折线和多边形的节点点,未考虑边(相邻点之间的连接线)。为了准确地表示地图元素,边的方向很重要。因此,我们进一步设计了边方向损失,以在高阶边层面监督几何形状。具体而言,我们考虑成对预测边 e^π^(i),j\hat{e}_{\hat{\pi}(i),j}e^π^(i),j 和 GT 边 ei,γ^i(j)e_{i,\hat{\gamma}_i(j)}ei,γ^i(j) 的余弦相似度:
Ldir=−∑i=0N−11{ci≠∅}∑j=0Nv−1cos_sim(e^π^(i),j,ei,γ^i(j)), L_{dir} = - \sum_{i=0}^{N-1} \mathbb{1}\{c_i \neq \emptyset\} \sum_{j=0}^{N_v-1} \text{cos\_sim}(\hat{e}_{\hat{\pi}(i),j}, e_{i,\hat{\gamma}_i(j)}), Ldir=−i=0∑N−11{ci=∅}j=0∑Nv−1cos_sim(e^π^(i),j,ei,γ^i(j)),
e^π^(i),j=v^π^(i),j−v^π^(i),(j+1) mod Nv, \hat{e}_{\hat{\pi}(i),j} = \hat{v}_{\hat{\pi}(i),j} - \hat{v}_{\hat{\pi}(i),(j+1) \bmod N_v}, e^π^(i),j=v^π^(i),j−v^π^(i),(j+1)modNv,
ei,γ^i(j)=vi,γ^i(j)−vi,γ^i((j+1) mod Nv).(10) e_{i,\hat{\gamma}_i(j)} = v_{i,\hat{\gamma}_i(j)} - v_{i,\hat{\gamma}_i((j+1) \bmod N_v)}. \quad (10) ei,γ^i(j)=vi,γ^i(j)−vi,γ^i((j+1)modNv).(10)
5.3 辅助多对一集合预测损失 (Auxiliary One-to-Many Set Prediction Loss)

(图 6 说明:辅助多对一匹配分支。我们在训练期间引入额外的 TTT 个实例级查询以提供辅助监督。点位级查询和 Transformer 解码器层由这两组实例查询共享。我们对第一组实例查询执行一对一匹配,如第 5 节所示,并对第二组实例查询执行多对一匹配,方法是将 GT 地图元素重复 KKK 次。详细的匹配过程与分层二分匹配相同。)
为了加快收敛速度,受 [96] 启发,我们在训练期间添加了一个辅助的多对一匹配分支。如图 6 所示,多对一匹配分支与一对一匹配分支共享相同的点位查询和 Transformer 解码器,但拥有额外的一组实例查询 {qi′ins}i=0T−1\{q'^{ins}_i\}_{i=0}^{T-1}{qi′ins}i=0T−1(TTT 是查询数量)。该分支预测地图元素 Y^′={y^i′}i=0T−1\hat{Y}' = \{\hat{y}'_i\}_{i=0}^{T-1}Y^′={y^i′}i=0T−1。我们将 GT 地图元素重复 KKK 次(如果不够,则用 ∅\emptyset∅ 填充),形成大小为 TTT 的集合,记为 Y′={yi′}i=0T−1Y' = \{y'_i\}_{i=0}^{T-1}Y′={yi′}i=0T−1。然后,我们在 Y^\hat{Y}Y^ 和 Y′Y'Y′ 之间执行相同的分层二分匹配,并计算辅助的多对一集合预测损失:
Lone2many=LHungarian(Y^′,Y′)(11) L_{one2many} = L_{Hungarian}(\hat{Y}', Y') \quad (11) Lone2many=LHungarian(Y^′,Y′)(11)
在多对一匹配分支中,一个 GT 元素被分配给 KKK 个预测元素。随着正样本比例的增加,地图解码器的收敛速度更快。
1. 背景:为什么需要辅助多对一匹配分支?
在基于 DETR 的架构中,模型通过二分匹配(Hungarian Algorithm)将预测的 NNN 个查询(queries)与真实标签(Ground Truth, GT)进行配对。
- 痛点:初始时,随机初始化的模型产生的预测非常不准。如果每个预测查询只能匹配到一个 GT(一对一匹配),那么大多数查询都会匹配到“空物体”(∅\emptyset∅)。这意味着只有少数几个查询能更新梯度,导致模型学习速度慢,收敛困难。
- 目标:增加“正样本”(即匹配到真实物体的查询)的比例,让更多查询参与有效的梯度更新,从而加速收敛。
2. 机制详解:多对一(One-to-Many)是如何工作的?
A. 共享架构,独立查询
如图 6 所示,MapTRv2 有两个并行的输出分支:
- 一对一分支(主分支):拥有 NNN 个实例查询,执行标准的一对一匹配。
- 多对一分支(辅助分支):拥有额外的 TTT 个实例查询(TTT 通常大于 NNN)。
- 关键点:这两个分支共享相同的位置级查询(point queries)、Transformer 解码器层和权重。这意味着它们学习的是相同的特征表示,只是最终的分配策略不同。
B. 制造“冗余”的真实标签
在主分支中,我们有 NNN 个预测去匹配 NNN 个 GT(不足的用 ∅\emptyset∅ 填充)。
在辅助分支中,作者玩了一个“数量游戏”:
- 将真实的 GT 地图元素重复 KKK 次。
- 例如,如果场景中有 5 个车道,GT 集合原本大小是 5。现在重复 3 次,GT 集合大小变成 5×3=155 \times 3 = 155×3=15。
- 如果辅助分支的查询总数 TTT 是 20,那么剩下的 5 个位置用 ∅\emptyset∅ 填充。
-
增加正样本率(Positive Sample Ratio):
在标准的一对一匹配中,如果模型预测不准,很多查询会被强制匹配为 ∅\emptyset∅(负样本),这些负样本对定位和形状学习的梯度贡献较小。
在多对一匹配中,通过重复 GT,强制更多的查询去匹配真实的物体(即使它们匹配的是同一个物体的不同副本)。这迫使解码器更早地关注那些可能已经大致正确的查询区域,产生更强的定位和形状梯度。 -
更密集的梯度信号:
更多的查询参与计算损失(Lone2manyL_{one2many}Lone2many),意味着反向传播时有更多的参数得到更新,尤其是那些原本因为匹配到 ∅\emptyset∅ 而“闲置”的查询。 -
缓解匹配的不稳定性:
在训练初期,模型预测非常随机。一对一匹配时,一个 GT 可能偶尔匹配给查询 A,下一帧匹配给查询 B,导致震荡。多对一匹配提供了更多的“缓冲”,让多个查询可以共同逼近同一个物体,起到平滑梯度的作用。
5.4 辅助密集预测损失 (Auxiliary Dense Prediction Loss)
为了进一步利用语义和几何信息,我们引入了三个辅助密集预测损失:
Ldense=αdLdepth+αbLBEVSeg+αpLPVSeg.(12) L_{dense} = \alpha_d L_{depth} + \alpha_b L_{BEVSeg} + \alpha_p L_{PVSeg}. \quad (12) Ldense=αdLdepth+αbLBEVSeg+αpLPVSeg.(12)
深度预测损失 (Depth Prediction Loss)。遵循 BEVDepth [91],我们利用 LiDAR 点云渲染每个透视视角的 GT 深度图 {D1,…,DM}\{D_1, \dots, D_M\}{D1,…,DM}。并在 PV 特征图 F={F1,…,FM}F = \{F_1, \dots, F_M\}F={F1,…,FM} 上添加一个简单的深度预测头 ϕdepth\phi_{depth}ϕdepth。深度预测损失定义为预测深度图与渲染的 GT 深度图之间的交叉熵损失:
Ldepth=∑m=1MLCE(ϕdepth(Fm),Dm).(13) L_{depth} = \sum_{m=1}^M L_{CE}(\phi_{depth}(F_m), D_m). \quad (13) Ldepth=m=1∑MLCE(ϕdepth(Fm),Dm).(13)
BEV 分割损失 (BEV Segmentation Loss)。受 BeMapNet [29] 启发,我们在 BEV 特征图 FBEVF_{BEV}FBEV 上添加了一个辅助 BEV 分割头 ϕBEVSeg\phi_{BEVSeg}ϕBEVSeg。我们将地图 GT 在 BEV 画布上进行光栅化以获得 BEV 前景掩码 MBEVM_{BEV}MBEV。BEV 分割损失定义为预测的 BEV 分割图与二元 GT 地图掩码之间的交叉熵损失:
LBEVSeg=LCE(ϕBEVSeg(FBEV),MBEV).(14) L_{BEVSeg} = L_{CE}(\phi_{BEVSeg}(F_{BEV}), M_{BEV}). \quad (14) LBEVSeg=LCE(ϕBEVSeg(FBEV),MBEV).(14)
PV 分割损失 (PV Segmentation Loss)。为了充分利用密集监督,我们利用相机的内参和外参将地图 GT 渲染到透视视角上,并获得透视前景掩码 {M1PV,…,MMPV}\{M^{PV}_1, \dots, M^{PV}_M\}{M1PV,…,MMPV}。并在 PV 特征图 F={F1,…,FM}F = \{F_1, \dots, F_M\}F={F1,…,FM} 上添加一个辅助 PV 分割头 ϕPVSeg\phi_{PVSeg}ϕPVSeg。PV 分割损失 LPVSegL_{PVSeg}LPVSeg 定义为:
LPVSeg=∑m=1MLCE(ϕPVSeg(Fm),MmPV).(15) L_{PVSeg} = \sum_{m=1}^M L_{CE}(\phi_{PVSeg}(F_m), M^{PV}_m). \quad (15) LPVSeg=m=1∑MLCE(ϕPVSeg(Fm),MmPV).(15)
5.5 总体损失 (Overall Loss)
总体损失定义为上述损失的加权和:
L=βoLone2one+βmLone2many+βdLdense.(16) L = \beta_o L_{one2one} + \beta_m L_{one2many} + \beta_d L_{dense}. \quad (16) L=βoLone2one+βmLone2many+βdLdense.(16)
7 结论
MapTRv2 是一个用于高效在线矢量高精度地图构建的结构化端到端框架,它采用简单的编码器-解码器 Transformer 架构以及分层二分匹配,基于所提出的排列等价建模方法实现地图元素学习。大量实验表明,所提方法能够在 nuScenes 和 Argoverse2 数据集中精确感知任意形状的地图元素。我们希望 MapTRv2 能够作为自动驾驶系统的基础模块,并推动下游任务(例如运动预测与规划)的发展。
更多推荐



所有评论(0)