技术标签: 机器学习 计算机视觉 深度学习 人工智能 大数据
作者 | wanghy
源自 | 知乎
编辑 | 汽车人
点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
论文:arxiv.org/abs/2206.0892
代码:github.com/Mrmoore98/Ve
自动驾驶系统需要对周围环境具有很好的理解,包括动态物体和静态高精度语义地图。现有方法通过离线手动标注来解决语义构图问题,这些方法存在严重的可扩展性问题。最近的基于学习的方法产生稠密的分割预测结果,这些预测不包含单个地图元素的实例信息,并且需要涉及许多手工设计组件的启发式后处理,以获得矢量化地图。为此,我们引入了一个端到端矢量化高精地图学习pipeline,称为 VectorMapNet。 VectorMapNet 采用板载传感器观测,并预测BEV视角中一组稀疏的polyline基元,以对高精地图的几何形状进行建模。基于该pipeline,我们的方法可以显示地对地图元素之间的空间关系进行建模,并生成对下游自动驾驶任务友好的矢量化地图,而无需进行后处理。在我们的实验中,VectorMapNet 在 nuScenes 数据集上实现了强大的高精地图学习性能,超过了之前SOTA方法 14.2 mAP。定性地,我们还展示了 VectorMapNet 能够生成全面的地图并捕获更细粒度的道路几何细节。据我们所知,VectorMapNet 是第一个针对端到端矢量化高精地图学习问题而设计的工作。
VectorMapNet 是一种端到端的高精语义地图学习方法。与之前的工作不同,它使用折线来表示地图元素,并直接从传感器观测中预测矢量化输出,而无需地图栅格化或后处理;
联合建模地图元素和每个地图元素的几何形状之间的拓扑关系是具有挑战性的。我们利用折线作为基元来建模复杂的地图元素,并通过将此联合模块解耦为两部分来缓解这一困难:地图元素检测器和折线生成器;
VectorMapNet 在 nuScenes 数据集上实现了SOTA的高精语义地图学习性能。定量和定性结果都证实了我们的设计选择。
地图元素包括:道路边界、车道分割线和人行横道等;
设计思路:本文将该问题构建为稀疏点集预测问题,每个语义元素由N_v个有序二维点列构成的折线表示。这种设置使得我们能够对地图元素之间的空间和拓扑关系进行建模,并强调地图元素的实例特征。
使用polyline表征的三个优势:
高精地图通常由不同几何形状的元素混合组成,例如点、线、曲线和多边形。polyline是一种灵活的基元,可以有效地表示这些几何图形;
折线顶点的顺序是编码地图元素方向信息的自然方式,这对于车辆规划至关重要;
折线表示已被下游自动驾驶模块广泛采用,例如运动预测。
VectorMapNet主要由三部分组成:BEV feature 提取、地图元素检测和polyline生成。基于bev feature建模Polylines分为两步,是因为地图元素的结构模式和位置具有广泛的多样性,共同学习它们可能具有挑战性。因此将该建模任务解耦成两部分:
场景级元素检测任务,通过预测元素关键点及其类标签来定位和分类所有地图元素;
为每个检测到的地图元素生成polyline顶点序列的对象级序列生成任务。
两个输入模态:图像和激光点云
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表示
每个元素query又是由k个关键点组成:
网络结构:采用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的加和。
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的量化坐标值。
对比了该实验室之前的工作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}是倒角距离的预定义阈值。
VectorMapNet在所有指标上都大大优于HDMapNet和STSU。
使用折线作为基元与基线相比带来了两个好处:
polyline减轻了对地图元素的详细上下文进行编码的难度。VectorMapNet 保留了大部分详细的上下文(例如边界的角)。使用稠密车道段和像素的模型很难学习这些几何细节,因为这些表征需要准确地对其所有元素进行分类以保留几何结构。否则,细节将被更改(参见图 4 中的红色椭圆)。
polyline表示可以防止 VectorMapNet 生成模棱两可的结果,因为它可以一致地对方向信息进行编码。没有这种一致性约束的模型容易生成循环曲线,错误地表示具有两个方向的单向车道分隔线,并连接具有冲突方向的两条车道(参见图 4 中的蓝色椭圆)。这些奇异性阻碍了安全的自动驾驶。
建模地图元素之间的拓扑关系的好处:
每个地图元素都是约束每个交通参与者的交通规则中不可或缺的一部分。VectorMapNet 使用自注意力机制对地图元素检测器中地图元素位置之间的拓扑关系进行建模,然后生成细节。根据实验结果,我们发现VectorMapNet可以捕获地图中的大部分地图元素,包括位于边缘的小元素。此外,图 5 显示 VectorMapNet 可以找到数据集提供的高精地图中未注释的地图元素。这显示了所提出的基于学习的方法替代传统高精地图人类标注pipeline的潜力。
作者对采样方式和Polyline建模方法进行了讨论。Curvature-based的采样方法是基于nuScenes数据集的设置,在曲率变化超过某个阈值的位置对顶点进行采样。Fixed interval采样方法以固定间隔(1m)对顶点进行采样。polyline建模方法包括离散和连续行驶,本文采用离散形式,连续形式参见 SketchRNN ,通过使用混合高斯分布将折线的顶点建模为连续变量。
本文提出了 VectorMapNet,这是一种解决高精语义地图学习问题的端到端模型。与现有工作不同,VectorMapNet 使用折线作为基元来表示矢量化高精地图元素。为了学习这些折线,我们将学习问题分解为检测和生成问题。我们的实验表明,VectorMapNet 可以为受益于折线基元的城市地图元素生成连贯且复杂的几何图形。我们相信这种学习高精地图的新方法为高精语义地图学习问题提供了一个新的视角。
局限:尽管我们的方法可以在单个帧中生成连贯且复杂的几何图形,但不能保证时序一致的预测。如何有效地对矢量化高精地图预测的时序信息进行编码具有挑战性,我们将其留作未来的工作。
【自动驾驶之心】全栈技术交流群
自动驾驶之心是国内首个自动驾驶开发者社区,聚焦目标检测、语义分割、关键点检测、车道线、目标跟踪、3D感知、多传感器融合、SLAM、高精地图、规划控制、AI模型部署落地等方向;
加入我们:自动驾驶之心技术交流群汇总!
自动驾驶之心【知识星球】
想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D感知、多传感器融合、目标跟踪)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!
整理不易,请点赞和在看
文章浏览阅读3.5k次,点赞2次,收藏13次。为了从FTP服务器下载文件,需要要实现一个简单的FTP客户端。FTP(文件传输协议) 是 TCP/IP 协议组中的应用层协议。FTP协议使用字符串格式命令字,每条命令都是一行字符串,以“\r\n”结尾。客户端发送格式是:命令+空格+参数+"\r\n"的格式服务器返回格式是以:状态码+空格+提示字符串+"\r\n"的格式,代码只要解析状态码就可以了。读写文件需要登陆服务器,特殊用..._ftp 登录返回230
文章浏览阅读648次。前提:systemctl stop firewalld 关闭防火墙关闭selinux查看getenforce临时关闭setenforce 0永久关闭sed-i'/SELINUX/s/enforcing/disabled/'/etc/selinux/configselinux的三种模式enforcing:强制模式,SELinux 运作中,且已经正确的开始限制..._centos7 安装rabbitmq3.6.5
文章浏览阅读5.8k次。满意答案s55f2avsx2017.09.05采纳率:46%等级:12已帮助:5646人新版Android Studio/IntelliJ IDEA可以直接导入eclipse项目,不再推荐使用eclipse导出gradle的方式2启动Android Studio/IntelliJ IDEA,选择 import project3选择eclipse 项目4选择 create project f..._android studio 项目导入idea 看不懂安卓项目
文章浏览阅读860次,点赞2次,收藏6次。AI大模型技术已经在自然语言处理、计算机视觉、多模态交互等领域取得了显著的进展和成果,同时也引发了一系列新的挑战和问题,如数据质量、计算效率、知识可解释性、安全可靠性等。城市运维涉及到多个方面,如交通管理、环境监测、公共安全、社会治理等,它们需要处理和分析大量的多模态数据,如图像、视频、语音、文本等,并根据不同的场景和需求,提供合适的决策和响应。知识搜索有多种形式,如语义搜索、对话搜索、图像搜索、视频搜索等,它们可以根据用户的输入和意图,从海量的数据源中检索出最相关的信息,并以友好的方式呈现给用户。_ai大模型应用开发
文章浏览阅读8.2k次,点赞12次,收藏121次。为什么要测量阻抗呢?阻抗能代表什么?阻抗测量的注意事项... ...很多人可能会带着一系列的问题来阅读本文。不管是数字电路工程师还是射频工程师,都在关注各类器件的阻抗,本文非常值得一读。全文13000多字,认真读完大概需要2小时。一、阻抗测试基本概念阻抗定义:阻抗是元器件或电路对周期的交流信号的总的反作用。AC 交流测试信号 (幅度和频率)。包括实部和虚部。图1 阻抗的定义阻抗是评测电路、元件以及制作元件材料的重要参数。那么什么是阻抗呢?让我们先来看一下阻抗的定义。首先阻抗是一个矢量。通常,阻抗是_阻抗实部和虚部
文章浏览阅读955次。前面章节分享试用了pyzero,pygame但随着想增加更丰富的游戏内容,好多还要进行自己编写类,从今天开始解绍一个新的python游戏库arcade模块。通过此次的《连连看》游戏实现,让我对swing的相关知识有了进一步的了解,对java这门语言也有了比以前更深刻的认识。java的一些基本语法,比如数据类型、运算符、程序流程控制和数组等,理解更加透彻。java最核心的核心就是面向对象思想,对于这一个概念,终于悟到了一些。_arcade语言 like
文章浏览阅读1.1k次。源码简介与安装说明:2021增强版短视频去水印源码 去水印微信小程序源码网站 去水印软件源码安装环境(需要材料):备案域名–服务器安装宝塔-安装 Nginx 或者 Apachephp5.6 以上-安装 sg11 插件小程序已自带解析接口,支持全网主流短视频平台,搭建好了就能用注:接口是公益的,那么多人用解析慢是肯定的,前段和后端源码已经打包,上传服务器之后在配置文件修改数据库密码。然后输入自己的域名,进入后台,创建小程序,输入自己的小程序配置即可安装说明:上传源码,修改data/_去水印机要增强版
文章浏览阅读557次。1. 触发器是FPGA存储数据的基本单元2. 触发器作为时序逻辑的基本元件,官方提供了丰富的配置方式,以适应各种可能的应用场景。_fdre #(.init(1'b0) // initial value of register (1'b0 or 1'b1) ) fdce_osc (
文章浏览阅读560次。本该是不同编译器结果不同,但是尝试了g++ msvc都是先计算c,再计算b,最后得到a+b+c是经过赋值以后的b和c参与计算而不是6。由上表可知,将q复制到p数组可以表示为:*p++=*q++,*优先级高,先取到对应q数组的值,然后两个++都是在后面,该行运算完后执行++。在电脑端编译完后会分为text data bss三种,其中text为可执行程序,data为初始化过的ro+rw变量,bss为未初始化或初始化为0变量。_嵌入式面试笔试c语言知识点
文章浏览阅读2.3k次。57 Things I've Learned Founding 3 Tech CompaniesJason Goldberg, Betashop | Oct. 29, 2010, 1:29 PMI’ve been founding andhelping run techn_mature
文章浏览阅读1.9k次。问题:先讲下需求,有若干个文本文件(txt或者csv文件等),每行代表一条数据,现在希望能合并成 1 个文本文件,且需要去除重复行。分析:一向奉行简单原则,如无必要,绝不复杂。如果数据量不大,那么如下两条命令就可以搞定合并:cat a.txt >> new.txtcat b.txt >> new.txt……去重:cat new...._python 超大文本合并
文章浏览阅读489次。这个过渡页是第一次打开小程序展示的,点击某个小程序前把手机的开发者->network link conditioner->enable & very bad network 就会在停在此页。比如《支付宝运动》这个小程序先看这个类的.h可以看到它继承于DTViewController点击左上角返回的方法- (void)back;#import "DTViewController.h"#import "APBaseLoadingV..._类似支付宝页面过度加载页