51-16 FusionAD 用于自动驾驶预测与规划任务的多模态融合论文精读

今天要分享的是基于BEV的多模态、多任务、端到端自动驾驶模型FusionAD,其专注于自动驾驶预测和规划任务。这项工作首次发表于2023年8月2日,性能超越了2023 CVPR最佳论文UniAD模型。论文题目是FusionAD: Multi-modality Fusion for Prediction and Planning Tasks of Autonomous Driving,主要作者来自Udeer.ai、西湖大学和和菜鸟网络。

Abstract

构建多模态、多任务神经网络以实现准确和稳健的性能是自动驾驶感知任务的事实标准。然而,利用来自多个传感器的这些数据来联合优化预测和规划任务在很大程度上仍未得到探索。为此我们提出了 FusionAD,这是第一个融合来自两个最关键传感器(相机和 LiDAR) 信息的统一框架,超越了感知任务。具体来说,我们首先构建了一个基于transformer的多模态网络,以有效地产生基于融合的特征。与基于相机的端到端方法UniAD相比,我们建立了一个旨在融合模态感知预测和状态感知规划的模块。它利用了多模态特征,在这里称为 FMSPnP。我们在常用的基准nuScenes数据集进行了广泛的实验,FusionAD在检测和跟踪等感知任务上有最先进的性能。它平均超过基线15%,占用预测精度提高10%,ADE评分的预测误差从0.708降低到0.389,并将碰撞率从0.31%降低到仅0.12%。

Introduction

在过去的几年里,深度学习一直在加速自动驾驶 (Autonomous Driving,AD) 的发展。对于自动驾驶,AD算法通常将相机和激光雷达信号作为感知输入,然后直接输出控制命令。AD任务通常分为感知、预测和规划。在传统的范式中,AD中的每个学习模块分别使用自己的主干并独立执行学习任务。此外,预测和规划等下游任务通常依赖于感知结果的向量化表示,而高级语义信息通常是不可用的,如图所示。

以前,基于端到端学习的方法通常基于透视视图相机和激光雷达信息直接输出控制命令或轨迹。最近的端到端学习方法开始将端到端学习表述为一个多任务学习问题,同时输出中间信息以及计划的轨迹。这些方法仅采用单一输入模式。另一方面,特别是通过融合激光雷达和相机信息进行感知任务,可以显著提高感知结果。最近,人们对BEV (Bird’s Eye View)感知的兴趣激增,特别是对于以视觉为中心的感知。这一发展显著提高了自动驾驶汽车的能力,并使视觉和激光雷达模式的融合更加自然。对于感知任务,已经证明了使用基于BEV融合的方法是非常有效的。然而,以端到端的方式使用来自多模态传感器的特征,在预测和规划任务中仍未得到探索。

为此,我们提出了 FusionAD。据我们所知,这是第一个基于专注于自动驾驶预测和规划任务的BEV多模态、多任务端到端学习框架。我们从最近流行的以视觉为中心的方法开始来制定我们的pipeline。首先,我们设计了一个简单而有效的transformer架构,融合多模态信息,在BEV transformer 空间中产生统一特征。由于我们的主要重点是探索融合特征以增强预测和规划任务,为此制定了融合模态感知预测和状态感知规划的模块,称为FMSPnP。它结合了渐进式交互和细化,制定了基于融合的碰撞损失建模。与其他方法不同的是,FMSPnP 模块利用了如图所示的分层金字塔架构,以确保所有任务都可以从中间感知特征中受益。该方法更好地传播高级语义信息,并有效地共享不同任务之间的特征。

我们在流行的自动驾驶基准nuScenes数据集上进行了广泛的实验,实验表明FusionAD显著优于目前最先进的方法。主要贡献总结如下:

我们提出了一种基于BEV融合的自动驾驶多感知、多任务、端到端的学习方法。与基于相机的BEV方法相比,基于融合的方法大大提高了性能。

我们提出了 FMSPnP 模块,该模块结合了模态自注意力和预测任务,以及宽泛的碰撞损失和与矢量化的自我信息融合以进行规划任务。实验研究表明,FMSPnP提高了预测和规划结果。

我们对多个任务进行了广泛的研究,以验证所提方法的有效性,实验结果表明,FusionAD在预测和规划任务中取得了SOTA结果,同时在中间感知任务中也保持具有竞争力的结果。

Related work

BEV Perception

