一段式端到端自动驾驶:VAD:Vectorized Scene Representation for Efficient Autonomous Driving

论文地址:https://github.com/hustvl/VAD

代码地址:https://arxiv.org/pdf/2303.12077

1. 摘要

自动驾驶需要对周围环境进行全面理解,以实现可靠的轨迹规划。以往的方法依赖于密集的栅格化场景表示(如:占据图、语义地图)来进行规划,这种方式计算量大,且缺乏实例级的结构信息。
本文提出了 VAD(Vectorized Autonomous Driving),一种端到端的向量化自动驾驶范式,将驾驶场景建模为完全向量化的表示方式。这一范式具有两大优势:
一方面,VAD 利用向量化的动态目标运动信息与地图元素作为显式的实例级规划约束,从而有效提升了规划的安全性;
另一方面,VAD 摒弃了计算密集的栅格表示和手工设计的后处理步骤,因此比以往端到端方法运行速度更快。
在 nuScenes 数据集上,VAD 实现了当前最优的端到端规划性能,在多个指标上大幅超越现有最优方法。基础模型 VAD-Base 将平均碰撞率降低了 29.0%,运行速度提升了 2.5 倍;而轻量版本 VAD-Tiny 在保持可比规划性能的同时,实现了高达 9.3 倍的推理速度提升。

2. 方法

VAD 的整体框架如图 2所示。输入为多帧、多视角的图像,输出为自车未来的规划轨迹。VAD 的框架分为四个阶段:

Backbone:提取图像特征并投影为 BEV(Bird’s-Eye View)特征;

Vectorized Scene Learning:构建向量化的地图与运动表示;

Planning(推理阶段):通过 ego query 与地图/目标交互,生成未来轨迹;

Planning(训练阶段):引入三种向量化约束,对轨迹进行训练正则化。

2.1 向量化场景学习

VAD使用 ResNet50 提取图像特征,经过多层卷积神经网络提取图像的低级和高级特征。使用 BEV Encoder 将图像特征通过空间映射转换为 Bird’s Eye View(BEV)特征图,并使用 Transformer 对其进行进一步的处理,学习图像的全局语义和空间关系。

向量化地图

相比栅格化语义地图,向量化表示能保留更细致的结构信息。论文使用一组 Map Query Q_m,从 BEV 特征中提取地图元素,如:车道线(lane divider)、道路边界(road boundary)以及人行道(pedestrian crossing),每个地图元素表示为 一组点(polyline),并附带类别信息。Q_m是可学习的embedding,类似 DETR 中的 Object Query,维度为100xC(例如100个地图目标),Vecorized Map Transformer使用的是典型的Transformer Decoder结构,先进行self-attention,然后在进行cross-attention,最终输出向量维度为MxD,然后经过地图head可以解析出来就是100x20x2,也就是100个目标,每个目标数据点个数为20个,二维坐标。

向量化交通参与者运动预测

