0. 简介

高精地图作为自动驾驶中最关键的组成部分,矢量化高精(HD)地图包含有关周围道路元素的详细信息,这对于现代自动驾驶汽车的各项下游任务是至关重要的,例如车辆规划和控制。最近的工作试图直接检测矢量化高精地图,将其作为点集预测任务,从而显著提高了检测性能。然而,这些方法无法分析并且利用预测点之间的内部实例相关性,这阻碍了进一步的发展。《INSIGHTMAPPER: A CLOSER LOOK AT INNERINSTANCE INFORMATION FOR VECTORIZED HIGHDEFINITION MAPPING》利用内部实例信息通过Transformers进行矢量化高精建图,并且引入了InsightMapper。本文提出了InsightMapper中的三种新型设计,其通过不同的方式利用内部实例信息,包括混合查询生成、内部实例查询融合以及内部实例特征聚合。并最终完成了建图。具体的项目代码在github上可以查到。

1. 主要贡献

本文的贡献总结如下:

1)本文研究了内部实例点之间的相关性,证明了利用内部实例点信息可以有效地提高最终性能;

2)为了更好地利用内部实例信息,本文引入了一个称为InsightMapper的新模型,用于在线高精地图检测。InsightMapper包含三个具有不同功能的新型模块,包括查询生成、查询融合以及内部实例自注意力

3)本文评估了所有的模块设计以及nuScenes数据集上的基线。InsightMapper的性能优于所有基线模型,并且维持了具有竞争力的效率。

2. 点相关性

2.1 预处理:向量地图分解和采样

G为场景的原始向量地图标签,包含顶点#V和边E。向量地图包含多类道路元素,包括人行横道、道路分隔线、道路边界和车道中心线。其中,前三类道路元素是简单的折线或多边形,没有交点。而车道中心线具有更复杂的拓扑结构,如车道分离、车道合并和车道交叉。为了统一所有向量元素,将向量地图分解为没有交点的简单形状(即折线和多边形)。将向量地图中度数大于2的顶点(即交点顶点)从G中移除,并断开相应的边。这样,得到一组没有交点的简单折线和多边形,表示为G^∗ = {l_i}^{N^∗}_{i=0},其中G^∗是一个无向图。每个形状l_i被定义为一个实例,N^∗表示向量地图中实例的总数。为了增强模型的并行化能力,按照MapTR的方法,每个实例都被均匀地重新采样为具有固定长度点的形式,即l_i = (v_0, v_1, …, v_j , …v_{n_p})l_i按照v_0v_{n_p}的顺序排列,其中n_p是每个实例采样点的数量。对于多边形实例,v_0等于v_{n_p}。预处理模块的可视化如图2所示。

图2:向量地图的预处理:粉色线条表示边缘,橙色点表示顶点,蓝色点表示度数大于两个的交叉点。为了简化图形,移除了交叉点,并且每个获得的实例被均匀重新采样为n_p 个顶点(在本例中,n_p=4)

图3:内部和外部相关性的可视化。绿色线条表示蓝色点与同一实例中其他点之间的内部相关性,而红色线条表示蓝色点与属于不同实例的点之间的外部相关性,应该被阻断以防止干扰。

3.2 内部实例和跨实例的相关性

与传统的目标检测任务不同,可以将对象近似为独立同分布(i.i.d.),在矢量化高清地图检测任务中,预测点之间存在强相关性。这些相关性可以分为内部实例相关性和跨实例相关性,如图3所示。

内部实例相关性对于预测质量至关重要。同一实例内的点可以通过交换内部实例信息进行协作,从而产生更平滑和更精确的预测。如果没有这种协作,同一实例的点可能会进行独立预测,导致出现锯齿状或错误的实例。换句话说,内部实例相关性可以作为进一步优化预测矢量地图的附加约束。相反,跨实例相关性发生在一个点与属于其他实例的点之间。通常,跨实例相关性会干扰内部实例信息的交换,降低最终性能。因此,应该阻止跨实例信息的传递。

