论文阅读《MapTRv2: An End-to-End Framework for Online Vectorized HD Map Construction》

摘要

高精地图提供了丰富而精确的驾驶场景静态环境信息,是自动驾驶系统规划的基础和不可或缺的组成部分。在本文中,我们提出了Map TRansformer,一个用于在线矢量化高清地图构建的端到端框架。我们提出了一种统一的等效置换建模方法,即将地图元素建模为具有一组等效置换的点集,从而准确地描述了地图元素的形状并稳定了学习过程。我们设计了一种分层查询嵌入方案,对结构化地图信息进行灵活编码,并对地图元素进行分层二部匹配学习。为了加快收敛速度,我们进一步引入了辅助的一对多匹配和稠密监督。该方法可以很好地处理各种形状的地图元素。它以实时推理速度运行,并在nuScenes和Argoverse2数据集上实现了最先进的性能。丰富的定性结果表明,在复杂多样的驾驶场景中,使用该方法绘制出的地图的质量稳定且鲁棒。代码和更多的演示可以在https://github.com/hustvl/MapTR上获得,以促进进一步的研究和应用。

1 介绍

HD (high-definition)地图是专门为自动驾驶设计的高精度地图,由地图元素(人行横道、车道分隔、道路边界、中心线等)的实例级矢量化表示组成。高清地图包含丰富的道路拓扑和交通规则语义信息,对自动驾驶车辆的导航至关重要。

传统的高精地图是通过基于SLAM的方法离线构建的[1],[2],[3],这带来了很多问题:1)流水线复杂,成本高;2)地图难以及时更新;3)与自车不对准,定位误差大(经验误差纵向为0.4m,横向为0.2m)。

鉴于这些局限性,近年来,在线高精地图构建引起了人们越来越多的兴趣,它利用车载传感器在运行时构建自车周围的地图,很好地解决了上述问题。

