VectorMapNet | 端到端的矢量化高精地图学习

作者 | wanghy

源自 | 知乎

编辑 | 汽车人

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

03a9e8ed189caa2d79afe822831d8751.jpeg

论文:arxiv.org/abs/2206.0892

代码:github.com/Mrmoore98/Ve

摘要

自动驾驶系统需要对周围环境具有很好的理解,包括动态物体和静态高精度语义地图。现有方法通过离线手动标注来解决语义构图问题,这些方法存在严重的可扩展性问题。最近的基于学习的方法产生稠密的分割预测结果,这些预测不包含单个地图元素的实例信息,并且需要涉及许多手工设计组件的启发式后处理,以获得矢量化地图。为此,我们引入了一个端到端矢量化高精地图学习pipeline,称为 VectorMapNet。 VectorMapNet 采用板载传感器观测,并预测BEV视角中一组稀疏的polyline基元,以对高精地图的几何形状进行建模。基于该pipeline,我们的方法可以显示地对地图元素之间的空间关系进行建模,并生成对下游自动驾驶任务友好的矢量化地图,而无需进行后处理。在我们的实验中,VectorMapNet 在 nuScenes 数据集上实现了强大的高精地图学习性能,超过了之前SOTA方法 14.2 mAP。定性地,我们还展示了 VectorMapNet 能够生成全面的地图并捕获更细粒度的道路几何细节。据我们所知,VectorMapNet 是第一个针对端到端矢量化高精地图学习问题而设计的工作。

c837f4dfe07ce9c64e5b16c2952516a5.jpeg

核心贡献

  1. VectorMapNet 是一种端到端的高精语义地图学习方法。与之前的工作不同,它使用折线来表示地图元素,并直接从传感器观测中预测矢量化输出,而无需地图栅格化或后处理;

  2. 联合建模地图元素和每个地图元素的几何形状之间的拓扑关系是具有挑战性的。我们利用折线作为基元来建模复杂的地图元素,并通过将此联合模块解耦为两部分来缓解这一困难:地图元素检测器和折线生成器

  3. VectorMapNet 在 nuScenes 数据集上实现了SOTA的高精语义地图学习性能。定量和定性结果都证实了我们的设计选择。

基本思想

地图元素包括:道路边界、车道分割线和人行横道等;

设计思路:本文将该问题构建为稀疏点集预测问题,每个语义元素由N_v个有序二维点列构成的折线表示。这种设置使得我们能够对地图元素之间的空间和拓扑关系进行建模,并强调地图元素的实例特征。

使用polyline表征的三个优势:

  1. 高精地图通常由不同几何形状的元素混合组成,例如点、线、曲线和多边形。polyline是一种灵活的基元,可以有效地表示这些几何图形

  2. 折线顶点的顺序是编码地图元素方向信息的自然方式,这对于车辆规划至关重要;

  3. 折线表示已被下游自动驾驶模块广泛采用,例如运动预测。

算法流程

29123b5ad3bdf8ded57da433f4a98506.jpeg


VectorMapNet主要由三部分组成:BEV feature 提取地图元素检测polyline生成。基于bev feature建模Polylines分为两步,是因为地图元素的结构模式和位置具有广泛的多样性,共同学习它们可能具有挑战性。因此将该建模任务解耦成两部分:

  1. 场景级元素检测任务,通过预测元素关键点及其类标签来定位和分类所有地图元素;

  2. 为每个检测到的地图元素生成polyline顶点序列的对象级序列生成任务。

BEV feature

两个输入模态:图像和激光点云
1. 图像分支:通过共享CNN backbone来获取每个相机的图像特征,然后通过IPM变换到BEV空间。由于相机图像中缺少深度信息,本文采用一种常见的方法,假设地面大部分是平面的,并使用简单的单应性将图像转换到 BEV。在不知道地平面的确切高度的情况下,这种单应性变换不是准确的变换。为了缓解这个问题,文中将图像特征转换为四个不同高度(-1m、0m、1m、2m)的 BEV 平面,并将这些特征concat得到图像BEV feature
2. 激光分支:对于激光点云,文中使用具有动态体素化的 PointPillars 的变体,它将 3D 空间划分为多个pillar,并使用柱状点云来学习柱状特征图。
3. 对图像和激光得到的bev feature进行concat,并通过两层卷积来得到最终的bev feature.

