BEVGPT展示自动驾驶的“全知视角”,预测决策规划三合一的革新之作!

news2024/9/23 5:33:26

前言

本篇文章由原paper一作Pengqin Wang(王鹏钦)全权翻译分享,王鹏钦为香港科技大学博士生,师从沈劭劼教授、朱美新教授。他的研究方向为自动驾驶和机器人系统中的决策、预测和规划。他的研究成果发表于TMECH、RAL、IROS、TRB等一系列机器人和自动驾驶顶刊顶会。

1. BEVGPT开发背景

预测、决策和运动规划对于自动驾驶至关重要。在大多数传统算法架构中,它们被视为单独的模块或组合成具有共享主干但独立任务头的多任务学习范例。然而,我们认为理想的算法是将它们整合到一个综合框架中,且这种整合过程不应受到复杂的输入表示(即输入解耦)和冗余框架设计的困扰。为了解决上述问题,我们重新思考了自动驾驶任务中各个模块的必要性,并将所需的模块纳入到极简的自动驾驶框架中。我们提出了BEVGPT,一种新的集成驾驶场景预测、决策和运动规划的生成式预训练模型。该模型以鸟瞰图像(BEV)作为唯一输入源,并根据周围的交通场景做出驾驶决策。最后通过基于优化的运动规划方法来保证驾驶轨迹的可行性和平滑性。

2. BEVGPT整体框架

在这里插入图片描述
图1|BEVGPT整体框架©️【深蓝AI】

如图所示,BEVGPT采用两阶段训练过程。首先,我们使用大量自动驾驶数据来训练生成式大模型。随后,使用自动驾驶仿真模拟器通过在线学习对模型进行微调。具体来说,预训练阶段的目标是学习驾驶场景预测和决策,即自动驾驶任务中的BEV生成和自车轨迹预测。该模型能够输出未来4秒内的决策轨迹,并在长达6秒内预测未来驾驶场景。接下来是在线微调阶段,通过在线学习的方式实现模型微调,从而保证符合动力学的运动规划和更为精确的BEV预测。在微调阶段,运动规划器被设计为自动驾驶车辆生成平滑且可行的轨迹。

2.1 框架设计

我们从人类驾驶员的角度重新评估每个模块的必要性,以设计自动驾驶系统框架。首先,人类驾驶员对环境地图有先验的知识,比如在使用导航软件时,每条道路的结构和路口位置都比较明显。其次,人类驾驶员并不会显示地追踪周围的其他车辆,并预测它们的未来轨迹。相反,他们更关注的是预测的自车轨迹是否会被其他车辆所占据。然后,他们会做出相应地驾驶决策。基于上述思考,我们设计了一个极简的自动驾驶框架,即包括决策,运动规划和驾驶场景预测,而把目标跟踪以及他车运动预测模块去掉了。在该框架中,决策输出的是自车未来T=4秒内的位置,在motion planner进一步处理后生成一个符合动力学和平滑的轨迹。考虑到静态环境信息可以从高清地图轻松获取,我们更加关注包括车辆和行人在内的动态物体的精确预测。驾驶场景预测通过环境地图和动态物体预测的组合获得,如下图所示。

在这里插入图片描述
图2|驾驶场景预测©️【深蓝AI】

2.2 轨迹表示

我们采用分段多项式轨迹来表示我们的微分平坦输出,即 p x p_x px p y p_y py。为了在后续的motion planning模块中minimum Jerk,我们选择五次多项式表示。假设轨迹总共由 M M M段组成。在这种情况下,便可以表示为下面的多项式:

f n ( t ) = ∑ k = 0 5 f n , k t k , t ∈ [ T n , T n + 1 ] f_n(t) = \sum_{k=0}^{5} f_{n,k} t^k, t \in [T_{n}, T_{n+1}] fn(t)=k=05fn,ktk,t[Tn,Tn+1]

这里的 n n n表示轨迹的段数,每段具有相同的时间间隔 Δ t \Delta t Δt

2.3 运动规划

在我们的轨迹规划问题中,自车的初始状态和末状态已知。同时,决策模块的输出应当被包含在未来的轨迹中。另外,分段多项式轨迹的连续性也需要得到保证。因此,我们的运动规划问题被表达为了如下的minimum Jerk问题:

