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模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!




整理不易,请点赞和在看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/CV_Autobot/article/details/126118364

智能推荐

oracle 12c 集群安装后的检查_12c查看crs状态-程序员宅基地

文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态

解决jupyter notebook无法找到虚拟环境的问题_jupyter没有pytorch环境-程序员宅基地

文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境

国内安装scoop的保姆教程_scoop-cn-程序员宅基地

文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn

Element ui colorpicker在Vue中的使用_vue el-color-picker-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker

迅为iTOP-4412精英版之烧写内核移植后的镜像_exynos 4412 刷机-程序员宅基地

文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机

Linux系统配置jdk_linux配置jdk-程序员宅基地

文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk

随便推点

matlab(4):特殊符号的输入_matlab微米怎么输入-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入

C语言程序设计-文件(打开与关闭、顺序、二进制读写)-程序员宅基地

文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。‍ Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。

Touchdesigner自学笔记之三_touchdesigner怎么让一个模型跟着鼠标移动-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动

【附源码】基于java的校园停车场管理系统的设计与实现61m0e9计算机毕设SSM_基于java技术的停车场管理系统实现与设计-程序员宅基地

文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计

Android系统播放器MediaPlayer源码分析_android多媒体播放源码分析 时序图-程序员宅基地

文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;amp;gt;Jni-&amp;amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图

java 数据结构与算法 ——快速排序法-程序员宅基地

文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法