小白也能看懂的BEV感知(一)

1. 引言

随着人工智能技术的不断发展,自动驾驶越来越多地出现在我们的视野中,智能化和电动化已经成为汽车行业的主旋律。无论是从研究的角度还是从工程的角度来看,它都像是一个巨大的宝藏,等待着我们去探索。本文将介绍这一技术的相关进展。
在这里插入图片描述

闲话少说,我们直接开始吧!

2. 自动驾驶典型框架

在这里插入图片描述

上图显示了自动驾驶的典型框架,其中最重要的任务是场景理解任务,一般也被称之为感知任务,该任务不断突破性能上限。为了帮助控制系统理解车辆周围的环境,自动驾驶系统使用了多种感知技术,其中最重要的是 SLAMBEV技术。这些技术可以帮助车辆了解自身的位置,探测周围的障碍物,了解障碍物的方位和距离,以及它们是静止的还是移动的,为后续的驾驶决策提供必要的信息。

3. BEV感知技术

BEV感知技术是自动驾驶领域的一项关键技术,它通过将来自车辆周围传感器的数据转换为鸟瞰视图,为自动驾驶系统提供了一种全新的环境感知方式。这种技术能够有效地解决传统2D感知中存在的遮挡和缩放问题,同时为车辆定位、轨迹预测和运动规划等下游任务提供更为直观和准确的三维空间信息。
在这里插入图片描述

对于 BEV 感知来说,关键在于将二维图像作为输入并输出BEV视角下的感知结果。如何在多摄像头视角下优雅地获得最佳特征表达是一个难题。接下来本文将讨论BEV感知不同的实现方案对比。

4. 自下而上的方法

目前,BEV感知研究主要基于深度学习方法。根据获取BEV特征组织方式的不同,主流方法可以分为自下而上和自上而下的方法。

自下而上 法采用了从2D3D的方法,一般步骤为:

首先,在2D视图中估计每个像素的深度,然后通过内参和外参将图像特征投射到 BEV 空间。
然后,通过融合多个视角生成 BEV 特征得到最终的融合后的特征。

在这里插入图片描述
这种方法的早期代表作是 LSS (Lift、Splat、Shoot)LSS BEVDepth 等作品基于LSS 框架进行了优化,是 BEV 算法的经典之作。
在这里插入图片描述
自下而上法的核心步骤是:

Lift: 在获取每个相机图像下采样的特征图后,针对特征图上每个特征点显示的估计对应的深度分布,进而获取包含图像特征的视锥
Splat: 结合相机的内外参将所有相机的视锥投影到 BEV 网格中,并对每个网格中的多个视角的视锥进行求和计算,形成融合不同视角图像特征的BEV特征图;
Shoot :在Shoot步骤中,会从BEV网格中提取特征,并将这些特征用于执行特定的感知任务。这可能包括使用深度学习模型,如卷积神经网络(CNN)或Transformer,来识别和分类BEV视图中的物体,预测它们的轨迹,或者进行其他相关的分析。

5. 自顶向下的方法

另一种方法是自顶向下,从3D 2D

它首先在 BEV 空间中初始化特征;
然后通过多层transformer与每个图像特征交互,最终得到 BEV 特征。

在这里插入图片描述

Transformer 是谷歌在 2017 年提出的一种基于注意力机制的神经网络模型。与传统的 RNNCNN 不同,Transformer 通过注意力机制挖掘序列中不同元素之间的联系,从而适应不同长度和结构的输入。
Transformer 首先在自然语言处理NLP领域取得了巨大成功,随后被应用于计算机视觉CV任务,并取得了显著效果。

在这里插入图片描述

这种自顶向下的方法逆转了基于LSSBEV的构建过程,利用 Transformer 的全局感知能力从多个透视图像的特征中查询相应特征,并将这些特征融合更新到 BEV 特征图中。特斯拉在其 FSD Beta版的视觉感知模块中采用了这种自上而下的方法,并在特斯拉 AI-Day 上展示了相关技术理念。

6. 小结

