BEVDet4D 论文学习

news2024/11/27 12:47:25

1. 解决了什么问题?

单帧数据包含的信息很有限,制约了目前基于视觉的多相机 3D 目标检测方法的性能,尤其是关于速度预测任务,要远落后于基于 LiDAR 和 radar 的方法。

2. 提出了什么方法?

BEVDet4D 将 BEVDet 方法从 3D 扩展到时间+空间的 4D 范畴。作者改进了 BEVDet 框架,在当前帧的特征中融合了之前帧的特征,只增加了少量的计算成本。BEVDet4D 简化了速度预测问题,将其看作为相邻帧特征之间的位置偏移预测问题。如下图,它保留了之前帧的 BEV 特征,将其与当前帧的特征通过空间对齐与 concat 操作融合。
在这里插入图片描述

2.1 网络结构

BEVDet 包括 4 个模块:image-view encoder、view transformer、BEV encder、task-specific head。为了融入时间信息,BEVDet4D 保留了 view transformer 对之前帧生成的特征。然后进行对齐,和当前帧的特征完成融合。View transformer 生成的特征对于后续模块来说,过于稀疏、粗糙。因此在时域融合操作前,有一个调整候选特征的 BEV 编码器,包括 2 个残差单元,通道数和输入特征数一致。

2.2 Simplify the Velocity Learning Task

在这里插入图片描述

符号定义 全局坐标系为 O g − X Y Z O_g - XYZ OgXYZ,自身坐标系为 O e ( T ) − X Y Z O_{e(T)}-XYZ Oe(T)XYZ,目标坐标系为 O t ( T ) − X Y Z O_{t(T)}-XYZ Ot(T)XYZ。如上图,作者构建了一个虚拟场景,包括一辆运动中的 ego 车辆和两个目标车辆。在世界坐标系内,一个目标车辆是静止的(即 O s − X Y Z O_s-XYZ OsXYZ绿色框),一个目标车辆是运动状态的(即 O m − X Y Z O_m-XYZ OmXYZ蓝色框)。两个相邻帧(第 T − 1 T-1 T1帧和第 T T T帧)的物体通过透明度区分。物体的位置表示为 P x ( t ) \text{P}^x(t) Px(t) x ∈ { g , e ( T ) , e ( T − 1 ) } x\in\lbrace g,e(T),e(T-1)\rbrace x{g,e(T),e(T1)}表示坐标系。 t ∈ { T , T − 1 } t\in\lbrace T,T-1\rbrace t{T,T1}表示时间戳。 T s r c d s t \text{T}^{dst}_{src} Tsrcdst表示从源坐标系到目标坐标系的变换。
本文方法不是直接预测目标的速度,而是预测相邻帧之间目标物体的平移量。排除了时间因素,任务就简化了,根据两个 BEV 特征间的差异就可计算出位置的移动。此外,该方法学习的位置移动与 ego 车辆自身的运动是没有关系的,因为 ego 的运动会让目标物体位置移动的分布变得很复杂。
如上图所示,由于 ego 的运动,原本在世界坐标系是静止的物体,在 ego 坐标系就成了运动的了。View transformer 对两个相邻帧生成特征,由于 ego 运动,它们在世界坐标系的感受野是不同的。一个静止物体在前后两帧的世界坐标系位置是 P s g ( T ) \text{P}_s^g(T) Psg(T) P s g ( T − 1 ) P_s^g(T-1) Psg(T1)。位置的移动可以表示为:
P s e ( T ) ( T ) − P s e ( T − 1 ) ( T − 1 ) = T g e ( T ) P s g ( T ) − T g e ( T − 1 ) P s g ( T − 1 ) = T g e ( T ) P s g ( T ) − T e ( T ) e ( T − 1 ) T g e ( T ) P s g ( T − 1 ) \begin{align} &\text{P}_s^{e(T)}(T)-\text{P}_s^{e(T-1)}(T-1)\nonumber \\ =&\text{T}_g^{e(T)}\text{P}_s^g(T)-\text{T}_g^{e(T-1)}\text{P}_s^g(T-1)\nonumber\\ =&\text{T}_g^{e(T)}\text{P}_s^g(T)-\text{T}_{e(T)}^{e(T-1)}\text{T}_{g}^{e(T)}\text{P}_s^g(T-1)\nonumber \end{align} ==Pse(T)(T)Pse(T1)(T1)Tge(T)Psg(T)Tge(T1)Psg(T1)Tge(T)Psg(T)Te(T)e(T1)Tge(T)Psg(T1)

根据上面等式,如果直接将 2 个特征 concat,后续模块的学习目标(即物体在两个特征图的位置偏移)就包含了 ego 运动(即 T e ( T ) e ( T − 1 ) \text{T}_{e(T)}^{e(T-1)} Te(T)e(T1))。为了避免,作者利用 T e ( T − 1 ) e ( T ) \text{T}_{e(T-1)}^{e(T)} Te(T1)e(T)对相邻帧的物体进行变换,排除 ego 运动的影响。

