VectorMap论文阅读

1. 摘要

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

2. 核心贡献

  • VectorMapNet 是一种端到端的高精语义地图学习方法。与之前的工作不同,它使用折线来表示地图元素,并直接从传感器观测中预测矢量化输出,而无需地图栅格化或后处理;
  • 联合建模地图元素和每个地图元素的几何形状之间的拓扑关系是具有挑战性的。我们利用折线作为基元来建模复杂的地图元素,并通过将此联合模块解耦为两部分来缓解这一困难:地图元素检测器和折线生成器
  • VectorMapNet 在 nuScenes 数据集上实现了SOTA的高精语义地图学习性能。定量和定性结果都证实了我们的设计选择。

3. 基本思想

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

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

使用polyline表征的三个优势:

  • 高精地图通常由不同几何形状的元素混合组成,例如点、线、曲线和多边形。polyline是一种灵活的基元,可以有效地表示这些几何图形;
  • polyline的顺序是编码地图元素方向信息的自然方式,这对于车辆规划至关重要;
  • polyline表示已被下游自动驾驶模块广泛采用,例如运动预测。

4. 算法流程

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

  • 场景级元素检测任务,通过预测元素关键点及其类标签来定位和分类所有地图元素;
  • 为每个检测到的地图元素生成polyline顶点序列的对象级序列生成任务。

4.1. BEV feature

两个输入模态:图像和激光点云
图像分支:使用ResNet50作为共享的CNN backbone来获取每个相机的图像特征,然后通过IPM变换到BEV空间,得到特征F^I_{BEV} \in R^{W \times H \times C_1}

由于相机图像中缺少深度信息,本文采用一种常见的方法,假设地面大部分是平面的,并使用简单的单应性将图像转换到 BEV。在不知道地平面的确切高度的情况下,这种单应性变换不是准确的变换。为了缓解这个问题,文中将图像特征转换为四个不同高度(-1m、0m、1m、2m)的 BEV 平面,并将这些特征concat得到图像BEV feature

激光分支:对于激光点云,文中使用具有动态体素化的 PointPillars 的变体,它将 3D 空间划分为多个pillar,并使用柱状点云来学习柱状特征图,得到特征F^P_{BEV} \in R^{W \times H \times C_2}

对图像和激光得到的bev feature进行连结,并通过两层卷积来得到最终的bev featureF_{BEV} \in R^{W \times H \times C_1 + C_2}

4.2. 地图元素检测

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

元素queries:检测器使用可学习的元素queries q_i^{elem} \in R^{k \times d} | i=1, \hdots, N_{max}作为输入,其中d是隐藏的嵌入尺寸,N_{max}是预设的常数,它远远大于地图中的元素数量N。第i个元素querry q^{elem}_i由k个元素关键点嵌入q^{kp}_{i, j}组成,q_i^{elem} = \left \{ q^{kp}_{i,j} \in R^d | j = 1, \hdots, k \right \}

关键点表征:目标检测通常使用bounding box来抽象目标的形状。本文使用k个元素关键点位置A_i = \left \{a_{i, j} \in R^2 | j = 1, \hdots, k \right \}来表征地图元素的轮廓。然而,为地图元素定义关键点并不仅仅是因为其多样性。注意:这里的元素关键点并不是polyline的顶点。元素关键点是一个中间表征。每个类型的polyline的关键点的数量是固定的。

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

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

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

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

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

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

4.3. Polyline生成器

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

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

在序列最后再添加一个End of Sequence token EOS。
为了估计这个分布,文中将联合分布分解为一系列条件顶点坐标分布的乘积:

文中使用自回归网络对该分布进行建模,该网络在每一步输出下一个顶点坐标的预测分布参数。这种预测分布是在顶点坐标值和序列结束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的量化坐标值。

5. 实验结果

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

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

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

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

5.1. 定量分析

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

