目录
摘要
高精地图提供了丰富而精确的驾驶场景环境信息,是自动驾驶系统规划中必不可少的基础组成部分。我们提出了MapTR,一个结构化的端到端Transformer,用于高效的在线矢量化高精地图构建。我们提出了一种统一的等效排列建模方法,即将地图元素建模为具有一组等效排列的点集,从而准确地描述了地图元素的形状并稳定了学习过程。我们设计了一种分层查询嵌入方案,对结构化地图信息进行灵活编码,并对地图元素进行分层二部匹配学习。在现有的nuScenes数据集上测评的矢量化地图构建方法中,MapTR仅使用相机输入即可实现最佳的性能和效率。特别是,MapTR-nano在RTX 3090上以实时推理速度(25.1 FPS)运行,比现有最先进的基于相机的方法快8倍,同时实现5.0的高mAP。即使与现有最先进的多模态方法相比,MapTR-nano的mAP提高了0.7 mAP。MapTR-tiny的mAP提高了13.5,推理速度提高了3倍。大量的定性结果表明,MapTR在复杂多样的驾驶场景中仍能保持稳定、稳健的地图构建质量。MapTR在自动驾驶中具有很大的应用价值。代码和更多演示可从https://github.com/hustvl/MapTR获得。
1 介绍
高精地图是专门为自动驾驶设计的高精度地图,由地图元素(人行横道、车道分割线、道路边界等)的实例级矢量化表示组成。高精地图包含了丰富的道路拓扑和交通规则语义信息,对自动驾驶汽车的导航至关重要。
传统的高精地图是通过基于SLAM的方法离线构建的,流水线复杂,维护成本高。近年来,在线高精地图构建越来越受到人们的关注,它利用车载传感器在运行时构建自我车辆周围的地图,从而摆脱了离线的人工操作。
早期的工作利用线条形状先验来感知基于前视图像的开放形状的车道。它们仅限于单视图感知,不能处理其它具有任意形状的地图元素。随着鸟瞰图表示学习的发展,近年来有研究通过对鸟瞰图进行语义分割来预测栅格化地图。然而,栅格化地图缺乏矢量化的实例级信息,例如车道结构,这对下游任务(例如,运动预测和规划)很重要。为了构建矢量化的高精地图,HDMapNet对逐像素分割结果进行分组,这需要复杂且耗时的后处理。VectorMapNet将每个地图元素表示为一个几何点序列。它采用级联的粗到精框架,并利用自回归解码器顺序预测几何点,导致推理时间长。
现有的在线矢量化高精地图构建方法受效率的限制,不适合实时场景。最近,DETR采用了一种简单高效的编码器-解码器Transformer架构,实现了端到端的目标检测。
问一个问题是很自然的:我们可以设计一个类似于DETR的范例来高效地端到端矢量化高精地图构建吗?我们用提出的Map TRansformer (MapTR)证明了答案是肯定的。
与物体检测中物体可以在几何上很容易地抽象为包围框不同,矢量化地图元素具有更多的动态形状。为了准确地描述地图元素,我们提出了一种新的统一建模方法。我们将每个地图元素建模为具有一组等价排列的几何点集。点集决定了地图元素的位置。排列群包含了同一几何形状对应的点集的所有可能的排列序列,避免了形状的模糊性。
在等效排列建模的基础上,我们设计了一种以车载相机图像为输入,输出矢量化高精地图的结构化框架。我们将在线矢量化高精地图构建简化为一个并行回归问题。提出了分层查询嵌入,灵活地对实例级和点级信息进行编码。使用统一的Transformer结构同时预测所有实例和实例中的所有点。训练流水线被表述为一个分层集合预测任务,我们执行分层二部匹配来依次分配实例和点。并利用所提出的点对点损失和边缘方向损失对点和边缘的几何形状进行监督。
在所有的设计中,我们提出了MapTR,一种高效的端到端在线矢量化高精地图构建方法,具有统一的建模和架构。MapTR在现有的nuScenes数据集矢量化地图构建方法中达到了最好的性能和效率。特别是,MapTR-nano在RTX 3090上以实时推理速度(25.1 FPS)运行,比现有最先进的基于相机的方法快8倍,同时实现高5.0的mAP。即使与现有最先进的多模态方法相比,MapTR-nano的mAP提高了0.7,推理速度提高了8倍,MapTR-tiny的mAP提高了13.5,推理速度提高了3倍。如图1所示,在复杂多样的驾驶场景中,MapTR仍能保持稳定稳健的地图构建质量。
图1 MapTR在复杂多样的驾驶场景中保持稳定、稳健的矢量化高精地图构建质量。
我们的贡献可以总结如下:
- 我们提出了一种统一的地图元素等效排列建模方法,即将地图元素建模为具有一组等效排列的点集,从而准确地描述了地图元素的形状并稳定了学习过程。
- 在此基础上,我们提出了一种结构化的端到端框架MapTR,用于高效的在线矢量化高精地图构建。我们设计了一种分层查询嵌入方案,对实例级和点级信息进行灵活编码,对地图元素进行分层二部匹配学习,并利用提出的点对点损失和边缘方向损失对点和边缘的几何形状进行监督。
- MapTR是首个实时SOTA矢量化高精地图构建方法,在复杂多样的驾驶场景中具有稳定、鲁棒的性能。
2 相关工作
高精地图构建。近年来,随着2D-to-BEV方法的发展,高精地图构建被制定为基于车载相机捕获的环视图像数据的分割问题。许多工作通过执行BEV语义分割来生成栅格化地图。为了构建矢量化的高精地图,HDMapNet将逐像素的语义分割结果分组,并进行启发式和耗时的后处理以生成实例。VectorMapNet作为第一个端到端框架,采用两阶段粗到精框架,利用自回归解码器顺序预测点,导致推理时间长,排列模糊。与VectorMapNet不同的是,MapTR为地图元素引入了新颖的统一建模,解决了地图元素的模糊性,稳定了学习过程。MapTR构建了一个具有更高效率的结构化并行单阶段框架。
车道检测。车道检测可以看作是高精地图构建的一个子任务,其重点是检测道路场景中的车道元素。由于大多数车道检测数据集只提供单视图标注,并且主要关注开形元素,因此相关方法仅限于单视图。LaneATT采用基于锚点的深车道检测模型,在精度和效率之间取得了很好的平衡。LSTR采用Transformer结构直接输出车道形状模型的参数。GANet将车道检测作为一个关键点估计和关联问题,采用自下而上的设计。Feng等人提出了基于参数贝塞尔曲线的车道检测方法。Garnett等人提出了3D- LaneNet,而不是在2D图像坐标中检测车道,该方法在BEV中执行3D车道检测。STSU将车道表示为BEV坐标下的有向图,采用基于曲线的贝塞尔方法从单目相机图像中预测车道。Persformer提供了更好的BEV特征表示,并优化了锚点设计,以同时统一2D和3D车道检测。MapTR不是只在有限的单一视图中检测车道,而是可以感知360度水平FOV的各种地图元素,具有统一的建模和学习框架。
基于轮廓的实例分割。与MapTR相关的另一项工作是基于轮廓的2D实例分割。这些方法将二维实例分割重新表述为目标轮廓预测任务,并估计轮廓顶点的图像坐标。CurveGCN利用图卷积网络来预测多边形边界。一些工作依赖中间表示,采用两阶段范式,即第一阶段进行分割/检测以生成顶点,第二阶段将顶点转换为多边形。这些作品将2D实例蒙版的轮廓建模为多边形。它们的建模方法不能处理线条形地图元素,不适用于地图构造。不同的是,MapTR是为高精地图构建量身定制的,对各种地图元素进行统一建模。此外,MapTR不依赖于中间表示,具有高效紧凑的流水线。
3 MapTR
3.1 排列等效建模
MapTR旨在对高精地图进行统一建模和学习。高精地图是矢量化静态地图元素的集合,包括人行横道、车道分隔线、道路边界等。对于结构化建模,MapTR在几何上将地图元素抽象为封闭形状(如人行横道)和开放形状(如车道分隔线)。通过沿形状边界依次采样点,将封闭元素离散为多边形,将开放元素离散为折线。
初步地,多边形和折线都可以表示为有序点集 V F = [ v 0 , v 1 , ⋯ , v N v − 1 ] V^F=[v_0,v_1,\cdots,v_{N_v-1}] VF=[v0,v1,⋯,vNv−1](见图3Vanilla)。 N v N_v Nv表示几何点的数目。然而,点集的排列不是明确定义的,也不是唯一的。多边形和折线存在许多等价排列。例如,如图2(a)所示,对于两个相对车道之间的车道分隔线(折线),很难确定其方向。车道分界线的两个端点都可以作为起点,点集可以在两个方向上组织。在图2(b)中,对于人行横道(多边形),点集可以按逆时针和顺时针两个相反的方向组织。循环改变点集的排列对多边形的几何形状没有影响。对点集施加固定排列作为监督是不合理的。强加的固定排列与其它等价排列相矛盾,阻碍了学习过程。
图2 说明地图元素在起点和方向上的模糊性的典型案例。(a)折线:对于两个相对车道之间的车道分隔线,确定其方向是困难的。车道分界线的两个端点都可以作为起点,点集可以在两个方向上组织。(b)多边形:对于人行横道,多边形的每个点都可以作为起点,多边形可以在两个相反的方向上(逆时针和顺时针)连接。
图3 MapTR的等效排列建模实例。地图元素在几何上抽象并离散为折线和多边形。MapTR用 ( V , Γ ) (V,Γ) (V,Γ)(一个点集 V V V和一组等价排列 Γ Γ Γ),避免了模糊性,稳定了学习过程。
为了弥补这一差距,MapTR用 V = ( V , Γ ) \mathcal{V} = (V,Γ) V=(V,Γ)。 V = { v j } j = 0 N v − 1 V = \{v_j \}^{N_v−1}_{j=0} V={ vj}j=0Nv−1表示地图元素的点集( N v N_v Nv为点的个数)。 Γ = { γ k } \Gamma=\{\gamma^k\} Γ={ γk}表示点集 V V V的一组等效排列,包含了所有可能的组织序列。
具体而言,对于折线元素(图3左), Γ \Gamma Γ包含两种等效排列:
Γ p o l y l i n e = { γ 0 , γ 1 } { γ 0 ( j ) = j m o d N v , γ 1 ( j ) = ( N v − 1 ) − j m o d N v . (1) \Gamma_{polyline}=\{\gamma^0, \gamma^1\} \begin{cases} \gamma^0(j)=j\ mod\ N_v, \\ \gamma^1(j)=(N_v-1)-j \ mod \ N_v. \end{cases} \tag{1} Γpolyline={
γ0,γ1}{
γ0(j)=j mod Nv,γ1(j)=(Nv−1)−j mod Nv.(1)
对于多边线元素(如图3右), Γ \Gamma Γ包含 2 × N v 2\times N_v 2×Nv种等效排列:
Γ p o l y g o n = { γ 0 , ⋯ , γ 2 × N v − 1 } { γ 0 ( j ) = j m o d N v , γ 1 ( j ) = ( N v − 1 ) − j m o d N v , γ 2 ( j ) = ( j + 1 ) m o d N v , γ 3 ( j ) = ( N v − 1 ) − ( j + 1 ) m o d N v , ⋯ , γ 2 × N v − 2 ( j ) = ( j + N v − 1 ) m o d N v , γ 2 × N v − 1 ( j ) = ( N v − 1 ) − ( j + N v − 1 ) m o d N v . (2) \Gamma_{polygon}=\{ \gamma^0,\cdots,\gamma^{2\times N_v-1} \} \begin{cases} \gamma^0(j)=j\ mod \ N_v, \\ \gamma^1(j)=(N_v-1)-j \ mod \ N_v, \\ \gamma^2(j)=(j+1)\ mod \ N_v, \\ \gamma^3(j)=(N_v-1)-(j+1)\ mod \ N_v, \\ \cdots,\\ \gamma^{2\times N_v-2}(j)=(j+N_v-1)\ mod \ N_v,\\ \gamma^{2\times N_v-1}(j)=(N_v-1)-(j+N_v-1)\ mod \ N_v. \end{cases} \tag{2} Γpolygon={
γ0,⋯,γ2×Nv−1}⎩
⎨
⎧γ0(j)=j mod Nv,γ1(j)=(Nv−1)−j mod Nv,γ2(j)=(j+1) mod Nv,γ3(j)=(Nv−1)−(j+1) mod Nv,⋯,γ2×Nv−2(j)=(j+Nv−1) mod Nv,γ2×Nv−1(j)=(Nv−1)−(j+Nv−1) mod N