P s e ( T ) ( T ) − T e ( T − 1 ) e ( T ) P s e ( T − 1 ) ( T − 1 ) = T g e ( T ) P s g ( T ) − T e ( T − 1 ) e ( T ) T e ( T ) e ( T − 1 ) T g e ( T ) P s g ( T − 1 ) = T g e ( T ) P s g ( T ) − T g e ( T ) P s g ( T − 1 ) = P s e ( T ) ( T ) − P s e ( T ) ( T − 1 ) \begin{align} &\text{P}_s^{e(T)}(T)-\text{T}_{e(T-1)}^{e(T)}\text{P}_s^{e(T-1)}(T-1)\nonumber \\ =&\text{T}_g^{e(T)}\text{P}_s^g(T)-\text{T}_{e(T-1)}^{e(T)}\text{T}_{e(T)}^{e(T-1)}\text{T}_g^{e(T)}\text{P}_s^g(T-1)\nonumber\\ =&\text{T}_g^{e(T)}\text{P}_s^g(T)-\text{T}_{g}^{e(T)}\text{P}_s^g(T-1)\nonumber\\ =&\text{P}_{s}^{e(T)}(T)-\text{P}_s^{e(T)}(T-1)\nonumber\\ \end{align} ===Pse(T)(T)Te(T1)e(T)Pse(T1)(T1)Tge(T)Psg(T)Te(T1)e(T)Te(T)e(T1)Tge(T)Psg(T1)Tge(T)Psg(T)Tge(T)Psg(T1)Pse(T)(T)Pse(T)(T1)
根据上面等式,学习目标定为了当前帧 ego 坐标系中的物体运动,与 ego 运动就没关系了。该等式的对齐操作通过特征对齐实现。给定之前帧的候选特征 F ( T − 1 , P e ( T − 1 ) ) \mathcal{F}(T-1,\text{P}^{e(T-1)}) F(T1,Pe(T1))以及当前帧的 F ( T , P e ( T ) ) \mathcal{F}(T,\text{P}^{e(T)}) F(T,Pe(T)),通过下面等式实现对齐特征:
F ′ ( T − 1 , P e ( T ) ) = F ( T − 1 , T e ( T ) e ( T − 1 ) P e ( T ) ) \mathcal{F}'(T-1,\text{P}^{e(T)})=\mathcal{F}(T-1,\text{T}_{e(T)}^{e(T-1)}\text{P}^{e(T)}) F(T1,Pe(T))=F(T1,Te(T)e(T1)Pe(T))

T e ( T ) e ( T − 1 ) P e ( T ) \text{T}_{e(T)}^{e(T-1)}\text{P}^{e(T)} Te(T)e(T1)Pe(T)在特征 F ( T − 1 , P e ( T − 1 ) ) \mathcal{F}(T-1,\text{P}^{e(T-1)}) F(T1,Pe(T1))上可能不是一个有效的位置,因此需要使用双线性插值。

3. 有什么优点?

BEVDet4D 预测 velocity 的错误率降低了 − 62.9 % -62.9\% 62.9%,与那些基于 LiDAR 或 radar 的方法表现相近。在 nuScenes 基准上取得了 54.5 % 54.5\% 54.5%NDS。

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

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

相关文章

C++ Vecter

C Vecter 📟作者主页:慢热的陕西人 🌴专栏链接:C 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 本博客主要内容讲解了C中vector的介绍以及相关的一些接口的使用 …

Prometheus+Grafana监控系统

一、简介 1、Prometheus简介 官网:https://prometheus.io 项目代码:https://github.com/prometheus Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的监控系统。自2012年成为社区开源项目,拥有非常活跃的开发人员…

第二章 Electron自定义界面(最大化、最小化、关闭、图标等等)

一、介绍 😆 😁 😉 Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需…

linux--systemd、systemctl

linux--systemd、systemctl 1 介绍1.1 发展sysvinitupstart主角 systemd 登场 1.2 简介 2 优点兼容性启动速度systemd 提供按需启动能力采用 linux 的 cgroups 跟踪和管理进程的生命周期启动挂载点和自动挂载的管理实现事务性依赖关系管理日志服务systemd journal 的优点如下&a…

GAMS建模技术案例01 求解简单的线性规划模型

目录 1.问题描述 2 GAMS代码要点 2.1 代码编写要点 2.2 案例源码 2.3 计算结果及报告解 1.问题描述 首先给出一个基本线性规划问题的计算案例 subject to: 2 GAMS代码要点 2.1 代码编写要点 使用 * 表示注释文本定义变量 Positive Variable 表示定义非负变量Negative V…

【经典论文】打通文本图像的里程碑--clip

Git|Paper|Colab| CLIP 论文逐段精读【论文精读】_哔哩哔哩_bilibili clip是openai团队在4亿对文本图像对上训练出来的。它的训练方法简单,但效果缺出奇的好。是打通图片文本的里程碑式的模型。 目录 一.模型结构​编辑 1.为…

