小白也能看懂的BEV感知技术(二)

news2025/1/19 3:02:25

1. 引言

在自动驾驶的领域中,BEVBird's Eye View,鸟瞰图)感知技术扮演着至关重要的角色。它允许自动驾驶车辆从上帝视角“看到”周围的环境,就像一只鸟从空中俯瞰地面一样。这项技术对于理解车辆周围的复杂场景至关重要。虽然BEV感知技术听起来可能有点高深莫测,别担心,本文将继续用简单的语言解释这一技术。

2. BEV纯视觉感知

BEV是自动驾驶领域一个庞大的算法家族,包括不同方向的算法选择。其中,以视觉感知为主的技术路线由特斯拉主导,算法主要建立在多个摄像头上。另一大流派主要利用激光雷达、毫米波雷达和多个摄像头进行感知。许多高阶智驾公司都采用了融合式算法,谷歌的Waymo也是如此。

基于BEV的视觉感知指的是基于多个视角的图像序列作为输入,算法需要将这些视角转换为 BEV 特征并对其进行感知,例如输出物体的三维检测或在BEV视图下进行语义分割。与激光雷达相比,视觉感知具有更丰富的语义信息,但缺乏精确的深度测量功能。此外,基于BEV的深度神经网络模型需要在训练阶段识别图图像中的每个物体。如果遇到训练集中没有的物体类型,或者模型表现不佳,就会出现无法识别的问题。

为了解决通用障碍物识别问题,特斯拉引入了 Occupancy Network, 该项技术改变了感知策略,不再强调物体细分类类别,而是关注道路上是否有障碍物占用。这种障碍物可以用三维体素Voxel来表示,这种方法更为贴切,无论障碍物的具体类型如何,只要当前行驶空间上不被障碍物占用,就都能保证车辆不会撞上障碍物。

3. BEVFormer技术

对于自动驾驶车辆来说,对BEV空间中目标的类型可以大概分为以下两类:

  • 不经常变化的目标: 如可行使区域,路面,车道,建筑物,植被,信号灯等一些其他未分类的静态物体
  • 可变的目标: 即可以移动的物体,如行人、骑行人、汽车、卡车、锥桶等。

这种分类的目的是方便自动驾驶系统进行后续的驾驶规划和控制。在BEV的感知阶段,算法根据物体出现在BEV网格上的概率进行打分,并通过Softmax函数对概率进行归一化处理,最后选择概率最高的物体类型对应的网格的类别预测结果。

在这里插入图片描述

纯视觉BEV感知中最经典的结构就是BEVFormer技术,该技术如上图所示,主要包括以下几个组件:

  • 使用BackboneNeck从环视图像中提取多尺度图像特征(ResNet101-DCN + FPN)
  • 编码器部分,这里包括基于空间的交叉注意力模块以及基于时序的自注意力模块,主要使用Transformer中交叉注意力模块来实现环视图像特征转换为BEV特征
  • Deformable DETR中解码器类似的解码器,主要用于实现3D目标检测的分类和定位任务
  • 使用匈牙利匹配算法来区分正负样本,并使用FocalLoss + L1Loss作为总的损失函数来优化网络参数

在算法创新方面,BEVFormer 采用 Transformer结构来进行BEV时空特征融合。它利用预定义的BEV Query与空间/时间特征进行交互,进而进行时空信息上的融合。这种方法能有效捕捉三维场景中物体的时空关系,并生成更强大的表征。这些创新使 BEVFormer 能够更好地处理环境中的物体检测和场景理解任务。

4. 多传感器融合

BEV 融合派在自动驾驶领域的主要任务是融合各类传感器的数据,包括摄像头、激光雷达、毫米波雷达以及高精度地图等。这种融合机制可以充分利用各个传感器的优势,提高自动驾驶系统对周围环境的感知和理解能力。
激光雷达的优势在于可以直接测量物体的距离,其精度远高于视觉推测的场景深度。激光雷达通常将测量结果转化为深度数据或点云,这两种数据形式的应用历史悠久,成熟的算法可以直接借用,从而减少了开发的工作量。

此外,激光雷达在夜间或恶劣天气条件下仍能正常工作,而在这种情况下,摄像头可能会受到很大影响,导致无法准确感知周围环境。

总之,融合派的目标是有效整合多传感器数据,使自动驾驶系统在各种复杂条件下获得更全面、更准确的环境感知,从而提高驾驶的安全性和可靠性。融合技术在自动驾驶领域发挥着关键作用。它融合了来自不同传感器的信息,使整个系统能更好地感知和理解周围环境,做出更准确的决策和规划。

5. 为什么选择BEV感知?

首先,自动驾驶本身是一个 3DBEV 感知问题。使用 BEV 视角可以提供更全面的场景信息,帮助车辆感知周围环境并做出准确决策。在传统的二维视角中,由于透视效应,物体可能会出现遮挡和比例失调等问题,而 BEV 视角可以有效解决这些问题。同时,BEV技术还能将二维图像特征精确转换为三维BEV特征,并能将提取的 BEV特征应用于不同的感知任务。