地图元素检测

目标:从bev feature中学习每个地图元素的关键点和类别标签。本文采用一个基于transformer的set prediction检测器的变体来实现这一目标。这些元素之间的几何关系由检测器中的注意力模块建模(query self-attention)。该检测器通过二分图匹配损失进行训练,使得VectorMapNet 避免类似NMS的后处理步骤。

元素queries: 每个元素query表示

34cad40b4e52eed504523f56c7a634c3.jpeg

每个元素query又是由k个关键点组成:

ddbda0c8553328e1f69d8641a01478ce.png



网络结构:采用transformer decoder和一个预测头,类似于DETR。将元素query拉伸成一个序列来满足decoder的输入要求:

ce4c26d0e8a26eac17df6a6254f8e1cd.png

decoder由多头self-attention和cross-attention组成。Cross-attention采用bev feature作为key和value,使用deformable attention,其中解码器中的每个query在 BEV 特征中都有一个 2D 位置,以在预测的关键点和 BEV 空间之间建立一一对应关系并加速训练收敛。


预测头:一个回归分支和一个分类分支。
回归分支:对于每个地图元素,回归分支通过共享的MLP从关键点embedding预测每个关键点的坐标。

15b39de849caa82279dc634d39ecdb82.png

分类分支:concat单个地图元素的关键点embeddings,并通过线性投影层预测类别标签。

9eb6f137c03b4202df313219712d0ddd.png

地图元素的关键点表征:文中通过关键点来紧凑表征地图元素的位置和轮廓。采用了如下三种保证方式,并在附录中进行了对比。

b4b73978b707980e936baee59c3f84b1.jpeg

关键点embeddings:
地图元素中的每个关键点有两个learnable embeddings,用于为attention模块识别关键点之间的差异。第一个embedding是关键点位置embedding,指示该关键点在关键点中属于哪个位置。第二个embedding编码该关键点属于哪个地图元素。关键点最后的embedding是这两种embedding的加和。

Polyline生成器

Polyline生成器基于bev feature、预测地图元素关键点和类别标签,来生成地图元素的详细几何polyline。

675cd0af189cbeceaa6cef3f98ce56ba.jpeg

对于每个polyline进行拉伸获得Polyline序列

c503ee1e8641a12fbe3a20e509468654.png d5f7ab8403ebadb79dce33ad2d875fc1.png

在序列最后再添加一个End of Sequence token EOS。

为了估计这个分布,文中将联合分布分解为一系列条件顶点坐标分布的乘积:

156f6497d41b4614411c9dcfc5c33628.png


文中使用自回归网络对该分布进行建模,该网络在每一步输出下一个顶点坐标的预测分布参数。这种预测分布是在顶点坐标值和序列结束token EOS 上定义的。对polyline生成器进行训练,以最大化观测的折线相对于模型参数 θ 和 BEV feature 的对数概率。

网络结构:文中使用transformer decoder来建模顶点的位置。生成器将polyline关键点的坐标值及其类标签作为transformer decoder的初始输入。Transformer decoder的queries通过cross attention模块将 BEV 特征集成在一起。然后通过线性投影层迭代地将这些query解码为顶点坐标值。该方法在残差路径内使用layer normalization的改进transformer,这提高了训练处理的效率

Polyline embeddings: 参考PolyGen,文中使用三个learned embeddings来表示每个token的属性: 坐标embedding,指示token是表示 x 还是 y 坐标;位置embedding,表示token属于哪个顶点;值embedding,表示token的量化坐标值。

实验结果

对比了该实验室之前的工作HDMapNet和ETH的STSU工作,下面对这两种方法进行简要的说明。