BEV感知方法在自动驾驶中用于感知周围环境,引起了人们广泛的关注。基于相机的BEV方法将多视角摄像机图像特征转换为BEV空间,无需后处理重叠区域即可实现端到端感知。LSS 和BEVDet 使用基于图像的深度预测来构建视锥,并提取图像BEV特征进行地图分割和3D对象检测。在此基础上,BEVdet4D和SoloFusion通过将当前帧BEV特征与对齐的历史帧BEV特性相结合来实现时间融合。BEVFormer使用带有transformer的时空注意力来获得时间融合的图像BEV特征。这些方法提高了对动态环境的理解,增强了感知效果。但是基于相机的感知方法距离感知精度不足,LiDAR可以提供准确的位置信息,然其点云又是稀疏的。为了解决这个问题,之前的一些方法探索了融合多模态数据以进行感知。BEV是基于Lidar的感知算法的一个共同视角,将多模态特征转换为BEV空间有助于融合特征的融合。BEVFusion将LSS方法得到的图像BEV特征与Voxelnet得到的LiDAR BEV特征连接起来,得到融合的BEV特征,提高了感知性能。SuperFusion进一步提出了基于多模态地图感知的多阶段融合。

Motion Forecasting

由于VectorNet方法取得的成功,现在主流运动预测(或轨迹预测)方法通常利用高清地图和基于矢量的障碍物表示来预测agent的未来轨迹。在此基础上,LaneGCN和PAGA通过改进的地图特征(如车道连接属性)来增强轨迹-地图匹配。此外,某些基于锚点的方法对地图附近的目标点进行采样,从而能够基于这些点进行轨迹预测。然而,这些方法严重依赖于预先收集的高清地图,这使得它们不适合地图不可用的区域。

矢量化预测方法往往缺乏高级语义信息,需要高清地图辅助,因而,最近的工作开始使用原始感知信息进行轨迹预测。PnPNet提出了一种新的跟踪模块,该模块从检测任务中在线生成目标轨迹,并利用轨迹级特征进行运动预测,但其总体框架基于CNN,运动预测模块相对简单,只有单模输出。由于transformer应用于检测和跟踪,VIP3D成功地借鉴了以前的工作,提出了第一个基于transformer的联合感知预测框架。UniAD进一步合并了更多的下游任务,并提出了一个面向规划的端到端自动驾驶模型。在前辈的基础上,我们对运动预测任务进行了更精细的优化,并引入了细化机制和模型注意力,大大提高了预测指标。

Learning for Planning

模仿学习(IL)和强化学习(RL)已被用于规划。IL 和 RL 用于端到端方法 (使用图像和/或激光雷达作为输入)或矢量化方法(使用矢量化感知结果作为输入)。虽然使用中间感知结果进行规划可以提高泛化和透明度,但矢量化方法存在后处理噪声和感知结果的变化。早期的端到端方法,如ALVINN和PilotNet,通常直接输出控制命令或轨迹,而缺乏中间结果/任务。相反,P3、MP3、UniAD学习了一个端到端的可学习网络,该网络执行联合感知、预测和规划,可以产生可解释的中间表示,提高了最终的规划性能。然而,它们要么只使用激光雷达输入,要么利用相机输入,这限制了它们的性能。Transfuser方法同时使用激光雷达和相机输入,但不在BEV空间中,只执行很少的AD学习任务作为辅助任务。为了解决这个问题,我们提出了一种基于BEV融合的、统一的多模态、多任务框架,该框架同时融合激光雷达和相机输入。

Method

我们提出的FusionAD的整体网络架构如图所示。最初,使用基于BEVFormer的图像编码器将相机图像映射到BEV空间。然后,这些再与BEV空间中的激光雷达特征相结合。再经过时间融合之后,融合的 BEV 特征将用于通过基于查询的方法进行检测、跟踪和映射任务。随后,token被转发到运动和占用预测任务和规划任务。我们把辅助模态感知预测和状态感知规划模块简称为FMSPnP。

BEV Encoder and Perception

我们从FusionFormer中获得灵感,提出了一种新的多模态时间融合框架,用基于transformer的架构进行三维目标检测。为了提高效率,我们采用类似于BEVFormer的循环时间融合技术。与FusionFormer不同,我们使用BEV格式的特征作为LiDAR分支的输入,而不是体素特征。多模态时间融合模块包括6个编码层,首先利用一组可学习的BEV查询器分别使用points cross-attention和image cross-attention融合LiDAR特征和图像特征,然后,我们通过时间自注意力将生成的特征与前一帧的历史BEV特征融合。查询由前馈网络更新,然后作为下一层的输入。经过6层融合编码后,这将为后续任务生成最终的多模态时间融合BEV特征。

LiDAR 首先对原始LiDAR点云数据进行体素化,然后根据SECOND网络生成LiDAR BEV特征。

