Fast-BEV: A Fast and Strong Bird’s-Eye ViewPerception Baseline

news2024/11/16 22:56:41

本文提出了一种简单但有效的框架,称为Fast-BEV,它能够在车载芯片上进行更快的BEV感知。

Fast-BEV框架包括五个部分:

(1) 一个轻量级且易于部署的视图变换方法,能够快速将2D图像特征转化为3D体素空间;

(2) 一个多尺度图像编码器,利用多尺度信息以提升性能;

(3) 一个高效的BEV编码器,特别设计用于加速车载推理。

(4) 一种针对图像和BEV空间的强数据增强策略,以避免过拟合;

(5) 一种多帧特征融合机制,以利用时间信息。

在这些方法中,(1) 和(3) 使得Fast-BEV在车载芯片上具有快速推理和易于部署的特点,而(2)、(4) 和(5) 确保了Fast-BEV的竞争性性能。

作者认为基于query的变换和基于隐式或显式的depth变换在车载芯片上难以部署,并且推理速度较慢:

  • 基于查询的变换方法如图1(a)所示。由于解码器需要在transformer中使用注意力机制进行计算,实际部署的芯片需要能够支持注意力操作(涉及矩阵乘法和多层感知机(MLP)层),因此这些方法通常需要专用芯片来支持。

  • 基于深度的变换方法如图1(b)所示。这些方法通常需要加速不友好的体素池化操作,甚至多线程CUDA核心也可能不是最佳解决方案。此外,这在资源受限或不支持CUDA加速推理库的芯片上运行不方便。此外,它们在推理时耗时较长,这阻碍了它们的实际部署

 本文提出的方法如图C所示,遵循M2BEV的原则——该方法假设在图像到BEV(2D到3D)的视图变换过程中,沿摄像头射线的深度分布是均匀的——作者提出了Fast-Ray变换,如图1(c)所示。借助查找表(Look-Up-Table)和多视图到单体素的操作,Fast-Ray变换将BEV变换的速度提升到了一个新的水平。

基于Fast-Ray变换,我们进一步提出了Fast-BEV,这是一种更快且更强大的全卷积BEV感知框架。所提出的Fast-BEV由五个部分组成:Fast-Ray变换、多尺度图像编码器、高效BEV编码器、数据增强和时间融合。这些部分共同构成了一个框架,使Fast-BEV具有快速的推理速度和竞争力的性能。

具体来说:

  1. Fast-Ray变换:我们创新性地提出了Fast-Ray变换,这是一种轻量级且易于部署的视图变换方法,用于快速推理。它通过沿摄像机射线将多视图二维图像特征投影到三维体素来获得BEV表示。此外,我们还提出了两种操作:查找表(Look-Up-Table)和多视图到单体素(Multi-View to One-Voxel)操作,以优化车载平台的处理过程。

  2. 多尺度图像编码器:现有方法中的视图变换非常耗时,多尺度投影操作会有较大的时间开销,因此在实际中难以使用。基于Fast-Ray变换,我们的2D到3D投影速度极快,使得多尺度投影操作的多尺度图像编码器成为可能。具体来说,与大多数现有方法使用单一尺度特征作为图像编码器输出不同,我们在图像编码器输出部分使用了一个三层的多尺度特征金字塔网络(FPN)结构,并在其后进行了相应的三层多尺度投影操作。

  3. BEV编码器:对于BEV编码器,我们使用了非常少的基本残差网络作为基础BEV编码器。在此基础上,使用了三种降维操作来加速编码器,分别是“空间到通道”(S2C)、多尺度拼接融合(MSCF)和多帧拼接融合(MFCF)。

  4. 数据增强策略:我们进一步引入了强大的数据增强策略, 例如翻转、旋转、缩放等,适用于图像和BEV空间。这种在图像空间和BEV空间分别进行的数据增强策略不仅避免了过拟合,还取得了更好的性能。

  5. 时间融合:我们进一步引入了时间融合,通过引入时间特征融合模块,将Fast-BEV从仅空间的处理扩展到时空处理,使当前关键帧能够利用历史帧的信息。

下面将会对上述内容做详细解释!!!

本文主要评估指标为FPS、NDS

