目录
摘要
高精地图提供了丰富而精确的驾驶场景环境信息,是自动驾驶系统规划中必不可少的基础组成部分。我们提出了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 Nv.(2)
通过引入等效排列的概念,MapTR以统一的方式建模地图元素,解决了歧义问题。MapTR进一步引入了用于地图元素学习的分层二部匹配(参见第3.2节和第3.3节),并设计了一个结构化的编码器-解码器Transformer架构来有效地预测地图元素(参见第3.4节)。
3.2 分层匹配
MapTR遵循DETR的端到端范式,在一次传递中并行推断出固定大小的 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=0N−1来表示 N N N个预测地图元素的集合。GT地图元素的集合由 N N N个 ∅ \emptyset ∅填充而成,记作 Y = { y i } i = 0 N − 1 Y= \{ y_i \}_{i=0}^{N-1} Y={yi}i=0N−1。 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分别表示预测类别得分和预测点集。为了实现结构化的地图元素建模和学习,MapTR引入了分层二部匹配,即按顺序执行实例级匹配和点级匹配。
实例级匹配。首先,我们需要在预测地图元素
{
y
^
i
}
\{ \hat{y}_i \}
{y^i}和GT地图元素
{
y
i
}
\{ y_i \}
{yi}之间找到一个最优的实例级标签分配
π
^
\hat{\pi}
π^。
π
^
\hat{\pi}
π^是
N
N
N个元素的一个排列,
π
^
∈
Π
N
\hat{\pi} \in \Pi_{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
)
.
(3)
\hat{\pi}=\underset{\pi \in \Pi_N}{argmin} \sum_{i=0}^{N-1} \mathcal{L}_{ins\_match}( \hat{y}_{\pi(i)}, y_i ). \tag{3}
π^=π∈ΠNargmini=0∑N−1Lins_match(y^π(i),yi).(3)
其中
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
)
=
F
F
o
c
a
l
(
p
^
π
(
i
)
,
c
i
)
+
L
p
o
s
i
t
i
o
n
(
V
^
π
(
i
)
,
V
i
)
.
(4)
\mathcal{L}_{ins\_match}(\hat{y}_{\pi(i)}, y_i)=\mathcal{F}_{Focal} (\hat{p}_{\pi(i)}, c_i)+\mathcal{L}_{position}(\hat{V}_{\pi(i)}, V_i). \tag{4}
Lins_match(y^π(i),yi)=FFocal(p^π(i),ci)+Lposition(V^π(i),Vi).(4)
其中
F
F
o
c
a
l
(
p
^
π
(
i
)
,
c
i
)
\mathcal{F}_{Focal}(\hat{p}_{\pi(i)}, c_i)
FFocal(p^π(i),ci)是类别匹配代价项,是预测类别得分
p
^
π
(
i
)
\hat{p}_{\pi(i)}
p^π(i)和目标类别标签
c
i
c_i
ci之间的Focal损失。
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,使用匈牙利算法来找到最优的实例级分配
π
^
\hat{\pi}
π^。
点集匹配。在实例级匹配之后,每个预测地图元素
y
^
π
^
(
i
)
\hat{y}_{\hat{\pi}(i)}
y^π^(i)被分配一个GT地图元素
y
i
y_i
yi。然后,每个预测实例被分配一个正标签
c
i
c_i
ci,
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}
γ^来自预定义的排列集
Γ
\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
)
)
.
(5)
\hat{\gamma}=\underset{\gamma \in \Gamma}{argmin} \sum_{j=0}^{N_v-1} D_{Manhattan}(\hat{v}_j, v_{\gamma(j)}). \tag{5}
γ^=γ∈Γargminj=0∑Nv−1DManhattan(v^j,vγ(j)).(5)
其中
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))是预测点集
V
^
\hat{V}
V^的第
j
j
j个几何点和GT点集
V
V
V的第
γ
(
j
)
\gamma(j)
γ(j)个几何点的曼哈顿距离。
3.3 训练损失
MapTR基于最优的实例级分配
π
^
\hat{\pi}
π^和点级分配
{
γ
^
i
}
\{ \hat{\gamma}_i \}
{γ^i}来进行训练。损失函数由三部分组成,分类损失、点对点损失、边缘方向损失:
L
=
λ
L
c
l
s
+
α
L
p
2
p
+
β
L
d
i
r
.
(6)
\mathcal{L}=\lambda \mathcal{L}_{cls} + \alpha \mathcal{L}_{p2p} + \beta \mathcal{L}_{dir}. \tag{6}
L=λLcls+αLp2p+βLdir.(6)
其中
λ
\lambda
λ、
α
\alpha
α和
β
\beta
β为平衡各损失项的权重。
分类损失。使用实例级最优匹配结果
π
^
\hat{\pi}
π^,为每个预测映射元素分配一个类别标签。分类损失为Focal损失项,公式为:
L
c
l
s
=
∑
i
=
0
N
−
1
L
F
o
c
a
l
(
p
^
π
^
(
i
)
,
c
i
)
.
(7)
\mathcal{L}_{cls}=\sum_{i=0}^{N-1} \mathcal{L}_{Focal} (\hat{p}_{\hat{\pi} (i)}, c_i). \tag{7}
Lcls=i=0∑N−1LFocal(p^π^(i),ci).(7)
点对点损失。点对点损失监督每个预测点的位置。对于点
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
)
)
.
(8)
\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{8}
Lp2p=i=0∑N−1I{ci=∅}j=0∑Nv−1DManhattan(v^π^(i),j,vi,γ^i(j)).(8)
边缘方向损失。点对点损失只监督折线和多边形的顶点,不考虑边缘(相邻结点之间的连线)。为了准确地表示地图元素,边缘的方向很重要。因此,我们进一步设计边缘方向损失来监督高边缘层的几何形状。具体来说,我们考虑预测边缘
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
i
n
e
_
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
.
(9)
\begin{align*} & \mathcal{L}_{dir}=-\sum_{i=0}^{N-1}\mathbb{I}_{\{ c_i \neq \emptyset \}} \sum_{j=0}^{N_v-1}cosine\_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{9}
Ldir=−i=0∑N−1I{ci=∅}j=0∑Nv−1cosine_similarity(e^π^(i),j,ei,γ^i(j))e^π^(i),j=v^π^(i),j−v^π^(i),(j+1) mod Nv,ei,γ^i(j)=vi,γ^i(j)−vi,γ^i(j+1) mod Nv.(9)
3.4 架构
MapTR设计了一个编码器-解码器范式。总体架构如图4所示。
图4 MapTR的总体架构图。MapTR采用了编码器-解码器范式。地图编码器将传感器输入转换为统一的BEV表示。地图解码器采用分层查询嵌入方案对地图元素进行显式编码,并基于排列等效建模进行分层匹配。MapTR完全是端到端的。该流水线结构严密、紧凑、高效。
输入模态。MapTR将车载相机的环视图像作为输入。MapTR还与其它车载传感器(如LiDAR和RADAR)兼容。将MapTR扩展到多模态数据是自然而然的。由于合理的排列等效建模,即使只有相机输入,MapTR也明显优于其它多模态输入方法。
地图编码。MapTR的地图编码器从多个车载相机的图像中提取特征,并将这些特征转化为统一的特征表示,即BEV表示。给定多个视角的图像 I = { I 1 , ⋯ , I K } \mathcal{I}=\{ I_1,\cdots, I_K \} I={I1,⋯,IK},我们利用传统主干网络来生成多个视角的特征图 F = { F 1 , ⋯ , F K } \mathcal{F}=\{ F_1,\cdots,F_K \} F={F1,⋯,FK}。然后,二维图像特征 F \mathcal{F} F被转换为BEV特征 B ∈ R H × W × C \mathcal{B} \in \mathbb{R}^{H \times W \times C} B∈RH×W×C。考虑到GKT易于部署和效率高,我们默认采用GKT作为2D-to-BEV的基本转换模块。MapTR与其它变换方法兼容,并保持稳定的性能,如CVT、LSS、Deformable Attention和IPM。消融研究见表4。
表4 对2D-to-BEV转换方法进行消融研究。MapTR兼容多种2D-to-BEV方法,性能稳定。
地图解码。我们提出了一种分层查询嵌入方案来显式地对每个地图元素进行编码。具体来说,我们定义了一组实例级查询
{
q
i
i
n
s
}
i
=
0
N
−
1
\{ q_i^{ins} \}_{i=0}^{N-1}
{qiins}i=0N−1和一组点级查询
{
q
j
p
t
}
j
=
0
N
v
−
1
\{ q_j^{pt} \}_{j=0}^{N_v-1}
{qjpt}j=0Nv−1,它们由所有实例共享。每个地图元素(索引为
i
i
i)对应一组分层查询
{
q
i
j
h
i
e
}
j
=
0
N
v
−
1
\{ q_{ij}^{hie} \}_{j=0}^{N_v-1}
{qijhie}j=0Nv−1。对第
i
i
i个地图元素的第
j
j
j个点的分层查询公式为:
q
i
j
h
i
e
=
q
i
i
n
s
+
q
j
p
t
(10)
q_{ij}^{hie}=q_{i}^{ins}+q_j^{pt} \tag{10}
qijhie=qiins+qjpt(10)
地图解码器包含几个级联的解码器层,它们迭代地更新分层查询。在每个解码器层,我们采用MHSA使分层查询相互交换信息(实例间和实例内)。然后,受BEVFormer的启发,我们采用可变形注意力使分层查询与BEV特征交互。每个查询
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)。然后,我们对参考点周围的BEV特征进行采样并更新查询。地图元素通常具有不规则的形状,并且需要长期的上下文。每个地图元素对应一组具有灵活动态分布的参考点
{
p
i
j
}
j
=
0
N
v
−
1
\{ p_{ij} \}_{j=0}^{N_v-1}
{pij}j=0Nv−1。参考点
{
p
i
j
}
j
=
0
N
v
−
1
\{ p_{ij} \}_{j=0}^{N_v-1}
{pij}j=0Nv−1可以适应任意形状的地图元素,并为地图元素学习捕获上下文信息。
MapTR的预测头很简单,由分类分支和点回归分支组成。分类分支预测实例类别得分。点回归分支预测点集 V ^ \hat{V} V^的位置。对于每个地图元素,它输出 2 N v 2N_v 2Nv维向量,它表示 N v N_v Nv个点的归一化的BEV坐标。
4 实验
数据集和度量指标。我们在流行的nuScenes数据集上评估MapTR,该数据集包含1000个场景,每个场景大约持续20秒。关键样本以2Hz进行标注。每个样本都有来自6个相机的RGB图像,覆盖360度水平视场的自我车辆。在前人工作的基础上,选取人行横道、车道分割线和道路边界三种地图元素进行公平评价。感知范围:
X
X
X轴为
[
−
15.0
m
,
15.0
m
]
[-15.0m,15.0m]
[−15.0m,15.0m],
Y
Y
Y轴为
[
−
30.
m
,
30.0
m
]
[-30.m,30.0m]
[−30.m,30.0m]。我们并采用平均精度(AP)对地图制作质量进行评价。倒角距离
D
C
h
a
m
f
D_{Chamf}
DChamf用于确定预测与GT是否匹配。我们计算了几个
D
C
h
a
m
f
e
r
D_{Chamfer}
DChamfer阈值下的
A
P
τ
AP_{\tau}
APτ,其中
τ
∈
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},然后取所有阈值的平均值作为最终的AP指标:
A
P
=
1
∣
T
∣
∑
τ
∈
T
A
P
τ
.
(11)
AP=\frac{1}{|T|} \sum_{\tau \in T}AP_{\tau}. \tag{11}
AP=∣T∣1τ∈T∑APτ.(11)
实施细节。MapTR使用8个NVIDIA GeForce RTX 3090 GPU进行训练。我们采用了AdamW优化器和余弦退火程序。对于MapTR-tiny,我们采用ResNet50作为骨干网络。我们训练MapTR-tiny,总批大小为32(包含6个视图图像)。所有消融研究都是基于24期训练的MapTR-tiny。MapTR-nano专为实时应用而设计。我们采用ResNet18作为骨干网络。更多详情参见附录A。
4.1 与最先进方法的比较
在表1中,我们将MapTR与最先进的方法进行比较。MapTR-nano在RTX 3090上以实时推理速度(25.1 FPS)运行,比现有最先进的基于相机的方法(VectorMapNet-C)快8倍,同时实现高5.0的mAP。即使与现有最先进的多模态方法相比,MapTR-nano的mAP提高了0.7,推理速度提高了8倍,MapTR-tiny的mAP提高了13.5,推理速度提高了3倍。MapTR也是一种快速收敛方法,在24 epoch调度下表现出先进的性能。
表1 与nuScenes val集上的最先进的方法进行比较。C和L分别表示相机和LiDAR。Effi-B0和PointPillars分别表示Tan & Le (2019)和Lang et al. (2019)。其它方法的AP取自VectorMapNet的论文。VectorMapNet-C的FPS由其作者提供,并在RTX 3090上测量。其它FPS在同一台机器上使用RTX 3090进行测量。-表示没有相应的结果。即使只有相机输入,MapTR-tiny也明显优于多模态(+13.5 mAP)。MapTR-nano实现了基于SOTA相机的性能,运行速度为25.1 FPS,首次实现了实时矢量化地图构建。
4.2 消融研究
为了验证不同设计的有效性,我们在nuScenes val集上进行了消融实验。更多消融研究见附录B。
排列等效模型的有效性。在表2中,我们提供了消融实验来验证所提出的排列等效模型的有效性。与对点集施加唯一排列的vanilla建模方法相比,排列等效建模解决了地图元素的模糊性,提高了5.9 mAP的精度。对于人行横道,改进率甚至达到了11.9 AP,证明了多边形元素建模的优越性。我们还在图5中可视化了学习过程,以显示所提出建模的稳定性。
表2 对建模方法进行的消融实验。vanilla建模方法对点集施加了唯一的排列,导致歧义。MapTR引入排列等效建模来避免歧义,稳定了学习过程,显著提高了性能(+5.9 mAP)。
图5 排列建模方法的收敛曲线。
边缘方向损失的有效性。边缘方向损失权重的消融情况如表3所示。 β = 0 \beta=0 β=0表示我们不使用边缘方向损失。 β = 5 e − 3 \beta = 5e^{−3} β=5e−3对应适当的监督,作为默认设置。
表3 关于边缘方向损失的权重
β
\beta
β的消融实验。
2D-to-BEV变换。在表4中,我们对2D-to-BEV变换方法进行了消融实验,包括IPM、LSS、Deformable Attention和GKT。我们使用了一个优化的LSS实现。为了与IPM和LSS进行比较,GKT和Deformable Attention均采用单层配置。实验表明,MapTR兼容多种2D-to-BEV方法,性能稳定。考虑到GKT易于部署和效率高的特点,我们采用GKT作为MapTR的默认配置。
表4 关于2D-to-BEV变换方法的研究。MapTR兼容多种2D-to-BEV方法,性能稳定。
4.3 定性的可视化
我们在图1中展示了复杂和各种驾驶场景的预测矢量化高精地图结果。MapTR保持稳定和令人印象深刻的结果。更多的定性结果在附录C中提供。我们还提供了视频(在补充资料中)来展示鲁棒性。
5 结论
MapTR是一个结构化的端到端框架,用于高效的在线矢量化高精地图构建,该框架采用简单的编码器-解码器Transformer架构和分层二部匹配进行基于所提出的排列等效建模的地图元素学习。大量的实验表明,该方法可以在具有挑战性的nuScenes数据集中精确地感知任意形状的地图元素。我们希望MapTR可以作为自动驾驶系统的基础模块,推动下游任务(如运动预测和规划)的发展。
致谢
略
参考文献
略
附录
A 实施细节
本节提供该方法和实验的更多实现细节。
数据增强。源图像的分辨率为 1600 × 900 1600\times900 1600×900。对于MapTR-nano,我们以0.2的比例调整源图像的大小。对于MapTR-tiny,我们以0.5的比例调整源图像的大小。默认情况下使用颜色抖动。
模型设置。对于所有实验,训练时 λ \lambda λ设为2, α \alpha α设为5, β \beta β设为 5 e − 3 5e^{-3} 5e−3。对于MapTR-tiny,我们将实例级查询和点级查询的数量分别设置为50和20。我们将每个BEV网格的大小设置为0.3m,并堆叠6个Transformer解码器层。我们训练MapTR-tiny,总批大小为32(包含6个视图图像),学习率为 6 e − 4 6e^{−4} 6e−4,主干网络的学习率乘数为0.1。所有消融研究都是基于24期训练的MapTR-tiny。对于MapTR-nano,我们将实例级查询和点级查询的数量分别设置为100和20。我们将每个BEV网格的大小设置为0.75m,并堆叠2个Transformer解码器层。我们训练了110个epoch的MapTR-nano,总批大小为192个,学习率为 4 e − 3 4e^{−3} 4e−3,主干网络的学习率乘数为0.1。我们使用GKT作为MapTR的默认2D-to-BEV模块。
数据预处理。我们按照Liu et al处理地图标注。我们提取自车感知范围内的地图元素作为GT地图元素。缺省情况下, X X X轴的感知范围为 [ − 15.0 m , 15.0 m ] [-15.0m,15.0m] [−15.0m,15.0m], Y Y Y轴的感知范围为 [ − 30.0 m , 30.0 m ] [-30.0m,30.0m] [−30.0m,30.0m]。
B 消融研究
几何点数目。表5给出了每个地图元素建模所用几何点的数目。太少的点不能描述地图元素复杂的几何形状。几何点太多会影响效率。我们采用20个点作为MapTR的默认设置。
表5 对建模每个地图元素的几何点数目的消融研究。
元素数目。表6给出了地图元素数量的消融研究结果。我们采用50作为MapTR-tiny的默认地图元素数目。
表6 对地图元素数目的消融研究结果。
解码器层数。对地图解码器层数的消融研究如表7所示。地图构建性能随着层数的增加而提高,但当层数达到6时就趋于饱和。
表7 关于解码器层数的消融研究。
点匹配代价。正如3.2节所提,在实例级匹配中,我们采用位置匹配代价项 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之间的位置修正。在表8中,我们比较了两种代价设计,即倒角距离代价和点对点代价。点对点代价类似于点级匹配代价。具体来说,我们找到最佳的点对点分配,并将所有点对的曼哈顿距离求和作为两个点集的位置匹配代价。实验表明,点对点代价优于倒角距离代价。
表8 对于位置匹配代价项的消融研究。
Swin Transformer主干网络。对于Swin Transformer主干网络的消融研究见表9。
表9 对于Swin Transformer主干网络的消融研究。
模态。多传感器感知对自动驾驶汽车的安全至关重要,MapTR与其它车载传感器(如LiDAR)兼容。如表10所示,在24个epoch的调度下,多模态MapTR显著优于之前的最新结果17.3 mAP,速度提高了2倍。
表10 对于模态的消融研究。
对相机偏差的鲁棒性。在实际应用中,相机的内参通常是准确的,变化不大,但相机的外参可能由于相机位置的移动、校准误差等原因而不准确。为了验证鲁棒性,我们遍历验证集并为每个样本随机生成噪声。我们分别添加了不同程度的平移和旋转偏差。请注意,我们为所有相机和坐标添加了噪声。噪声服从正态分布。部分样本存在极大偏差,对性能影响很大。如表11和表12所示,当标准差 ∆ x ∆x ∆x、 ∆ y ∆y ∆y、 ∆ z ∆z ∆z为0.1m或标准差 θ x θ_x θx、 θ y θ_y θy、 θ z θ_z θz为0.02rad时, MapTR仍然保持相当的性能。
表11 对相机平移偏差的鲁棒性。度量指标是mAP。
σ
1
\sigma_1
σ1是
Δ
x
\Delta_x
Δx、
Δ
y
\Delta_y
Δy和
Δ
z
\Delta_z
Δz的标准差。
表12 对相机旋转偏差的鲁棒性。度量指标是mAP。
σ
2
\sigma_2
σ2是
θ
x
\theta_x
θx、
θ
y
\theta_y
θy和
θ
z
\theta_z
θz的标准差。
详细的运行时间。为了更深入地了解MapTR的效率,我们在表13中给出了MapTR-tiny中仅使用多相机输入的每个组件的详细运行时间。
表13 MapTR-tiny中每个组件在RTX 3090上的详细运行时间。
C 定性的可视化
我们在nuScenes val集上可视化了MapTR在各种天气条件和具有挑战性的道路环境下的地图构建结果。如图6、图7、图8所示,MapTR保持了稳定且令人印象深刻的结果。视频结果在补充材料中提供。
图6 晴及多云天气下的可视化。
图7 下雨天的可视化。
图8 夜晚场景下的可视化。