网站建设方案-奢侈品/站长工具如何使用
BEV感知综述
随着自动驾驶传感器配置多模态化、多源化,将多源信息在unified View下表达变得更加关键。BEV视角下构建的local map对于多源信息融合及理解更加直观简洁,同时对于后续规划控制模块任务的开展也更为方便。BEV感知的核心问题是:
- 如何利用缺失3D信息的PV视角来构建BEV视角;
- 如何获取BEV表达下的真值标注;
- 如何有效融合不同模态及视角的传感器数据;
- 不同车型、场景下传感器配置各不相同,如何能够实现Onetrack的能力;
本文回溯了近期BEV感知领域的最新进展,并对各类解决方案进行了深入分析。对于工业界流行的解决方案也进行了详细的阐述,并指明了未来该领域的研究方向。以期更多的研发资源能够推动该领域快速发展。
自动驾驶感知模块的任务就是对物理世界的3D重建。随着智驾车辆传感器配置多样化丰富化,BEV对于多源多视觉信息的汇聚融合具有天然的优势。BEV视角下解决了2D前视视角存在的遮挡、尺度等问题,同时动目标、地图要素等可直接用于下游的规划和控制模块。
- BEV Camera:纯视觉;
- BEV LiDAR:激光;
- BEV Fusion:多传感器,包括视觉、激光、轮速、IMU等;
BEV感知研究动机
重要性
目前Nuscence和Waymo数据集的排行榜可知,视觉相比激光仍然存在20-30%的差距,那纯视觉的效果能否追平甚至超越激光的效果呢?这个问题对于学术界,是如何将2D的视觉信息像LiDAR一样精确的转换到BEV空间中;而对于工业界来说,相机相比LiDAR具有更低的成本,且在远处更稠密更丰富的纹理信息。另外一个问题是如何融合两种传感器的优势,形成更为强大的融合结果。
空间
对于激光传感器易获得深度信息,而对于单目相机要获得深度信息是非常挑战的任务。如何对多模态数据进行融合,包括前融合、后融合等,其中后融合阶段来自于视觉和激光的深度信息误差或配准都会导致性能降低。
准备度
当前公开的数据集是否能够支撑BEV感知的进一步研究?在数据集方面:Nusence及Waymo数据集提供了高质量的标注及多模态数据对齐,非常利于BEV感知研发的开展。同时leadboard也给大家听了同台打擂的机会。在算法方面:通用视觉领域已经突飞猛进,Transformer、ViT、CLIP等均有优异的表现。
贡献
- 回溯了今年BEV感知研发的进展,包括宏观的架构及方法的细节讨论;
- 综合分析了各个方面,包括depth estimation、View transformation、sensor fusion、domain adaptation等;
- 除理论基础外,还提供了提升BEV感知的实践指导手册;
评价标准
BEV感知方法介绍
BEV Camera
纯视觉3D感知最初的任务是如何从PV视角预测Object的位置,因为基于PV的检测任务已经成熟,所以核心任务就成了如何在2D检测能力基础上增加3D场景的认知能力。之后为了处理在3D空间Oject的Size保持一致,而在image中会随着距离远近而变化的问题,研究者引入了BEV的表达形式加以解决;通常采用了深度预测及先验信息假设(地面、触地点)等手段来弥补image的3D信息缺失。近期BEV感知进展已经极大的推动了3D感知问题的发展,主要原因包括:
- 高质量数据集的出现,比如Nuscence multi-camera的配置非常适合在BEV空间下进行multi-view特征的聚合;
- 纯视觉BEV任务借鉴了很多LiDAR在检测头和LOSS函数设计方面的优秀实践;
- 单目视觉的PV视角任务经历了蓬勃发展,这些进展在BEV任务中的落地也推动了BEV任务的性能表现;
BEV Lidar