NDS指的是NuScenes Detection Score,即NuScenes检测评分。这是一个综合评价自动驾驶感知算法性能的指标,特别用于评估三维目标检测任务。NDS结合了多种评估指标,包括平均精度(mAP)、位置误差、尺寸误差、方向误差、速度误差和属性误差等,以提供一个综合的性能得分。具体来说,NDS通过对这些单项指标进行加权平均计算,反映了算法在不同方面的整体表现。较高的NDS意味着算法在各个评估指标上都表现良好。

基于摄像头的周围3D物体检测

在基于摄像头的3D物体检测中,新提出的多视图变换技术将任务重新定义为立体匹配问题,其中周围图像特征被转换为立体表示,如鸟瞰图(BEV)或3D体素。以下是一些相关的方法:

  • LSS:通过在预测的深度分布上投影像素级特征生成相机截锥体(frustums),然后将这些截锥体转换为BEV网格。

  • OFT:通过将预定义的体素投影到图像特征上来生成体素表示。

  • BEVDet:将LSS应用于全卷积方法,首先验证了显式BEV的性能。

  • M2BEV:遵循OFT的视图变换路线,不预测深度信息,并在此基础上探索BEV多任务感知。

  • BEVDepth:在LSS的基础上进一步扩展,引入了稳健的深度监督和高效的池化操作。

  • DETR3DGraph-DETR3D:使用网格形状的BEV查询,将每个BEV查询解码为3D参考点,从图像中采样相关的2D特征进行细化。

  • BEVFormer:在2D到3D的变换中引入空间交叉注意力,使每个查询能够在摄像头视图之间聚合相关的2D特征。

  • PETR:提出了3D坐标生成来感知3D位置感知特征,避免生成3D参考点。

基于摄像头的多视图时间融合

基于摄像头的方法尝试在检测过程中引入多帧融合,BEV作为一种中间特征,同时结合了来自多个摄像头的视觉信息,非常适合进行时间对齐。以下是一些相关的方法:

  • BEVDet4D:扩展了BEVDet,通过对齐多帧特征并利用自车运动中的空间相关性来改进检测。

  • PETRv2:直接在3D空间中实现时间对齐,基于3D位置嵌入的视角。

  • BEVFormer:设计了一个时间自注意力机制,用于递归地融合历史BEV信息,类似于RNN模型中的隐藏状态。

Fast-Ray视图变换

在介绍Fast-Ray之前,我们先回顾一下LSS和Transformer这两种方案的特点

基于查询的方法通过Transformer中的注意力机制获得3D BEV特征。这个过程可以表示为公式1:

其中:

在一些计算平台上,Transformer架构的注意力操作存在部署挑战,这阻碍了这些方法的实际应用。

基于深度的方法通过计算2D特征与预测深度的外积来获得3D BEV特征。具体过程如下公式2所示:

这些方法在支持CUDA多线程的GPU平台上可以显著提高推理速度,但在较大分辨率和特征维度下会遇到计算速度瓶颈,并且在没有推理库支持的非GPU平台上迁移起来并不友好。

Fast-BEV 

M2BEV是首批解决多摄像头多任务感知并使用统一BEV表示的研究之一,由于其不依赖于昂贵的视图变换器或深度表示,具有很大的应用潜力,特别是在车载平台上。M2BEV的输入为多摄像头RGB图像,输出为预测的3D边界框和地图分割结果。它包括以下几个部分:

  • 2D图像编码器:从多摄像头图像中提取图像特征;
  • 图像到BEV(2D→3D)视图变换模块:将2D图像特征映射到3D BEV空间;
  • 3D BEV编码器:处理3D特征;
  • 任务特定头部:执行感知任务,如3D目标检测和地图分割。

详细内容:M2BEV-CSDN博客

受到其简洁性的启发,我们提出了Fast-BEV,在速度和性能方面都表现出色。如图2所示,Fast-BEV以多摄像头图像为输入,预测包括速度在内的3D边界框作为输出。其主要框架可以分为五个关键模块:

Fast-Ray Transformation

视图转换是将特征从2D图像空间转换到3D鸟瞰图(BEV)空间的关键组件,通常在整个流水线中消耗大量时间。

首先假设深度分布沿光线方向是均匀的。

这种假设的优点是,一旦获得了相机的内参和外参,我们就可以轻松地确定2D到3D的投影关系。由于这里不需要使用可学习参数,我们可以轻松计算图像特征图中的点和BEV特征图之间的对应关系矩阵。

