【论文阅读】Sparse4D v2:Recurrent Temporal Fusion with Sparse Model

标题: Sparse4D v2:Recurrent Temporal Fusion with Sparse Model
作者: Xuewu Lin, Tianwei Lin, Zixiang Pei, Lichao Huang, Zhizhong Su

motivation

在v1的基础上,作者发现长时序有更好的效果,但v1的计算量太大,于是又快又好的长时序v2诞生。
稀疏算法为多视图时间感知任务提供了极大的灵活性。提出了 Sparse4D 的增强版本,其中通过实现多帧特征采样的递归形式来改进时间融合模块。通过有效地解耦图像特征和结构化锚点特征,Sparse4D实现了时间特征的高效变换,从而仅通过稀疏特征的逐帧传输来促进时间融合。循环时间融合方法有两个主要好处。首先,它将时间融合的计算复杂度从O(T)降低到O(1),从而显著提高了推理速度和内存占用。其次,它能够实现长期信息的融合,从而通过时间融合带来更明显的性能提升:Sparse4D v2。
在这里插入图片描述

methods

总体Framwork如下:
在这里插入图片描述

1、Instance Temporal Propagation
实例由三个部分表示,分别是锚点、实例特征和锚点嵌入。锚点是结构化信息,它指示实例的状态,并具有实际的物理含义。实例特征是从图像中提取的高阶语义特征,主要来自图像编码器。锚点嵌入是锚点的特征编码,利用小型锚点编码器将锚点的结构化信息映射到高维空间。这种设计完全解耦了实例的图像特征和结构化状态,因此我们可以更方便地添加先验知识。例如时间传播,我们只需要投影其锚点,并使用锚点编码器对投影的锚点进行编码,实例特征可以保持不变。
在这里插入图片描述
其中投影公式与anchor定义相关,对于3D 检测任务,使用的投影公式如公式:
在这里插入图片描述
将decoder分为单帧层和时序层。单帧层以新初始化的instance作为输入,输出一部分高置信度的instance至时序层;时序层的instance除了来自于单帧层的输出以外,还来自于历史帧(上一帧)。将历史帧的instance投影至当前帧,其中,instance feature保持不变,anchor box通过自车运动和目标速度投影至当前帧,anchor embed通过对投影后的anchor进行编码得到。

Instance 表示方式:PETR系列中,query instance 采用的是 “Anchor Point -> Query 特征”的方式。即将均匀分布在3D 空间中的anchor point(learnable)用MLP编码成Query 特征。比起Sparse4D instance 中显式分离feature (纹理语义信息) 和3D anchor(几何运动信息) 的方式,PETR的instance 表示方式更加隐式一些。我们认为feature + anchor box的显式instance表示方式,在稀疏3D检测任务中更加简洁有效,也更易于训练;
时序转换方式:与instance 表示方法相对应的是稀疏Reccurent 的方式。StreamPETR 中,采用了隐式的query时序转换方式,即把velocity、ego pose、timestamp都编码成特征,然后再和query feature做一些乘加操作;Sparse4d-V2 则采用了显式的时序转换方式,对于历史帧的instance,直接将其3D anchor基于自车和instance 运动投影到当前帧,而保持其instance feature不变。
历史帧数量:StreamPETR 中 cache了历史N帧的query,再与当前帧进行attention。Sparse4d-v2 则只cache了上一帧的query。当然,StreamPETR 也可以只cache 一帧,只是效果会略略有下降。在实际的业务实践中,较少的历史帧cache 有助于减少端上的带宽占用,进一步提升系统整体性能。

2、Efficient Deformable Aggregation
就是直接在模型里面进行特征采样及融合,提高中间效率,降低访问及存储;
作者对deformable aggregation模块进行了底层的分析和优化,让其并行计算效率显著提升,显存占用大幅降低。基于pytorch op组合的Basic Deformable Aggregation 计算逻辑实现如下图所示。
在这里插入图片描述
可以发现其会生成多个中间变量,需要对显存进行多次访问和存储,降低了推理速度,且中间变量 尺寸较大,从而导致显存占用量显著增加,并且反向传播过程中的显存消耗会进一步提升。
Efficient Deformable Aggregation(EDA)的关键在于将“先采样所有特征再融合”的方式变成了“并行地边采样边融合”,其允许在关键点维度和特征维度上实现完全的并行化,每个线程的计算复杂度仅与相机数量和特征尺度数量相关,在某些场景中,3D空间中的一个点最多被投影到两个视图,使得计算复杂度可以进一步降低 。EDA可以作为一种基础性的算子操作,可以适用于需要多图像和多尺度融合的各种应用。
在这里插入图片描述
3、Camera Parameter Encoding
camera embedding(Liner层)
作者加入了内外参的编码,将相机投影矩阵通过全连接网络映射到高维特征空间得到camera embed。在计算deformable aggregation中的attention weights
时,我们不仅考虑instance feature和anchor embed,还加上了camera embedding。
4、Dense Depth Supervision
在实验中,发现基于稀疏的方法在早期训练阶段缺乏足够的收敛能力和速度。为了缓解这一问题,还引入了以点云为监督的多尺度密集深度估计方法作为辅助训练任务。而在推理过程中,这个分支网络将不会被激活,不影响推理效率。