- preBEV
- postBEV
点云是在连续3D空间采集到的数据,而在3D连续空间计算点与点见的相对位置关系存在着算力和感受野受限等关键问题。近期研究利用离散的grid数据来表示原始点云数据;然后使用卷积操作在grid表达上进行卷积操作,然而原始点云被表达为grid的形式难以避免信息的丢失。SOTA的pre-BEV方法借住高分辨率的Voxel size能够尽可能保留原始点云中的信息,从而在3D检测任务中取得了不俗的表现。高分辨率Voxel size也伴随着高算力和高存储的问题。直接将原始点云转到BEV空间避免了3D空间的卷积操作,但是丢失了大量高维信息,最高效的方式是将原始点云通过统计的方式表达为featrue map,获得不是最优但是可以接受的性能表现。pillar-base方法很好的平衡了效果和算力,在商用落地上优势明显。因此在效果和效率的trade-off上是lidar bev感知的核心问题。
BEV Fusion


如上图,各模态在独自的模态上进行特征提取的工作,然后各自模态下的feature map转换到BEV空间下进行融合,这块可以参考 BEVFusion ;还有一种实现路径是将视觉PV信息先提升到Voxel下的feature map,然后和激光的Voxel下feature map进行融合,这类的方法可以参考 UVTR 。进一步可以考虑自车的运动信息实现时域维度的融合,更好的速度预测及遮挡场景下的检测效果。在Temporal上的融合可以参见 BEVDet4D 和 BEVFormer 。
图像是PV坐标系,而点云是3D坐标系,因此对齐两种模态的数据是关键环节之一。虽然点云数据通过相机投影模型很容易转换到图像PV坐标系下,但是点云的稀疏性使得紧靠点云单独提取有价值的feature变得困难;反过来由于图像PV数据缺少深度信息,将PV观测转到3D空间也是一个病态的问题。针对这一问题,已有的研究,包括IPM、LSS等,正在构建将图像PV数据转换为BEV空间的方法,使得多模态、时间、空间的融合成为了可能。
融合视觉和激光各自传感器优势,显著提升了3D感知任务的优势。融合框架同时保留了传感器件的独立性,不在依赖于单一器件,因此整个感知系统的鲁棒性也得到了增强。对于时域的融合,BEV空间的feature map具有尺度一致性,可以通过自车的运动补偿实现时域融合。因此考虑到鲁棒性和尺度准确性,BEV成为了一个感知结果表达的理想空间。
BEV感知商用落地

商用的感知系统最初常用a图方式,即pv先出感知结果,然后转换到bev空间下与激光的结果进行后融合操作;显著已经发展为了b图的形式,即pv出featuremap,然后转换到bev空间下进行featuremap融合,进而执行检测任务,也就是所谓的前融合。
经验谈
Data Augmentation
- 视觉:color jitter, flip(包含了image的和bev两种空间下的翻转), resize, rotation, crop, and Grid Mask;
- 激光:random rotation, scaling, flipping, and point translation、Painting( Point-Painting )、temporal;
BEV Encoder
参考以下两种视觉和激光的典型BEV方法:
- BEVFormer++
- Voxel-SPVCNN
LOSS
对于视觉来说,可以综合运用目标检测的2D和3D的loss设计来训练模型;此外还可以使用深度监督信息( BEVDepth ),以提升3D检测的精度。通常2D的目标检测和单目深度估计会直接使用SOTA的预训练模型。对于激光来说,会联合使用 cross-entropy loss 、 Geo loss 和 Lovász loss 来提升检测效果;
总结
综合以上,未来BEV感知的主要研究方向包括:
- 如何设计一个精确的深度估计器;
- 如何融合来自多模态多视角的传感器数据的feature map;
- 如何实现模型对传感器安装位置无感,实现onetrack的部署能力;
- 如何将foundation model的成功经验(大模型、多任务)复制到bev感知领域上;
相关文章:

自动驾驶-BEV感知综述
BEV感知综述 随着自动驾驶传感器配置多模态化、多源化,将多源信息在unified View下表达变得更加关键。BEV视角下构建的local map对于多源信息融合及理解更加直观简洁,同时对于后续规划控制模块任务的开展也更为方便。BEV感知的核心问题是: …...

面试题-3
1.说一下原型链 原型就是一个普通对象,它是为构造函数实例共享属性和方法,所有实例中引用原型都是同一个对象 使用prototype可以把方法挂载在原型上,内存值保存一致 _proto_可以理解为指针,实例对象中的属性,指向了构造函数的原型(prototype) 2.new操…...