另一个重要原因是BEV可以方便地促进多模态融合。自动驾驶系统通常使用多种传感器,如摄像头、激光雷达、毫米波雷达等。BEV视角可以将不同传感器的数据统一表征在同一平面上,这使得传感器数据的融合和处理更加方便直接。

在现有技术中,将单视角检测直接扩展到多视角检测是不可行的。这是因为单视角检测器只能处理单个摄像头的图像数据,而在多视角的情况下,检测结果需要根据相应摄像头的内外参进行转换,才能完成多视角检测。然而,这种简单的后处理方法无法用于数据驱动训练。这使得我们无法轻松地使用端到端训练模型的方式来改进自动驾驶感知系统。为了解决这些问题,基于TransformerBEV 感知技术应运而生。

6. 为什么选择BEV+Transformer结构?

为什么 BEV+Transformer结构会成为主流模式?其背后的关键在于 “第一性原则”,即智能驾驶应该越来越接近 “像人一样驾驶”,而反映到感知模型本身,BEV 是一种更自然的表达方式,由于全局注意力机制,Transformer结构更适合进行视图转换。目标BEV域中的每个位置访问源域图像空间中任何位置的距离都是相同的,克服了CNN 中卷积层的局部有限感受野的缺点。此外,与传统的 CNN 相比,Transformer结构还具有更好的可解释性和灵活性。

随着产学研的推进,BEV+Transformer近期已从普及走向量产,这在当前智能驾驶商业颠覆的背景下,或许是一个难得的亮点。

7. 总结

本文重点介绍了纯视觉BEV感知和多传感器BEV感知的技术细节,并详细阐述了BEV感知的技术优势以及选择BEV+ Transformer结构的必要性。
您学废了嘛?

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

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

相关文章

【Linux系统】地址空间 Linux内核进程调度队列

1.进程的地址空间 1.1 直接写代码&#xff0c;看现象 1 #include<stdio.h>2 #include<unistd.h>3 4 int g_val 100;5 6 int main()7 {8 int cnt 0;9 pid_t id fork();10 if(id 0)11 {12 while(1)13 {14 printf(&…

javaagent使用

Java Agent是什么&#xff1f; Java Agent是Java平台提供的一个强大工具&#xff0c;它可以在运行时修改或增强Java应用程序的行为。是在JDK1.5以后引入的&#xff0c;它能够在不影响正常编译的情况下修改字节码&#xff0c;相当于是在main方法执行之前的拦截器&#xff0c;也叫…

Python | Leetcode Python题解之第32题最长有效括号

题目&#xff1a; 题解&#xff1a; class Solution:def longestValidParentheses(self, s: str) -> int:stack[]maxL0nlen(s)tmp[0]*n #标记数组cur0for i in range(n):if s[i](:stack.append(i)else:if stack:jstack.pop()if s[j](:tmp[i],tmp[j]1,1 #匹配成…

【C++】:C++关键字,命名空间,输入输出,缺省参数

目录 一&#xff0c;C关键字(C98)二&#xff0c;命名空间2.1 命名冲突2.2 关键字namespace2.2.1 命名空间中可以定义变量/函数/类型2.2.2 命名空间可以嵌套2.2.3 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。 2.3 命名空间的使用2.3.1 指定…

多模态AnyGPT——整合图像、语音和文本多模态大规模语言模型算法原理与实践

概述 大规模语言模型在理解和生成人类语言方面具有非凡的能力&#xff0c;但迄今为止&#xff0c;它们的能力主要局限于文本处理。然而&#xff0c;现实世界是一个多模式的环境&#xff0c;信息通过视觉、听觉和触觉等多种感官进行交换。融入这种多样性是开发下一代系统的主要…

桥接模式【结构型模式C++】

1.概述 桥接模式是一种结构型设计模式&#xff0c;是用于把抽象化与实现化解耦&#xff0c;使得二者可以独立变化。这种类型的设计模式属于结构型模式&#xff0c;它通过提供抽象化和实现化之间的桥接结构&#xff0c;来实现二者的解耦。 这种模式涉及到一个作为桥接的接口&am…

高斯溅射融合之路(一)- webgl渲染3d gaussian splatting

大家好&#xff0c;我是山海鲸的技术负责人。之前已经写了一个GIS融合系列。其实CesiumJS的整合有相当的难度&#xff0c;同时也有很多方面的工作&#xff0c;很难在几篇文章内写完&#xff0c;整个山海鲸团队也是投入了接近两年的时间&#xff0c;才把周边整套工具链进行了完善…

算法复杂度分析笔记

基本定义间的关系 算法介绍 算法分析 时间复杂度 用数量级刻画&#xff1a;忽略所有低次幂项和系数 eg1: eg2: eg3: eg4: 小结 空间复杂度 eg: 总结