Camera 多视角相机图像首先通过骨干网进行特征提取,然后,利用FPN网络生成多尺度图像特征。我们进一步开发了以下技术来有效地提高融合模块的性能。

Points Cross-Attention

在points cross-attention过程中,每个BEV查询只与其对应的参考点周围的LiDAR BEV特征交互。这种交互是使用可变形注意力实现的:

其中 Qp 表示点 p = (x, y) 处的BEV查询,BLiDAR表示LiDAR分支输出的BEV特征。P是BEV空间中坐标p=(x,y)在LiDAR BEV空间中的投影。

Image Cross-Attention

为了实现image cross-attention,我们参照了BEVFormer类似的方法。每个BEV查询都以类似于pillar表示。在每个pillar沿 Z 轴采样固定数量的 Nref 3D 参考点。image cross-attention过程如下所示:

其中 Vhit 表示可以投影参考点的相机视图的数量,i 是相机视图的索引,Fi 表示第 i 个相机的图像特征,P (p, i, j) 表示 BEV 查询 Qp 到第 i 个相机的图像坐标系中的 3D 参考点 (x, y, zi) 的投影。

Temporal Self-Attention

我们还参考了BEVFormer来实现时间自我注意。具体来说,我们的方法涉及基于车辆在帧之间的运动的历史帧 BEV 特征的时间对齐。然后我们使用时间自注意力来融合历史帧 BEV 特征,如下所示:

其中B 't−1表示时间对齐后时间戳t−1处的BEV特征。由于我们对预测和规划增强感兴趣,对于感知中的检测、跟踪和映射任务,我们主要遵循UniAD论文中的设置。

Prediction

得益于信息量更大的BEV特征,预测模块能接收到更稳定、更细粒度的信息。在此基础上,为了进一步捕获多模态分布并提高预测精度,我们引入了模态自注意力和细化网络。设计细节可以在下图中找到Design of the prediction module in FMSPnP。

Context-Informed Mode attention

在UniAD中,使用数据集级的统计锚点来辅助多模态轨迹学习,并应用锚点间自注意力来提高锚点的质量。然而,由于这些锚点没有考虑历史状态和地图信息,它们对多模态学习的贡献是有限的。因此,我们稍后考虑添加此操作。在运动查询检索所有场景上下文以捕获代理-代理、代理-地图和代理-目标点信息后,我们引入 mode self-attention来实现各种mode之间的相互可见性,从而获得更好的质量和多样性。

其中MHSA表示多头自注意。Qu 表示获取上下文信息的查询。

Refinement Network

可变形注意力使用统计锚作为参考轨迹与 Bev 特征交互。如前所述,由于需要特定的场景信息,该参考轨迹增加了后续学习的难度。我们引入了一个Refinement Network,使用Motionformer生成的轨迹作为更精确的空间先验,查询场景上下文,并在这个阶段预测地面真实轨迹和先验轨迹之间的偏移量。如下所示:

Anchorp 表示空间先验,一个简单的MLP将用于对Motionformer输出的轨迹进行编码,在时间维度上执行maxpool得到它。Xm表示Motionformer输出轨迹的端点。

 Planning

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

为了确保安全,在训练过程中,除了简单的imitation L2 loss外,我们还将碰撞损失的可微分collision loss纳入,如下设计。

其中 λimi = 1, λcol = 2.5, ^τ 是原始规划结果,~τ 表示规划标签,b 表示场景中预测的代理。碰撞损失由下式计算:

Trainning

我们利用三阶段训练进行多传感器、多任务学习。在第一阶段,我们只训练BEV编码器和感知任务;在第二阶段,我们固定BEV编码器并训练感知、预测和规划任务;而对于可选的第三阶段,我们进一步训练占用和规划任务,固定所有其他组件。

Experiments

Experiment Setup

我们使用 32 个 A100 GPU 进行实验训练,使用 nuScenes 数据集,包括在波士顿和新加坡捕获的 1000 个驾驶场景。每个场景跨越大约 20 秒,nuScenes 提供了 140 万个 3D 边界框,其中包含 23 个不同的类别,以 2Hz 采样。我们遵循业界常用评估方法来评估端到端自动驾驶任务的性能。具体来说,使用 mAP 和 NDS 来评估检测任务,AMOTA 和 AMOTP 来评估跟踪任务,IoU 来评估映射任务,而且使用端预测精度 (EPA)、平均位移误差 (ADE)、最终位移误差 (FDE) 和错误率 (MR) 来评估运动预测的性能。对于未来的占用率预测,我们使用FIERY中采用的近(30 × 30m)和远(100 × 100m)范围的度量未来视频全景质量(VPQ)和IoU。我们采用位移误差(DE)和碰撞率(CR)来评价规划性能,其中碰撞率被认为是主要指标。

