【BEV感知算法概述——下一代自动驾驶感知算法】

文章目录

    • BEV感知算法概念
    • BEV感知算法数据集介绍
    • BEV感知算法分类
    • BEV感知算法的优劣
    • 小结

BEV感知算法概念

Bird’s-Eye-View,鸟瞰图(俯视图)。BEV感知算法存在许多的优势。

首先,BEV视图存在遮挡小的优点,由于视觉的透视效应,现实世界的物体在2D图像中很容易受到其他物体的遮挡,因此,传统的基于2D的感知方式只能感知可见的目标,对于被遮挡的部分算法将无能为力。

而在BEV空间内,时序信息可以很容易地被融合,算法可以基于先验知识,对被遮挡的区域进行预测,“脑补”出被遮挡的区域是否有物体。虽然“脑补”出来的物体固然有“想象”的成分,但对后续的控制模块来说,还是有不少益处。

此外,BEV感知算法的尺度变化小,将尺度相对一致的数据输入到网络中,可以得到更好的感知结果。

BEV感知算法数据集介绍

2.1 kitti-360数据集

kitti-360是一个包含丰富感官信息和完整注释的大规模数据集。我们记录了德国卡尔斯鲁厄的几个郊区,在73.7公里的驾驶距离内,对应超过32万张图像和10万个激光扫描。我们用粗糙的边界基元对静态和动态的三维场景元素进行注释,并将这些信息转移到图像领域,从而为三维点云和二维图像提供了密集的语义和实例注释。

为了收集数据,旅行车两边各配备了一个180°的鱼眼相机,前面一个90°的透视立体相机(基线60厘米)。此外,在车顶上安装了一个Velodyne HDL-64E和一个SICK LMS 200激光扫描装置,采用推杆式配置。这个装置与KITTI使用的装置类似,只是由于额外的鱼眼相机和推帚式激光扫描仪,获得了一个完整的360°视野,而KITTI只提供透视图像和Velodyne激光扫描,垂直视野为26.8°。此外,系统还配备了一个IMU/GPS定位系统。采集车的传感器布置如图所示。

在这里插入图片描述

图1 Kitti-360数据集采集车

2.2 nuScenes数据集

nuScenes是第一个提供 自动汽车 全套传感器数据的大型数据集,包括了6个相机、1个激光雷达、5个毫米波雷达、以及GPS和IMU。与kitti数据集相比,其包含的对象注释多了7倍多。采集车的传感器布置如图所示。

图片

图2 nuScenes数据集采集车模型

BEV感知算法分类

基于输入数据,将BEV感知研究主要分为三个部分——BEV Camera、BEV LiDAR和BEV Fusion。下图描述了BEV 感知家族的概况。具体来说,BEV Camera表示仅有视觉或以视觉为中心的算法,用于从多个周围摄像机进行三维目标检测或分割;BEV LiDAR描述了点云输入的检测或分割任务;BEV Fusion描述了来自多个传感器输入的融合机制,例如摄像头、激光雷达、全球导航卫星系统、里程计、高清地图、CAN总线等。
在这里插入图片描述
如图所示,将自主驾驶的基本感知算法(分类、检测、分割、跟踪等)分为三个级别,其中BEV感知的概念位于在中间。基于传感器输入层、基本任务和产品场景的不同组合,某种BEV感知算法可以相应表明。例如,M2BEV和BEVFormer属于视觉BEV方向,用于执行包括3D目标检测和BEV地图分割在内的多项任务。BEVFusion在BEV空间设计了一种融合策略,同时从摄像机和激光雷达输入执行3D检测和跟踪。

BEV Camrea中的代表之作是BEVFormer。BEVFormer 通过提取环视相机采集到的图像特征,并将提取的环视特征通过模型学习的方式转换到 BEV 空间(模型去学习如何将特征从图像坐标系转换到 BEV 坐标系),从而实现 3D 目标检测和地图分割任务,并取得了 SOTA 的效果。

3.1 BEVFormer 的 Pipeline:

1)Backbone + Neck (ResNet-101-DCN + FPN)提取环视图像的多尺度特征;

2)论文提出的 Encoder 模块(包括 Temporal Self-Attention 模块和Spatial Cross-Attention 模块)完成环视图像特征向 BEV 特征的建模;

3)类似 Deformable DETR 的 Decoder 模块完成 3D 目标检测的分类和定位任务;

4)正负样本的定义(采用 Transformer 中常用的匈牙利匹配算法,Focal Loss + L1 Loss 的总损失和最小);

5)损失的计算(Focal Loss 分类损失 + L1 Loss 回归损失);

6)反向传播,更新网络模型参数;

图片

图4 BEVFormer框架图

BEVFusion算法离不开BEV LiDAR和BEV Camera算法,通常使用一个fusion模块进行点云和图像特征的融合。其中BEV Fusion是其中的代表之作。

3.2 BEVFusion的 Pipeline:

1)给定不同的感知输入,首先应用特定于模态的编码器来提取其特征;

2)将多模态特征转换为一个统一的BEV表征,其同时保留几何和语义信息;