Experiment

作者首先基于Resnet50 + 256x704 分辨率的配置展开了消融实验。如下表所示:
对比Exp1 和Exp5可以看出,采用recurrent instance的形式来实现长时序融合,相比单帧提升非常大;
对比Exp4 和Exp5可以看出,深度监督模块,有效降低了Sparse4D-V2的收敛难度,如果去掉该模块,模型训练过程会出现梯度崩溃的现象,从而使得mAP降低了8.5%。(在不具备深度监督条件的情况下,也可以考虑使用2D 的检测head 作为辅助loss,如FCOS Head,YoloX等)
对比Exp2 和Exp3可以看出,单帧层 + 时序层的组合方式比起只使用时序层的效果要好很多;
对比Exp3 和Exp5可以看出,相机参数编码也带来了可观的提升,mAP和NDSf分别提升了2.0%和1.5%;
在这里插入图片描述
在nuScenes validation数据集上进行了对比,可以无论是在低分辨率+ResNet50还是高分辨率+ResNet101的配置下,Sparse4D v2都取得了SOTA的指标,超过了SOLOFusion、VideoBEV和StreamPETR等算法。
从推理速度来看,在256X704的图像分辨率下,Sparse4Dv2超过了LSS-Based算法BEVPoolv2,但是低于StreamPETR。但是当图像分辨率提升至512X1408,Sparse4Dv2的推理速度会反超StreamPETR。这主要是因为在低分辨率下直接做global attention的代价较低,但随着特征图尺寸的上升其效率显著下降。而Sparse4D head理论计算量则和特征图尺寸无关,这也展示了纯稀疏范式算法在效率上的优势。实际测定中,当图像分辨率从256x704 提升到512x1408时,Sparse4Dv2 的decoder 部分耗时仅增加15%(从高分辨率特征上进行grid sample,会比从低分辨率特征上进行grid sample 略慢一点)。
在这里插入图片描述
以上是作者的全部内容,好,好,好!

【完结】

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

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

相关文章

构建免费的音视频转文字工具:支持多语言的语音识别项目

在当今数字时代,音视频内容越来越多,但如何快速将其转换为文字一直是一个挑战。本项目提供了一个免费的解决方案,支持将视频和音频文件转换为文字,并且支持多语言识别。 一个支持中英文的音视频转文字工具,集成了 Vos…

【开题答辩全过程】以 基于SpringBootVue的智能敬老院管理系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

Linux 830 shell:expect,ss -ant ,while IFS=read -r line,

[rootsamba caozx26]# scp /home/caozx26/pub root192.168.235.3:~/ root192.168.235.3s password: /home/caozx26/pub: not a regular file [rootsamba caozx26]# ls app km nntp.sh ntp.sh until1.sh 公共 图片 音乐 find.sh l2 ntp1.sh pub u…

​​​​​​​GPT-5发布引爆争议,奥特曼连夜回应!付费充值的Plus用户成最大赢家?

摘要: GPT-5发布后,社区口碑两极分化,从“强无敌”到“还我4o”的呼声并存。面对技术故障和用户质疑,OpenAI CEO萨姆奥尔特曼及团队火速回应,公布了一系列补救措施和未来计划。本文将带你速览这场风波始末,…

Python 操作 Redis 的客户端 - Redis Stream

Python 操作 Redis 的客户端 - Redis Stream1. Redis Stream2. Redis Commands2.1. CoreCommands.xadd() (生产端)2.2. CoreCommands.xlen() (生产端)2.3. CoreCommands.xdel() (生产端)2.4. CoreCommands.xrange() (生产端)2.5. RedisClusterCommands.delete()3. Redis Stream…

【Qt开发】按钮类控件(一)-> QPushButton

目录 1 -> 什么是 PushButton? 2 -> 相关属性 3 -> 代码示例 3.1 -> 带有图标的按钮 3.2 -> 带有快捷键的按钮 4 -> 总结 1 -> 什么是 PushButton? 在 Qt 框架中,QPushButton 是最基础且最常用的按钮控件之一&am…

Citrix 零日漏洞自五月起遭积极利用

安全研究员 Kevin Beaumont 披露了有关 CVE-2025-6543 的惊人细节,这是一个严重的 Citrix NetScaler 漏洞,在该公司发布补丁之前的几个月里,该漏洞被积极利用作为零日攻击。 Citrix 最初将其轻描淡写为简单的“拒绝服务”漏洞,但…