早期的作品[4],[5],[6]利用线条形状先验,只在前视图像上感知开放形状的车道。它们仅限于单视图感知,不能处理其他具有任意形状的地图元素。随着鸟瞰(bird 's eye view, BEV)表示学习的发展,最近的研究[7],[8],[9],[10]通过对BEV进行语义分割来预测栅格化地图。

然而,栅格化的地图缺乏矢量化的实例级信息,例如车道结构,这对下游任务(例如,运动预测和规划)很重要。为了构建矢量化的高精地图,HDMapNet[11]将逐像素分割结果分组为矢量化实例,这需要复杂且耗时的后处理。VectorMapNet[12]将每个地图元素表示为一个点序列。它采用级联的由粗到精框架,并利用自回归解码器顺序预测点,导致推理时间长,误差积累。

目前来说,特别是在实时场景下,在线矢量化高精地图构建算法受到效率和精度的限制。最近,DETR[13]采用了一种简单高效的编码器-解码器Transformer架构,实现了端到端的目标检测。自然而然会想到一个问题:我们可以设计一个类似于DETR的范例来高效地端到端构建矢量化高精地图吗?我们用提出的Map TRansformer来证明答案是肯定的。

与物体检测中物体可以很容易地抽象为包围框不同,矢量化地图元素具有更多的动态形状。为了准确地描述地图元素,我们提出了一种新的统一建模方法。我们将每个建图元素建模为具有一组等价排列的点集。点集决定了地图元素的位置。排列群包含了同一几何形状对应的点集的所有可能的组织序列,避免了形状的模糊性。

在等效置换建模的基础上,设计了以车载传感器数据为输入输出的矢量化高精地图的结构化框架。我们将在线矢量化高精地图构建简化为一个并行回归问题。我们提出了分层查询嵌入,以灵活地编码实例级和点级信息。使用统一的Transformer结构同时预测所有实例和实例的所有点。为了降低计算和内存成本,我们为查询之间的交互引入了解耦的自注意力机制,即分别沿着内部和外部执行注意力机制。

训练流水线被表述为一个集合预测任务,其中我们执行分层二部匹配来依次分配实例和点。并利用所提出的点对点损失和边缘方向损失对点和边缘的几何形状进行监督。

为了加快收敛速度,我们在训练过程中增加了一个辅助的一对多匹配分支,增加了正样本的比例。为了进一步利用语义和几何信息,我们在透视图(PV)和鸟瞰图(BEV)上引入了辅助前景分割,并利用深度监督引导主干学习三维几何信息。

针对所有提出的设计,我们提出了MapTRv2,一种高效的端到端在线矢量化高精地图构建方法,具有统一的建模和架构。MapTRv2在nuScenes[14]数据集和Argoverse2[15]数据集上都达到了现有矢量化地图构建方法中最好的性能和效率。特别是在nuScenes上,基于ResNet18骨干的MapTRv2在RTX 3090上以实时推理速度(33.7 FPS)运行,比以前最先进的(SOTA)基于相机的方法VectorMapNet快15倍,同时实现了更高的mAP,即6.3。以ResNet50为骨干,MapTRv2以14.1 FPS的速度达到68.7 mAP,比VectorMapNet-ResNet50高22.7 mAP,速度快6倍,甚至优于多模态VectorMapNet。当扩展到更大的主干VoVNetV2-99时,MapTRv2在只有摄像头输入的情况下创造了新的记录(73.4 mAP和9.9 FPS)。在Argoverse2上,MapTRv2在相同主干ResNet50的3D地图构建方面优于VectorMapNet 28.9 mAP。如图9和图10所示,在复杂多样的驾驶场景中,MapTRv2仍能保持稳定稳健的地图构建质量。

在这里插入图片描述

图9 在Argoverse2 val数据集上的定性结果。由于我们预测的是三维矢量化的高精地图,因此预测结果可以准确地渲染在周围的视图上。

在这里插入图片描述

图10 在nuScenes val数据集上的定性结果。

我们的贡献可以总结如下:

  • 我们提出了一种统一的地图元素等效排列建模方法,即将地图元素建模为具有一组等效排列的点集,从而准确地描述了地图元素的形状并稳定了学习过程。
  • 在此基础上,我们提出了一个结构化的端到端框架,用于高效的在线矢量化高精地图构建。我们设计了一种分层查询嵌入方案,对实例级和点级信息进行灵活编码,对地图元素进行分层二部匹配学习。为了加快收敛速度,我们进一步引入了辅助一对多匹配和辅助稠密监督。
  • 该方法是第一个实时、SOTA矢量化高精地图构建方法,在复杂、多样的驾驶场景中具有稳定、鲁棒的性能。

这篇期刊论文(MapTRv2)是在ICLR 2023上发表的会议论文(MapTR)的扩展[16]。与前一个版本相比,改进如下。首先,我们引入了针对分层查询机制的解耦自注意力机制,大大降低了内存消耗并带来了收益。其次,引入辅助的一对多点集预测分支,加快收敛速度。第三,我们对透视图和鸟瞰图都采用了辅助稠密监督,显著提高了性能。第四,MapTRv2将MapTR扩展到中心线建模和学习,这对于下游运动规划非常重要。第五,对提出的模块进行了更多的理论分析和讨论,揭示了我们的框架的工作机制。最后,我们将框架扩展到3D地图构建(会议版本学习2D地图),并在Argoverse2数据集[15]上提供额外的实验。

2 相关工作

高精地图构建。近年来,随着PV-to-BEV方法的发展[17],[18],将高清地图构建问题制定为基于车载相机捕获的环视图像数据的分割问题。[7],[8],[9],[10],[19],[20],[21],[22],[23],[24]通过执行BEV语义分割生成栅格化地图。为了构建矢量化的高精地图,HDMapNet[11]将像素级语义分割结果分组,并进行启发式和耗时的后处理,以生成矢量化实例。VectorMapNet[12]作为第一个端到端框架,采用两阶段粗到细框架,利用自回归解码器顺序预测点,导致推理时间长,排列模糊。与VectorMapNet不同的是,我们的方法为地图元素引入了新颖统一的形状建模,解决了模糊性问题,稳定了学习过程。我们进一步构建了一个具有更高效率的结构化和并行的单步骤框架。我们会议版[16]的同步和后续工作重点是端到端高精地图构建的其他有前途的设计[25],[26],[27],[28],[29],并扩展到其他相关任务[30],[31],[32],[33],[34],[35]。BeMapNet[26]采用统一的分段贝塞尔曲线来描述地图元素的几何形状,并借助于Transformer直接利用已建立的集合预测范式。NMP[30]引入了全局地图的神经表示,实现了自动全局地图更新并增强了局部地图推理性能。TopoNet[31]提出了一个综合框架来学习车道之间的连接关系以及车道与交通要素之间的分配关系。PolyDiffuse[28]在MapTR中引入了扩散机制,通过条件生成过程进一步优化结果。MapVR[27]将可微光栅化应用于MapTR产生的矢量化结果,以结合精确和几何感知的监督。MapTRv2将MapTR扩展为一个更通用的框架。它支持中心线学习和3D地图构建。该算法具有更高的精度和更快的收敛速度。

车道线检测。车道检测可以看作是高精地图构建的一个子任务,其重点是检测道路场景中的车道元素。由于车道检测的大多数数据集只提供单视图标注,并且主要关注开形元素,因此相关方法[4],[5],[6],[36],[37],[38],[39],[40],[41],[42],[43]仅限于单视图。LaneATT[37]采用基于锚点的深车道检测模型,实现了精度和效率之间的良好权衡。LSTR[5]采用Transformer架构直接输出车道形状模型的参数。GANet[38]将车道检测作为一个关键点估计和关联问题,采用自下而上的设计。 [39]提出了基于参数贝塞尔曲线的车道检测方法。[44]提出了3D-LaneNet,取代了在二维图像坐标中检测车道的方法,在鸟瞰图中进行三维车道检测。STSU[6]将车道表示为BEV坐标下的有向图,采用基于曲线的贝塞尔方法从单目相机图像中预测车道。Persformer[4]提供了更好的BEV特征表示,并优化了锚点设计,同时统一了2D和3D车道检测。BEV-LaneDet[36]提出了一种保证一致性的虚拟相机,并提出了一种高效的空间变换金字塔模块。

基于轮廓的二维实例分割。另一项相关工作是基于轮廓的二维实例分割[45],[46],[47],[48],[49],[50],[51],[52],[53]。这些方法将二维实例分割重新定义为目标轮廓预测任务,其中目标轮廓是一个封闭形状的多边形,并估计轮廓顶点的图像坐标。CurveGCN[54]利用图卷积网络来预测多边形边界。PolarMask[46]在极坐标系统中通过实例中心分类和稠密距离回归生成实例轮廓。Deepsnake[55]提出了一种两阶段的轮廓演化过程,并设计了圆卷积来利用轮廓的特征。BoundaryFormer[56]采用先进的Transformer架构,根据第一阶段预测的中间框结果,采用两阶段范式生成多边形顶点。SharpContour[45]提出了一种高效且通用的基于轮廓的边界细化方法,通过以离散方式更新偏移量来迭代轮廓。

检测Transformers。作为一项先驱工作,DETR[13]消除了对手工制作组件的需求(例如,锚点生成、基于规则的标签分配、非最大抑制后处理),并构建了第一个完全端到端对象检测器。它将对象盒表示为一组查询,并直接采用统一的Transformer编码器-解码器体系结构来执行对象盒检测。由于DETR及其变体[57],[58],[59],[60],[61],[62],[63],[64]的有效性和简单性,它们的范式被广泛应用于许多复杂的任务中,如二维实例分割[65],[66],[67]、二维姿态估计[68],[69],[70]、三维目标检测[10],[71],[72],[73]。MapTRv2直接继承了DETR的简单性和端到端方式,可以高效地在线生成高质量的矢量化高精地图。

3 形状建模

MapTRv2旨在对高精地图进行统一建模和学习。高精地图是矢量化静态地图元素的集合,包括人行横道、车道分割线(即车道边线)、道路边界、中心线(即车道中心线)等。对于结构化建模,MapTRv2在几何上将地图元素抽象为封闭形状(如人行横道)和开放形状(如车道分隔线)。通过沿形状边界依次采样点,将封闭单元离散为多边形,将开放单元离散为折线。

初步地,多边形和折线都可以表示为有序点集 V F = [ v 0 , v 1 , ⋯   , v N v − 1 ] V^F=[v_0,v_1,\cdots,v_{N_v-1}] VF=[v0,v1,,vNv1](见图2Vanilla)。 N v N_v Nv表示点的个数。然而,点集的排列不是明确定义的,也不是唯一的。多边形和折线存在许多等价排列。例如,如图3(a)所示,对于两个相对车道之间的车道分隔线(折线),很难确定其方向。车道分界线的两个端点都可以作为起点,点集可以在两个方向上组织。在图3(b)中,对于人行横道(多边形),点集可以按逆时针和顺时针两个相反方向组织。循环改变点集的排列对多边形的几何形状没有影响。对点集施加固定排列作为监督是不合理的。强加的固定排列与其他等价排列互相矛盾,阻碍了学习过程。

在这里插入图片描述 图2 等效排列形状建模的实例。地图元素在几何上抽象并离散为折线和多边形。MapTRv2用 ( V , Γ ) (V,Γ) (V,Γ)(一个点集 V V V和一组等价排列 Γ Γ Γ)对每个地图元素建模,避免了歧义,稳定了学习过程。一个特殊的情况是,如果折线元素有一个特定的方向(例如,中心线), Γ Γ Γ只包含一个排列。

在这里插入图片描述
图3 地图元素在起点和方向上的模糊性的典型案例。左:对于方向不明确的折线(例如,两条相对车道之间的车道分隔线),很难确定其方向。车道分界线的两个端点都可以作为起点,点集可以在两个方向上组织。右:对于多边形(如人行横道),多边形的每个点都可以作为起点,多边形可以在两个相反的方向上(逆时针和顺时针)连接。请注意,某些类型的地图元素(如中心线)具有特定的方向,并且没有歧义问题。

为了弥补这个差距,MapTRv2用 V = ( V , Γ ) \mathcal{V} = (V,Γ) V=(V,Γ)对每个地图元素建模。 V = { v j } j = 0 N v − 1 V=\{ v_j\}_{j=0}^{N_v-1} V={vj}j=0Nv1表示地图元素的点集, N v N_v Nv表示点的数目。 Γ = { γ k } \Gamma=\{\gamma^{k} \} Γ={γk}表示点集 V V V的一组等效排列,涵盖了所有可能的组织序列。

具体而言,对于方向不明确的折线元素(见图2左图), Γ \Gamma Γ包含两种等效排列:
Γ p o l y l i n e = { γ 0 , γ 1 } = { γ 0 ( j ) = j % N v , γ 1 ( j ) = ( N v − 1 ) − j % N v . (1) \Gamma_{polyline}=\{ \gamma^0, \gamma^1 \} \\ =\begin{cases} \gamma^0(j)=j\%N_v, \\ \gamma^1(j)=(N_v-1)-j\%N_v. \end{cases} \tag{1} Γpolyline={γ0,γ1}={γ0(j)=j%Nv,γ1(j)=(Nv1)j%Nv.(1)

对于具有特定方向的折线元素(如中心线), Γ \Gamma Γ只包含一个排列: { γ 0 } \{ \gamma^0 \} {γ0}

对于多边形元素(见图2右边), Γ \Gamma Γ包含 2 × N v 2\times N_v 2×Nv中等价排列:
Γ p l o y g o n = { γ 0 , γ 1 , γ 2 , ⋯   , γ 2 × N v − 1 } = { γ 0 ( j ) = j % N v , γ 1 ( j ) = ( N v − 1 ) − j % N v , γ 2 ( j ) = ( j + 1 ) % N v , γ 3 ( j ) = ( N v − 1 ) − ( j + 1 ) % N v , ⋯   , γ 2 × N v − 2 ( j ) = ( j + N v − 1 ) % N v , γ 2 × N v − 1 ( j ) = ( N v − 1 ) − ( j + N v − 1 ) % N v . (2) \Gamma_{ploygon}=\{\gamma^0,\gamma^1,\gamma^2,\cdots, \gamma^{2\times N_v-1} \} \\ =\begin{cases} \gamma^0(j)=j\%N_v, \\ \gamma^1(j)=(N_v-1)-j\%N_v, \\ \gamma^2(j)=(j+1)\%N_v, \\ \gamma^3(j)=(N_v-1)-(j+1)\%N_v, \\ \cdots, \\ \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} \tag{2} Γploygon={γ0,γ1,γ2,,γ2×Nv1}= γ0(j)=j%Nv,γ1(j)=(Nv1)j%Nv,γ2(j)=(j+1)%Nv,γ3(j)=(Nv1)(j+1)%Nv,,γ2×Nv2(j)=(j+Nv1)%Nv,γ2×Nv1(j)=(Nv1)(j+Nv1)%Nv.(2)
通过引入等效排列的概念,MapTRv2模型以统一的方式映射元素,解决了歧义问题。

4 架构

MapTRv2采用编码器-解码器范式。总体架构如图4所示。

在这里插入图片描述
图4 MapTRv2的整体架构。MapTRv2采用编码器-解码器范式。地图编码器将传感器输入转换为统一的BEV表示。地图解码器采用分层查询嵌入方案对地图元素进行显式编码。L堆叠的Transformer解码器层迭代地细化预测的地图元素。我们提出了几个自关注变量和交叉关注变量来有效地更新查询特征。MapTRv2是完全端到端的。该流水线结构严密、紧凑、高效。

4.1 地图编码器

地图编码器从传感器数据中提取特征,并将这些特征转换为统一的特征表示,即BEV表示。MapTRv2兼容各种车载传感器。以多视图 I = { I 1 , ⋯   , I M } \mathcal{I}=\{I_1,\cdots,I_M\} I={I1,,IM}为例,我们利用传统主干网络来生成多视图特征图 F = { F 1 , ⋯   , F M } \mathcal{F}=\{F_1,\cdots,F_M\} F={F1,,FM}。然后,透视图像特征 F \mathcal{F} F被转换为BEV特征 B = R H × W × C \mathcal{B}=\mathbb{R}^{H\times W\times C} B=RH×W×C。我们支持各种PV2BEV转换方法,例如CVT[8],LSS[19],[21],[74],[75],可变形的注意力机制[10],[57],GKT[7]和IPM[76]。在MapTRv2中,为了显式地利用深度信息[74],我们选择基于LSS的BEVPoolv2[77]作为默认的转换方法。将MapTRv2扩展到多模态传感器数据是自然而然的。

4.2 地图解码器

地图解码器由地图查询和若干解码器层组成。每个解码器层利用自关注和交叉关注来更新地图查询。具体设计如下:

分级查询。我们提出了一种分层查询嵌入方案来显式地对每个地图元素进行编码。具体来说,我们定义了一组实例级查询 { q i i n s } i = 0 N − 1 \{q_i^{ins}\}_{i=0}^{N-1} {qiins}i=0N1和一组所有实例共享的点级查询 { q j p t } j = 0 N v − 1 \{q_j^{pt} \}_{j=0}^{N_v-1} {qjpt}j=0Nv1。每个地图元素(索引为 i i i)对应一组分层查询 { q i j h i e } j = 0 N v − 1 \{q_{ij}^{hie}\}_{j=0}^{N_v-1} {qijhie}j=0Nv1。第 i i i个地图元素的第 j j j个点的分层查询公式为:
q i j h i e = q i i n s + q j p t . (3) q_{ij}^{hie}=q_i^{ins}+q_j^{pt}. \tag{3} qijhie=qiins+qjpt.(3)

自注意力机制变体。MapTR[16]采用普通自注意力机制使分层查询相互交换信息(实例间和实例内),其计算复杂度为 O ( ( N × N v ) 2 ) O((N ×N_v) ^2) O((N×Nv)2) N N N N v N_v Nv分别为实例查询数和点查询数)。随着查询数量的增加,计算成本和内存消耗急剧增加。

在MapTRv2中,为了减少计算和内存的预算,我们采用了解耦的自注意力机制,即分别沿着实例间和实例内的自注意力,如图4所示。解耦的自注意力机制极大地降低了内存消耗和计算复杂度(从 O ( ( N × N v ) 2 ) O((N × N_v)^2) O((N×Nv)2) O ( N 2 + N v 2 ) ) O(N^2+N^2_v)) O(N2+Nv2)),并获得了比普通自注意力更高的性能。