在先前的最先进(SOTA)方法MapTR中,点的相关性没有得到正确分析和利用:内部实例信息没有得到充分利用,错误的跨实例信息被引入,限制了进一步的改进。在接下来的章节中,我们提出了InsightMapper来更好地处理和利用点之间的相关性,以实现增强的矢量化地图检测性能。

3. 具体方法

3.1 概述

在VectorMapNet(Liu等,2022)和MapTR(Liao等,2022)的基础上,我们提出的InsightMapper是一个端到端可训练的网络,用于在线矢量化高清地图检测。与MapTR不同,InsightMapper利用内部实例信息来融合对象查询并在可变形Transformer解码器层中聚合中间特征。否则,相邻顶点可能会产生独立的位置回归结果,导致出现锯齿状甚至错误的实例。通过内部实例信息的辅助,模型可以更好地优化和细化实例内部点的位置,显著提高最终性能。

图4:InsightMapper概述:InsightMapper是一个端到端可训练的Transformer模型,具有编码器-解码器结构。Transformer编码器将透视视角相机图像投影到鸟瞰图(BEV)中。随后,Transformer解码器通过预测点集来检测向量实例。为了更好地利用同一实例内点之间的相关信息,我们:(a)提出了一种混合查询生成方案;(b)添加了一个基于实例内信息融合输入查询的模块;(c)在Transformer解码器层中插入了一个实例内特征聚合模块,用于实例内点特征交换。这三个设计使InsightMapper能够更好地利用实例内特征,并显著提高最终性能。

3.2 网络结构

InsightMapper是一个端到端可训练的编码器-解码器变换器模型。在BEVformer(Li等,2022b)的基础上,InsightMapper首先将透视视图相机图像投影到鸟瞰图(BEV)中。在获得BEV特征之后,InsightMapper使用可变形注意力层(Zhu等,2020)来处理输入解码器对象查询。每个对象查询预测一个点,包括对象类别和回归点位置。InsightMapper的整体结构如图4所示。

图5:查询生成方案。为了简洁地可视化,实例数量N_I为2,每个实例的点数n_p为3。混合方案可以有效地促进实例内部信息交流,并同时防止错误的实例间干扰(紫色线)。

与传统的目标检测任务不同,需要检测的点之间存在强烈的相关性。有几种方法可以生成作为变换器解码器输入的对象查询,包括朴素方案、分层方案和混合方案。所有查询生成方案如图5所示

3.3.1 朴素查询生成

这种方法假设点是独立同分布的,并且随机生成查询,不利用内部实例信息。设N_I表示预测实例的数量,显然大于N^∗。由于每个实例包含n_p个点,朴素对象查询由N_I·n_p个随机生成的独立同分布的查询组成。由于未充分考虑内部实例约束,这种查询生成方法往往表现不佳。

3.3.2 分层查询生成

为了解决朴素方案的问题,MapTR(Liao等,2022)提出了一种分层查询生成方案。设Q_{ins} = {q^I_i}^{N_I}_{i=0}表示实例查询Q_{pts} = {q^P_j}^{n_p}_{j=0}表示点查询。向量地图检测的对象查询是Q_{ins}Q_{pts}的逐对相加,如下所示:


其中 |Q| = |Q_{ins}| · |Q_{pts}| = N_I · n_p。对于同一实例内的点 {q_{i,j}}^{n_p}_{j=0} = {q^I_i +q^P_j}^{n_p}_{j=0},它们共享相同的可学习实例嵌入 q^I_i可以被视为交换内部实例信息的一种方式。通过使用 q^I_i作为桥梁,同一实例内的对象查询可以更好地协作进行点预测。

尽管这种分层查询生成方案相对于朴素方案表现出更好的性能,但它引入了意外的跨实例干扰。直观地说,不同实例之间的查询不应该相关(即,跨实例查询可以视为独立的)。然而,不同实例的第j个查询(即,{q_{i,j}}^{N_I}_{i=0} = {q^I_i + q^P_j}^{N_I}_{i=0})共享相同的点查询q^P_j,这表明该方案在所有实例的第j个点之间创建了信息交换。这种错误的跨实例信息交换阻碍了模型进一步改进的可能性。