“Shell“免交互

文章目录 一.免交互(Here Document)1.1Here Document 概述2.2Here Document 常规用法 二.Expect2.1Expect基本命令2.2Expect执行方式 一.免交互(Here Document) 1.1Here Document 概述 使用I/O重定向的方式将命今列表提供给交互式…

chatgpt赋能Python-pythonandor

Pythonandor:探索Python的异步编程方式 如果您是一个Python工程师,你可能已经听过Pythonandor。Pythonandor是一个Python异步框架,能够让你更高效地处理请求,并且提高应用程序的响应速度。 什么是Pythonandor? Pythonandor实际…

5。STM32裸机开发(4)

嵌入式软件开发学习过程记录,本部分结合本人的学习经验撰写,系统描述各类基础例程的程序撰写逻辑。构建裸机开发的思维,为RTOS做铺垫(本部分基于库函数版实现),如有不足之处,敬请批评指正。 &…

一篇文章打好SQL基础,熟悉数据库的基础操作和方法,以及安装MySQL软件包和Python操作MySQL基础使用

1.SQL的概述 SQL的全称:Structured Query Language,结构化查询语言,用于访问和处理数据库的标准计算机语言。 SQL语言1974年有Boyce和Chamberlin提出的,并且首先在IBM公司研制的关系数据库系统SystemR上实现。 经过多年发展&am…

KVM(二)命令行新建虚拟机

目录 一、准备工作 二、新建虚拟机 2.1 文件准备 2.2 正式安装 2.3 时区设置 2.4 安装设置 2.5 设置root用户密码 2.6 vm2安装完成 三、进入虚拟机vm2 四、网络设置 五、参考链接 若还未部署KVM,请参考第一节: KVM(一)…

如何让你的 Jmeter+Ant 测试报告更具吸引力?

目录 引言 一、安装apache-Ant 二、Jmeter准备 3、生成测试报告 4、JMeter动态参数处理逻辑是什么? 5、JMeter是怎么做API自动化测试的? 结语 引言 想象一下,你辛苦搭建了一个复杂的网站,投入了大量的时间和精力进行开发和…

java 对接国标摄像头流程、代码整合 springboot SIP -GB2818

java 对接设备的代码资料较少,这里介绍GB2818的基本对接流程,有用自取👇 java负责SIP信令的注册交互,推流、拉流鉴权摄像头负责推流、流媒体负责拉流、转码 wvp-GB28181-pro项目 ,如果java对接各种摄像头,这个项目很&a…

Java流程控制(二)

⭐ 循环结构⭐ 嵌套循环⭐ break 语句和 continue 语句⭐ 方法⭐ 方法的重载(overload)⭐ 递归结构 ⭐ 循环结构 循环结构分两大类,一类是当型,一类是直到型。 🐟 当型: 当布尔表达式条件为 true 时,反复执行某语句&a…

【eNSP】win11解决virtualbox5.2.44无法安装、不兼容的问题

问题描述: 本人大三学生一枚,这学期上计算机网络,老师要求安装华为eNSP软件,安装环节一切顺利,直到安装到依赖组件中VirtualBox-5.2.44时,发生了问题,Windows提示此应用无法在此设备上运行&…

AI工具第三期:本周超16款国内精选AI工具分享!

1. 未来百科 未来百科,是一个知名的AI产品导航网站——为发现全球优质AI工具而生。目前已聚集全球2500优质AI工具产品,旨在帮助用户发现全球最好的AI工具,同时为研发AI垂直应用的创业公司提供展示窗口,迎接未来的AI时代。未来百科…

RocketMq源码分析(七)--消息发送流程

文章目录 一、消息发送入口二、消息发送流程1、消息验证1)消息主题验证2)消息内容验证 2、查找路由3、消息发送1)选择消息队列2)消息发送-内核实现sendKernelImpl方法参数获取brokerAddr添加消息全局唯一id设置实例id设置系统标记…

Linux Audio (5) DAPM-2 Widget/Path/Route

DAPM-2 Widget/Path/Route WM8960结构图WidgetRoutePath总结 课程:韦东山音频专题 内核:Kernel 3.5 实例:WM8960 WM8960结构图 录音时的音频通路 抽象图为: Widget wm8960.c sound\soc\codecs static const struct snd_soc_dap…

C++进阶——mapset的实现

C进阶——map&set的实现 红黑树的迭代器 迭代器的好处是可以方便遍历,是数据结构的底层实现与用户透明。如果想要给红黑树增加迭代器,需要考虑以前问题: 迭代器的定义 begin()与end() STL明确规定,begin()与end()代表的是一…

OS7安装rabbitmq

1.卸载存在的rabbitmq 停止rabbitmq服务: systemctl stop rabbitmq-server 查看rabbitmq安装的相关列表: yum list | grep rabbitmq 卸载rabbitmq已安装的相关内容: yum -y remove rabbitmq-server.noarch 查看erlang安装的相关列表: yum list | grep erlang 卸…