自动驾驶:BEVDet
自动驾驶:BEVDet
- Introduction
- Methodolo
- Data Augmentation
- Network Structure
- Scale-NMS
- 实验
Introduction
作者通过现有的算法(LSS)、独特的数据增强方案与新的NMS方案整合了一个BEV框架(BEVDet)。
如下图:

这个框架分为四部分:
- Image-view-Encoder(Backbone + neck)。
- View Transformer(这就是LSS的lift与splat)。
- BEV Encoder (得到BEV特征在通过CNN或者attention提取bev特征)。
- Head。
在实验中,BEVDet很好的权衡了检测准确度和时间效率。在nuScenes val集上时,作为快速版本的BEVDet-Tiny的得分为31.2% mAP和39.2% NDS。与FCOS3D相比,BEVDet只需要215.3 GFLOPs 的计算开销, 是FCOS3D11%);运行速度每秒15.6帧,比FCOS3D快9.2倍。另一个高精度版本 BEVDet-Base评分为39.3% mAP和47.2% NDS, 显著地超过所有已发表的结果。在一个相当快的推理速度下,它与FCOS3D相比,mAP 提升了9.8%, NDS 提升了10.0%。
Methodolo
Data Augmentation
坐标转换公式:

作者在训练途中遇到了严重的over- fitting ,因为在nusuense 数据集下每个场景有6个cam组成,这六个中必然会有交叉的场景重复出现。
另一方面,基于图像视图编码器的批处理大小是子序列模块的N倍。训练数据的不足也是导致在基于BEV空间中学习过拟合的一部分原因。
作者起初想用一些数据增强的方法来缓解过拟合,但是这种方法只在没有bev的时候很work,因为假如我所有的2d image 都做了翻转(所有image做了相同角度的倾斜),由于后面需要把feature融入视锥,而视锥没有倾斜,这样会导致空间分布不一致,造成不必要的噪声。
公式表示如下:
假设本来的pixel 坐标为:

本来的 3d voxel 坐标为:

image 数据增强后:

但是这是3d voxel坐标他是没发生变化的,因为它是在生成视锥是根据原图确定的,而数据增强是在训练阶段进行的,他们没有做到同步。
于是我们需要对它3d voxel 进行逆矩阵变换使得2d 3d 空间分布一致(也就是还是符合通过内外参数的光学成像对应关系), 公式如下:

Network Structure
这里大家直接看图,简单明了。

Scale-NMS

BEV空间中不同类别的空间分布与图像视图空间中的空间分布截然不同。在图像视图空间中,由于相机的透视成像机制,所有类别共享相似的空间分布。因此,对于经典的NMS策略对于不同的类别都采用相同的阈值来来筛选预测结果。(例如在2D目标检测中,任何两个实例的bounding box的IOU值总是低于0.5)
然而,在BEV空间中,各个类的占用面积本质上是不同的,实例之间的重叠应接近于零。因此,预测结果之间的IOU分布因类别而异。
比如行人和锥型交通路标在接地面上占用很小的面积,这总是小于算法的输出分辨率。常见的对象检测范式冗余地生成预测。每个物体的占地面积小,可能使冗余结果与真正结果没有交集。这将使依赖正样本和负样本之间空间关系(IOU)的经典NMS失效。
解决方法:
Scale-NMS在执行经典NMS算法之前,**根据每个对象的类别缩放其大小。**通过这种方式,调整正样例和冗余结果之间的IOU分布,以与经典NMS匹配。缩放因子是特定于类别的。它们是通过对验证集进行超参数搜索生成的。
实验