总的来说,自下而上和自上而下两种方法在 BEV 研究中都得到了广泛应用。自下而上的方法适用于早期的 BEV 研究,如 LSSBEVDet 等。自上而下法更倾向于使用 Transformer 等模型,利用全局感知能力,并在一些最新工作中取得了显著成果,如上海 AILab 团队的 BEVFormer。这两种方法各有优势,可以互为补充,为自动驾驶中的 BEV 感知发展提供丰富的技术选择。

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

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

相关文章

从51到ARM裸机开发实验(009)LPC2138 中断实验

一、场景设计 中断的概念在《从51到ARM裸机开发实验(007) AT89C51 中断实验》中已经介绍过,LPC2138的Keil工程创建在《从51到ARM裸机开发实验(005)LPC2138 GPIO实验》中已经介绍过。本次使用LPC2138来实现一个这样的场景:四个LED依次亮灭,时间…

测试人必看,小程序常见问题

小程序是一种轻盈的存在,用户无需为了使用它而下载和安装。它依附于微信这个强大的平台,只需轻轻一扫或一搜,它便跃然屏上,随时服务。小程序为我们带来更多前所未有的惊喜和便利,以下分享关于小程序相关的热门问题。 …

链表基础3——单链表的逆置

链表的定义 #include <stdio.h> #include <stdlib.h> typedef struct Node { int data; struct Node* next; } Node; Node* createNode(int data) { Node* newNode (Node*)malloc(sizeof(Node)); if (!newNode) { return NULL; } newNode->data …

逆向IDA中Dword,数据提取

我们可以看见数据是这样的&#xff0c;第一个是1cc 但是我们shifte就是 这个因为他的数据太大了&#xff0c;导致高位跑后面去了 这个时候&#xff0c;我们右键——convert——dword 这样就可以提取到争取的数据了 比如第一个数据 0x1cc a0xcc b0x1 print(hex((b<<8…

HarmonyOS开发实例:【事件的订阅和发布】

介绍 本示例主要展示了公共事件相关的功能&#xff0c;实现了一个检测用户部分行为的应用。具体而言实现了如下几点功能&#xff1a; 1.通过订阅系统公共事件&#xff0c;实现对用户操作行为&#xff08;亮灭屏、锁屏和解锁屏幕、断联网&#xff09;的监测&#xff1b; 2.通…

vmware安装ubuntu-18.04系统

一、软件下载 百度网盘&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1fK2kygRdSux1Sr1sOKOtJQ 提取码&#xff1a;twsb 二、安装ubuntu系统 1、把ubuntu-18.04的压缩包下载下来&#xff0c;并且解压 2、打开vmware软件&#xff0c;点击文件-打开 3、选择我们刚刚解…

6. Django 深入模板

6. 深入模板 6.1 Django模板引擎 Django内置的模板引擎包含模板上下文(亦可称为模板变量), 标签和过滤器, 各个功能说明如下: ● 模板上下文是以变量的形式写入模板文件里面, 变量值由视图函数或视图类传递所得. ● 标签是对模板上下文进行控制输出, 比如模板上下文的判断和循…

项目7-音乐播放器1+BCrypt加密