min ⁡   J ( f ( t ) ) , s . t .   f 0 ( 0 ) = p 0 ,   f ˙ 0 ( 0 ) = p ˙ 0 ,   f M − 1 ( T M ) = p M ,   f ˙ M − 1 ( T M ) = p ˙ M ,   f n ( T n ) = p ( T n ) ,   f n − 1 ( T n ) = f n ( T n ) ,   f ˙ n − 1 ( T n ) = f ˙ n ( T n ) ,   f ¨ n − 1 ( T n ) = f ¨ n ( T n ) ,   ∥ f ˙ n ( T n ) ∥ ≤ v m a x ,   ∥ f ¨ n ( T n ) ∥ ≤ a m a x ,   n ∈ { 1 , 2 , . . . , M − 1 } \begin{aligned} & \min ~ J(f(t)), \\ s.t. ~ & f_{0}(0)= \mathbf {p_0}, ~ \dot{f}_{0}(0) = \mathbf {\dot{p}_0}, \\ ~ & f_{M-1}(T_M)= \mathbf {p_M}, ~ \dot{f}_{M-1}(T_M) = \mathbf {\dot{p}_M}, \\ ~ & f_n(T_{n}) = p(T_{n}), ~ f_{n-1}(T_n)=f_{n}(T_n), \\ ~ & \dot{f}_{n-1}(T_n) = \dot{f}_{n}(T_n), ~ \ddot{f}_{n-1}(T_n) = \ddot{f}_{n}(T_n), \\ ~ & \left \|\dot{f}_{n}(T_n)\right \| \leq \mathbf {v_{max}}, ~ \left \|\ddot{f}_{n}(T_n)\right \| \leq \mathbf {a_{max}}, \\ ~ & n \in \{1, 2, ..., M - 1\} \end{aligned} s.t.      min J(f(t)),f0(0)=p0, f˙0(0)=p˙0,fM1(TM)=pM, f˙M1(TM)=p˙M,fn(Tn)=p(Tn), fn1(Tn)=fn(Tn),f˙n1(Tn)=f˙n(Tn), f¨n1(Tn)=f¨n(Tn), f˙n(Tn) vmax,  f¨n(Tn) amax,n{1,2,...,M1}

在这里,我们将自车的初始状态和最终状态考虑在内,同时确保了两个相邻轨迹段之间的连续性和光滑性,并且考虑了最大速度和最大加速度的限制,以确保动力学的可行性。

3. BEVGPT模型训练

3.1 数据集

我们采用了Lyft Level 5 Dataset,这是一个由Houston等人于2021年提出的自动驾驶数据集,包含了超过1000个小时的驾驶数据,采集跨度4个月,采集车辆是由20辆车组成的车队。关于数据处理,我们从数据集中提取车辆姿态、语义BEV图像和静态环境地图图像。去除持续时间短于24秒(即240帧,时间间隔 Δ t = 0.1 \Delta t = 0.1 Δt=0.1秒)的驾驶情景。然后将自车的未来目标位置作为决策训练的label。我们将每帧的车辆位置、当前BEV图像、下一帧BEV图像和下一帧环境地图图像记录下来作为训练数据集。

3.2 模型架构

GPT体系结构在自然语言处理(NLP)领域取得了很大的进展,它通过添加因果自关注掩码来修改变压器体系结构,从而自动回归生成预测tokens。由于其强大的理解和泛化能力,我们采用GPT架构来处理复杂的自动驾驶任务和各种场景。我们的超参数如下表所示。

在这里插入图片描述
表1|BEVGPT超参数©️【深蓝AI】

3.3 预训练

在预训练阶段,BEVGPT进行了20个epochs的训练。为了提高模型的决策能力和预测能力,这里使用均方误差(MSE)作为Loss。

l o s s d e c i s i o n = M S E ( p d e , p g t ) loss_{decision} = MSE(p_{de}, p_{gt}) lossdecision=MSE(pde,pgt)
l o s s p r e d i c t i o n = 100 ⋅ M S E ( e n v g t + b e v p r , b e v g t ) loss_{prediction} = 100 \cdot MSE(env_{gt}+bev_{pr}, bev_{gt}) lossprediction=100MSE(envgt+bevpr,bevgt)
l o s s = sin ⁡ α ⋅ l o s s d e c i s i o n + cos ⁡ α ⋅ l o s s p r e d i c t i o n loss = \sin{\alpha} \cdot loss_{decision} + \cos{\alpha} \cdot loss_{prediction} loss=sinαlossdecision+cosαlossprediction

这里我们采用三角函数来平衡预测和决策的loss。

3.4 在线微调

我们使用的是Woven Planet L5Kit进行自动驾驶仿真,以微调预训练模型。BEV输入模型后,输出未来时间间隔内的轨迹点。紧接着motion planner根据决策输出生成动态可行的轨迹,而后得到BEV的预测。回看上面的loss公式,模型要fine-tuning,需要地图的信息,这里我们开发了一种经验光栅化器(experience rasterizer),以帮助模型获得仿真驾驶场景的静态信息。这里的出发点是一旦知道静态全局地图、自车的初始世界坐标和世界坐标与光栅坐标之间的转换,就可以将所有车道和交叉口轻松映射到光栅化的BEV图像中。仿真器经过 Δ t \Delta t Δt时间间隔的仿真后,就可以获得接下来BEV图像的真实数据。这部分的loss如下:

l o s s = M S E ( e n v e r + b e v p r , b e v s m ) loss = MSE(env_{er}+bev_{pr}, bev_{sm}) loss=MSE(enver+bevpr,bevsm)

因为这里仿真器是按照预测的轨迹进行走的,所以轨迹那项的loss是0。我们使用Woven Planet L5Kit模拟器进行在线微调,以适应运动规划和精确的BEV生成。

4. 实验结果

我们采用以下指标来评估的模型的决策能力和运动规划能力:

最终位移误差指标(FDE), 指的是最终预测位置与参考位置之间的距离。

平均位移误差指标(ADE), 指的是时刻t之前所有预测位置与参考位置的均方误差。

最终距离参考轨迹的距离指标(FDR), 指的是时刻t预测位置与参考轨迹中最近点的距离。

平均距离参考轨迹的距离指标(ADR), 指的是时刻 t t t之前所有预测位置与参考轨迹中其最近位置的均方误差。

L2误差(L2), 在仿真过程中执行的轨迹和日志记录中的真实位置之间的均方误差。

碰撞率(CR), 它指的是模拟持续时间t内发生碰撞帧与全部帧的比例。

越野率(OR), 它指的是驶离道路帧数与全部帧的比例。判断指标定义为参考轨迹与自车之间的距离大于2米。

评价结果如下表所示,结果显示,我们提出的BEVGPT在决策和规划任务中优于许多现有的方案。

在这里插入图片描述
表2|实验结果©️【深蓝AI】

5. 未来工作

未来我们将在极端情况下测试所提出方法的鲁棒性,并进一步改进框架。未来研究的一个有潜力的方向是提高BEVGPT模型的实时性能,将其部署在自动驾驶汽车上。我们的目标是带来一个更安全、更可靠、更高效的自动驾驶框架。

移步公众号【深蓝AI】,第一时间获取自动驾驶、人工智能与机器人行业最新最前沿论文和科技动态👇
深蓝AI·赋能AI+智驾+机器人

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

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

相关文章

探索网络安全的多元维度:现状、趋势与实践

一、引言 在当今数字化飞速发展的时代,网络安全已成为至关重要的议题。从个人的隐私保护到企业的关键信息资产,从国家的基础设施到全球的信息网络,网络安全的影响无处不在,其重要性日益凸显。本文将深入且全面地探讨网络安全的多…

强化学习时序差分算法之多步Sarsa算法——以悬崖漫步环境为例

0.简介 蒙特卡洛方法利用当前状态之后每一步奖励而不使用任何价值估计,时序差分算法则只利用当前状态的奖励以及对下一状态的价值估计。 蒙特卡洛算法是无偏的,但是它的每一步的状态转移具有不确定性,同时每一步状态采取的动作所得到的不一样…

学习Java的日子 Day61 Listener监听器

Day61 Listener监听器 JavaWeb 三大组件(Servlet、Filter、Listener) 概念 监听器用于监听web应用中某些对象信息的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处理。当范围对象的状态发生变化的时候,服务器自动调…

vue echarts 横向柱状图,交错正负轴标签

横向柱状图&#xff1a; 同一个页面展示多个相同横向柱状图&#xff1b; 代码如下&#xff1a; <template><div style"display: flex;justify-content: space-around;"><div v-for"(chart,index) in barChartList" :key"index"…

基于LoRA和AdaLoRA微调Qwen1.5-0.5B-Chat

本文只开放基于LoRA和AdaLoRA微调代码,具体技术可以自行学习。 Qwen1.5-0.5B-Chat权重路径:https://huggingface.co/Qwen/Qwen1.5-0.5B 数据集路径:https://github.com/DB-lost/self-llm/blob/master/dataset/huanhuan.json 1. 知识点 LoRA, AdaLoRA技术 具体技术可以去看…

Transformer 架构告诉我们什么?

欢迎来到雲闪世界。ChatGPT 等大型语言模型 (LLM) 的出色表现震惊了世界。这一突破源于 Transformer 架构的发明&#xff0c;该架构出奇地简单且可扩展。它仍然由深度学习神经网络构建。主要新增功能是所谓的“注意力”机制&#xff0c;该机制将每个单词标记置于语境中。此外&a…

睿考网:CPA考试各科难度分析

CPA考试分为专业阶段和综合阶段两个部分&#xff0c;其中专业阶段包含六个科目&#xff0c;六科难度分别为大家介绍一下。 《会计》科目是CPA专业阶段中基础且难度较低的科目&#xff0c;同时也是核心的科目。对于零基础的考生来说&#xff0c;可能会感到困难&#xff0c;需要…

【C语言】堆的实现