3.3.3 混合查询生成

朴素方案没有考虑查询之间的任何信息交换,而分层方案引入了有害的实例间相关性。为了解决这些问题,本文提出了一种混合查询生成方法,可以减轻前述方案的缺点,同时保持适当的实例内信息交换
设实例查询为Q_{ins} = {q^I_i}^{N_I}_{i=0},点查询为Q_{pts} = {q^P_j}^{N_P}_{j=0} = {q^P_j}^{N_I·n_p}_{j=0}。点查询被分成N_I个实例组,点查询q^P_j被分配给第⌊\frac{j}{n_p}⌋个实例。因此,最终的对象查询是点查询p^P_j和其分配的实例查询p^I_k的总和,其中k = ⌊\frac{j}{n_p}⌋。对象查询集可以表示为:

其中|Q| = |Q_{pts}| = N_P = N_I · n_p。与分层方案相比,混合方案中的每个点查询仅被用于生成对象查询一次,从而防止了意外的实例间信息交换。同时,属于同一实例的点查询与共享的实例查询相加,建立了内部实例连接。混合查询生成方法可以被视为朴素方案和分层方案的结合,有效地减轻了它们各自的缺点。

3.4 内部实例查询融合

变压器解码器的输入对象查询是由实例查询和点查询生成的。尽管生成的查询可以利用一些内部实例信息,但这种信息交换是间接的且不灵活的。实例查询被平均分配给所有内部实例点,而无法实现更精确的点对点信息交换。因此,引入了一个查询融合模块来进一步利用内部实例信息。
Q_i = {q_{i,j}}^{n_p}_{j=0} 表示属于第 i 个实例的对象查询集合,q_{i,j} 表示第 i 个实例的第 j 个点。q_{i,j}Q_i 中的所有其他查询相关。为了更好地融合内部实例对象查询,每个查询通过 Q_i 中所有查询的加权和进行更新,如下方程所示:

其中,f(·)是融合函数,ϕ(·)是核函数,用于非线性转换的情况。
在传统的目标检测任务中,假设目标查询是独立同分布的
(i.i.d.),因此不需要进行查询融合。然而,在向量地图检测任务中,查询融合模块能够有效地对齐查询的更新,并使每个点更加关注邻近点。如果没有查询融合模块,同一实例内的查询无法相互感知,使其变得”盲目”。缺乏关于邻近查询的信息会阻碍它们形成精确的形状,从而导致最终性能的下降。

3.5 内部实例特征聚合

除了对象查询操作之外,InsightMapper还通过在Transformer解码器层中引入额外的掩码内部实例自注意模块来执行内部实例特征聚合。掩码操作受到(He等人,2022)的启发。InsightMapper的解码器层如图6所示。

所提出的内部实例自注意模块类似于原始的自注意模块,但具有特殊设计的注意力掩码。如图6所示,内部实例点的注意力掩码被设置为零(彩色块),表示允许实例内部的点之间的注意力。相反,对于属于不同实例的点(即实例间点),相应的注意力掩码值被设置为1,阻止它们之间的注意力。这种方法鼓励模型更多地关注内部实例信息,从而产生更一致的预测。为了进一步增强该模块的鲁棒性,内部实例点的注意力掩码有一个ϵ的概率被设置为1(被阻止)。

另一种方法是将所提出的注意力模块放置在交叉注意力模块之前。然而,自注意力在交叉注意力之前应该平等对待所有查询,以防止重复预测。因此,将内部实例自注意力实现在交叉注意力模块之前会导致最终性能下降。图6所示的网络结构已被证明是最优设计。

图6:InsightMapper的解码器。在解码器层中,加入了一个带有掩码的内部实例自注意模块。在这个模块中,不同实例之间的注意力被阻塞(灰色网格)。只允许内部实例之间的注意力(彩色网格)。为了提高鲁棒性,彩色网格有ϵ的概率被设置为灰色。

4. 参考链接

https://mp.weixin.qq.com/s/r5soiLCKT75bifQCrR6C0w

https://zhuanlan.zhihu.com/p/650732045