基于这一假设,我们从两个方面进一步加速这一过程:

  1. 预计算投影索引(查找表):通过预先计算从2D图像空间到3D BEV空间的投影索引,在实际运行时快速查找对应关系,避免重复计算。

  2. 生成密集体素特征(多视图到单体素):通过将所有相机视图的图像特征投影到同一个体素特征上,形成一个密集的体素结构,减少了在不同视图间进行稀疏体素特征聚合的开销。

查找表(Look-Up-Table)

查找表中的投影索引是从2D图像空间到3D体素空间的映射索引。由于在感知系统构建时,相机的位置及其内参和外参是固定的,并且我们的方法不依赖于数据相关的深度预测或变换器,因此投影索引对于每一个输入都是相同的。这样一来,我们就不需要在每次迭代中都计算相同的索引,而是可以预先计算并存储固定的投影索引

我们提出预先计算固定的投影索引,并将其存储为静态查找表(Look-Up-Table)。在推理过程中,我们可以通过查询查找表来获得投影索引,这在边缘设备上是一种非常低成本的操作。此外,如果我们从单帧扩展到多帧,我们也可以轻松地预先计算内参和外参,并将其预先对齐到当前帧

如算法1所示,我们通过相机参数矩阵投影构建与输出3D体素空间具有相同维度的查找表LUT。我们遍历每个体素单元,并通过投影计算与3D坐标相对应的2D像素坐标。如果获得的2D像素坐标地址合法,我们将它们填充到LUT中,以建立一个与数据无关的索引映射。

多视图到单体素

基础的视图转换使用了简单的体素聚合操作,这种操作为每个摄像机视角存储一个离散的体素特征,然后聚合它们生成最终的体素特征。如图 3(a) 所示,这是每个离散体素填充的鸟瞰图。由于每个摄像机的视角有限,每个体素特征非常稀疏,例如,只有大约 17% 的位置是非零的。我们发现,这些体素特征的聚合非常昂贵,因为它们的尺寸巨大。

也就是之前MBEV所使用的方法,每个图像去分别生成体素特征,然后再去融合,融合过程消耗时间很大,而作者提出的方法利用LUT去直接将不同view的特征融合到统一体素空间,节省了时间成本

我们提出了生成一个密集体素特征的方法,以避免昂贵的体素聚合。具体来说,我们让所有摄像机视角的图像特征投影到相同的体素特征上,最终生成一个密集的体素,这种方法被称为多视图到单体素。如图 3(b) 所示,这是密集体素填充的鸟瞰图。

Fast-Ray 转换算法(如算法 2 所示)将输入的多视图 2D 图像特征转换为单体素 3D 空间,其中每个体素单元由预先计算的查找表(LUT)填充对应的 2D 图像特征。对于多视图重叠区域的情况,我们直接采用第一个遇到的视角来加快查找表的构建速度。结合查找表和多视图到单体素的加速设计,视图转换操作具有极快的投影速度。

Multi-Scale Image Encoder

 Efficient BEV Encoder

S2C操作,降低维度,多尺度拼接融合(MSCF)操作多帧拼接融合(MFCF)操作

值得注意的是,在使用MFCF操作符之前,通过多尺度投影获得的BEV特征在不同的尺度上。我们首先将多尺度BEV特征在X和Y维度上采样到相同的大小,比如200×200。

MSCF和MFCF操作符在通道维度上拼接多尺度、多帧的特征,并将它们从高参数量融合为低参数量:

 此外,通过实验发现,BEV编码器的块数和3D体素分辨率的大小对性能的影响相对较小,但会占用大量计算时间,因此更少的块数和较小的体素分辨率也更加重要。

Data Augmentation

文章使用了常见的数据增强方法,在2D图像和BEV中,用于增强模型的泛化性:

图像增强

在3D物体检测中,数据增强比2D检测更具挑战性,因为3D场景中的图像与3D相机坐标有直接关系。因此,如果我们对图像进行数据增强,也需要更改相机内参矩阵 。在增强操作上,我们基本上遵循常见操作,例如翻转、裁剪和旋转。在图5的左侧部分,我们展示了一些图像增强的例子。

BEV增强