另一种变体只执行实例间的自注意力,MapTRv2也达到了类似的性能(见第6.3节)。

交叉注意力机制变体。解码器中的交叉注意力设计用于使地图查询与输入特征交互。我们研究了三种交叉注意力:BEV型交叉注意力、PV型交叉注意力和混合交叉注意力。

对于基于BEV的交叉注意力,我们采用可变形注意力[10],[57]使分层查询与BEV特征交互。对于2D地图构建,每个查询 q i j h i e q_{ij}^{hie} qijhie预测参考点 p i j p_{ij} pij的二维归一化BEV坐标 ( x i j , y i j ) (x_{ij},y_{ij}) (xij,yij)。对于三维地图构建,每个查询 q i j h i e q^{hie}_{ij} qijhie预测参考点 p i j p_{ij} pij的三维归一化三维坐标 ( x i j , y i j , z i j ) (x_{ij},y_{ij},z_{ij}) (xij,yij,zij)。然后,我们对参考点周围的BEV特征进行采样并更新查询。

地图元素通常具有不规则的形状,并且需要长期的上下文。每个地图元素对应一组参考点 { p i j } j = 0 N v − 1 \{p_{ij}\} ^{N_v−1}_{j=0} {pij}j=0Nv1,具有灵活的动态分布。参考点 { p i j } j = 0 N v − 1 \{p_{ij}\}^{N_v−1}_{j=0} {pij}j=0Nv1可以适应任意形状的地图元素,并捕获用于地图元素学习的上下文信息。

对于基于PV的交叉注意力,我们将参考点 p i j p_{ij} pij投影到透视图像上,然后对投影参考点周围的特征进行采样。稠密的BEV特征被贬低。