Vue3从入门到实践:深度了解新组件

1.Teleport 概念&#xff1a;Teleport&#xff08;传送门&#xff09;是一个新的特性&#xff0c;用于在DOM中的任意位置渲染组件。它允许你将组件的内容渲染到DOM中的另一个位置&#xff0c;而不受组件层次结构的限制。 下面举出例子解释&#xff1a; 1.新建App.vue文件作…

YOLOv9改进策略 | Neck篇 | 2024.1最新MFDS-DETR的HS-FPN改进特征融合层(轻量化Neck、全网独家首发)

一、本文介绍 本文给大家带来的改进机制是最近这几天最新发布的改进机制MFDS-DETR提出的一种HS-FPN结构&#xff0c;其是一种为白细胞检测设计的网络结构&#xff0c;主要用于解决白细胞数据集中的多尺度挑战。它的基本原理包括两个关键部分&#xff1a;特征选择模块和特征融合…

vue快速入门(三十一)vscod开发vue需要下载的插件

步骤很详细&#xff0c;直接上教程 上一篇 暂时就这两样足矣&#xff0c;有新的以后再更新&#xff08;别下载太多&#xff0c;可能会冲突&#xff09; 测试一下&#xff1a; 提示功能&#xff1a; 代码补全功能&#xff1a;

基于弹簧鞘复合纱和迁移学习算法的可穿戴人体重构和智能试衣系统

研究背景 在信息时代和元宇宙的背景下&#xff0c;虚拟服装设计对满足服装行业的个性化需求至关重要。与传统方法不同&#xff0c;虚拟试衣节省时间、方便客户&#xff0c;并提供多样化的款式。准确得测量人体围度并重构出人体的模型是虚拟试衣的关键。为了实现动态人体重构&a…

第Y7周:训练自己的数据集

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制&#x1f680; 文章来源&#xff1a;K同学的学习圈子 目录 一、下载YOLOv8 二、配置环境 三、准备工作 四、运行 出现报错&#xff1a;…

《QT实用小工具·三十一》基于QT开发的访客管理平台demo2

1、概述 源码放在文章末尾 该项目为访客管理平台demo&#xff0c;包含主界面、系统设置、警情查询、调试帮助、用户退出功能。 项目部分代码如下&#xff1a; #pragma execution_character_set("utf-8")#include "frmmain.h" #include "ui_frmmain…

使用不锈钢微型导轨的优势!

微型导轨是一种专门用于在紧凑空间内执行高精度的机器运动控制的导轨设备。其特点是尺寸小、精确度高、刚性好、平稳性好以及使用寿命长。微型导轨的材质种类多样&#xff0c;一般包括钢、不锈钢、铝合金等。目前来说&#xff0c;不锈钢材质的使用率最为频繁&#xff0c;那么使…

python中中英文打印对齐解决方案

在python中&#xff0c;有时候会出现中英文混合输出的情形&#xff0c;但是由于中文默认是全角格式&#xff08;一个中文字符占用两个字符宽度&#xff09;&#xff0c;这会对python原生的print函数带来一些障碍。尤其是用户用print对齐输出的时候&#xff0c;这种差异会导致文…

揭秘网红主播美颜工具:探秘美颜SDK的技术奥秘

在如今的网络直播平台上&#xff0c;越来越多的主播通过美颜工具来提升自己的形象&#xff0c;吸引更多的粉丝和观众。美颜技术的不断发展使得主播们能够在镜头前展现出更加完美的容颜&#xff0c;让观众眼前一亮。 一、美颜SDK的概念 美颜SDK&#xff0c;即美颜软件开发工具…

Bert语言大模型基础

一、Bert整体模型架构 基础架构是transformer的encoder部分&#xff0c;bert使用多个encoder堆叠在一起。 主要分为三个部分&#xff1a;1、输入部分 2、注意力机制 3、前馈神经网络 bertbase使用12层encoder堆叠在一起&#xff0c;6个encoder堆叠在一起组成编码端&#xf…

存储过程的使用(一)

目录 不带参数的存储过程 创建一个存储过程&#xff0c;向数据表 dept 中插入一条记录 带 IN 参数的存储过程 在存储过程中接受来自外部的数值&#xff0c;在存储过程中判断该数值是否大于零并显示 输入一个编号&#xff0c;查询数据表emp中是否有这个编号&#xff0c;如果…

【QT进阶】Qt Web混合编程之使用ECharts显示各类折线图等

往期回顾 【QT进阶】Qt Web混合编程之QWebEngineView基本用法-CSDN博客 【QT进阶】Qt Web混合编程之CMake VS2019编译并使用QCefView&#xff08;图文并茂超详细版本&#xff09;-CSDN博客【QT进阶】Qt Web混合编程之html、 js的简单交互-CSDN博客 【QT进阶】Qt Web混合编程之使…