1.创建项目 1.1 引入依赖 1.2 yml相关配置 application.yml spring:profiles:active: prod mybatis:mapper-locations: classpath:mapper/**Mapper.xmlconfiguration:map-underscore-to-camel-case: true #配置驼峰⾃动转换log-impl: org.apache.ibatis.logging.stdout.StdO…

openGauss学习笔记-261 openGauss性能调优-使用Plan Hint进行调优-将部分Error降级为Warning的Hint

文章目录 openGauss学习笔记-261 openGauss性能调优-使用Plan Hint进行调优-将部分Error降级为Warning的Hint261.1 功能描述261.2 语法格式261.3 示例261.3.1 忽略非空约束261.3.2 忽略唯一约束261.3.3 忽略分区表无法匹配到合法分区261.3.4 更新/插入值向目标列类型转换失败 o…

【算法】数组元素循环右移k位,并要求只用一个元素大小的附加存储,元素移动或交换次数为O(n)

两种写法思路&#xff1a; 思路一&#xff1a;三次倒置 前言&#xff1a;C/C函数 reverse 是 左闭右开区间的&#xff0c;作用是将指定范围数组元素全部倒置&#xff0c;数组从 0 开始&#xff0c;这里主要讲解思路&#xff0c;就直接用 函数 reverse 简化过程 这个方法 实现 …

vue3第十八节(diff算法)

引言&#xff1a; 上一节说了key的用途&#xff0c;而这个key属性&#xff0c;在vue的vnode 中至关重要&#xff0c;直接影响了虚拟DOM的更新机制&#xff1b; 什么场景中会用到diff算法 如&#xff1a;修改响应式属性需要重新渲染页面&#xff0c;会重新执行render渲染函数返…

为了执行SQL语句,MySQL的架构是怎样设计的

1. 把MySQL当个黑盒子一样执行SQL语句 上一讲我们已经说到&#xff0c;我们的系统采用数据库连接池的方式去并发访问数据库&#xff0c;然后数据库自己其实也会维护一个连 接池&#xff0c;其中管理了各种系统跟这台数据库服务器建立的所有连接 我们先看下图回顾一下 当我们的…

数据可视化-ECharts Html项目实战(12)

在之前的文章中&#xff0c;我们深入学习ECharts特殊图表中的矩形树图以及Echarts中高级功能的多图表联动。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 数…

Directory Monitor:全方位监控文件系统变动的专业利器

目录 一、软件介绍 二、软件功能 三、软件特点 四、安装说明 五、使用说明 一、软件介绍 Directory Monitor是一款强大易用的实时文件系统监视工具&#xff0c;它由Michael Humpa开发&#xff0c;专为满足用户监控特定目录下文件和子目录变化的需求。无论是为了保障系统安…

python与设计模式之工厂模式的那些事儿

一、工厂模式 工厂模式实现了按需创建的最佳模式&#xff0c;其目的是为了隐藏创建类的细节与过程&#xff0c;通过一个统一的接口来创建所需的对象。 话说没了皇位争夺权的皇三接到了一个外征的工作&#xff0c;始皇给了5个亿的经费让皇三组建一个军队。打权总是要进行武器采…

【Java开发指南 | 第二篇】标识符、Java关键字及注释

读者可订阅专栏&#xff1a;Java开发指南 |【CSDN秋说】 文章目录 标识符Java关键字Java注释 标识符 Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。 所有的标识符都应该以字母&#xff08;A-Z 或者 a-z&#xff09;,美元符&#xff08;$&#xff0…

CentOS 7安装、卸载MySQL数据库

说明&#xff1a;本文介绍如何在CentOS 7操作系统下使用yum方式安装MySQL数据库&#xff0c;及卸载&#xff1b; 安装 Step1&#xff1a;卸载mariadb 敲下面的命令&#xff0c;查看系统mariadb软件包 rpm -qa|grep mariadb跳出mariadb软件包信息后&#xff0c;敲下面的命令…

【Qt】:事件的处理

系统相关 一.鼠标事件二.键盘事件三.定时器 事件是应用程序内部或者外部产生的事情或者动作的统称。在Qt中使用一个对象来表示一个事件。所有的Qt事件均继承于抽象类QEvent。事件是由系统或者Qt平台本身在个同的的刻友出的。当用广投下鼠标、敲下键盘&#xff0c;或者是窗口需要…

第四百六十二回

文章目录 1. 概念介绍2. 实现方法3. 示例代码4. 内容总结 我们在上一章回中介绍了"关于MediaQuery的优化"相关的内容&#xff0c;本章回中将介绍readMore这个三方包.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的readMore是一个…

【团体程序设计天梯赛 往年关键真题 25分题合集 详细分析完整AC代码】(L2-001 - L2-024)搞懂了赛场上拿下就稳了

L2-001 紧急救援 最短路路径打印 样例 输入1 4 5 0 3 20 30 40 10 0 1 1 1 3 2 0 3 3 0 2 2 2 3 2输出1 2 60 0 1 3分析 用一遍dijkstra算法。设立 n u m [ i ] num[i] num[i]和 w [ i ] w[i] w[i]表示从出发点到i结点拥有的路的条数&#xff0c;以及能够找到的救援队的数目…