混合交叉注意力是上述两者的结合。关于这些交叉注意力变体的消融实验将在第6.3节中介绍。

Prediction Head。预测头简单,由分类分支和点回归分支组成。分类分支预测实例类得分。点回归分支预测点集 V ^ \hat{V} V^的位置。对于每个地图元素,它输出一个 2 N v 2N_v 2Nv 3 N v 3N_v 3Nv维向量,它表示 N v N_v Nv点的标准化二维或三维坐标。

5 训练

5.1 层次二部匹配

MapTRv2遵循基于查询的目标检测和分割范式的端到端范式[13],[58],[65],在一次遍历中并行推断出固定大小的 N N N个地图元素集。 N N N被设置为大于场景中地图元素的典型数量。我们用 Y ^ = { y ^ i } i = 0 N − 1 \hat{Y}= \{\hat{y}_i\}^{N−1}_{i=0} Y^={y^i}i=0N1来表示 N N N个预测地图元素的集合。真值地图元素集合以 ∅ \emptyset 填充,形成大小为 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),其中 c i c_i ci V i V_i Vi Γ i \Gamma_i Γi分别表示目标类别标签、点集和GT地图元素 y i y_i yi的排列集合。 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}_i p^i V ^ i \hat{V}_i V^i分别表示预测的类别分数和预测的点集。为了实现结构化的地图元素建模和学习,MapTRv2引入了分层二部匹配,如图5所示,即依次进行实例级匹配和点级匹配。

在这里插入图片描述图5 分层二部匹配。MapTRv2执行实例级匹配以找到最优的实例级分配 π ^ \hat{\pi} π^;执行点级匹配以找到最优的点对点分配 γ ^ \hat{\gamma} γ^(第5.1节)。基于最优实例级和点级分配( π ^ \hat{\pi} π^ { γ ^ i } \{\hat{\gamma}_i\} {γ^i}),定义了端到端学习的一对一集合预测损失(第5.2节)。

实例级匹配。首先,我们需要在预测地图元素 { y ^ i } \{\hat{y}_i\} {y^i}和GT地图元素 { y i } \{y_i\} {yi}之间找到一个最优的实例级标签分配 π ^ \hat{\pi} π^ π ^ \hat{\pi} π^ π ^ ∈ Π N \hat{\pi}\in \Pi_N π^ΠN)是由 N N N个元素组成的具有最低实例级匹配代价的排列:
π ^ = a r g m i n π ∈ Π N ∑ i = 0 N − 1 L i n s _ m a t c h ( y ^ π ( i ) , y i ) . (4) \hat{\pi}=\underset{\pi \in \Pi_N}{argmin} \sum_{i=0}^{N-1} \mathcal{L}_{ins\_match}(\hat{y}_{\pi (i)}, y_i). \tag{4} π^=πΠNargmini=0N1Lins_match(y^π(i),yi).(4)

L i n s _ m a t c h ( y ^ π ( i ) , y i ) \mathcal{L}_{ins\_match}(\hat{y}_{\pi (i)}, y_i) Lins_match(y^π(i),yi)是预测 y ^ π ( i ) \hat{y}_{\pi (i)} y^π(i)和GT y i y_i yi之间的成对匹配代价,它考虑了地图元素的标签和点集的位置:
L i n s _ m a t c h ( y ^ π ( i ) , y i ) = L F o c a l ( p ^ π ( i ) , c i ) + L p o s i t i o n ( V ^ π ( i ) , V i ) . (5) \mathcal{L}_{ins\_match}(\hat{y}_{\pi (i)}, y_i)=\mathcal{L}_{Focal}(\hat{p}_{\pi(i)}, c_i)+\mathcal{L}_{position}(\hat{V}_{\pi (i)}, V_i). \tag{5} Lins_match(y^π(i),yi)=LFocal(p^π(i),ci)+Lposition(V^π(i),Vi).(5)
其中 L F o c a l ( p ^ π ( i ) , c i ) \mathcal{L}_{Focal}(\hat{p}_{\pi(i)},c_i) LFocal(p^π(i),ci)是类别匹配损失,定义为类别得分 p ^ π ( i ) \hat{p}_{\pi(i)} p^π(i)和目标类别标签 c i c_i ci之间的Focal Loss[78]; L p o s i t i o n ( V ^ π ( i ) , V i ) \mathcal{L}_{position}(\hat{V}_{\pi(i)},V_i) Lposition(V^π(i),Vi)是位置匹配损失,它反映了预测点集 V ^ π ( i ) \hat{V}_{\pi(i)} V^π(i)和GT点集 V i V_i Vi之间的位置修正。使用匈牙利算法根据DETR[13]找到最优的实例级分配 π ^ \hat{\pi} π^

点级匹配。经过实例级匹配之后,每一个预测地图元素 y ^ π ^ ( i ) \hat{y}_{\hat{\pi}(i)} y^π^(i)分配有一个GT地图元素 y i y_i yi。然后,对于每一个赋正标签( c i ≠ ∅ c_i\neq \emptyset ci=)的预测实例,我们进行点级匹配,在预测点集 V ^ π ^ ( i ) \hat{V}_{\hat{\pi}(i)} V^π^(i)和GT点集 V i V_i Vi之间寻找最优点对点分配 γ ^ ∈ Γ \hat{\gamma} \in \Gamma γ^Γ γ ^ \hat{\gamma} γ^是在预定义的排列集合中选取的,且它的点级匹配代价最低:
γ ^ = a r g m i n γ ∈ Γ ∑ j = 0 N v − 1 D M a n h a t t a n ( v ^ j , v γ ( j ) ) . (6) \hat{\gamma}=\underset{\gamma \in \Gamma}{argmin} \sum_{j=0}^{N_v-1}D_{Manhattan}(\hat{v}_j, v_{\gamma(j)}). \tag{6} γ^=γΓargminj=0Nv1DManhattan(v^j,vγ(j)).(6)
其中 D M a n h a t t a n ( v ^ j , v γ ( j ) ) D_{Manhattan}(\hat{v}_j, v_{\gamma(j)}) DManhattan(v^j,vγ(j))是第 j j j个预测点集 V ^ \hat{V} V^和第 γ ( j ) \gamma(j) γ(j)个GT点集 V V V之间的曼哈顿距离。

5.2 一对一点集预测损失

MapTRv2是基于最优实例级 π ^ \hat{\pi} π^和最优点级分配 γ ^ \hat{\gamma} γ^来训练的。基本损失函数由分类损失、点对点损失和边缘方向损失三部分组成:
L o n e 2 o n e = L H u n g a r i a n ( Y ^ , Y ) = λ c L c l s + λ p L p 2 p + λ d L d i r (7) \begin{align*} \mathcal{L}_{one2one} & =\mathcal{L}_{Hungarian}(\hat{Y},Y) \\ & = \lambda_c\mathcal{L}_{cls}+\lambda_p\mathcal{L}_{p2p}+\lambda_d\mathcal{L}_{dir} \end{align*} \tag{7} Lone2one=LHungarian(Y^,Y)=λcLcls+λpLp2p+λdLdir(7)
其中 λ c \lambda_c λc λ p \lambda_p λp λ d \lambda_d λd是平衡不同损失项的权值。

