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

news2024/11/25 5:19:32

文章目录

    • 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.coloradmin.cn/o/1332907.html

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

相关文章

腾讯面试:SaaS多租户,如何设计?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业网易、美团、字节、如阿里、滴滴、极兔、有赞、希音、百度、美团的面试资格,遇到很多很重要的面试题: 多租户设计,如何 技术选型&#xff…

分布式事务2PC二阶段提交详解

文章目录 概述和概念执行过程和工作流程特点优劣势应用场景总结demo代码样例 概述和概念 二阶段提交(2PC)是一种用于确保在分布式系统中的所有节点在进行事务提交时保持一致性的算法 二阶段提交(Two-Phase Commit,2PC&#xff09…

JWT、session、token区别和实现

JWT、session、token区别和实现 这里需要用到Redis和JWT。 springboot版本是3.2.1 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency><…

vitis HLS中实现canny算法的IP核

一、前言 canny边缘检测主要用于提取图像的边缘&#xff0c;是最常用且有效的边缘检测算法。在AMD赛灵思提供的库函数中&#xff0c;使用xf::cv::Canny和xf::cv::EdgeTracing两个函数实现canny边缘提取。本文举例说明如何在vitis HLS 2023.1中实现canny算法。 二、xf::cv::Cann…

GoogLeNet(V1)

目录 一、GooLeNet介绍 1、模型设计的motivation 2、Inception块 3、GoogLeNet架构 4、Inception后续变种 5、总结 二、代码实现 1、Inception块 2、GoogLeNet模型 3、训练模型 4、总结 一、GooLeNet介绍 GoogLeNet是由Google团队于2014年提出的深度卷积神经网络架构…

c++缺省参数与函数重载(超详细)

文章目录 前言一、缺省参数1.缺省参数的概念与使用2.缺省参数的分类3.缺省参数注意事项 二、函数重载1.什莫事函数重载2.函数重载的几种形式3.函数重载与缺省值的结合4.为什么c支持函数重载&#xff1f;&#xff1f; 总结 前言 在本文章中&#xff0c;我们将要详细介绍一下Cc缺…

【MySQL】数据库之索引的增删改查

目录 一、索引是什么 二、索引的作用 三、工作方式 四、创建索引的依据&#xff1a; 五、索引的分类 六、索引的增删改查&#xff08;索引是一种对象&#xff0c;与字段类似是命令&#xff09; 索引的添加 ​编辑第一种&#xff1a;普通索引的创建 第二种&#xff1a;唯…

C++ 比 C语言增加的新特性 2

1.C新增了带默认值参数的函数 1.1 格式 格式&#xff1a;返回值 函数名&#xff08;参数1初始值1&#xff0c;..........&#xff09;{} 例如&#xff1a;void function&#xff08;int a10&#xff09;{} 调用&#xff1a;不需要更改参数的值&#xff1a;function&#x…

001 图书增删改查 SSM MySQL

技术框架&#xff1a;Spring SpringMVC Mybatis JSP MySQL 001 图书增删改查 SSM MySQL package com.demo.controller;import com.demo.pojo.Book; import com.demo.service.BookService; import org.springframework.beans.factory.annotation.Autowired; import org.spri…

leetcode 面试题 17.19. 消失的两个数字 (hard)(优质解法)

链接&#xff1a;面试题 17.19. 消失的两个数字 代码&#xff1a; class Solution {public int[] missingTwo(int[] nums) {int lengthnums.length;int tmp0;//将完整数据以及 nums 中的数据都进行异或&#xff0c;得到的就是缺失的两个数字 a^b 的结果for(int i1;i<length…

【飞翔的鸟】飞行游戏-uniapp项目开发流程详解

小时候玩过的飞行游戏&#xff0c;叫什么名字来着&#xff0c;通过点击操作控制煽动翅膀来持续飞行&#xff0c;躲避障碍物&#xff0c;有多远就飞多远吧&#xff0c;现在想起来&#xff0c;其中的实现原理非常简单&#xff0c;感兴趣的话来一起看看&#xff0c;这里给大家讲一…

RIS 系列 Mask Grounding for Referring Image Segmentation 论文阅读笔记

RIS 系列 Mask Grounding for Referring Image Segmentation 论文阅读笔记 一、Abstract二、引言三、相关工作Architecture Design for RISLoss Design for RISMasked Language Modeling 四、方法4.1 结构4.2 Mask Grounding讨论 4.3 跨模态对齐模块4.4 跨模态对齐损失4.5 损失…

顺序表基本操作实现

#include <stdio.h>#define MAX_SIZE 100// 定义顺序表的元素类型 typedef int ElementType;// 定义顺序表结构体 typedef struct {ElementType data[MAX_SIZE];int length; } SeqList;// 初始化顺序表 void InitList(SeqList *L) {L->length 0; }// 插入操作 int Li…

BP网络识别26个英文字母matlab

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;字母识别 获取完整源码源工程文件 一、 设计思想 字符识别在现代日常生活的应用越来越广泛&#xff0c;比如车辆牌照自动识别系统&#xff0c;手写识别系统&#xff0c;办公自动化等等。本文采用BP网络对26个英文字母进行…

优化小地图(非RawImage方法,节省性能)

优化小地图&#xff08;非RawImage方法&#xff0c;节省性能&#xff09; 一、小地图设计二、功能实现1.截取俯视图2.创建Cube包裹住场地&#xff0c;并且创建一个子物体坐标为&#xff08;0,0,0&#xff09;**3.创建UI显示小地图坐标转换代码如下&#xff1a; 一、小地图设计 …

我是如何转行 AI 并且实现薪资翻倍的

大家好啊&#xff0c;我是董董灿。 熟悉我的小伙伴都知道&#xff0c;我之前在北京某211大学&#xff0c;本硕读了7年的机械专业&#xff0c;后来硕士毕业后&#xff0c;果断转行去做了嵌入式开发&#xff0c;随后瞅准了 AI 爆发的时机果断转行去做了AI。 这段经历已经过去了…

【python与机器学习3】,感知机和与非门

1 电子和程序里的与门&#xff0c;非门&#xff0c;或门&#xff0c;与非门 &#xff0c;或非门&#xff0c;异或门 1.1 基础电路 与门&#xff08;AND gate&#xff09;、或门&#xff08;OR gate&#xff09;和非门&#xff08;NOT gate&#xff09;是数字逻辑电路中的三种基…

本地搭建【文档助手】大模型版(LangChain+llama+Streamlit)

概述 本文的文档助手就是&#xff1a;我们上传一个文档&#xff0c;然后在对话框中输入问题&#xff0c;大模型会把问题的答案返回。 安装步骤 先下载代码到本地 LangChain调用llama模型的示例代码&#xff1a;https://github.com/afaqueumer/DocQA&#xff08;代码不是本人…

自动驾驶规划算法

本文将讲解BFS&#xff0c;Dijstra&#xff0c;A*&#xff0c;动态规划的算法原理&#xff0c;不正之处望读者指正&#xff0c;希望有兴趣的读者能在评论区提出一些这些算法的面试考点&#xff0c;共同学习&#xff0c;一起进步 0 图论基础 图有三种&#xff1a;无向图、有向…

SRE 与 DevOps:你知道它们之间区别吗?

公众号「架构成长指南」&#xff0c;专注于生产实践、云原生、分布式系统、大数据技术分享 DevOps专注于消除阻碍开发和运维之间协作的隔阂&#xff0c;而SRE致力于设计和实施可扩展、可靠的系统&#xff0c;确保最大可靠性。 这篇文章将探讨DevOps和SRE之间的差异&#xff0c…