3)存在的视图转换效率瓶颈,可以通过预计算和间歇降低来加速BEV池化过程;

4)然后,将基于卷积的BEV编码器应用到统一的BEV特征中,以缓解不同特征之间的局部偏准;

5)最后,添加一些特定任务头支持不同的3D场景理解工作。

图片

图5 BEV Fusion框架图

BEV感知算法的优劣

目前业界基于纯视觉的感知、预测算法研究通常仅针对上述流程中的单个子问题的image-view方案,如3D目标检测、语义地图识别或物体运动预测,通过前融合或后融合的方式将不同网络的感知结果进行融合。这导致了在搭建整体系统时只能以线性结构堆叠多个子模块。尽管上述方式能够实现问题分解、便于独立的学术研究,但这种串行架构具有几个重要的缺陷:

1)上游模块的模型误差会不断向下游传递,然而在子问题的独立研究中通常以真值作为输入,这使得累积误差会显著影响下游任务的性能表现。

2)不同子模块中存在重复的特征提取、维度转换等运算过程,但是串行架构无法实现这些冗余计算的共享,不利于提升系统的整体效率。

3)无法充分利用时序信息,一方面,时序信息可以作为空间信息的补充,更好地检测当前时刻被遮挡的物体,为定位物体的位置提供更多参考信息。另一方面,时序信息能够帮助判断物体的运动状态,在缺少时序信息的条件下,基于纯视觉的方法几乎无法有效判断物体的运动速度。

区别于image-view方案,BEV方案通过多摄像头或雷达将视觉信息转换至鸟瞰视角进行相关感知任务,这样的方案能够为自动驾驶感知提供更大的视野并且能够并行地完成多项感知任务。同时,BEV感知算法是要将信息融合到BEV空间中来,所以这有利于探索2D到3D的转换过程。

与此同时,BEV感知算法当前在3D检测任务上,与现有的点云方案有有差距。探索视觉BEV感知算法有利于降低成本。一套LiDAR设备的成本往往是视觉设备的10倍,所以视觉BEV是未来的真理,但同时带来的巨大数据量需要巨大的计算资源。

小结

总结起来,目前基于纯视觉的感知、预测算法研究通常只针对单个子问题进行处理,并通过融合不同网络的结果来构建整体系统。然而,这种串行架构存在一些重要的缺陷,如误差传递、冗余计算和缺乏时序信息利用等问题。

相比之下,BEV方案通过将视觉信息转换到鸟瞰视角,在自动驾驶感知中提供更广阔的视野,并能并行完成多项感知任务。同时,BEV感知算法可以将信息融合到BEV空间中,有助于探索2D到3D的转换过程。

然而,当前的BEV感知算法在3D检测任务上与点云方案相比仍存在差距。虽然视觉BEV具备降低成本的优势,但也带来了巨大的数据量和计算资源需求。因此,未来的研究需要解决这些挑战,以进一步提高BEV感知算法在自动驾驶中的应用。

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

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

相关文章

jquery鼠标事件

click()   为点击事件绑定一个事件处理函数,或者触发元素点击事件。   .click( handler(eventObject) )     handler(eventObject)       每次事件触发时候执行的函数。   .click([eventData],handler(eventObject))     eventData      …

[LaunchPad] 超声波测试,数码管显示

1 #include "io430g2553.h"2 3 unsigned char Disp_Tab[] {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段码控制 4 unsigned char dispbit[8]{0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; //位选控制 5 6 unsigned char LedOut[4];7 8 …

Spring的依赖注入陷阱

Spring框架中有三种注入变量: 基于二传手的注射 基于构造函数的注入 基于现场的注入 这些机制中的每一种都有优点和缺点,并且不仅只有一种正确的方法。 例如现场注入: Autowired private FooBean fooBean;在生产代码中使用它通常不是最好…

jquery 操作css 选择器

.addClass()   为每个匹配的元素添加指定的样式类名   .addClass(className)     className 为每个匹配元素所有增加的一个或多个样式名   .addClass(function(index,currentClass))     函数返回一个或者多个用空格隔开, index 表示参数匹配中的索引…

vim设置

一、基本编辑功能1、复制、剪切和粘贴复制特定的某一段:把光标移到要复制的文本的头部,按下“v”,往后移动光标,光标所过之处的字符>都会高亮,移到欲复制文本的尾部后,按下“y”,高亮文本全部…

jquery表单属性筛选元素