Experiment Results

The results of motion forecasting FusionAD remarkably outperforms

The results of occupancy prediction FusionAD remarkably outperforms

 Planning Results: FusionAD achieves the stateof-the-art performance

Ablation Studies

消融实验相对来说做得少些。

FMSPnP模块相关的消融研究如表五和表六所示。很明显,细化网络和self-attention模块对提高预测结果有显著贡献。同时对规划结果而言,当过去轨迹矢量化表示和自我状态相融合时,观察到显著的改进。

Qualitative Results

Discussion

虽然所提出的方法表现出很强的定量和定性性能,但它仍然依赖于基于规则的系统对输出进行后处理,以实现可靠的现实世界性能。此外,目前的研究工作主要使用规划任务的开环结果来评估学习的规划器,这可能无法有效地衡量其性能。用真实世界的感知数据以闭环方式评估规划器带来了挑战。尽管如此,端到端框架下的预测结果仍然很有希望,并且有可能在此框架内进一步改进规划模块。 

Conclusions

我们提出了FusionAD,这是一种利用BEV融合来促进多感知、多任务、端到端的学习新方法,从而显着增强自动驾驶领域的预测和规划任务。该方法强调了将统一的端到端框架有效地扩展到基于融合方法的潜力。与仅依赖于基于相机的BEV的端到端学习方法相比,在预测和规划任务上都有显着的性能改进,同时也提高了感知性能。

https://arxiv.org/abs/2308.01006

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

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

相关文章

记录一些随机约束的控制方法

文章目录 前言一、内嵌约束控制二、控制rand变量是否随机三、选择随机控制的变量四、控制约束块是否随机五、约束的嵌套控制总结 前言 在运用UVM验证过程中,经常会用到大量的随机,这个时候我们需要控制随机约束的打开或者关闭,来实现不同模式…

linux显示系统内存使用情况--free命令

free 命令是Linux系统中用于显示系统内存使用情况的一个常用工具。通过该命令,用户可以轻松了解系统的内存分配、使用情况以及性能状况。本文将深入介绍free命令的各个方面,并提供详细的示例。 安装与基本用法 通常来说,free命令已经预装在大…

基于Python实现人脸识别相似度对比

目录 引言背景介绍目的和意义 人脸识别的原理人脸图像获取人脸检测与定位人脸特征提取相似度计算 基于Python的人脸相似度对比实现数据集准备人脸图像预处理特征提取相似度计算 引言 背景介绍 人脸识别技术是一种通过计算机对人脸图像进行分析和处理,从而实现自动识…

2023.1.17 关于 Redis 持久化 AOF 策略详解

目录 引言 AOF 策略 实例演示一 缓冲区 重写机制 手动触发 自动触发 AOF 重写流程 实例演示二 引言 Redis 实现持久化的两大策略 RDB ——> Redis DataBase(定期备份)AOF ——> Append Only File(实时备份) 注意&…

JavaEE:多线程(2):线程状态,线程安全

目录 线程状态 线程安全 线程不安全 加锁 互斥性 可重入 死锁 死锁的解决方法 Java标准库中线程安全类 内存可见性引起的线程安全问题 等待和通知机制 线程饿死 wait notify 线程状态 就绪:线程随时可以去CPU上执行,也包含在CPU上执行的…

漏洞补丁修复之openssl版本从1.1.1q升级到1.1.1t以及python版本默认2.7.5升级到2.7.18新版本和Nginx版本升级到1.24.0

​ 一、Openssl升级 1、查看Openssl安装的版本 openssl version 2、查看Openssl路径 which openssl 3、上传openssl安装包到服务器:openssl-1.1.1t.tar.gz,并且解压,安装: mv /usr/local/openssl /usr/local/backup_openssl_1.1.1q_20240120 mkdir /usr/local/openssl tar…

强化学习:MuJoCo机器人强化学习仿真入门

声明:我们跳过mujoco环境的搭建,搭建环境不难,可自行百度 下面开始进入正题(需要有一定的python基础与xml基础): 下面进入到建立机器人模型的部分: 需要先介绍URDF模型文件和导出MJCF格式 介绍完…

K8S--安装Nginx

原文网址:K8S--安装Nginx-CSDN博客 简介 本文介绍K8S安装Nginx的方法。 1.创建Nginx目录及配置文件 mkdir -p /work/devops/k8s/app/nginx/{config,html} 在config目录下创建nginx.conf配置文件,内容如下: # events必须要有 events {wo…