5.2. 定性分析

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

  • polyline减轻了对地图元素的详细上下文进行编码的难度。 VectorMapNet 保留了大部分详细的上下文(例如边界的角)。使用稠密车道段和像素的模型很难学习这些几何细节,因为这些表征需要准确地对其所有元素进行分类以保留几何结构。否则,细节将被更改(参见图 4 中的红色椭圆)。
  • polyline表示可以防止 VectorMapNet 生成模棱两可的结果,因为它可以一致地对方向信息进行编码。没有这种一致性约束的模型容易生成循环曲线,错误地表示具有两个方向的单向车道分隔线,并连接具有冲突方向的两条车道(参见图 4 中的蓝色椭圆)。这些奇异性阻碍了安全的自动驾驶。

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

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

5.3. 消融实验

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

6. 结论

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

参考文献

VectorMapNet: End-to-end Vectorized HD Map Learning

VectorMapNet: 端到端的矢量化高精地图学习 - 知乎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/545577.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

总结|性能优化思路及常用工具及手段

性能优化是降低成本的手段之一,每年大促前业务平台都会组织核心链路上的应用做性能优化,一方面提升系统性能,另外一方面对腐化的代码进行清理。现结合业务平台性能优化的经验,探讨一下性能优化的思路及常用工具及手段。性能优化本…

关于下载EsayOCR模型总是连接中断报错

关于下载EsayOCR模型总是连接中断报错 因为网络问题,自动下载总是失败报错,所以只好去网上手动下载训练好的模型。 以下是一些模型的下载地址:text detection model (CRAFT) chinese (traditional) model chinese (simplified) model jap…

TCP报文与三次握手四次断开、TCP最大连接数与文件打开数限制、keepalive、tcpdump、wireshark抓包分析工具

TCP报文 tcp详解、tcp与udp对比等 TCP:传输控制协议 UDP:用户数据报协议 源端口和目的端口字段:各占 2 字节(16位)。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。 序列号:在建立…

linux学习:进程(新建+运行某文件+退出处理函数+等待)

目录 api 创建新进程 注意 运行某文件 例子 注意 例子,等待进程 进程是由进程控制块、程序段、数据段三部分组成 进程有都有一个父进程,除了init,父进程可以创建子进程 每个进程都有一个PID,可以用ps来查看,等…

目标检测应用场景—数据集【NO.30】织物缺陷图像目标检测数据集

写在前面:数据集对应应用场景,不同的应用场景有不同的检测难点以及对应改进方法,本系列整理汇总领域内的数据集,方便大家下载数据集,若无法下载可关注后私信领取。关注免费领取整理好的数据集资料!今天分享…

2024第十五届蓝桥杯 JAVA B组

目录 前言:试题 A: 报数游戏试题 B: 类斐波那契循环数试题C:分布式队列 前言: 没参加这次蓝桥杯算法赛,十四届蓝桥杯被狂虐,对算法又爱又恨,爱我会做的题,痛恨我连题都读不懂的题😭,十四届填空只…

Linux基础(持续更新~)

常见的Linux目录 1、“/”:根目录 2、“/root”:root 用户的家目录 3、“/home/username ”:普通用户的家目录 4、“/etc”:配置文件目录(类似于Windows的注册表) 5、“/bin ”:命令目录 …

不再写满屏import导入

密密麻麻的import语句不仅仅是一种视觉上的冲击,更是对代码组织结构的一种考验。 我们是如何做到让import“占领满屏“的了,又该如何优雅地管理这些import语句呢? 本文将从产生大量import语句的原因、可能带来的问题以及如何优化和管理impo…

java版数字藏品深色UI仿鲸探数藏盲盒合成短视频卡牌模式支持高并发

Java版数字藏品深色UI仿鲸探数藏盲盒合成短视频卡牌模式支持高并发,是一种结合了Java技术、深色用户界面(UI)设计、数字藏品概念、盲盒合成玩法以及短视频卡牌模式的综合性应用。该模式旨在为用户提供一种新颖、有趣的数字藏品体验&#xff0…

深度学习pytorch实战第P3周--实现天气识别