分类损失。使用实例级最优匹配结果 π ^ \hat{\pi} π^,每个预测的地图元素被分配一个类标签。分类损失为Focal Loss项,公式为:
L c l s = ∑ i = 0 N − 1 L F o c a l ( p ^ π ^ ( i ) , c i ) . (8) \mathcal{L}_{cls}=\sum_{i=0}^{N-1}\mathcal{L}_{Focal}(\hat{p}_{\hat{\pi}(i)}, c_i). \tag{8} Lcls=i=0N1LFocal(p^π^(i),ci).(8)

点对点损失。点对点损失监督每个预测点的位置。对于索引为 i i i的每个GT实例,根据点级最优匹配结果 γ ^ i \hat{\gamma}_i γ^i,每个预测点 v ^ π ^ ( i ) , j \hat{v}_{\hat{\pi}(i),j} v^π^(i),j分配一个GT点 v i , γ ^ i ( j ) v_{i, \hat{\gamma}_i(j)} vi,γ^i(j)。点对点损失定义为每个指定点对之间的曼哈顿距离:
L p 2 p = ∑ i = 0 N − 1 I { c i ≠ ∅ } ∑ j = 0 N v − 1 D M a n h a t t a n ( v ^ π ^ ( i ) , j , v i , γ ^ i ( j ) ) . (9) \mathcal{L}_{p2p}=\sum_{i=0}^{N-1}\mathbb{I}_{\{c_i \neq \emptyset\}} \sum_{j=0}^{N_v-1} D_{Manhattan}(\hat{v}_{\hat{\pi}(i),j},v_{i,\hat{\gamma}_i(j)}). \tag{9} Lp2p=i=0N1I{ci=}j=0Nv1DManhattan(v^π^(i),j,vi,γ^i(j)).(9)

边缘方向损失。点对点损失只监督折线和多边形的结点,而不考虑边缘(相邻结点之间的连接线)。为了准确地表达地图元素,边缘的方向很重要。因此,我们进一步设计边缘方向损失来监督高边缘层的几何形状。具体来说,我们考虑配对预测边 e ^ π ^ ( i ) , j \hat{e}_{\hat{\pi}(i),j} e^π^(i),j和GT边 e i , γ ^ i ( j ) e_{i,\hat{\gamma}_i(j)} ei,γ^i(j)之间的余弦相似度:
L d i r = − ∑ i = 0 N − 1 I { c i ≠ ∅ } ∑ j = 0 N v − 1 c o s _ s i m i l a r i t y ( e ^ π ^ ( i ) , j , e i , γ ^ i ( j ) ) e ^ π ^ ( i ) , j = v ^ π ^ ( i ) , j − v ^ π ^ ( i ) , ( j + 1 )   m o d   N v e i , γ ^ i ( j ) = v i , γ ^ i ( j ) − v i , γ ^ i ( j + 1 )   m o d   N v (10) \begin{align*} &\mathcal{L}_{dir}=-\sum_{i=0}^{N-1} \mathbb{I}_{\{c_i \neq \emptyset\}} \sum_{j=0}^{N_v-1}cos\_similarity(\hat{e}_{\hat{\pi}(i),j},e_{i,\hat{\gamma}_i(j)}) \\ &\hat{e}_{\hat{\pi}(i),j} = \hat{v}_{\hat{\pi}(i),j}-\hat{v}_{\hat{\pi}(i),(j+1)\ mod\ N_v} \\ &e_{i,\hat{\gamma}_i(j)}=v_{i,\hat{\gamma}_i(j)}-v_{i,\hat{\gamma}_i(j+1)\ mod \ N_v} \end{align*} \tag{10} Ldir=i=0N1I{ci=}j=0Nv1cos_similarity(e^π^(i),j,ei,γ^i(j))e^π^(i),j=v^π^(i),jv^π^(i),(j+1) mod Nvei,γ^i(j)=vi,γ^i(j)vi,γ^i(j+1) mod Nv(10)

5.3 辅助一对多集合预测损失