$(":button") 选择所有按钮元素类型为按钮的元素。 等于$(input[type"button"]) $(":checkbox") 选择所有类型为复选框的元素。 等于$(input[type"checkbox"]) $(":checked") 选择所有勾选的元素。 $( "input:checked&…

Hamcrest Matchers的高级创建

介绍 上一次 ,我讨论了Hamcrest Matcher是什么,如何使用以及如何制作。 在本文中,我将解释创建Hamcrest Matchers的更多高级步骤。 首先,我将分享如何使您的匹配器更易于类型安全,然后介绍无状态匹配器的一些技术&…

嵌入式成长轨迹37 【Zigbee项目】【CC2430基础实验】【自动闪烁】

最为简单的代码&#xff0c;只用到一个寄存器P1DIR。因为点亮的led灯&#xff08;p1.0和p1.1&#xff09;的管脚是p1的&#xff0c;要输出就得将这两个管脚设置为输出管脚。该寄存器用0~8对应1.0~1.8管脚。 1 //main.c2 #include <ioCC2430.h>3 4 #define uint unsigned …

博客园CodingLife模板样式优化

博客园CodingLife模板样式优化&#xff0c;小屏和大屏均做了优化&#xff0c;感兴趣的园友可以复制到你的页面定制CSS代码中&#xff0c; 源码地址&#xff1a;http://www.cnblogs.com/blog/customcss/334547.css 更多专业前端知识&#xff0c;请上 【猿2048】www.mk2048.com

如何允许用户自定义UI

理念 利用JavafX / FXML的声明性设计模式&#xff0c;并允许用户仅通过使用例如SceneBuilder打开某个视图即可重新定制布局或添加新控件&#xff0c;甚至根据用户需要更改样式&#xff0c;从而无需任何编码即可自定义某个视图。 FXML文件 CSS基本上可以放置在通过URL可以到达的…

WPF控件和布局

WPF控件和布局&#xff0c;根据刘铁猛《深入浅出WPF》书籍讲解内容&#xff0c;主要记录控件和布局的原理&#xff0c;如果有不足的地方&#xff0c;请大牛们键盘下留情--轻喷&#xff01;如果还算有用&#xff0c;请给点动力&#xff0c;支持一把&#xff01; 一、WPF里的控件…

css背景图片定位

背景图默认平铺&#xff1a; background-repeat: no-repeat;/*不平铺*//*repeat-x;沿X轴平铺*//*repeat-x;沿Y轴平铺*/ 背景图片定位&#xff1a; background-position: 100px 30px;/* X轴 Y轴 *//* 20% 20%; 百分比的方式 *//* left|center|right top|center|bottom */ 背景中…

使用GZIP和压缩数据

抽象 我们都知道用zip或gzip压缩文件的含义。 但是在Java中使用压缩文件并不像您想的那样简单明了&#xff0c;尤其是当您不是直接使用文件而是压缩流数据时。 我们会去&#xff1a; 如何将字符串转换为压缩/压缩字节数组&#xff0c;反之亦然 创建用于读取和写入文件的实用程…

Oracle ——概述 Oracle 5 步调优方法论

http://www.toadworld.com/KNOWLEDGE/KnowledgeXpertforOracle/tabid/648/TopicID/OPS3/Default.aspx 对 Oracle 调优应该采取积极的态度。如果等到用户开始抱怨性能&#xff0c;才调优通常以为时已晚&#xff0c;即便是最有效的调优策略。性能问题确定和处理的时间越晚&#x…

js,jq.事件代理(事件委托)复习。

<ul id "lists"><li>列表1</li><li>列表2</li><li>列表3</li><li>列表4</li><li>列表5</li><li>列表6</li></ul>js委托&#xff1a; var lists document.getElementById(&qu…

整体服务器与微服务

介绍 刚开始时&#xff0c;由于要求简单&#xff0c;所以应用程序既简单又小。 随着时间要求和需求的增长&#xff0c;我们的应用程序变得越来越大&#xff0c;越来越复杂。 这导致将单片服务器开发和部署为一个单元。 在某种程度上&#xff0c;微服务可以通过简单的应用程序回…

NEXUS S安卓4.0/4.1 【完美】 ROOT教程

原文链接&#xff1a;http://bbs.gfan.com/android-3517082-1-1.html 进行bootloader解锁&#xff08;即使解锁&#xff0c;再上锁&#xff09;&#xff0c;会清除你手机上的【所有】数据&#xff08;包括内部的16G SD 存储&#xff09;&#xff0c;包括但不限于应用、设置、联…

CSS中的各种FC

什么是FC&#xff1f; Formatting Context&#xff0c;格式化上下文&#xff0c;指页面中一个渲染区域&#xff0c;拥有一套渲染规则&#xff0c;它决定了其子元素如何定位&#xff0c;以及与其他元素的相互关系和作用。 BFC 什么是BFC Block Formatting Context&#xff0…

HDU 2647 Reward 拓扑排序

http://acm.hdu.edu.cn/showproblem.php?pid2647 题意&#xff1a; 输入N和M代表N个人和M组数据&#xff0c;M组数据中的A和B代表A的工资要比B的工资高&#xff0c;底薪是&#xff08;888元&#xff09;&#xff0c;问你这个老板至少要付 多少钱给这些员工&#xff0c;A比B工资…

EE Servlet 3:简单表单处理

对于大多数Web开发人员而言&#xff0c;Web应用程序中的表单处理就像小菜一碟。 如果我们无法捕获用户的输入并进行处理&#xff0c;将不会有太大用处。 因此&#xff0c;我在servlet3示例中包含了一个简单的FormServlet &#xff0c;该示例演示了您可能会遇到的很少使用的表单…