>- **🍨 本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **🍖 原作者:[K同学啊](https://mtyjkh.blog.csdn.net/)** 引言 1.复习上周 深度学习pytorch实战-第…

算法-反转单向链表

需求 思路 链表必有节点&#xff0c;节点两要素&#xff1a;当前元素值&#xff0c;下一个节点地址 import java.util.Scanner;// 定义一个单向链表 public class MyLinkedList<E> {int size 0;// 顶一个私有的内部类&#xff0c;表示链表的节点public class Node {E da…

pyinstaller后打开qt的exe报错Available platform

具体弹窗&#xff1a; 处理&#xff1a; 添加临时的环境变量&#xff1a; cd dir && set QT_PLUGIN_PATH.\platforms && XXX.exe

【JAVA基础篇教学】第十三篇:Java中I/O和文件操作

博主打算从0-1讲解下java基础教学&#xff0c;今天教学第十三篇&#xff1a;Java中I/O和文件操作。 理解 Java 中的 I/O&#xff08;输入/输出&#xff09;和文件操作对于开发各种类型的应用程序都至关重要。I/O 操作涉及从文件、网络或其他数据源中读取数据&#xff0c;以及…

动态数据源实现分表走shardingsphere,不分表走其他

shardingsphere从4.1.1升级到5.2.1但是还没有完结&#xff0c;因为在执行存储过程的时候&#xff0c;系统提示错误如下。shardingsphere是不支持存储过程呢&#xff0c;但项目中不能避免使用存储过程&#xff0c;因为有大量的数据需要初始化&#xff0c;这种情况该如何应对&…

Java反序列化Commons-Collections-CC1链

环境搭建 JDK8u71以下&#xff0c;这个漏洞已经被修复了&#xff0c;这个JDK的以上版本都修复了漏洞 JDK8u65 下载地址 https://www.oracle.com/cn/java/technologies/javase/javase8-archive-downloads.html这个时候来到 pom.xml 配置Maven依赖下载CommonsCollections3.2.…

UE5 GAS开发P31 将hud绑定在自己的角色上

在WidgetController内新建一个OverlayAuraWidgetController,然后修改HUD的初始状态 AuraHUD // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "GameFramework/HUD.h" #…

“Python+”集成技术高光谱遥感数据处理与机器学习深度应用

涵盖高光谱遥感数据处理的基础、python开发基础、机器学习和应用实践。重点解释高光谱数据处理所涉及的基本概念和理论&#xff0c;旨在帮助学员深入理解科学原理。结合Python编程工具&#xff0c;专注于解决高光谱数据读取、数据预处理、高光谱数据机器学习等技术难题&#xf…

亚马逊测评必看:全面剖析亚马逊测评,你不知道的那些事!

随着电商市场的拓展&#xff0c;曹哥今天针对测评小白们写一些入门知识&#xff0c;今天就带大家从内到外的亚马逊这个平台讲一讲 首先这个行业里分别有几个角色&#xff1a; 1.卖家&#xff1a;所有的服务基本上都是围绕着卖家来转 2.买家&#xff1a;也就是购买下单上评论…

GpuMall镜像社区上线啦!超值福利抢鲜体验!

想快速体验最新最优镜像&#xff1f;想随手分享你的原创镜像&#xff1f;想寻找一个交流镜像的优质平台&#xff1f;我们听到了广大友友们迫切的心声&#xff01; GpuMall智算云 | 省钱、好用、弹性。租GPU就上GpuMall,面向AI开发者的GPU云平台 现在&#xff01;我们的镜像社…

Rust腐蚀服务器插件安装教程

Rust腐蚀服务器插件安装教程 大家好我是艾西&#xff0c;一个做服务器租用的网络架构师。之前教大家怎么搭建Rust腐蚀服务器&#xff0c;那么很多小伙伴在搭建完成后发现自己的游戏跟平台玩的还是有差别&#xff0c;其实这里主要缺少mod插件了。那么本期我们教一下大家mod插件…