相关文章:
自动驾驶:BEVDet
自动驾驶:BEVDetIntroductionMethodoloData AugmentationNetwork StructureScale-NMS实验Introduction 作者通过现有的算法(LSS)、独特的数据增强方案与新的NMS方案整合了一个BEV框架(BEVDet)。 如下图: …...
vue的组件通信
文章目录3. 组件通信3.1 父组件-->子组件3.3组件自定义事件(子->父)3.4.全部事件总线(两代以上)3.5消息的订阅与发布3. 组件通信 3.1 父组件–>子组件 <Student name"张三" :age"18"></St…...
Typescript的定义及使用优势
编程语言的类型: 动态类型语言 (Dynamically Typed Language)静态类型语言 (Statically Typed Language) 两种语言的含义及区别: 比如JS、python就是动态类型语言,什么是动态类型语言,通俗的讲࿰…...
正则验证:手机号码验证
<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title></title> </head> <body> 手机号码<input type"text" id"phone"> <span…...
视频融合 flv流格式对接(上)
FLV 是FLASH VIDEO的简称,FLV流媒体格式是随着Flash MX的推出发展而来的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大…...
提问:影视剪辑解说都是怎样配音的,软件合成还是自己配音?
“影视剪辑解说都是怎样配音的,软件合成还是自己配音?”这是一个很好的问题并且困扰着很多人,因为不知道该如何选择。究竟应该使用软件来完成配音工作呢?还是自己动手配音呢?这是一个很难回答的问题。如果你问我的话,…...
基于RK3588的嵌入式linux系统开发(二)——uboot源码移植及编译
由于官方的SDK占用空间较大(大约20GB左右),需要联系相关供应商提供,且官方的SDK通过各种脚本文件进行集成编译,难以理解系统开发的详细过程。本章介绍直接从官方Github网站下载源码进行移植,进行uboot移植及…...
excel报表技巧:几个关于汇报演示方面的小功能
年终了,总结汇报避免不了。如果你的PPT还不够好,那就直接用Excel做汇报吧~这里有5条小技巧,可以帮助你最高效地展示自己的成绩报表!想象一下,用SHIFTCTRLF1全屏显示你的工作表,配合上CtrlPageDown进行工作表…...
【数据结构与算法】Manacher算法
🌠作者:阿亮joy. 🎆专栏:《数据结构与算法要啸着学》 🎇座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉…...
【CMake】CMake构建C++代码(一)
在Linux开发过程中,难免会用到CMake来构建你的代码。本文将说明如何构建自己的代码,将自己的代码变为共享库,共其他代码使用。 文章目录在Linux开发过程中,难免会用到CMake来构建你的代码。本文将说明如何构建自己的代码ÿ…...
让我们,从头到尾,通透I/O模型
什么是IO 一句话总结 IO就是内存和硬盘的输入输出 I/O 其实就是 input 和 output 的缩写,即输入/输出。 那输入输出啥呢? 比如我们用键盘来敲代码其实就是输入,那显示器显示图案就是输出,这其实就是 I/O。 而我们时常关心的磁盘…...
Word控件Spire.Doc 【Table】教程(16):C#/VB.NET:在 Word 表格中插入或提取图像
Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…...
C++如何实现系统语言切换功能,MessageBox的确认/取消按钮语言显示如何跟程序一致
文章目录前言 一、新建工程二、添加多国语言的资源三、程序语言设置四、语言切换五、字符串处理六、MessageBox的问题七、相关函数和类型参考文章前言 目前很多软件都是要出口到多个国家,多个地区,因此,为软件提供多国语言支持就成为了一个基…...
计算机组成原理学习笔记:循环冗余校验码
循环冗余校验码 CRC 码 循环冗余校验码 (cyclic redundancy Check, CRC) 十进制除法 从熟悉的十进制出发,假设现在你要给另一个人传送882这样的一个10进制数据,为了防止传送数据的过程中某一个数据发生错误你可以和你的另一个小伙伴约定一个除数&…...
Educational Codeforces Round 143 (Rated for Div. 2) A — C
Educational Codeforces Round 143 (Rated for Div. 2) 文章目录A. Two Towers题目大意题目分析codeB. Ideal Point题目大意题目分析codeC. Tea Tasting题目大意题目分析codeA. Two Towers 题目大意 有两个有红蓝两种颜色组成的塔,每次操作可以将其中一个塔顶的色…...
【Unity VR开发】结合VRTK4.0:将浮点数从交互器传递到可交互对象
语录: 愿你熬得过万丈孤独,藏得下星辰大海。 前言: 默认情况下,交互器只能将单个布尔操作传递给可交互对象,后者控制可交互对象上的抓取操作。在其他时候,交互器中的其他操作可能希望传递给可交互对象&…...
【图像分类】基于PyTorch搭建卷积神经网络实现MNIST手写数字识别(附项目完整代码)
写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 在【图像分类】基于PyTorch搭建LSTM实现MNIST手写数字体识别(单向LSTM,附完整代码和数据集)文章中,我们使用了…...
4.4 MQC
1. 实验目的 熟悉MQC的应用场景掌握MQC的配置方法2. 实验拓扑 实验拓扑如图4-10所示: 图4-10:MQC 3. 实验步骤 (1) IP地址的配置 AR1的配置 <Huawei>system-view...
ClickHouse列存储(十一)—— ClickHouse
文章目录一、重点内容:1.数据库基本概念2.列式存储3.clickHouse存储设计4.clickHouse典型应用场景二、准备工作:1、了解数据库基本概念2、了解列式存储相关概念3、了解ClickHouse存储设计4、了解 ClickHouse典型应用场景三、详细知识点介绍:1…...
公司来了个卷王,真让人奔溃
2022年已经结束结束了,最近内卷严重,各种跳槽裁员,相信很多小伙伴也在准备今年的金三银四的面试计划。 在此展示一套学习笔记 / 面试手册,年后跳槽的朋友可以好好刷一刷,还是挺有必要的,它几乎涵盖了所有的…...
如何突破英雄联盟操作效率瓶颈?League-Toolkit的5大革新功能解析
如何突破英雄联盟操作效率瓶颈?League-Toolkit的5大革新功能解析 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 在快…...
AI训练神器!免配置YOLO可视化工具,标注+训练+推理全流程集成,支持YOLOv8~v12+50系显卡,开源可二开
AI训练神器!免配置YOLO可视化工具,标注训练推理全流程集成,支持YOLOv8~v1250系显卡,开源可二开 yolo可视化训练工具,免配置环境,打开界面即可训练yolo模型,提供源代码及完整打包项目,…...
策划和程序不再打架:Unity+Excel打造可视化游戏数据配置工作流
Unity与Excel深度整合:构建高效游戏数据配置系统 在中小型游戏开发团队中,策划与程序之间的数据流转往往是效率瓶颈所在。策划需要频繁调整数值平衡,而程序员则疲于应对无尽的配置表更新请求。这套基于UnityExcel的工作流解决方案,…...
AI编程助手太烧钱?试试这个‘外挂’:心灵宝石MCP服务在Cursor中的安装与长期使用心得
深度解析Cursor IDE中的MCP服务:心灵宝石的高效部署与实战技巧 作为一名全栈开发者,我几乎每天都要与代码编辑器打交道。从早期的Sublime Text到VS Code,再到如今集成了AI能力的Cursor,工具链的进化让开发效率不断提升。但随之而来…...
手把手教你用PasteMD:本地AI一键整理笔记和代码片段
手把手教你用PasteMD:本地AI一键整理笔记和代码片段 你是不是也经常被这些场景困扰?开会时用手机快速记下的要点,事后整理时发现全是碎片化的短句,毫无结构可言;从网页复制下来的技术文档,格式混乱&#x…...
Element React:革新性UI组件库助力React开发者高效构建企业级应用界面
Element React:革新性UI组件库助力React开发者高效构建企业级应用界面 【免费下载链接】element-react Element UI 项目地址: https://gitcode.com/gh_mirrors/el/element-react 在现代Web应用开发中,界面构建往往占据了开发者大量时间与精力。El…...
从CTF逆向实战出发:手把手教你用Python脚本破解RC4和Base58加密(附完整代码)
从CTF逆向实战出发:手把手教你用Python脚本破解RC4和Base58加密(附完整代码) 在CTF竞赛中,逆向工程题目往往涉及各种加密算法的识别与破解。本文将聚焦两种常见加密方式——RC4和Base58,通过Python脚本实现从算法识别到…...
前端打印PDF避坑指南:用printJS搞定Base64流和批量打印(附完整代码)
前端PDF打印实战:Base64流处理与批量打印的工程化解决方案 每次遇到PDF打印需求,前端开发者总会面临各种意想不到的坑。从Base64流解码到跨浏览器兼容性处理,再到批量打印的性能优化,每个环节都可能成为项目进度中的"拦路虎&…...
C语言文件操作实战:用fread和fwrite处理二进制数据的5个常见场景
C语言文件操作实战:用fread和fwrite处理二进制数据的5个常见场景 在嵌入式系统开发、游戏编程和工业控制等领域,二进制文件操作往往是数据持久化的核心手段。与文本文件相比,二进制格式能更精确地保存内存数据布局,避免字符编码转…...
BMN31K522 UART雾化控制协议深度解析与跨平台移植
1. BMN31K522 原子化雾化适配器模块:嵌入式UART控制全解析BMN31K522 是由 Flextron 公司推出的专用原子化雾化适配器模块,面向工业加湿、农业喷雾、实验室气溶胶生成及医疗雾化等场景设计。该模块不直接驱动压电陶瓷或超声换能器,而是作为智能…...
