FusionAD:用于自动驾驶预测和规划任务的多模态融合

2023-11-02

论文背景

自动驾驶(AD)任务通常分为感知、预测和规划。在传统范式中,AD中的每个学习模块分别使用自己的主干,独立地学习任务。
在这里插入图片描述
以前,基于端到端学习的方法通常基于透视视图相机和激光雷达信息直接输出控制命令或轨迹.

论文提出了基于BEV多模态的多任务端到端学习框架,专注于自动驾驶的预测和规划任务。
在这里插入图片描述

Bev 感知

基于相机的BEV方法将多视图相机图像特征转换到BEV空间中,从而实现端到端感知,而无需对重叠区域进行后处理。但是基于相机的感知方法距离感知精度不足,激光雷达可以提供准确的位置信息。将多模态特征转换到BEV空间中有助于融合这些特征。
BEV 融合将通过 LSS 方法获得的图像BEV特征与通过 Voxelnet 获得的 LiDAR BEV 特征连接起来,以获得融合的BEV特征,这提高了感知性能。SuperFusion 进一步提出了基于多模态地图感知的多阶段融合。

运动预测

继 VectorNet 之后,主流运动预测(或轨迹预测)方法通常利用 HD 地图和基于矢量的障碍表示来预测智能体的未来轨迹;在此基础上,LaneGCN 和 PAGA 通过细化的地图要素(如车道连接属性)增强轨迹地图匹配;此外,某些基于锚点的方法对地图附近的目标点进行采样,从而能够基于这些点进行轨迹预测。但是这些方法在很大程度上依赖于预先收集的高清地图,这使得它们不适合地图不可用的地区。矢量化预测方法往往缺乏高层语义信息,需要高清地图。
PnPNet 提出了一种新的跟踪模块,该模块从检测中在线生成对象轨迹,并利用轨迹级特征进行运动预测,但其整体框架基于CNN,运动预测模块相对简单,只有单模输出。由于 Transformer 被应用于检测和跟踪,VIP3D 成功地借鉴了以前的工作,并提出了第一个基于 transformer 的联合感知预测框架。Uniad 进一步整合了更多下游任务,提出了面向规划的端到端自动驾驶模型。在前人的基础上,对运动预测任务进行了更精细化的优化,引入了 refinement mechanism 和 mode-attention,使预测指标得到了很大的提高。

学习规划

模拟学习(IL)和强化学习(RL)已用于规划。IL和RL用于端到端方法(即,使用图像和/或激光雷达作为输入),或矢量化方法(即,使用矢量化感知结果作为输入)。
早期的端到端方法,如 ALVINN 和 PilotNet 通常直接输出控制命令或轨迹,而缺乏中间结果/任务。P3 ,MP3 ,UniAD 学习端到端可学习网络,该网络执行联合感知,预测和规划,这可以产生可解释的中间表示并提高最终规划性能。
尽管使用中间感知结果进行规划可以提高泛化性和透明度,但矢量化方法遭受后处理噪声和感知结果的变化。
这些方法要么只使用激光雷达输入,要么只使用相机输入,这限制了它们的性能。Transfuser 同时使用激光雷达和相机输入,但不在BEV空间中,而且仅执行少量AD学习任务作为辅助任务。

论文内容

首先,使用基于BEVFormer的图像编码器将相机图像映射到鸟瞰图(BEV)空间。然后将这些与BEV空间中的激光雷达特征相结合。在时间融合之后,融合后的BEV特征通过基于查询的方法用于检测、跟踪和映射任务。随后,tokens 被转发到运动和占用预测任务以及规划任务。

BEV编码器和感知

