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

智能推荐

使用nginx解决浏览器跨域问题_nginx不停的xhr-程序员宅基地

文章浏览阅读1k次。通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:$.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty..._nginx不停的xhr

在 Oracle 中配置 extproc 以访问 ST_Geometry-程序员宅基地

文章浏览阅读2k次。关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm其实简单总结一下,主要就分为以下几个步骤。..._extproc

Linux C++ gbk转为utf-8_linux c++ gbk->utf8-程序员宅基地

文章浏览阅读1.5w次。linux下没有上面的两个函数,需要使用函数 mbstowcs和wcstombsmbstowcs将多字节编码转换为宽字节编码wcstombs将宽字节编码转换为多字节编码这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型。通过函数setlocale进行系统编码的设置。linux下输入命名locale -a查看系统支持的编码_linux c++ gbk->utf8

IMP-00009: 导出文件异常结束-程序员宅基地

文章浏览阅读750次。今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到“ IMP-00009:导出文件异常结束” 错误,google一下,发现可能有如下原因导致imp的数据太大,没有写buffer和commit两个数据库字符集不同从低版本exp的dmp文件,向高版本imp导出的dmp文件出错传输dmp文件时,文件损坏解决办法:imp时指定..._imp-00009导出文件异常结束

python程序员需要深入掌握的技能_Python用数据说明程序员需要掌握的技能-程序员宅基地

文章浏览阅读143次。当下是一个大数据的时代,各个行业都离不开数据的支持。因此,网络爬虫就应运而生。网络爬虫当下最为火热的是Python,Python开发爬虫相对简单,而且功能库相当完善,力压众多开发语言。本次教程我们爬取前程无忧的招聘信息来分析Python程序员需要掌握那些编程技术。首先在谷歌浏览器打开前程无忧的首页,按F12打开浏览器的开发者工具。浏览器开发者工具是用于捕捉网站的请求信息,通过分析请求信息可以了解请..._初级python程序员能力要求

Spring @Service生成bean名称的规则(当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致)_@service beanname-程序员宅基地

文章浏览阅读7.6k次,点赞2次,收藏6次。@Service标注的bean,类名:ABDemoService查看源码后发现,原来是经过一个特殊处理:当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String C..._@service beanname

随便推点

二叉树的各种创建方法_二叉树的建立-程序员宅基地

文章浏览阅读6.9w次,点赞73次,收藏463次。1.前序创建#include<stdio.h>#include<string.h>#include<stdlib.h>#include<malloc.h>#include<iostream>#include<stack>#include<queue>using namespace std;typed_二叉树的建立

解决asp.net导出excel时中文文件名乱码_asp.net utf8 导出中文字符乱码-程序员宅基地

文章浏览阅读7.1k次。在Asp.net上使用Excel导出功能,如果文件名出现中文,便会以乱码视之。 解决方法: fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);_asp.net utf8 导出中文字符乱码

笔记-编译原理-实验一-词法分析器设计_对pl/0作以下修改扩充。增加单词-程序员宅基地

文章浏览阅读2.1k次,点赞4次,收藏23次。第一次实验 词法分析实验报告设计思想词法分析的主要任务是根据文法的词汇表以及对应约定的编码进行一定的识别,找出文件中所有的合法的单词,并给出一定的信息作为最后的结果,用于后续语法分析程序的使用;本实验针对 PL/0 语言 的文法、词汇表编写一个词法分析程序,对于每个单词根据词汇表输出: (单词种类, 单词的值) 二元对。词汇表:种别编码单词符号助记符0beginb..._对pl/0作以下修改扩充。增加单词

android adb shell 权限,android adb shell权限被拒绝-程序员宅基地

文章浏览阅读773次。我在使用adb.exe时遇到了麻烦.我想使用与bash相同的adb.exe shell提示符,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)更改bash二进制文件遵循以下顺序> adb remount> adb push bash / system / bin /> adb shell> cd / system / bin> chm..._adb shell mv 权限

投影仪-相机标定_相机-投影仪标定-程序员宅基地

文章浏览阅读6.8k次,点赞12次,收藏125次。1. 单目相机标定引言相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(以下也这么称呼)的原理。原理相机模型和单应矩阵相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影_相机-投影仪标定

Wayland架构、渲染、硬件支持-程序员宅基地

文章浏览阅读2.2k次。文章目录Wayland 架构Wayland 渲染Wayland的 硬件支持简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为Wayland Architecture .Wayland 架构若是想要更好的理解 Wayland 架构及其与 X (X11 or X Window System) 结构;一种很好的方法是将事件从输入设备就开始跟踪, 查看期间所有的屏幕上出现的变化。这就是我们现在对 X 的理解。 内核是从一个输入设备中获取一个事件,并通过 evdev 输入_wayland

推荐文章

热门文章

相关标签