与图像增强类似,可以对BEV空间应用类似的操作,例如翻转、缩放和旋转。需要注意的是,增强变换应该同时应用于BEV特征图和3D真值框,以保持一致性。BEV增强变换可以通过相应地修改相机外参矩阵来控制。在图5的右侧部分,我们展示了一种BEV增强类型——随机旋转增强。

Temporal Fusion

受到BEVDet4D 和 BEVFormer的启发,我们也将历史帧引入当前帧以进行时序特征融合。历史帧的特征通过空间对齐操作和连接操作与当前帧的相应特征进行融合。时序融合可以被视为帧级别的特征增强,在一定范围内使用更长的时间序列可以带来更好的性能提升。

具体来说,我们对当前帧进行采样,选择三个历史关键帧,每个关键帧之间有0.5秒的间隔。我们采用了BEVDet4D中的多帧特征对齐方法。正如图6所示,在获取到四个对齐的BEV特征后,我们直接将它们进行连接并输入到BEV编码器中。

BEVDet4D:多帧时序信息融合方法详解-CSDN博客

在训练阶段,历史帧特征是使用图像编码器在线提取的。在测试阶段,历史帧特征可以离线保存,并直接取出以加速计算。

通过将历史帧的特征与当前帧的特征进行时序融合,我们能够有效利用之前的时序信息,提高3D检测模型的准确性和鲁棒性。

Detection Head

给定损失函数公式为:

权重系数

是用于平衡不同损失项的权重系数,这些系数在训练中可以调节,以平衡各个损失项的影响。

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

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

相关文章

DAY8:DNS查询过程 | CDN的概念和功能 | Cookie和Session是什么?有什么区别?

目录 DNS查询过程 CDN的概念和功能 Cookie和Session是什么?有什么区别? Cookie和Session的概念 Cookie和Session的区别 DNS查询过程 DNS用来将主机名和域名转换为IP地址,其查询过程一般通过以下步骤: 本地DNS缓存检查&…

岩石检测检测系统源码分享 # [一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

岩石检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

九方智投控股已完成九章证券领域大模型算法备案

九方智投控股已完成九章证券领域大模型算法备案 8月29日九方智投控股(股票代码:09636.HK)公布其截至2024年6月30日的上半年业绩报告,财报显示,集团总收益达到了约人民币898.1百万元,较去年同期的约人民币86…

[000-01-008].第01节:Consul环境搭建

1.Windows环境搭建环境: 1.1.单机版 a.下载 1.官网说明: b.安装: 1.下载完成后只有一个consul.exe文件,硬盘路径下双击运行,查看版本号信息 c.服务启动: 1.使用开发模式启动:consul ag…

1899. 最满意的方案

代码 #include<bits/stdc.h> using namespace std; int a[100100]; int main() {int x,m,n,s0,i,l,r,mid;cin>>m>>n;for(i1;i<m;i)cin>>a[i];sort(a1,am1);for(i1;i<n;i){cin>>x;if(x<a[1]) ssa[1]-x;else if(x>a[m]) ssx-a[m];els…

Makefile 基础与常用语法详解

目录 一、引言 二、Makefile 基础概念 1.目标、依赖和命令 2.文件名和搜索路径 3.执行顺序和依赖关系 三、Makefile 常用语法 1.变量和宏定义 2.自动变量 3.模式规则 4.条件判断 5.循环 6.伪目标 四、Makefile 实际应用示例 五、总结 一、引言 在软件开发过程中&a…

断链保护器在矿山机械中的安全守护与效能提升应用探析

在严峻复杂的矿山作业环境下&#xff0c;断链保护器作为一项不可或缺的安全技术装备&#xff0c;扮演着守护生命财产安全、维护生产秩序的关键角色&#xff0c;特别是在确保矿山机械稳定高效运行方面&#xff0c;其价值和意义显得尤为重要。 一、强化安全基石&#xff0c;守护矿…

Project 2021图文安装教程及下载

Microsoft Project是一个国际上享有盛誉的通用的项目管理工具软件&#xff0c;凝集了许多成熟的项目管理现代理论和方法&#xff0c;可以帮助项目管理者实现时间、资源、成本的计划、控制。Microsoft Project 不仅可以快速、准确地创建项目计划&#xff0c;而且可以帮助项目经理…