C++ Core Guidelines 中文版 GSL
C GSL(Guideline Support Library)是由 Microsoft 开发的一个开源库,旨在提供一组通用的 C 标准库扩展,以支持 C 标准委员会提出的指导原则。GSL 为 C 开发人员提供了许多有用的工具和类型,以帮助他们编写更安全、更高…...

同时显示上下两层凸包特征的可视化程序
数据类型 std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> hulls_k_upper std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> hulls_k_lower std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> hulls_underk_upper std::vector<…...

Django框架之模型层(二)
【十二】Django中如何开启事务 事务是MySQL数据库中得一个重要概念 事务的目的:为了保证多个SQL语句执行成功,执行失败,前后保持一致,保证数据安全 【1】ACID是数据库事务的四个关键特性 它代表了原子性(Atomicity)、…...

C++之list
C之list list的构造 #include <iostream> #include<list> using namespace std;//打印函数 void printfList(const list<int>&L) {for(list<int>::const_iterator it L.begin();it ! L.end();it){cout<<*it<<" ";}cout<…...

C语言日记——调试篇
一、调试调试的基本步骤 发现程序错误的存在 以隔离、消除等方式对错误进行定位 确定错误产生的原因 提出纠正错误的解决办法 对程序错误予以改正,重新测试 二、Debug和Release Debug通常称为调试版本,它包含调试信息,并且不作任何优化…...

【python】Django——templates模板、静态文件、django模板语法、请求和响应
笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 【Django专栏】 Django——django简介、django安装、创建项目、快速上手 Django——templates模板、静态文件、django模板语法、请求和响应 Django——连接mysql数据库 Django——templates模板、静态文件、djang…...

Android设计模式--观察者模式
时间是一只藏在黑暗中温柔的手,在你一出神一恍惚之间,物走星移 一,定义 观察者模式是定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新 字面意思很好理解&am…...

【Linux】Ubuntu16.04下安装python高版本--源码安装
Ubuntu16.04下完美安装python高版本及对应版本的pip 方法一:直接用命令安装python3.6(但我没安装成功) 好像是因为Ubuntu16.04的软件仓库(源)中python的最高版本就是python3.5,所以无法直接用apt来安装 #方法一 sudo…...

变长子网划分问题的二叉树解法
计网的变长子网划分、计组的变长操作码划分、数据结构的哈夫曼编码,都是前缀编码的本质(变长操作码的二叉树解法我还在琢磨中) 【二叉树解法】每条从叶结点到根节点的路径上有且只有一个被分配的结点: 【例】现将一个IP网络划分成…...

编译安装redis及配置多实例
yum安装是这种十分简单的方法我们就不在提及了,今天我们来做一下redis的编译安装 Redis源码包官方下载链接:http://download.redis.io/releases/ 一、编译安装: 安装依赖包 dnf -y install make gcc jemalloc-devel systemd-devel如果是…...

网络(一)总纲
一 总纲 ① 背景 1、该资料不管是在华为内部还是外部都是很出名的2、该教程仅仅作为个人笔记,形成自己的网络知识体系,自己会按照教程手把手做实验,copy图谱备注: 自己没有处理过物理网和虚拟网,所以会以一个小白的角度去理解,可能存在偏差3、立足点:…...

WPF中的App类介绍
在WPF (Windows Presentation Foundation) 应用程序中,App 类扮演着很重要的角色。这个类通常在每个WPF应用程序中都会有,并且生成在App.xaml文件和其代码后台App.xaml.cs中。App类通常继承自System.Windows.Application类,并且有以下的主要职…...

.nc格式文件的显示及特殊裁剪方式
最近我们遇到一个nc格式的文件,需要将它做成报告插图,bing搜索一番以后,了解到nc的全名为NetCDF(network Common Data Form),是一种网络通用数据格式,广泛用于大气科学、水文、海洋学、环境模拟、地球物理等诸多领域。…...

为什么需要线程池?C++如何实现一个线程池?
为什么需要线程池?C如何实现一个线程池? 为什么需要线程池?C如何实现一个线程池?...