为了加快收敛速度,我们在训练过程中增加了一个辅助的一对多匹配分支,灵感来自[79]。如图6所示,一对多匹配分支与一对一匹配分支共享相同的点查询和Transfomer解码器,但拥有额外的一组实例查询 { q i ′ i n s } i = 0 T − 1 \{q_i^{'ins}\}_{i=0}^{T-1} {qiins}i=0T1,其中 T T T是实例总数。这个分支预测地图元素 Y ^ ′ = { y ^ i ′ } i = 0 T − 1 \hat{Y}^{'}=\{\hat{y}_i^{'}\}_{i=0}^{T-1} Y^={y^i}i=0T1

在这里插入图片描述
图6 辅助的一对多匹配分支。我们在训练期间引入额外的 T T T个实例级查询,以提供辅助监督。点级查询和Transformer解码器由两组实例查询共享。我们对第一组实例查询执行一对一匹配,如第5节所示,并通过重复真值地图元素 K K K次,对第二组实例查询执行一对多匹配。详细的匹配过程与分层二部匹配相同。

我们将GT地图元素重复 K K K次,并以 ∅ \emptyset 填充,形成一个大小为 T T T的集合,记为 Y ′ = { y i ′ } i = 0 T − 1 Y^{'}=\{y_i^{'}\}_{i=0}^{T-1} Y={yi}i=0T1。然后在 Y ~ \tilde{Y} Y~ Y ˉ \bar{Y} Yˉ之间执行相同的层次二部匹配,并计算辅助的一对多集合预测损失:
L o n e 2 m a n y = L H u n g a r i a n ( Y ^ ′ , Y ′ ) (11) \mathcal{L}_{one2many}=\mathcal{L}_{Hungarian}(\hat{Y}^{'}, Y^{'}) \tag{11} Lone2many=LHungarian(Y^,Y)(11)

在一对多匹配分支中,为 K K K个预测元素分配1个GT元素。随着正样本比例的增加,地图解码器收敛速度加快。

5.4 辅助稠密预测损失

为了进一步利用语义和几何信息,我们引入了三种辅助的稠密预测损失:
L d e n s e = α d L d e p t h + α b L B E V S e g + α p L P V S e g (12) \mathcal{L}_{dense}=\alpha_d\mathcal{L}_{depth} + \alpha_b\mathcal{L}_{BEVSeg}+\alpha_p \mathcal{L}_{PVSeg} \tag{12} Ldense=αdLdepth+αbLBEVSeg+αpLPVSeg(12)

深度预测损失。遵循BEVDepth[74],我们利用激光雷达点云来渲染每个透视图的GT深度图 { D 1 , ⋯   , D M } \{D_1,\cdots,D_M\} {D1,,DM}。并且我们在PV特征图 F = { F 1 , ⋯   , F M } \mathcal{F}=\{F_1,\cdots,F_M\} F={F1,,FM}上添加了一个简单的深度预测头 ϕ d e p t h \phi_{depth} ϕdepth。深度预测损失定义为预测深度图与渲染的GT深度图之间的交叉熵损失:
L d e p t h = ∑ m = 1 M L C E ( ϕ d e p t h ( F m ) , D m ) (13) \mathcal{L}_{depth}=\sum_{m=1}^M\mathcal{L}_{CE}(\phi_{depth}(F_m),D_m) \tag{13} Ldepth=m=1MLCE(ϕdepth(Fm),Dm)(13)

BEV分割损失。我们在BEV特征图 F B E V F_{BEV} FBEV的基础上增加了一个辅助BEV分割头。我们在BEV画布上栅格化地图GT,得到BEV前景掩码 M B E V M_{BEV} MBEV。BEV分割损失定义为预测的BEV分割图与二值GT图掩码之间的交叉熵损失:
L B E V S e g = L C E ( ϕ B E V S e g ( F B E V ) , M B E V ) (14) \mathcal{L}_{BEVSeg}=\mathcal{L}_{CE}(\phi_{BEVSeg}(F_{BEV}),M_{BEV}) \tag{14} LBEVSeg=LCE(ϕBEVSeg(FBEV),MBEV)(14)

PV分割损失。为了充分利用稠密监督,我们在透视图上渲染地图GT,并使用相机的内参和外参,得到透视前景掩码 { M P V 1 , ⋯   , M P V M } \{M_{PV}^1,\cdots,M_{PV}^{M}\} {MPV1,,MPVM}。然后,我们在PV特征图 F = { F 1 , ⋯   , F M } \mathcal{F}=\{F_1,\cdots,F_M\} F={F1,,FM}上添加一个辅助的PV分割头 ϕ P V S e g \phi_{PVSeg} ϕPVSeg。PV分割损失定义如下 L P V S e g \mathcal{L}_{PVSeg} LPVSeg
L P V S e g = ∑ m = 1 M L C E ( ϕ P V S e g ( F m ) , M P V m ) (15) \mathcal{L}_{PVSeg}=\sum_{m=1}^M\mathcal{L}_{CE}(\phi_{PVSeg}(F_m),M_{PV}^m) \tag{15} LPVSeg=m=1MLCE(ϕPVSeg(Fm),MPVm)(15)

5.5 总体损失

总损失定义为上述损失的加权和:
L = β o L o n e 2 o n e + β m L o n e 2 m a n y + β d L d e n s e (16) \mathcal{L}=\beta_{o}\mathcal{L}_{one2one}+\beta_m\mathcal{L}_{one2many}+\beta_d\mathcal{L}_{dense} \tag{16} L=βoLone2one+βmLone2many+βdLdense(16)

6 实验

在本节中,我们首先介绍6.1节中的实验设置和实现细节。然后,我们将介绍我们框架的主要结果,并与第6.2节中最先进的方法进行比较。在第6.3节中,我们进行了广泛的消融实验和分析,以调查我们框架的各个组件。在6.2节和6.4节中,我们展示了我们的框架很容易扩展到3D地图构建和车道中心线学习。

6.1 实验装置

数据集。我们主要按照之前方法[11],[12],[16]的标准设置,在流行的nuScenes[14]数据集上评估我们的方法。nuScenes数据集包含2D城市级全球矢量图和1000个场景,每个场景大约持续20秒。关键样本以2Hz进行标注。每个样本都有来自6个相机的RGB图像,覆盖360度水平视场角的自我车辆。

我们进一步在Argoverse2[15]数据集上进行了实验,该数据集包含1000条日志。每个日志提供来自7个相机的15秒20Hz RGB图像和日志级3D矢量化地图。

度量。我们遵循之前作品[11],[12],[16]中使用的标准度量。x轴的感知范围为 [ − 15.0 m , 15.0 m ] [- 15.0m, 15.0m] [15.0m,15.0m], Y轴的感知范围为 [ − 30.0 m , 30.0 m ] [- 30.0m, 30.0m] [30.0m,30.0m]。并采用平均精度(AP)对地图制作质量进行评价。倒角距离 D C h a m f e r D_{Chamfer} DChamfer用于确定预测与GT是否匹配。我们计算了几个 D C h a m f e r D_{Chamfer} DChamfer阈值 ( τ ∈ T , T = { 0.5 , 1.0 , 1.5 } ) (\tau \in T, T=\{0.5,1.0,1.5\}) (τT,T={0.5,1.0,1.5})下的 A P τ {AP}_{\tau} APτ,然后在所有阈值下取平均值作为最终的AP度量:
A P = 1 ∣ T ∣ ∑ τ ∈ T A P τ (17) AP=\frac{1}{|T|}\sum_{\tau\in T}AP_{\tau} \tag{17} AP=T1τTAPτ(17)

根据之前的方法[11],[12],[16],选取人行横道、车道分割线和道路边界三种地图元素进行公平评价[11],[12],[16]。此外,我们还将MapTRv2扩展到建模和学习车道中心线(见6.4节),并提供额外的评估。

训练细节。除非另有说明,否则使用ResNet50[81]作为图像骨干网。优化器是AdamW,权重衰减为0.01。批处理大小为32(包含6个视图图像),所有模型都使用8个NVIDIA GeForce RTX 3090 GPU进行训练。默认的训练计划是24次,初始学习率设置为 6 × 1 0 − 4 6 × 10^{−4} 6×104,带余弦衰减。我们提取自车跟随感知范围内的地图元素真值[11],[12],[16]。nuScenes源图像分辨率为 1600 × 900 1600 × 900 1600×900。对于实时版本,我们以0.2比率调整源图像的大小,其它模型使用0.5比率调整图像进行训练。对于Argoverse2数据集,7幅相机图像具有不同的分辨率(前视图为 1550 × 2048 1550 × 2048 1550×2048,其它为 2048 × 1550 2048 × 1550 2048×1550)。我们首先将7张相机图像填充成相同的形状( 2048 × 2048 2048 × 2048 2048×2048),然后以0.3的比例调整图像的大小。默认情况下,nuScenes数据集和Argoverse2数据集都使用颜色抖动。实例查询、点查询和解码器层的默认数量分别为50、20和6。对于PV-to-BEV转换,我们将每个BEV网格的大小设置为0.3米,并利用高效的BEVPoolv2[77]操作。依据[16], λ c = 2 \lambda_c=2 λc=2 λ p = 5 \lambda_p=5 λp=5 λ d = 0.005 \lambda_d=0.005 λd=0.005。对于稠密预测损失,我们将 α d \alpha_d αd α p \alpha_p αp α b \alpha_b αb分别设置为3、2、1。对于全局损失, β o = 1 \beta_o=1 βo=1 β m = 1 \beta_m=1 βm=1 β d = 1 \beta_d=1 βd=1。为了与之前的方法进行公平的比较,我们还在nuScenes数据集上提供了长训练时间表(110 epoch),而不改变其它超参数[12]。

推理细节。推理阶段非常简单。给定周围的图像,我们可以直接预测与它们的分数相关的50个地图元素。分数表示预测的地图元素的置信度。得分最高的预测可以直接使用,而无需其它后处理。推理时间是在批处理大小为1的单个NVIDIA GeForce RTX 3090 GPU上测量的。

6.2 主要结果

与最先进方法的比较。我们在nuScenes数据集上对MapTR/MapTRv2进行了24 epoch和110 epoch的训练。如表1所示,MapTR/MapTRv2在收敛性、准确性和速度方面都大大优于所有最先进的方法。令人惊讶的是,基于ResNet-50的MapTRv2达到了68.7 mAP,比相同速度的对应MapTR高出10 mAP,比之前表现最好的多模态结果高出6 mAP,但速度提高了2倍。仅相机输入的MapTRv2-VoVNet99达到73.4 mAP,比多模态VectorMapNet高19.7 mAP,速度提高4倍,比多模态MapTR高10.9 mAP,速度提高3.9 FPS。如图1所示,MapTR/MapTRv2实现了精度和速度之间的最佳权衡。MapTRv2-ResNet18实现了50+ mAP的实时速度。

在这里插入图片描述
表1 在nuScenes val set上与最先进方法[11],[12]进行对比。C和L分别表示相机和激光雷达。ft表示微调,是VectorMapNet[12]中描述的一种训练技巧。Effi-B0、R18、R50、V2-99、PP和Sec分别表示EfficientNet-B0[80]、ResNet18[81]、ResNet50[81]、VoVNetV2-99[82]、PointPillars[83]和SECOND[84]中的LiDAR主干网。Effi-B0、Effi-B4、R50和R18使用ImageNet[85]预训练的权值进行初始化。V2-99从DD3D[86]检查点初始化。其它的LiDAR主干网都是从零开始训练的。其它方法的APs来自文献[12]。用同一台带有RTX 3090的机器上测量FPS。-表示没有相应的结果。

同时,我们还在Argoverse2数据集上评估了我们的框架。Argoverse2提供3D矢量化地图,与nuScenes数据集相比,它具有额外的高度信息。如表2所示,在二维矢量化地图构建方面,MapTRv2实现了67.4 mAP,比VectorMapNet高29.5 mAP,比HDMapNet高48.6 mAP。在三维矢量化地图构建方面,MapTRv2实现了64.7 mAP,比VectorMapNet高29.9 mAP。在Argoverse2数据集上的实验表明,MapTRv2在三维矢量化地图构建方面具有优越的泛化能力。

在这里插入图片描述
表2 在Argoverse2 val set上与最先进的方法[11],[12]进行对比。Argoverse2提供3D矢量化地图,与nuScenes数据集相比,它具有额外的高度信息。 d i m = 2 dim=2 dim=2表示舍弃矢量化地图的高度信息。 d i m = 3 dim=3 dim=3表示直接预测三维矢量化地图。VectorMapNet和HDMapNet的结果取自VectorMapNet论文[12]。用带有RTX 3090的同一台机器测量FPS。-表示没有相应的结果。

MapTRv2的路线图。在表3中,我们展示了如何在MapTR上构建MapTRv2。我们首先用LSS替换MapTR中默认的PV-to-BEV转换方法GKT。然后,逐步加入辅助稠密监督、记忆高效解耦自注意力机制和辅助一对多匹配。在所有这些组件的共同作用下,MapTRv2-ResNet50实现了61.5 mAP,在相同的速度下比MapTR-ResNet50高11.1 mAP。如图7所示,MapTRv2收敛性优于MapTR (24 epoch, 61.5 mAP vs. 110 epoch, 58.7mAP)。我们还通过将基于BEV的交叉注意力替换为基于PV的交叉注意力,同时删除PV-to-BEV转换模块,提供了MapTRv2的无BEV变体。虽然无BEV的MapTRv2的性能下降,但这种变体摆脱了昂贵的稠密BEV表示,并且更加轻量级。

在这里插入图片描述
表3 MapTRv2在nuScenes上的路线图,只有24 epoch的训练计划。

在这里插入图片描述
图7 基于ResNet-50骨干网的MapTRv2和MapTR在nuScenes数据集上的收敛曲线。MapTRv2显著优于MapTR,训练时间缩短4倍,mAP提高2.8倍。

6.3 消融实验

在本节中,我们通过广泛的消融实验研究了MapTRv2框架的各个组件。除非另有说明,我们在流行的nuScenes数据集上进行所有实验。为了有效地进行消融实验,除非另有说明,否则我们使用具有24历元训练计划的MapTRv2-ResNet50作为基线模型。

排列等价建模。在表4中,我们提供了消融实验来验证所提出的排列等价建模的有效性。与对点集施加唯一排列的vanilla建模方法相比,排列等价建模解决了地图元素的模糊性,提高了4.1 mAP。对于人行横道,改进甚至达到7.1 AP,证明了该方法建模多边形元素的优越性。

在这里插入图片描述
表4 排列等价建模的消融实验。我们提出的排列等价形状建模优于固定顺序形状建模,其中总体优于4.1 mAP,而人行横道优于7.1 mAP。

自注意力变体。在这项消融研究中,我们去除混合匹配,以充分揭示自注意力变体的效率。如表5所示,实例自注意力极大地减少了训练内存(减少2265M内存),但代价是可以忽略不计的精度下降(0.3 mAP下降)。为了恢复每个实例中的交互,解耦的自注意力在几何点层面上增加了一个自注意力。与vanilla self-attention相比,它具有更高的内存效率(内存减少了1985M),并且实现了更好的准确性(提高了0.5 mAP)和相似的速度。为了进一步揭示解耦自注意力的优越性,在表6中,我们在内存消耗和实例查询数量方面比较了普通自注意力和解耦自注意力。随着实例查询数量的增加,mAP和内存成本也在不断增加。在相同的内存限制下(RTX 3090的24 GB),解耦的自注意力需要更少的内存,并造成更高的性能上限。

在这里插入图片描述
表5 自注意力变体的消融实验。在保持相当的准确性的同时,内部自注意力表现出显著的内存减少。我们选择解耦的自注意力作为默认配置。

在这里插入图片描述
表6 在内存消耗和实例查询数量方面,比较vanilla自注意力和解耦自注意力。+表示vanilla自注意力结果。*表示解耦自注意力结果。OOM表示内存不足。-表示结果不可用。当实例查询次数达到125次时,vanilla自注意力的训练内存超过了RTX 3090 GPU内存。解耦的自注意力显著地减少了训练内存,并且始终优于vanilla自注意力。

交叉注意力变体。在表7中,我们对nuScenes数据集和Argoverse2数据集的交叉注意力进行了分析。nuScenes数据集中没有地图的高度信息,因此投影在PV特征图上的参考点不够精确。当我们简单地将基于BEV的可变形交叉注意力替换为基于PV的可变形交叉注意力时,精度下降了12.0 mAP。当我们叠加基于BEV和基于PV的交叉注意力时,性能仍然不如基于BEV的交叉注意力。但在Argoverse2数据集上,地图的高度信息是可用的,并且可以监督投影参考点的准确性。所以与nuScenes相比,基于BEV和基于PV的交叉注意力之间的性能差距要小得多。混合交叉注意力将基于BEV的准确率提高了0.9 mAP,体现了PV特征与BEV特征的互补性。

在这里插入图片描述
表7 nuScenes和Argoverse2交叉注意力变异的消融实验。nus. 2D表示nuScenes数据集只提供2D矢量化地图,缺乏高度信息。av2. 3D表示Argoverse2提供3D矢量化地图。BEV表示基于BEV的交叉注意力。PV表示基于PV的交叉注意力。BEV+PV表示混合交叉注意力。我们选择基于BEV的交叉注意力作为默认配置。

稠密预测损失。在表8中,我们对稠密监督的有效性进行了分析。结果表明,深度监督、PV分割和BEV分割是互补监督的。通过将它们加在一起,最终的性能提高了4.9 mAP。

在这里插入图片描述
表8 对辅助稠密预测损失的消融实验。Depth表示深度预测损失。 S e g P V Seg^{PV} SegPV表示PV分割损失。 S e g B E V Seg^{BEV} SegBEV表示BEV分割损失。它们提供互补的监督。

一对多损失。我们在表9中讨论超参数 K K K。随着 K K K的增加,训练内存成本也相应增加。由于GPU内存有限,我们只将 K K K增加到6,这带来了3.9 mAP的改进。在表10中,我们将 K = 6 K = 6 K=6固定在 T T T上。从 T = 100 T = 100 T=100 T = 300 T = 300 T=300,结果显示出一致的改善。我们在表11中进一步细化了辅助一对多损失的超参数 β m \beta_m βm。最后,我们选择 T = 300 , K = 6 , λ = 1 T=300,K=6,\lambda=1 T=300,K=6,λ=1作为MapTRv2的默认设置。

在这里插入图片描述
表9 混合匹配中参数 K K K的消融实验。我们设置 T = 50 × K T=50\times K T=50×K

在这里插入图片描述
表10 对混合匹配中的参数 K K K进行消融实验。我们设置 K = 6 K=6 K=6

在这里插入图片描述
表11 对参数 β m \beta_m βm进行消融实验。我们设置 K = 6 K=6 K=6 T = 300 T=300 T=300。我们选择 β m = 1.0 \beta_m=1.0 βm=1.0作为默认配置。

输入模式。如表1所示,我们的框架与LiDAR等其它车载传感器兼容。在24 epoch训练计划下,多模态MapTRv2比单模态MapTRv2获得了更高的性能(高出7.5 mAP),证明了不同传感器输入的互补性。并且我们将仅用相机和仅用激光雷达之间的差距从MapTR中的5.3 mAP缩小到MapTRv2中的0.0 mAP。

几何点的数目。如表12所示,我们对每个地图元素中的几何点数目进行了消融实验。结果表明,20个几何点足以达到最佳性能。进一步增加点数会增加优化难度,导致性能下降。我们选择20个几何点作为默认配置。

在这里插入图片描述
表12 对点查询数目进行的消融实验。我们选择20个几何点查询作为默认配置。

Transformer解码器层数。地图解码器层迭代更新预测的地图。表13显示了解码器层数的消融实验结果。没有迭代架构,结果是39.5 mAP。增加到2层可以增加13.1 mAP。性能在6层时达到饱和。我们选择6层作为默认配置。

在这里插入图片描述
表13 对Transformer解码器层数进行的消融实验。逐渐增加解码器层数可以降低推理速度,提高推理精度。精度在6个Transformer解码器层达到饱和。我们选择6个Transformer解码器层作为默认配置。

迭代优化。在图8中,我们通过可视化不同解码器层的预测地图元素,展示了收敛后的MapTRv2基线模型的迭代改进过程。初始查询看起来像均匀分布的不同长度的折线(图8(b)),作为地图的先验。级联的解码器层逐渐细化预测,并去除重复的预测,如图8 ( c ) (c) (c)、(d)和(e)所示。

在这里插入图片描述
图8 迭代优化。列(a)是真值矢量化地图。列(b)是由初始查询预测的地图,其中不同的颜色表示不同的实例。列©和列(d)分别是经过1层和3层Transformer解码层后的中间结果。列(e)是最终的结果。对于©、(d)和(e)列,我们只对分类得分在0.3以上的预测地图元素进行可视化。初始查询作为地图的先验。级联Transformer解码器层迭代地细化位置,并删除重复的位置。

详细的运行时间。在表14中,我们提供了仅使用相机输入的MapTRv2-ResNet50中每个组件的详细运行时间。结果表明,主要的推理成本在骨干网中(59.8%),而其它模块的效率较高。

在这里插入图片描述
表14 MapTRv2-ResNet50中每个组件在同一块RTX 3090 GPU上的详细运行时间。

对相机偏移的鲁棒性。在实际应用中,相机的内参通常是准确的,变化不大,但相机的外参可能由于相机位置的移动、校准误差等原因而不准确。为了验证鲁棒性,我们遍历验证集并为每个样本随机生成噪声。我们分别添加了不同程度的平移和旋转偏差。请注意,我们为所有相机和坐标添加了噪点。噪声服从正态分布。部分样本存在极大偏差,对性能影响很大。正如表15和表16所示,当 Δ x \Delta_x Δx Δ y \Delta_y Δy Δ z \Delta_z Δz的标准差为0.1米或 θ x \theta_x θx θ y \theta_y θy θ z \theta_z θz的标准差为0.01 r a d rad rad时,MapTRv2仍保持相当的性能。

在这里插入图片描述
表15 对相机平移偏差的鲁棒性。 σ 1 \sigma_1 σ1 Δ x \Delta_x Δx Δ y \Delta_y Δy Δ z \Delta_z Δz的标准差。

在这里插入图片描述
表16 对相机旋转偏差的平移性。 σ 2 \sigma_2 σ2 θ x \theta_x θx θ y \theta_y θy θ z \theta_z θz的标准差。

6.4 扩展:中心线

中心线可以看作是一种特殊类型的地图元素,它提供方向信息,指示交通流,在下游规划中发挥重要作用[87]。遵循LaneGAP[32]中提出的路径建模,我们在MapTRv2中加入了中心线学习。如表17所示,包括中心线在内,MapTRv2在nuScenes数据集上实现了54.0 mAP,在Argoverse2数据集上实现了62.6 mAP (2D地图) / 61.4 mAP (3D地图)。将MapTRv2扩展到中心线为端到端规划铺平了道路。

在这里插入图片描述
表17 中心线学习的性能。中心线的mAP与其它元素的mAP一样高。结果表明,MapTRv2具有高度的可扩展性和对不同地图元素的兼容性。

6.5 定性结果

我们分别在图9和图10中展示了Argoverse2和nuScenes数据集的预测矢量化高精地图结果。MapTRv2在复杂多样的驾驶场景中保持稳定和令人印象深刻的结果。更多的定性结果可在项目网站上https://github.com/hustvl/MapTR获得。

7 结论

MapTRv2是一个结构化的端到端框架,用于高效的在线矢量化高精地图构建,它采用简单的编码器-解码器Transformer架构和分层二部匹配来进行基于所提出的排列等效建模的地图元素学习。大量的实验表明,该方法可以在nuScenes和Argoverse2数据集上精确地感知任意形状的地图元素。我们希望MapTRv2可以作为自动驾驶系统的基础模块,推动下游任务(如运动预测和规划)的发展。

参考

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Here's an optimized version of the code that uses the `variance` variable: ``` def e_step(xs: np.ndarray, ys: np.ndarray, affine: np.ndarray, translation: np.ndarray, variance: float) -> np.ndarray: """ The e-step of the em algorithm, estimating the responsibility P=[p(y_m | x_n)] based on current model :param xs: a set of points with size (N, D), N is the number of samples, D is the dimension of points :param ys: a set of points with size (M, D), M is the number of samples, D is the dimension of points :param affine: an affine matrix with size (D, D) :param translation: a translation vector with size (1, D) :param variance: a float controlling the variance of each Gaussian component :return: the responsibility matrix P=[p(y_m | x_n)] with size (N, M), which row is the conditional probability of clusters given the n-th sample x_n """ # Calculate the constant term in the Gaussian distribution constant_term = 1 / (2 * np.pi * variance) ** (xs.shape[1] / 2) # Calculate the Mahalanobis distance between xs and ys mahalanobis = np.sum((xs[:, np.newaxis] - ys) @ affine.T ** 2, axis=2) # Calculate the responsibility matrix responsibility = constant_term * np.exp(-mahalanobis / (2 * variance)) # Normalize the responsibility matrix return responsibility / np.sum(responsibility, axis=1, keepdims=True) ``` In this optimized version, we pre-calculate the constant term in the Gaussian distribution and the Mahalanobis distance between `xs` and `ys`. Then, we use these pre-calculated values to calculate the responsibility matrix in a vectorized way, which is much faster than the nested loops in the original code. Finally, we normalize the responsibility matrix and return it.

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YMWM_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值