PALWORLD linux centos7开服教程

开放端口8211 iptables -A INPUT -p udp -p tcp --dport 8211 -j ACCEPT iptables -A INPUT -p udp -p udp --dport 8211 -j ACCEPT yum -y install glibc.i686 libstdc.i686 screen libcurl.i686 yum install glibc-devel.i686 yum install libstdc-devel.i686 yum -y ins…

逆序对数量(归并排序做法)

先给出上一篇文章归并排序模板-CSDN博客里的归并排序模板&#xff1a; #include<iostream> using namespace std;const int N 100010;int n; int q[N], temp[N];void merge_sort(int q[], int l, int r) {if(l > r) return;int mid (lr) >> 1;merge_sort(q, …

爬虫安居客新房

一、首先看网址 后面有全部代码 https://hf.fang.anjuke.com/loupan/baohequ/p3 这种形式很好分析&#xff0c;https://hf.fang.anjuke.com/loupan/行政区域页码 xinfang_area ["feixixian", "baohequ", "shushanqu", "luyangqu",…

#GPU|LLM|AIGC#集成显卡与独立显卡|显卡在深度学习中的选择与LLM GPU推荐

区别 核心区别&#xff1a;显存&#xff0c;也被称作帧缓存。独立显卡拥有独立显存&#xff0c;而集成显卡通常是没有的&#xff0c;需要占用部分主内存来达到缓存的目的 集成显卡&#xff1a; 是集成在主板上的&#xff0c;与主处理器共享系统内存。 一般会在很多轻便薄型的…

机械臂雅可比矩阵的矢量积理解和matlab实现

雅可比矩阵的第Ji列&#xff1a; 关于一些基本概念可以参考博客&#xff0c;部分细节如下&#xff1a; 每个移动关节&#xff0c;Ji可以这样计算&#xff1a; 每个旋转关节&#xff0c;Ji这样计算&#xff1a; 有时候要求按照末端执行器坐标系{n}来执行一些位移旋转之类的…

uniapp中vue2项目导入高德地图

1、看官网新手入门链接导入原生高德地图&#xff1a; JS API 结合 Vue 使用-基础-进阶教程-地图 JS API 2.0|高德地图API (amap.com) 具体步骤&#xff1a; 第一步&#xff0c;安装插件 npm i amap/amap-jsapi-loader --save 第二步&#xff0c;在vue组件中写代码显示地图…

[数据结构]顺序表

1、顺序表的概念及结构 1.1 线性表 线性表&#xff08; linear list &#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#…

品牌价值的累积与倍增:指数函数的含义及其在企业运营中的应用

品牌的价值日益凸显。品牌价值的累积与倍增不仅是企业追求的目标&#xff0c;也是市场竞争的重要标志。指数函数作为一种数学模型&#xff0c;对于描述品牌价值的增长具有重要意义。本文将深入探讨指数函数的含义及其在企业运营中的应用&#xff0c;并分析如何通过持续创新、品…

【DevOps】Jenkins Extended E-mail 邮件模板添加自定义变量

文章目录 1、配置Jenkins邮箱2、配置告警模板1、配置Jenkins邮箱 略 2、配置告警模板 自定义变量:DYSK_PYTEST_STATUS // Uses Declarative syntax to run commands inside a container. pipeline {agent {kubernetes {cloud "kubernetes" //选择名字是kuberne…

绘制PCB封装库的神器

我们平时绘制PCB封装时&#xff0c;一般都是按照元器件数据表上的封装图来绘制&#xff0c;有一些ECAD软件提供了向导&#xff0c;但是这个过程还是比较繁琐。现在有很多大厂比如TI都会提供芯片封装库&#xff0c;一般需要Ultra Librarian软件才能打开&#xff0c;然后再转换成…

【ZYNQ入门】第十篇、基于FPGA的图像白平衡算法实现

目录 第一部分、关于白平衡的知识 1、MATLAB 自动白平衡算法的实现 1.1、matlab代码 1.2、测试效果 1.3 测试源图 2、为什么摄像头采集的图像要做白平衡 3、自动白平衡算法总结 4、FPGA设计思路 4.1、实时白平衡的实现 4.2、计算流程优化思路 第二部分、硬件实…

如何查看Linux CPU占有率

目录 1、top 2、htop 3、vmstat 4、mpstat 5、iostat 查看嵌入式设备CPU占有率是评估系统资源使用情况的重要方式。 在Linux系统中&#xff0c;有多种方法可以查看CPU占有率&#xff0c;这里介绍几种常用的命令行工具。 1、top 这是最常用的命令之一&#xff0c;它提供了…