从 FusionFormer 获得灵感,论文提出了一个新的 3D 目标检测多模态时间融合框架的和一个基于Transformer的架构。为了提高效率,采用了类似于BEVFormer的复发性时间融合技术。与FusionFormer不同,论文使用BEV格式的特征作为LiDAR分支的输入,而不是体素特征。
在这里插入图片描述
多模态时间融合模块包括6个编码层。首先采用一组可学习的BEV查询器,分别使用点交叉注意和图像交叉注意来融合LiDAR特征和图像特征。然后,通过时间自我注意将所得特征与来自前一帧的历史BEV特征融合。查询在用作下一层的输入之前由前馈网络更新。在6层融合编码之后,生成最终的多模态时间融合BEV特征用于后续任务。

激光雷达
原始LiDAR点云数据首先被体素化,然后用于基于 SECOND 网络生成LiDAR BEV特征。
摄像机。多视点摄像机图像首先通过 backbone 网络进行处理以进行特征提取。然后,FPN 网络被用于生成多尺度图像特征。

交叉注意点
在点交叉注意过程中,每个BEV查询仅与其对应参考点周围的LiDAR BEV特征交互。这种互动是通过变形注意力来实现的: P C A ( Q p , B L i D A R ) = D e f A t t n ( Q p , P , B L i D A R ) (1) \tag1 PCA(Q_p,B_{LiDAR})=DefAttn(Q_p,P,B_{LiDAR}) PCA(Qp,BLiDAR)=DefAttn(Qp,P,BLiDAR)(1)其中 Q p Q_p Qp表示在点 p = ( x , y ) p=(x,y) p=(x,y)处的 BEV 查询,并且 B L i D A R B_{LiDAR} BLiDAR表示从 LiDAR 分支输出的BEV 特征。P 是 BEV 空间中的坐标 p = ( x , y ) p=(x,y) p=(x,y)到 LiDAR BEV空间上的投影。

图像交叉注意
为了实现图像交叉注意,遵循与 BEVFormer 类似的方法。每个 BEV 查询都使用与支柱表示类似的高度尺寸展开。固定数量的 N r e f N_{ref} Nref 3D参考点在每个柱中沿着其 Z 轴采样。图像交叉注意过程如下所示: I C A ( Q p , F ) = 1 V h i t ∑ i = 1 V h i t ∑ j = 1 N r e f D e f A t t n ( Q p , P ( p , i , j ) , F i ) (2) \tag2 ICA(Q_p, F) =\frac{1}{V_hit}\sum_{i=1}^{V_{hit}}\sum_{j=1}^{N_{ref}} DefAttn(Q_p, P(p, i, j), F_i) ICA(Qp,F)=Vhit1i=1Vhitj=1NrefDefAttn(Qp,P(p,i,j),Fi)(2)其中 V h i t V_{hit} Vhit 表示参考点可以投影到的相机视图的数量, i i i 是相机视图的索引, F i F_i Fi 表示第 i i i 个相机的图像特征,并且 P ( p , i , j ) P(p,i,j) P(p,i,j) 表示 BEV 查询 Q p Q_p Qp 的3D参考点 ( x , y , z i ) (x,y,z_i) (xyzi) 在第 i i i 个相机的图像坐标系上的投影。