多视图聚类的论文阅读
当聚类的方式使用的是某一类预定义好的相似性度量时, 会出现如下情况: 数据聚类方面取得了成功,但它们通常依赖于预定义的相似性度量,而这些度量受原始方法的影响:当输入维数相对较高时,往往是无效的。 1. Deep Mult…...

shell脚本适用场景
1.适用场景 Shell脚本是一种用于自动化和批量处理任务的脚本语言。它通常在Unix/Linux系统中使用,并且被广泛应用于各种场景,包括但不限于以下几个方面: 自动化任务:Shell脚本可以用于编写自动化脚本,完成一系列重复性…...

Bash openldap同步AD组织数据
将AD的ou同步到openldap(可支持全量同步和增量同步) 整体思路如下: 从ad导出所有的数据,然后进行参数替换以及处理,处理后的文件称为A;从openldap导出所有的数据,然后进行参数替换以及处理&am…...

C#WPF文本转语音实例
本文介绍C#WPF文本转语音实例 实现方法:使用类库(SpeechSynthesizer )实现的。 一、首先是安装程序包。 二、创建项目 需要添加引用using System.Speech.Synthesis; UI界面 <Windowx:Class="TextToSpeechDemo.MainWindow"xmlns="http://schemas.micr…...

08-流媒体-RTMP拉流
整体方案: 采集端:摄像头采集(YUV)->编码(YUV转H264)->写封装(H264转FLV)->RTMP推流 客户端:RTMP拉流->解封装(FLV转H264)…...

一键免费去除视频水印和字幕的AI工具
最近有学员经常让我分享好用的智能抹除视频水印字幕AI工具,今天就给大家分享一个我经常用到的这款工具——腾讯智影,这个平台提供的智能抹除功能,借助这个工具我们可以将视频中不需要的字幕或者水印删除掉。 不过这款工具每天有三次免费次数…...

实验六:Android的网络编程基础
实验六:Android 的网络编程基础 6.1 实验目的 本次实验的目的是让大家熟悉 Android 开发中的如何获取天气预报,包括了 解和熟悉 WebView、WebService 使用、网络编程事件处理等内容。 6.2 实验要求 熟悉和掌握 WebView 使用 了解 Android 的网络编程…...

09-流媒体-FLV解复用
整体方案: 采集端:摄像头采集(YUV)->编码(YUV转H264)->写封装(H264转FLV)->RTMP推流 客户端:RTMP拉流->解封装(FLV转H264)…...

信息的浏览
万维网(WWW)是目前Internet上最流行的一种服务,它是建立在Internet上的多媒体集合信息系统。它利用超媒体的信息获取技术,通过一种超文本的表达方式,将所有WWW上的信息连接在一起。我们使用浏览器浏览网上的信息。 ▶浏览器 浏览器是指可以…...

vue directive自定义指令实现弹窗可拖动
vue2 创建一个js文件 // draggable.js export default {// 定义 Vue 插件install(Vue) {Vue.directive(draggable, { // 全局指令名为 v-draggableinserted(el) {el.onmousedown function (ev) {// 获取鼠标按下时的偏移量(鼠标位置 - 元素位置)const…...

07-流媒体-RTMP推流
整体方案: 采集端:摄像头采集(YUV)->编码(YUV转H264)->写封装(H264转FLV)->RTMP推流 客户端:RTMP拉流->解封装(FLV转H264)…...

Neo4j安装(Docker中安装Neo4j)
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...

面试求职者
顾x文 SQLite3数据的使用实现了多线程UDP数据收发功能Qt多线程的同步和异步熟悉GDB的调试了解Mysql的性能优化熟悉常见算法:快速排序、希尔排序、归并排序基于Nginx C Mysql Python ICE开发熟练Boost库负责搭建后台服务端,使用Nginx展示前端界面&am…...

Java NIO 详解
一、NIO简介 NIO 是 Java SE 1.4 引入的一组新的 I/O 相关的 API,它提供了非阻塞式 I/O、选择器、通道、缓冲区等新的概念和机制。相比与传统的 I/O 多出的 N 不是单纯的 New,更多的是代表了 Non-blocking 非阻塞,NIO具有更高的并发性、可扩…...