HDMapNet方法也是基于输入的图像和激光点云获得bev feature,只是图像从pv->bev采用的是MLP。然后基于bev feature学习语义分割信息、方向信息和instance embedding,最后基于这三种信息构建实例。

710602c1374a521de1050f363cfde720.jpeg

STSU采用基于DETR的方法学习每个object的query,然后基于MLP学习每根线的控制点(贝塞尔曲线表征线)和线之间的拓扑关系。

ffc31ceda658654b5ba1a1d9277e983b.jpeg

本文使用倒角距离作为阈值来确定与GT的positive匹配的平均精度。{0.5,1.0,1.5}是倒角距离的预定义阈值。

定量分析

VectorMapNet在所有指标上都大大优于HDMapNet和STSU。

07b9f4306f724f8631876a17d98bfa57.jpeg

定性分析

使用折线作为基元与基线相比带来了两个好处:

  1. polyline减轻了对地图元素的详细上下文进行编码的难度。VectorMapNet 保留了大部分详细的上下文(例如边界的角)。使用稠密车道段和像素的模型很难学习这些几何细节,因为这些表征需要准确地对其所有元素进行分类以保留几何结构。否则,细节将被更改(参见图 4 中的红色椭圆)。

  2. polyline表示可以防止 VectorMapNet 生成模棱两可的结果,因为它可以一致地对方向信息进行编码。没有这种一致性约束的模型容易生成循环曲线,错误地表示具有两个方向的单向车道分隔线,并连接具有冲突方向的两条车道(参见图 4 中的蓝色椭圆)。这些奇异性阻碍了安全的自动驾驶。

建模地图元素之间的拓扑关系的好处:

  1. 每个地图元素都是约束每个交通参与者的交通规则中不可或缺的一部分。VectorMapNet 使用自注意力机制对地图元素检测器中地图元素位置之间的拓扑关系进行建模,然后生成细节。根据实验结果,我们发现VectorMapNet可以捕获地图中的大部分地图元素,包括位于边缘的小元素。此外,图 5 显示 VectorMapNet 可以找到数据集提供的高精地图中未注释的地图元素。这显示了所提出的基于学习的方法替代传统高精地图人类标注pipeline的潜力。

e18bdb675713325fee6faba69d9455e9.jpeg 1c999cab50c4fcfa1f0567c76cc104dd.jpeg

消融实验

作者对采样方式Polyline建模方法进行了讨论。Curvature-based的采样方法是基于nuScenes数据集的设置,在曲率变化超过某个阈值的位置对顶点进行采样。Fixed interval采样方法以固定间隔(1m)对顶点进行采样。polyline建模方法包括离散和连续行驶,本文采用离散形式,连续形式参见 SketchRNN ,通过使用混合高斯分布将折线的顶点建模为连续变量。

f818f2a286c2b3aa6519c65510f0bb12.jpeg fa154f8f1f02b3402571bfea8199b1e8.jpeg

结论

本文提出了 VectorMapNet,这是一种解决高精语义地图学习问题的端到端模型。与现有工作不同,VectorMapNet 使用折线作为基元来表示矢量化高精地图元素。为了学习这些折线,我们将学习问题分解为检测和生成问题。我们的实验表明,VectorMapNet 可以为受益于折线基元的城市地图元素生成连贯且复杂的几何图形。我们相信这种学习高精地图的新方法为高精语义地图学习问题提供了一个新的视角。
局限:尽管我们的方法可以在单个帧中生成连贯且复杂的几何图形,但不能保证时序一致的预测。如何有效地对矢量化高精地图预测的时序信息进行编码具有挑战性,我们将其留作未来的工作。

自动驾驶之心】全栈技术交流群

自动驾驶之心是国内首个自动驾驶开发者社区,聚焦目标检测、语义分割、关键点检测、车道线、目标跟踪、3D感知、多传感器融合、SLAM、高精地图、规划控制、AI模型部署落地等方向;

加入我们:自动驾驶之心技术交流群汇总!

自动驾驶之心【知识星球】

想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D感知、多传感器融合、目标跟踪)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!

 
 
 
 
 
 
整理不易,请点赞和在看
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值