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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Java 数据结构】LinkedList与链表

LinkedList与链表 1. ArrayList的缺陷2. 链表2.1 链表的概念及结构2.2 链表的实现 3. LinkedList的模拟实现4.LinkedList的使用4.1 什么是LinkedList4.2LinkedList的使用 5. ArrayList和LinkedList的区别 1. ArrayList的缺陷 上节课已经熟悉了ArrayList的使用,并且…

vue3+elementPlus pc和小程序ai聊天文生图

websocket封装可以看上一篇文章 //pc端 <template><div class"common-layout theme-white"><el-container><el-aside><div class"title-box"><span>AI Chat</span></div><div class"chat-list&…

VMware安装RHEL-磁盘划分和分区

本文探讨了在VMware虚拟机上安装RHEL时遇到的磁盘划分和分区问题。文章详细介绍了磁盘划分过程中可能出现的问题&#xff0c;特别是在选择磁盘类型时可能导致找不到磁盘的情况。通过清晰的步骤和解决方法&#xff0c;读者可以更好地理解如何正确进行磁盘划分以及如何解决磁盘无…

银行数据仓库体系实践(3)--数据架构

狭义的数据仓库数据架构用来特指数据分布&#xff0c;广义的数据仓库数据架构还包括数据模型、数据标准和数据治理。即包含相对静态部分如元数据、业务对象数据模型、主数据、共享数据&#xff0c;也包含相对动态部分如数据流转、ETL、整合、访问应用和数据全生命周期管控治理。…

AWS 专题学习 P12 (CloudWatch、CloudTrail、AWS Config)

文章目录 专题总览1. CloudWatch1.1 Amazon CloudWatch Metrics1.2 CloudWatch Metric Streams1.3 CloudWatch LogsCloudWatch Logs - SourcesCloudWatch Logs Metric Filter & InsightsCloudWatch Logs – S3 ExportCloudWatch Logs SubscriptionsCloudWatch Logs Aggrega…

jetson-inference----训练自己的目标检测模型(一)

系列文章目录 jetson-inference入门 jetson-inference----docker内运行分类任务 jetson-inference----训练自己的目标检测模型&#xff08;一&#xff09; 文章目录 系列文章目录前言一、jetson-inference docker环境介绍二、SSD目标检测三、训练自己的目标检测模型总结 前言 …

自动驾驶的决策层逻辑

作者 / 阿宝 编辑 / 阿宝 出品 / 阿宝1990 自动驾驶意味着决策责任方的转移 我国2020至2025年将会是向高级自动驾驶跨越的关键5年。自动驾驶等级提高意味着对驾驶员参与度的需求降低&#xff0c;以L3级别为界&#xff0c;低级别自动驾驶环境监测主体和决策责任方仍保留于驾驶…

淘宝扭蛋机小程序:新时代的互动营销与娱乐体验

随着科技的快速发展&#xff0c;小程序已经成为人们日常生活中不可或缺的一部分。在众多的小程序中&#xff0c;淘宝扭蛋机小程序以其独特的互动性和趣味性&#xff0c;吸引了大量用户。本文将深入探讨淘宝扭蛋机小程序的特色、用户体验以及未来发展。 一、淘宝扭蛋机小程序的…

Mybatis 拦截器

MyBatis 拦截器&#xff08;Interceptor&#xff09;是 MyBatis 提供的一种强大机制&#xff0c;允许开发者在 SQL 映射语句执行过程中的特定节点进行拦截和定制处理。通过实现 org.apache.ibatis.plugin.Interceptor 接口并注册到 MyBatis 的配置文件中&#xff0c;可以插入自…

Python开发实例 – Lambda表达式

Python开发实例 – Lambda表达式 Python Development Examples – Lambda expression By JacksonML 普通的函数我们很常用&#xff0c;只需要通过 def 声明&#xff0c;并且产生一段代码&#xff0c;包含&#xff08;但不限于&#xff09;参数&#xff0c;返回&#xff08;或…

解决:‘chromedriver’ executable needs to be in PATH

解决&#xff1a;chromedriver’ executable needs to be in PATH 文章目录 解决&#xff1a;chromedriver’ executable needs to be in PATH背景报错问题报错翻译报错位置代码报错原因解决方法方法一&#xff1a;检查python安装路径有没有添加到环境变量里面方法二&#xff1…

element-ui 树形控件 实现点击某个节点获取本身节点和底下所有的子节点数据

1、需求&#xff1a;点击树形控件中的某个节点&#xff0c;需要拿到它本身和底下所有的子节点的id 1、树形控件代码 <el-tree:data"deptOptions"node-click"getVisitCheckedNodes"ref"target_tree_Speech"node-key"id":default-ex…

漏洞复现-万户OA text2Html 任意文件读取(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

MIT_线性代数笔记:线性代数常用计算公式

目录 1.矩阵的加法和数乘2.矩阵的乘法3.转置 Transposes 相关运算 1.矩阵的加法和数乘 2.矩阵的乘法 1)标准方法&#xff08;行乘以列&#xff09; 矩阵乘法的标准计算方法是通过矩阵 A 第 i 行的行向量和矩阵 B 第 j 列的列向量点积得到 cij。即我们常说的点积&#xff0c;也…

华清远见作业第三十二天——C++(第一天)

思维导图&#xff1a; 提示并输入一个字符串&#xff0c;统计字符中大写、小写个数、空格个数以及其他字符个数要求使用C风格完成。 代码&#xff1a; #include <iostream> #include<array> using namespace std;int main() {string str;cout << "请输…

Python Flask与APScheduler构建简易任务监控

1. Flask Web Flask诞生于2010年&#xff0c;是用Python语言&#xff0c;基于Werkzeug工具箱编写的轻量级、灵活的Web开发框架&#xff0c;非常适合初学者或小型到中型的 Web 项目。 Flask本身相当于一个内核&#xff0c;其他几乎所有的功能都要用到扩展&#xff08;邮件扩展…

【异常收集】IDEA启动项目遇到的异常汇总,包括插件异常,版本依赖异常,启动异常等以及对应的解决办法

该文章旨在记录开发中遇到的一些异常&#xff0c;以供遇到似错误进行参考修改 一、项目在多个环境下切换&#xff0c;有一次启动后编译失败&#xff0c;报异常 背景&#xff1a;项目在不同环境下有对应的分支&#xff0c;切换分支后运行项目&#xff0c;报错如下 错误:Kotlin:…

vivado DDS学习

实现DDS通常有两种方式&#xff0c;一种是读取ROM存放的正弦/余弦信号的查表法&#xff0c;另一种是用DDS IP核。这篇学习笔记中&#xff0c;我们要讲解说明的是VIVADO DDS IP核的应用。 目前本篇默认Phase Generator and SIN/COS LUT&#xff08;DDS&#xff09;的standard模式…

102.乐理基础-五线谱-高音谱号

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;五线谱的构造、谱号是什么-CSDN博客 谱号一共需要学习和了解四种&#xff0c;如下图&#xff1a;要牢牢掌握的是高音谱号和低音谱号这两种&#xff0c;如图1所示 首先高音谱号&#xff1a; 它大致范围&#xff0c;…

SpringBoot中集成XXL-JOB分布式任务调度平台,轻量级、低侵入实现定时任务

场景 XXL-JOB 分布式任务调度平台XXL-JOB XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 特性&#xff1a; 1、简单&#xff1a;支持通过Web页面对任务进行CRUD操作&#xff0c;操作简单&#xff0c;一分钟上手&…