堆的基本概念 堆在逻辑上是完全二叉树&#xff0c;那什么又是完全二叉树呢&#xff1f; 完全二叉树简单来说就是前n-1层每个节点都有两个儿子&#xff0c;最后一层叶子紧挨着排列。 堆在物理结构上适合用数组存储。 让我们先来学习树->二叉树的基本知识&#xff08;可看文…

verilog中的$radom函数

我需要产生一个背压。背压每次经过x个时钟周期之后翻转&#xff0c;x是0到1_6000间的一个随机数。 如下图的代码&#xff0c;($random % 10)产生的是-9到9的数&#xff0c;包括0&#xff0c; ($random % 10) 1 那么值就在 -8到10之间。 always (posedge clk) beginDATA_READ…

K8S可视化管理平台KubeSphere

什么是 KubeSphere &#xff1f; KubeSphere 是一款开源项目&#xff0c;在目前主流容器调度平台 Kubernetes 之上构建的企业级分布式多租户容器管理平台&#xff0c;提供简单易用的操作界面以及向导式操作方式&#xff0c;在降低用户使用容器调度平台学习成本的同时&#xff…

DBeaver连接mysql时,报错Public Key Retrieval is not allowed

解决 在新建连接的时候&#xff0c;驱动属性里设置 allowPublicKeyRetrieval 的值为 true。

SQL进阶技巧:Hive URL解析函数详解及实际应用

目 录 0 实际业务需求 1 URL的基本组成 2 PROTOCOL 协议 3 Hive中的URL解析函数 3.1 数据准备 3.2 创建数据库 3.3 需求 3.3.1 parse_url 讲解 3.3.2 测试 3.3.3 实现需求 3.3.4 注意问题 3.5 parse_url_tuple 3.5.1 需求 3.5.2 实现需求 3.5.3 注意问题 4 小…

HTML + CSS 学习指南:从入门到精通

一、HTML CSS 简介 HTML 和 CSS 在网页开发中扮演着至关重要的角色。HTML 如同网页的骨架&#xff0c;为网页提供了基本的结构和内容。它使用各种标签来定义页面的元素&#xff0c;如标题、段落、图片、链接等&#xff0c;确保信息得以有条理地组织和呈现。 CSS 则恰似网页的…

点可云ERP进销存V8版本—购货退货单操作使用讲解

本章我们讲解购货退货单的使用场景及操作使用说明。 购货退货单是指供应商收回或退还给采购方的货物的单据。它记录了购货方向供应商退还货物的详细信息&#xff0c;一般会在货物质量问题、退货政策、错误订购等情况下发生购货退货。 购货退货单可以通过两个方式产生&#xff0…

学习记录——day24 多进程编程

创建三个进程 可以让父进程创建一个子进程&#xff0c;再由父进程或者子进程创建一个子进程 #include <myhead.h> int main(int argc, char const *argv[]) {pid_t pid fork();if (pid >0){//父进程pid_t pid1 fork();if (pid1 >0){printf("father\n"…

linux Ubuntu 安装mysql-8.0.39 二进制版本

我看到网上很多都写的乱七八糟, 我自己总结了一个 首先, 去Mysql官网上下载一个mysql-8.0.39二进制版本的安装包 这个你自己去下载我这里就写一个安装过程和遇到的坑 第一步 解压mysql压缩包和创建my.cnf文件 说明: 二进制安装指定版本MySQL的时候&#xff0c;需要手动写配置…

十月稻田玉米品类全国销量领先背后:“卖点”到“买点”的用户思维

近日&#xff0c;十月稻田在梯媒全新上线的新潮玉米广告&#xff0c;吸引了很多消费者的注意。 画面里&#xff0c;十月稻田的黄糯玉米棒金黄且饱满&#xff0c;旁白是广告语&#xff1a;“新玉米上市&#xff0c;香香香&#xff01;”。这支广告也挑起了许多观众的食欲&#…

【QGroundControl二次开发】七.QGC自定义MAVLink消息MavLink通信协议 C++应用

1. 接收解析源码分析 通过接收串口或UDP发来的的字节流buffer&#xff0c;长度lengthbuffer.size()&#xff0c;通过下列脚本解析&#xff0c;每解析出一个mavlink数据包就执行onMavLinkMessage函数 for(int i 0 ; i < length ; i){msgReceived mavlink_parse_char(MAVL…

【运维自动化】网络统一监控运维管理解决方案(PPT建设方案)

运维自动化是提升IT运维效率、降低人力成本、增强系统稳定性和可靠性的关键举措。随着业务规模的增长&#xff0c;传统的手动运维方式已难以满足快速响应和高效管理的需求。自动化运维通过脚本、工具和系统平台&#xff0c;实现日常任务自动化执行、故障预警与快速恢复、资源优…

数据结构笔记纸质总结

1.基本概念 2.复杂度 3.线性表 4.栈 5.队列 6.串 7.数组 8.矩阵 9.广义表 10.树