为了高效预测交通参与者(如其他车辆、行人等)的未来轨迹,VAD 使用了一种基于向量化表示的方法来描述它们的运动。这一部分的目标是通过 Agent Queries(交通参与者查询)来学习每个交通参与者的运动特征,并通过 Deformable Attention 机制与环境的 BEV(Bird's-Eye View)特征进行交互,从而预测它们的未来行为。

Agent Queries 是一组表示交通参与者(例如其他车辆、行人等)运动特征的查询向量,每个 Agent Query 用来捕捉交通参与者的状态信息,如位置、速度、加速度、方向等。论文采用一组可学习的向量Q_a,首先进行self-attention,获得agent-agent之间的交互,然后query与BEV特征和更新的map queries进行交叉注意力,其中与BEV特征进行交叉注意力采用deformable attention的方法,最终获得输出的特征向量AxD。经过运动预测head输出维度为300x6x12,300个目标,每个目标6个模态,每个模态6帧,每帧2个坐标点。

交互式规划

在预测模块之后,VAD 使用一个规划模块来为自车(ego vehicle)规划一条可行的轨迹。与预测模块中用于运动建模的 Motion Queries 相似,引入了一个专用于 ego vehicle 的查询向量,称为 Ego Query,它被输入到一个新的 Transformer 解码器中,用于轨迹规划。为了捕捉自车与其他交通参与者之间的相互作用(agent-agent interaction),将预测模块中输出的 Motion Queries 作为上下文(context)输入到规划模块的解码器中。该机制允许 ego vehicle 考虑其他交通参与者的未来意图,并进行反应。论文采用一组可学习的向量Q_{ego},维度为N_{q}\times D,其中N_{q}表示时间步数,如取6。Q_{ego}先进行self-attention,然后ego-agent和ego-map分别进行cross-attention,输出维度为N_{q}\times D。经过轨迹规划head,输出为3*6*2,3个模态,每个莫模态6个时间步,每步2个坐标点,其中3个模态论文中设定为右转、左转和直行。

3. 总结

论文探索了一种完全向量化的驾驶场景表示方法,以及如何有效地将这种向量化场景信息融合到系统中以提升自动驾驶的规划性能。VAD 同时达成了高性能与高效率的结合,使用 NVIDIA GeForce RTX 3090 GPU,VAD-Tiny推理时间在50-60ms之间。此外,VAD 支持对其他动态交通参与者的多模态运动轨迹预测。与此同时,如何将更多的交通信息(例如:车道图、交通标志、信号灯、限速信息等)融入此类自动驾驶系统,也是一个具有发展前景的研究方向。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV训练题

一、创建一个 PyQt 应用程序,该应用程序能够: 使用 OpenCV 加载一张图像。在 PyQt 的窗口中显示这张图像。提供四个按钮(QPushButton): 一个用于将图像转换为灰度图一个用于将图像恢复为原始彩色图一个用于将图像进行…

opencv函数展示4

一、形态学操作函数 1.基本形态学操作 (1)cv2.getStructuringElement() (2)cv2.erode() (3)cv2.dilate() 2.高级形态学操作 (1)cv2.morphologyEx() 二、直方图处理函数 1.直方图…

iPhone 13P 换超容电池,一年实记的“电池循环次数-容量“柱状图

继上一篇 iPhone 13P 更换"移植电芯"和"超容电池"🔋体验,详细记录了如何更换这两种电池,以及各自的优略势对比。 一晃一年过去,时间真快,这次分享下记录了使用超容电池的 “循环次数 - 容量(mAh)…

基于 pnpm + Monorepo + Turbo + 无界微前端 + Vite 的企业级前端工程实践

基于 pnpm Monorepo Turbo 无界微前端 Vite 的企业级前端工程实践 一、技术演进:为什么引入 Vite? 在微前端与 Monorepo 架构落地后,构建性能成为新的优化重点: Webpack 构建瓶颈:复杂配置导致开发启动慢&#…

(五)机器学习---决策树和随机森林

在分类问题中还有一个常用算法:就是决策树。本文将会对决策树和随机森林进行介绍。 目录 一.决策树的基本原理 (1)决策树 (2)决策树的构建过程 (3)决策树特征选择 (4&#xff0…

Vue3使用AntvG6写拓扑图,可添加修改删除节点和边

npm安装antv/g6 npm install antv/g6 --save 上代码 <template><div id"tpt1" ref"container" style"width: 100%;height: 100%;"></div> </template><script setup>import { Renderer as SVGRenderer } from …

Arduino编译和烧录STM32——基于J-link SWD模式

一、安装Stm32 Arduino支持 在arduino中添加stm32的开发板地址&#xff1a;https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json 安装stm32开发板支持 二、安装STM32CubeProgrammer 从stm32网站中安装&#xff1a;https://ww…

智慧城市气象中台架构:多源天气API网关聚合方案

在开发与天气相关的应用时&#xff0c;获取准确的天气信息是一个关键需求。万维易源提供的“天气预报查询”API为开发者提供了一个高效、便捷的工具&#xff0c;可以通过简单的接口调用查询全国范围内的天气信息。本文将详细介绍如何使用该API&#xff0c;以及其核心功能和调用…

Vue 组件化开发

引言 在当今的 Web 开发领域&#xff0c;构建一个功能丰富且用户体验良好的博客是许多开发者的目标。Vue.js 作为一款轻量级且高效的 JavaScript 框架&#xff0c;其组件化开发的特性为我们提供了一种优雅的解决方案。通过将博客拆分成多个独立的组件&#xff0c;我们可以提高代…

Deno 统一 Node 和 npm,既是 JS 运行时,又是包管理器

Deno 是一个现代的、一体化的、零配置的 JavaScript 运行时、工具链&#xff0c;专为 JavaScript 和 TypeScript 开发设计。目前已有数十万开发者在使用 Deno&#xff0c;其代码仓库是 GitHub 上 star 数第二高的 Rust 项目。 Stars 数102620Forks 数5553 主要特点 内置安全性…

应用篇02-镜头标定(上)

本节主要介绍相机的标定方法&#xff0c;包括其内、外参数的求解&#xff0c;以及如何使用HALCON标定助手实现标定。 计算机视觉——相机标定(Camera Calibration)_摄像机标定-CSDN博客 1. 原理 本节介绍与相机标定相关的理论知识&#xff0c;不一定全&#xff0c;可以参考相…

PG CTE 递归 SQL 翻译为 达梦版本

文章目录 PG SQLDM SQL总结 PG SQL with recursive result as (select res_id,phy_res_code,res_name from tbl_res where parent_res_id (select res_id from tbl_res where phy_res_code org96000#20211203155858) and res_type_id 1 union all select t1.res_id, t1.p…

C# Where 泛型约束

在C#中&#xff0c;Where关键字主要有两种用途 1、在泛型约束中限制类型参数 2、在LINQ查询中筛选数据 本文主要介绍where关键字在在泛型约束中的使用 泛型定义中的 where 子句指定对用作泛型类型、方法、委托或本地函数中类型参数的参数类型的约束。通过使用 where 关键字和…

《MySQL:MySQL表的约束-主键/复合主键/唯一键/外键》

表的约束&#xff1a;表中一定要有各种约束&#xff0c;通过约束&#xff0c;让未来插入数据库表中的数据是符合预期的。约束本质是通过技术手段&#xff0c;倒逼程序员插入正确的数据。即&#xff0c;站在mysql的视角&#xff0c;凡是插入进来的数据&#xff0c;都是符合数据约…

Qt 创建QWidget的界面库(DLL)

【1】新建一个qt库项目 【2】在项目目录图标上右击&#xff0c;选择Add New... 【3】选择模版&#xff1a;Qt->Qt设计师界面类&#xff0c;选择Widget&#xff0c;填写界面类的名称、.h .cpp .ui名称 【4】创建C调用接口&#xff08;默认是创建C调用接口&#xff09; #ifnd…

汽车免拆诊断案例 | 2011款雪铁龙世嘉车刮水器偶尔自动工作

故障现象 一辆2011款雪铁龙世嘉车&#xff0c;搭载1.6 L 发动机&#xff0c;累计行驶里程约为19.8万km。车主反映&#xff0c;该车刮水器偶尔会自动工作&#xff0c;且前照灯偶尔会自动点亮。 故障诊断 接车后试车发现&#xff0c;除了上述故障现象以外&#xff0c;当用遥控器…

【Linux】NAT、代理服务、内网穿透

NAT、代理服务、内网穿透 一. NAT1. NAT 技术2. NAT IP 转换过程3. NAPT 技术4. NAT 技术的缺陷 二. 代理服务器1. 正向代理2. 反向代理3. NAT 和代理服务器 内网穿透内网打洞 一. NAT NAT&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09;技术&a…

MobaXterm连接Ubuntu(SSH)

1.查看Ubuntu ip 打开终端,使用指令 ifconfig 由图可知ip地址 2.MobaXterm进行SSH连接 点击session,然后点击ssh,最后输入ubuntu IP地址以及用户名

Spring Boot系列之使用Arthas Tunnel Server 进行远程调试实践

Spring Boot系列之使用Arthas Tunnel Server 进行远程调试实践 前言 在开发和运维 Java 应用的过程中&#xff0c;远程诊断和调试是一个不可或缺的需求。尤其是当生产环境出现问题时&#xff0c;能够快速定位并解决这些问题至关重要。Arthas 是阿里巴巴开源的一款强大的 Java…

图像预处理-添加水印

一.ROI切割 类似裁剪图片&#xff0c;但是原理是基于Numpy数组的切片操作(ROI数组切片是会修改原图数据的)&#xff0c;也就是说这个“裁剪”不是为了保存“裁剪”部分&#xff0c;而是为了方便修改等处理。 import cv2 as cv import numpy as npimg cv.imread(../images/dem…