时间自注意
仿照 BEVFormer 来实现时间自我注意。具体而言,基于车辆在帧之间的运动的历史帧BEV特征的时间对准。然后,利用时间自注意来融合历史帧BEV特征,如下所示: T S A ( Q p , ( Q , B t − 1 ′ ) ) = ∑ V ∈ { Q , B t − 1 ′ } D e f A t t n ( Q p , p , V ) (3) \tag 3 TSA(Q_p,(Q,B_{t-1}^{'}))=\sum_{V\in \{ Q,B_{t-1}^{'}\}}DefAttn(Q_p,p,V) TSA(Qp,(Q,Bt1))=V{Q,Bt1}DefAttn(Qp,p,V)(3)其中, B t − 1 ′ B_{t-1}^{'} Bt1表示时间对齐后时间戳 t − 1 t−1 t1 处的 BEV 特征。
对于感知中的检测、跟踪和地图制作任务,论文主要遵循了 UniAD 的设置。

预测

由于更丰富的 BEV 特征,预测模块接收到更稳定和精细的信息。基于这一点,为了进一步捕获多模态分布并提高预测准确性,引入了模态自我关注(modality self-attention)和精炼网络(refinement net)。

在这里插入图片描述上下文感知模态关注
在 UniAD 中,数据集级统计锚被用于辅助多模态轨迹学习,锚间自注意被应用于提高锚的质量。然而,由于这些锚不考虑历史状态和地图信息,它们对多模态学习的贡献是有限的。
因此,我们正在考虑稍后添加此操作。在运动查询检索所有场景上下文以捕获 agent-agent, agent-map, and agent-goal 点信息之后,然后引入模态自注意以使各种模式之间的相互可见性,从而获得更好的质量和多样性。 Q m o d e = M H S A ( Q u ) (4) \tag4 Q_{mode}=MHSA(Q_u) Qmode=MHSA(Qu)(4)其中MHSA表示多头自注意。 Q u Q_u Qu表示获得上下文信息的查询。

精细化网络
可变形注意力使用统计锚点作为参考轨迹与BEV特征进行交互。如前所述,这个参考轨迹增加了后续学习的难度,因为需要特定的场景信息。论文引入了一个精炼网络,利用由 Motionformer 生成的轨迹作为更准确的空间先验,查询场景背景,并预测地面真实轨迹与先验轨迹之间的偏移量。如下所示: Q R = D e f A t t n ( A n c h o r p , x ^ m , B ) (5) \tag 5 Q_R = DefAttn(Anchor_p,\hat x_m,B) QR=DefAttn(Anchorp,x^m,B)(5)其中 A n c h o r p Anchor_p Anchorp 表示空间先验。使用一个简单的 MLP 对 Motionformer 输出的轨迹进行编码,并在时间维上执行 maxpool 得到 A n c h o r p Anchor_p Anchorp x ^ m \hat x_m x^m 表示Motionformer输出轨迹的终点。

规划

在评估过程中,无法访问高清(HD)地图或预定义路线。因此论文依靠可学习的命令嵌入来表示导航信号(包括左转、右转和保持前进)来指引方向。为了获得周围的嵌入,输入的计划查询,其中包括自我查询和命令嵌入,到鸟瞰图(BEV)功能。
然后,将其与自我车辆的嵌入融合,该嵌入由MLP网络处理,以获得状态嵌入。然后将该状态嵌入解码到未来的路点中。

在这里插入图片描述
L t r a = λ c o l L c o l ( τ ^ , b ) + λ i m i L i m i ( τ ^ , τ ˜ ) (6) \tag 6\mathcal L_{tra} = \lambda_{col}\mathcal L_{col}(\hat \tau , b)+ \lambda_{imi}\mathcal L_{imi}(\hat \tau , \~\tau ) Ltra=λcolLcol(τ^,b)+λimiLimi(τ^,τ˜)(6)其中 λ i m i = 1 λ_{imi} = 1 λimi=1 λ c o l = 2.5 λ_{col} = 2.5 λcol=2.5 τ ^ \hat τ τ^是原始规划结果, τ ˜ \~τ τ˜ 表示规划标签,并且 b b b表示场景中预测的代理。碰撞损失计算公式如下: L c a l ( τ ^ , b ) = 1 N 2 ∑ i = 0 N max ⁡ ( 1 , ∑ t = 0 P L p a i r ( τ ^ t , b i t ) ) L p a i r ( τ ^ t , b i t ) = { 1 − d r i + r j , if  d ≤ r i + r j 0 , otherwise (7) \tag7 \mathcal L_{cal}(\hat \tau,b) = \frac{1}{N^2}\sum_{i=0}^{N}\max (1,\sum_{t=0}^{P}\mathcal L_{pair}(\hat \tau^t,b_i^t)) \\\mathcal L_{pair}(\hat \tau^t,b_i^t)=\begin{cases} 1-\frac{d}{r_i+r_j}, &\text{if } d\leq r_i+r_j \\ 0, &\text{otherwise} \end{cases} Lcal(τ^,b)=N21i=0Nmax(1,t=0PLpair(τ^t,bit))Lpair(τ^t,bit)={1ri+rjd,0,if dri+rjotherwise(7)此外,在推理过程中,为了进一步确保轨迹的安全性和平滑性,使用 Newton’s method 执行轨迹优化,利用来自占用预测模型的占用预测结果。

训练

采用了三个阶段的培训来进行多传感器、多任务学习。
在第一阶段,只训练BEV编码器和感知任务;
在第二阶段,固定BEV编码器,然后训练感知、预测和规划任务;
在可选的第三阶段,进一步训练占据和规划任务,同时固定所有其他组件。
这种分阶段的培训方法有助于逐步构建和优化模型,以达到更好的性能和泛化能力。

总结

FusionAD 是一种利用BEV融合来促进多感官,多任务,端到端学习的新方法,从而显着增强自动驾驶领域的预测和规划任务。所提出的方法强调了扩展一个统一的端到端的框架,以融合为基础的方法有效的潜力。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FusionAD:用于自动驾驶预测和规划任务的多模态融合 的相关文章

  • 嵌入式软件—视频笔试记录

    文章目录 一 前言 二 笔试题目 1 C语言中的三种循环以及区别 2 以下代码循环几次 3 形参与实参定义以及函数形参为指针和指针引用方式的区别 4 链表的概念 链表与数组的区别 5 3 5 1 2的结果 6 以下程序运行结果是什么 7 i
  • 详解BP神经网络

    BackPropagation Neuron NetWok BP神经网络学习算法可以说是目前最成功的神经网络学习算法 显示任务中使用神经网络时 大多数是使用BP算法进行训练 在我看来BP神经网络就是一个 万能的模型 误差修正函数 每次根据训

随机推荐

  • Pre-Trained Models: Past, Present and Future综述总结(1)

    总体介绍 非神经模型 手工制作的特征和统计方法hand crafted features and statistical methods 神经模型 从数据中自动学习低维连续向量 也称为分布式表示 作为任务特定的特征 关键挑战之一是数据匮乏
  • golang该如何循环 多层结构体

    一 首先贴代码 你们大概看看就行 在看看后面的前端页面展示数据 你们就能理解 结构体嵌套的案例 package model import fmt time type Find struct Article Article SelectArt
  • 线程进程协程的实现代码

    单线程 import time def run print hello world time sleep 1 if name main for i in range 5 run 多线程 import threading import tim
  • 规范:前端代码开发规范

    一 前端静态代码检查工具 1 1 ESLint ESLint 是一个插件化的 JavaScript 代码检查工具 可以使用规则插件或者自定义规则对代码进行静态检查 1 2 JSLint JSLint 是由 Douglas Crockford
  • JAVA-static关键字 多态

    static Java中的static关键字主要用于内存管理 我们可以应用static关键字在变量 方法 块和嵌套类中 static关键字属于类 而不是类的实例 被static修饰的数据在内存中只会存在一份数据 所以这个数据适合用来共享数据
  • TypeError: write() argument must be str, not dict

    在写入文件的时候 出现 TypeError write argument must be str not dict 报错 可以使用json 格式写入 import requests import re import json def get
  • python bokeh_使用Bokeh在Python中进行交互式数据可视化

    python bokeh Bokeh prides itself on being a library for interactive data visualization Bokeh以成为交互式数据可视化的库而自豪 Unlike popu
  • 8051介绍--DW8051

    Overview synopsy公司设计的可综合内核IP 可嵌入到IC内部 它可以相容803x 805x单片机 1个机器周期 4个时钟周期 一条指令周期大概是2 9个机器周期 指令周期长度可变 因此可以分别访问高速和低速设备 MCU的clo
  • Call to undefined function mcrypt_get_block_size

    http stackoverflow com questions 17109818 install php mcrypt on centos 6 问题 Call to undefined function mcrypt get block
  • 【经验总结】tcp_tw_recycle参数引发的故障

    故障描述 2010年9月7日 新上线的手机游戏论坛有部分地区用户反应登陆游戏时出现不能登陆或登陆超时等情况 观察用户同时在线数量开始下降情况 排错过程 一 初步检查是否有变更导致的故障 1 联系同事检查网络是否有问题或有对该机房网络是否有进
  • Anaconda修改虚拟环境的安装位置

    1 首先试着新建一个环境 查看环境的安装路径 发现当前安装路径在C盘 我们的目标是改到D盘 2 输入conda info 查看当前的环境默认路径有哪几个 发现一共有三个 其中第一个是默认路径 现在的目标是将默认路径改到D盘 3 输入cond
  • 徐小明:上午涨的快,跌的也…

    我不喜欢炒股 今年股市估计少人欢喜 多人愁吧 老婆1万块都亏了4千多了 还不如到唐狮官方网站去买衣服tonlion hao9go com 哎 原文地址 徐小明 上午涨的快 跌的也快 作者 徐小明 徐小明 上午涨的快 跌的也快 今天上午低开之
  • 优惠券秒杀(三)

    L1296686146 冗谪 2023 07 28 13 24 发表于陕西 收录于合集 redis7个 优惠券秒杀一人一单 优惠券的目的是为了引流 但是目前的情况是一个人可以无限制的抢这个优惠券 因此 代码中应该添加一个用户只能下一单的逻辑
  • vue 监听浏览器页面关闭_监听浏览器关闭事件的解决方案

    在web项目开发中 关于浏览器关闭事件有两个很常见的问题 为什么我没有监听浏览器关闭事件 我监听到了这个事件 但写在事件里的异步请求为什么发送不成功 原因分析 这两个问题无外乎两个原因 浏览器关闭事件未被触发 和 异步请求发送失败 原因1
  • Centos7 离线安装 nginx

    背景 某些项目处于私有云中 并不能连接互联网 此时安装各种组件都是相当的麻烦 本文记录在某项目中离线安装部署Nginx 首先是安装依赖包 附件地址上传到csdn 免积分下载 nginx 1 21 6及Nginx依赖的rpm安装包 Linux
  • 华为数字化转型之道 平台篇 第十一章 统一的数据底座

    平台篇 第十一章 统一的数据底座 在从传统信息化向数字化转型的过程中 企业积累了海量数据 并且还在爆发式增长 数据很多 但真正能产生价值的数据却很少 数据普遍存在分三年 不拉通的问题 缺乏统一的定义和架构 找到想要的 能用的数据越来越难 如
  • C语言结构体与共用体(1)

    结构体 有时需要将不同类型的数据组合成一个人有机的整体 以便于引用 如 一个学生有学号 姓名 性别 年龄 地址等属性 int num char name 20 char sex int age char addr 30 定义一个结构体的一般
  • php和tp5学习笔记

    之前看过php的基础教学视频 了解了一下 自己没有上手实践 现在为了项目需要 需要扎实学习一下 所以做一下笔记吧 php学习笔记 1 环境 1 用phpstudy搭建php环境 2 搭建thinkphp环境 2 知识点 2 1 URL 2
  • python判断一个集合是否为另一个集合的子集

    a 1 2 3 4 b set 1 2 b issubset a
  • FusionAD:用于自动驾驶预测和规划任务的多模态融合

    论文背景 自动驾驶 AD 任务通常分为感知 预测和规划 在传统范式中 AD中的每个学习模块分别使用自己的主干 独立地学习任务 以前 基于端到端学习的方法通常基于透视视图相机和激光雷达信息直接输出控制命令或轨迹 论文提出了基于BEV多模态的多