2024年,还有不用这个技术的网站?

大家好&#xff0c;我是程序员鱼皮。 不知道大家有没有听说过 “服务端渲染” 这样一种技术&#xff1f;如今这个技术越来越流行&#xff0c;尤其对于以内容为核心的网站&#xff0c;使用服务端渲染可以大幅提升网站被搜索到的概率&#xff0c;所以很多企业级网站都用到了这个…

无人机之遥控器防水性能篇

无人机遥控器的防水性能是评估其耐用性和适应不同环境能力的重要指标。随着无人机技术的不断发展&#xff0c;越来越多的遥控器在设计时融入了防水元素&#xff0c;以满足用户在不同天气条件下的使用需求。以下是对无人机遥控器防水性能的详细探讨&#xff1a; 一、防水等级与…

安装部署harbor及docker-compose的 实例

部署harbor python --version yum -y install python2-pip # 查看版本信息 pip list # 更新pip pip install --upgrade pip pip install --upgrade pip20.3 -i https://mirrors.aliyun.com/pypi/simple # 安装docker-compose pip install docker-compose --…

Java并发编程(21)—— CurrentHashMap源码分析

java 并发包中提供的 CurrentHashMap是一个线程安全且高效的HashMap ,也是面试的高频考点。 下面将围绕主题:ConcurrentHashMap 如何实现高效地线程安全?以及在Java8中它从设计实现上有哪些演进? 这篇文章一开始我以为会比较简单,但是在深入源码分析时,遇到了很大的阻碍,…

一文彻底搞懂大模型 - 语言模型的发展历程

语言模型的发展历程 语言模型&#xff08;LM&#xff0c;Language Model&#xff09;的发展历程可以清晰地划分为三个主要阶段&#xff1a;统计语言模型、神经网络语言模型以及基于Transformer的大语言模型。每个阶段的模型都在前一个阶段的基础上进行了改进和优化&#xff0c…

[000-01-008].第02节:Consul在实际中应用

我的后端学习大纲 SpringCloud学习大纲 1.使用Consul后&#xff0c;服务架构设计&#xff1a; 2.实现把支付服务provider8001注册到consul中 2.1.改POM&#xff1a; <!--SpringCloud consul discovery --> <dependency><groupId>org.springframework.cloud&…

超详细超实用!!!java开发之接口开发链接数据库(五)

云风网 云风笔记 云风知识库 日常项目接口开发&#xff0c;基本都是通过数据库获取存储数据通过接口反馈给前端&#xff0c;所以我们需要给项目连接上数据库 一、项目安装依赖 1、MySQL数据库 MySQL是一个关系型数据库管理系统&#xff0c;一般优势就是免费开源、易用、稳定性…

Spring 事务 数据库连接获取和释放原理

##调试demo Service public class CrmUserService {Autowiredprivate CrmUserDao crmUserDao;Autowiredprivate CrmLoginLogDao crmLoginLogDao;Transactionalpublic void getUser() {System.out.println("Service::"Thread.currentThread().getName());System.out.…

趣味算法------单一背包问题(01背包问题)贪心算法解决

目录 ​编辑 前言 例题 题目描述 输入输出格式 解题思路 具体代码 C语言代码 python代码 总结 前言 单一背包问题&#xff08;0-1 Knapsack Problem&#xff09;是组合优化中的一个经典问题&#xff0c;它可以形式化为&#xff1a;给定一组物品&#xff0c;每个物品都…

微信小程序SSL证书

微信小程序开发投入项目使用就需要用到SSL证书&#xff0c;主要原因SSL证书是让服务器的数据采取加密协议传输&#xff0c;避免来自中间人劫持或数据泄漏&#xff0c;所以在小程序交互数据过程中起到了关键性的作用。 为考虑到多个手机版本的兼容性&#xff0c;所以微信小程序…

Linux提升篇-Linux虚拟网络介绍

一、Linux虚拟网络-网桥 和tap/tun、veth-pair 一样&#xff0c;Bridge 也是一种虚拟网络设备&#xff0c;所以具备虚拟网络设备的所有特性&#xff0c;比如可以配置 IP、MAC 等。 除此之外&#xff0c;Bridge 还是一个交换机&#xff0c;具有交换机所有的功能。 对于普通的网…