【系列08】端侧AI:构建与部署高效的本地化AI模型 第7章:架构设计与高效算子

第7章:架构设计与高效算子 要将AI模型成功部署到端侧,除了对现有模型进行压缩和优化,更根本的方法是在设计之初就考虑其在资源受限环境下的运行效率。本章将深入探讨如何设计高效的网络架构,以及如何理解并优化常用的核心算子。高…

42-Ansible-Inventory

文章目录Ansible基本概述手动运维时代(原始社会)自动化运维时代自动化运维工具的优势Ansible的功能及优点Ansible的架构Ansible的执行流程安装AnsibleAnsible配置文件生效顺序Ansible inventory主机清单Ansible基于免秘钥方式管理客户端小结Ansible-Adho…

Go语言runtime/trace工具全面解析

基本概念与功能 Go语言的runtime/trace是Go标准库中内置的性能分析工具,主要用于追踪和可视化Go程序的运行时行为。它能够记录程序执行期间的各种事件,包括goroutine调度、系统调用、垃圾回收(GC)、网络I/O、锁等待等关键信息。 trace工具的核心功能包括: goroutine生命周期…

Docker(自写)

Docker程序是跑在操作系统上的,而操作系统上又装了各种不同版本的依赖库和配置程序依赖环境,环境不同,程序就可能跑不起来,如果我们能将环境和程序一起打包docker就是可以将程序和环境一起打包并运行的工具软件基础镜像DockerFile…

深度拆解 OpenHarmony 位置服务子系统:从 GNSS 到分布式协同定位的全链路实战

1. 系统概述 OpenHarmony 的“定位子系统”就是硬件服务子系统集里的 “位置服务子系统”(Location SubSystem)。它向下对接 GNSS/GPS、基站、Wi-Fi 等定位模组,向上以 标准位置 API 形式为应用提供 实时位置、轨迹、地理围栏 等能力,并可与分布式软总线联动,实现 跨设备…

React Native基本用法

1,index调用registerComponent,把appName注入到React Native的根节点。 2,package.json是全局大管家,package-lock.json锁定版本,不会手动编辑,通过install安装 3, bebal.config.json bebal.config.json是翻…

LoraConfig target modules加入embed_tokens(64)

LoraConfig target modules加入embed_tokens 更好且成本更低的方法 嵌入层(embedding layer)的 lora_embedding_A 和 lora_embedding_B 头部(head)是否需加入目标模块列表 用户警告 解除权重绑定 解绑以后是随机权重,怎么办 更好且成本更低的方法 “有没有一种更好且成本…

笔记共享平台|基于Java+vue的读书笔记共享平台系统(源码+数据库+文档)

笔记共享平台|读书笔记共享平台系统 目录 基于Javavue的读书笔记共享平台系统 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取 博主介绍:✌️大厂码农|毕设布道师&#xff…

【VSCode】VSCode为Java C/S项目添加图形用户界面

为Java C/S项目添加图形用户界面 现在我们来为它添加图形用户界面(GUI)。我将使用Java Swing库创建一个简单的GUI,因为它内置于Java标准库中,无需额外依赖。 客户端GUI实现 首先,我们将修改客户端代码,添加一个Swing GUI界面&…

【云原生】Docker 搭建Kafka服务两种方式实战操作详解

目录 一、前言 二、Docker 搭建kafka介绍 2.1 Docker 命令部署 2.2 使用Docker Compose 部署 2.3 使用 Docker Swarm 2.4 使用 Kubernetes 2.5 部署建议 三、Docker 搭建kafka操作方式一 3.1 前置准备 3.2 完整操作过程 3.2.1 创建docker网络 3.2.2 启动zookeeper容…

DBeaver中禁用PostgreSQL SSL的配置指南

在DBeaver中为PostgreSQL连接禁用SSL是一个常见的配置,特别是当你的数据库服务器未启用SSL或遇到连接问题时。我来为你详细讲解操作步骤和注意事项。 🛠️ DBeaver中禁用PostgreSQL SSL的配置指南 详细步骤 打开驱动设置:在DBeaver中创建新的…

数组去重【JavaScript】

数组去重,并且key和val相同的对象视为相同的,需要去重。主函数:/*** 数组去重* 两个属性相同的对象也认为是相同的* param {Array} arr* return {Array} */ function uniqueArray(arr) {const result []// outer: 标签,标记外层循…

基于单片机设计的智能停车系统_271

文章目录 一、前言 1.1 项目介绍 【1】项目开发背景 【2】设计实现的功能 【3】项目硬件模块组成 【4】设计意义 【5】国内外研究现状 【6】摘要 1.2 设计思路 1.3 系统功能总结 1.4 开发工具的选择 【1】设备端开发 【2】上位机开发 1.5 参考文献 1.6 系统框架图 1.7 系统原理…