Sparse4D v3:推进端到端3D检测和跟踪


论文地址:2311.11722 (arxiv.org)
代码地址:HorizonRobotics/Sparse4D (github.com)
在自动驾驶感知系统中,3D 检测和跟踪是两项基本任务。本文在 Sparse4D 框架的基础上更深入地探讨了这一领域。作者引入了两个辅助训练任务(Temporal Instance Denoising 【类似DN-DETR】和 Quality Estimation),并提出了解耦注意力以进行结构改进,从而显着提高检测性能。此外,作者使用一种简单的方法将检测器扩展到跟踪器中,该方法在推理过程中分配实例 ID,进一步突出了基于查询(query-based)的算法的优势。在nuScene基准测试上进行的广泛实验验证了本文提出的改进的有效性。以ResNet50为backbone,见证了 mAP、NDS 和 AMOTA 的提升 3.0%、2.2% 和 7.6%,分别达到 46.9%、56.1% 和 49.0%。本文最好的模型在nuScenes测试集上实现了 71.9% 的 NDS 和 67.7% 的 AMOTA。
在时序多视图感知研究领域,基于稀疏的算法已经取得了重大进展,达到了与基于密集BEV的算法相当的感知性能,同时提供了以下几个优势:
1) 自由视图转换。这些稀疏方法消除了将图像空间转换为 3D 矢量空间的需要。
2) 检测头的恒定计算负载,这与感知距离和图像分辨率无关。
3) 通过端到端方式更容易实现集成下游任务。
作者选择Sparse4Dv2作为实施改进的基线。该算法的整体结构如图1所示。图像编码器将多视图图像转换为多尺度特征图,而解码器模块则利用这些图像特征来优化实例并生成感知结果。
首先,作者观察到,与基于密集的算法相比,基于稀疏的算法在收敛方面遇到了更大的挑战,最终影响了它们的最终性能。这个问题在 2D 检测领域已经得到了彻底的研究,主要归因于使用一对一的正样本匹配。这种匹配方法在训练的初始阶段不稳定,并且与一对多匹配相比,还会导致正样本数量有限,从而降低了解码器训练的效率。此外,Sparse4D 利用稀疏特征采样而不是全局交叉注意力,由于正样本稀缺,这进一步阻碍了编码器的收敛。在 Sparse4Dv2中,引入了密集深度监督,以部分缓解图像编码器面临的这些收敛问题。
本文主要旨在通过关注解码器训练的稳定性来提高模型性能。作者将降噪任务作为辅助监督,并将降噪技术从 2D 单帧检测扩展到 3D 时序检测。它不仅确保了稳定的正样本匹配,而且显着增加了正样本的数量。此外,作者引入了质量评估任务作为辅助监督。这使得输出置信度分数更加合理,从而优化了检测结果排名的准确性,并产生了更高的评估指标。
此外,作者增强了 Sparse4D 中实例自注意力和时序交叉注意力模块的结构,引入了一种解耦的注意力机制,旨在减少注意力权重计算过程中的特征干扰。 如图 3 所示,当将锚点嵌入(anchor embedding)和实例特征(instance feature)相加,并作为注意力计算的输入时,生成的注意力权重中存在异常值的实例。这无法准确反映目标特征之间的相互关联,导致无法聚合正确的特征。通过用 concatening 替换 add,显著减少了这种错误现象的发生。这种增强与 Conditional DETR有相似之处。然而,关键的区别在于我们强调查询之间的注意力,而不是Conditional DETR,后者专注于查询和图像特征之间的交叉注意力。此外,本文的方法涉及一种独特的编码方法。

最后,为了提升感知系统的端到端能力,作者探索将 3D 多目标跟踪任务集成到 Sparse4D 框架中,实现物体运动轨迹的直接输出。与检测跟踪方法不同,这样做消除了数据关联和过滤的需要,将所有跟踪功能集成到检测器中。此外,与现有的联合检测和跟踪方法不同,本文的跟踪器不需要修改训练过程或损失函数。它不需要提供真值 ID,但可以实现预定义的 instance-to-tracking 回归。本文的跟踪实现最大限度地集成了检测器和跟踪器,不需要修改探测器的训练过程,也不需要额外的微调。
本文的贡献如下:
(1) 提出了 Sparse4D-v3,这是一个有效的 3D 感知框架,具有三种有效的策略:时序实例去噪、质量估计和解耦注意力。
(2) 将 Sparse4D 扩展为端到端跟踪模型。
(3) 展示了本文对 nuScenes 的改进的有效性,在检测和跟踪任务中实现了最先进的性能。
本文方法
网络结构和推理流程与 Sparse4Dv2相同(上方图片所示)
Temporal Instance Denoising

在3D检测任务中,通过时序实例去噪(Temporal Instance Denoising)来提高模型收敛稳定性和检测性能。具体内容包括:
-
2D到3D的扩展:将2D单帧去噪扩展到3D时序去噪,使用Sparse4D框架将实例(称为查询)解耦为隐式实例特征和显式锚点。
-
锚点初始化:在训练过程中,初始化两组锚点。一组是通过k-means方法均匀分布在检测空间中的锚点,作为可学习参数;另一组是通过向真实值(GT)添加噪声生成的锚点。
-
噪声生成:详细描述了如何生成带噪声的锚点,并解释了如何通过二分图匹配来确定正负样本,以避免误分配。
-
时序传播:将单帧噪声实例通过时序传播扩展到多帧,以更好地适应稀疏循环训练过程。在每一帧的训练中,随机选择噪声实例组投影到下一帧。
-
独立性保持:确保每组实例的相互独立性,避免噪声实例与正常实例之间的特征交互,从而避免潜在的歧义。
通过这些方法,作者旨在提高3D检测任务的性能和稳定性。
Quality Estimation
现有的基于稀疏的方法主要估计正样本和负样本的分类置信度,以衡量与真实值之间的一致性。优化目标是最大化地提高所有正样本的分类置信度。然而,不同正样本之间的匹配质量存在显著差异。因此,分类置信度不是评估预测边界框质量的理想指标。为了便于网络理解正样本的质量,一方面加速收敛,另一方面合理化预测排名,故而引入了预测质量估计的任务。
对于 3D 检测任务,使用以下公式定义两个质量指标:centerness 和 yawness

loss表示为:

Decoupled Attention

本文对 Sparse4D v2 中的 anchor 编码器、self-attention 和 temporal cross-attention 进行了简单的改进。该架构如图 5 所示。设计原则是以串联方式组合来自不同模态的特征,而不是使用加法方法。与 Conditional DETR 相比存在一些差异。首先,本文在查询之间的注意力机制上进行了改进,而不是在查询和图像特征之间的交叉注意力上;交叉注意力仍然利用了来自Sparse4D的可变形聚合方法。此外,本文不是在单头注意力级别连接位置嵌入和查询功能,而是在多头注意力级别进行外部修改,为神经网络提供了更大的灵活性。
Extend to Tracking
在 Sparse4D v2 的框架中,时序建模采用递归形式,将前一帧的实例作为输入投影到当前帧上。临时实例类似于基于查询的跟踪器中的跟踪查询,区别在于跟踪查询受更高阈值的限制,表示高度可信的检测结果。相比之下,本文的时序实例很多,其中大多数可能无法准确表示前几帧中检测到的对象。
为了在 Sparse4D v2 框架内从检测扩展到多目标跟踪,本文直接将实例从检测边界框重新定义为轨迹。轨迹包括每个帧的 ID 和边界框。由于设置了大量冗余实例,因此许多实例可能没有与精确的目标相关联,也没有被分配明确的 ID。尽管如此,它们仍然可以传播到下一帧。一旦实例的检测置信度超过阈值 T ,就会认为该实例被锁定到目标上并分配了一个 ID,该 ID 在整个时间传播过程中保持不变。因此,实现多对象跟踪就像将 ID 分配过程应用于输出感知结果一样简单。
跟踪过程中的生命周期管理由 Sparse4Dv2 中的 top-k 策略无缝处理,无需额外修改。具体细节可以在 算法 1 中参考。

Experiment


相关文章:
Sparse4D v3:推进端到端3D检测和跟踪
论文地址:2311.11722 (arxiv.org) 代码地址:HorizonRobotics/Sparse4D (github.com) 在自动驾驶感知系统中,3D 检测和跟踪是两项基本任务。本文在 Sparse4D 框架的基础上更深入地探讨了这一领域。作者引入了两个辅助训练任务(Temp…...
LeetCode781 森林中的兔子
问题描述 在一片神秘的森林里,住着许多兔子,但是我们并不知道兔子的具体数量。现在,我们对其中若干只兔子进行提问,问题是 “还有多少只兔子与你(指被提问的兔子)颜色相同?” 我们将每只兔子的…...
M系列/Mac安装配置Node.js全栈开发环境(nvm+npm+yarn)
一、安装 nvm(Node Version Manager) 打开终端,使用 curl 在 M 系列 Mac 上安装 nvm: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash对于非 M 系列的 Intel Mac,上述命令同样适…...
Dify使用
1. 概述 官网:Dify.AI 生成式 AI 应用创新引擎 文档:欢迎使用 Dify | Dify GITHUB:langgenius/dify: Dify is an open-source LLM app development platform. Difys intuitive interface combines AI workflow, RAG pipeline, agent capabilities, model management, ob…...
借助 Cursor 快速实现小程序前端开发
借助 Cursor 快速实现小程序前端开发 在当今快节奏的互联网时代,小程序因其便捷性、高效性以及无需下载安装的特点,成为众多企业和开发者关注的焦点。然而,小程序的开发往往需要耗费大量的时间和精力,尤其是在前端开发阶段。幸运…...
python 语音识别方案对比
目录 一、语音识别 二、代码实践 2.1 使用vosk三方库 2.2 使用SpeechRecognition 2.3 使用Whisper 一、语音识别 今天识别了别人做的这个app,觉得虽然是个日记app 但是用来学英语也挺好的,能进行语音识别,然后矫正语法,自己说的时候 ,实在不知道怎么说可以先乱说,然…...
Hanoi ( 2022 ICPC Southeastern Europe Regional Contest )
Hanoi ( 2022 ICPC Southeastern Europe Regional Contest ) The original problem “Towers of Hanoi” is about moving n n n circular disks of distinct sizes between 3 3 3 rods. In one move, the player can move only the top disk from on…...
革新在线购物体验:CatV2TON引领虚拟试穿技术新纪元
在这个数字化飞速发展的时代,图像与视频合成技术正以前所未有的速度重塑着我们的生活,尤其在在线零售领域,一场关于购物体验的革命正在悄然上演。想象一下,无需亲自试穿,仅凭一张照片或一段视频,就能精准预…...
【Git】ssh如何配置gitlab+github
当我们工作项目在gitlab上,又希望同时能更新自己个人的github项目时,可能因为隐私问题,不能使用同一′密钥。就需要在本地电脑上分别配置两次ssh。 1、分别创建ssh key 在用户主目录下,查询是否存在“.ssh”文件: 如…...
全国路网矢量shp数据(分不同类型分省份)
科研练习数据 全国路网矢量shp数据(分不同类型分省份) 有需要的自取 数据格式:shp(线) 数据包含类型:城市主干道、城市次干道、城市快速路、城市支路、高速公路、内部道路、人行道、乡村道路、自行车道路…...
音频进阶学习十二——Z变换一(Z变换、收敛域、性质与定理)
文章目录 前言一、Z变换1.Z变换的作用2.Z变换公式3.Z的状态表示1) r 1 r1 r12) 0 < r < 1 0<r<1 0<r<13) r > 1 r>1 r>1 4.关于Z的解释 二、收敛域1.收敛域的定义2.收敛域的表示方式3.ROC的分析1)当 …...
使用Redis解决使用Session登录带来的共享问题
在学习项目的过程中遇到了使用Session实现登录功能所带来的共享问题,此问题可以使用Redis来解决,也即是加上一层来解决问题。 接下来介绍一些Session的相关内容并且采用Session实现登录功能(并附上代码),进行分析其存在…...
STM32F1学习——USART串口通信
一、USART通用同步异步收发机 USART的全称是Universal Synchronous/Asynchronous Receiver Transmitter , 通用同步异步收发机,但由于他主要以异步通信为主,所以他也叫UART。它遵循TTL电平标准,是一种全双工异步通信标准ÿ…...
[概率论] 随机变量
Kolmogorov 定义的随机变量是基于测度论和实变函数的。这是因为随机变量的概念需要精确地定义其可能的取值、发生的概率以及这些事件之间的依赖关系。 测度论:在数学中,测度论是用来研究集合大小的理论,特别是无穷可数集和无界集的大小。对于…...
Docker 部署 MinIO | 国内阿里镜像
一、导读 Minio 是个基于 Golang 编写的开源对象存储套件,基于Apache License v2.0开源协议,虽然轻量,却拥有着不错的性能。它兼容亚马逊S3云存储服务接口。可以很简单的和其他应用结合使用,例如 NodeJS、Redis、MySQL等。 二、…...
探索Aviator:轻量级Java动态表达式求值引擎的使用指南
目录 一、快速介绍 (一)Aviator (二)Aviator、IKExpression、QLExpress比较和建议 二、基本应用使用手册 1.执行表达式 2.使用变量 3.exec 方法 4.调用函数 调用内置函数 调用字符串函数 调用自定义函数 5.编译表达式…...
编译加速工具ccache
1、什么是ccache ccache(Compilation Cache)是一个开源的编译缓存工具,最初为 C/C 设计,但也可以用于其他语言的编译过程(如 Objective-C、CUDA 等)。它的核心思想是通过缓存编译结果,避免重复…...
【R语言】相关系数
一、cor()函数 cor()函数是R语言中用于计算相关系数的函数,相关系数用于衡量两个变量之间的线性关系强度和方向。 常见的相关系数有皮尔逊相关系数(Pearson correlation coefficient)、斯皮尔曼秩相关系数(Spearmans rank corre…...
排序合集(一)
以下是更完善和人性化的版本,增加了一些细节和解释,同时让内容更易读: 一、直接插入排序 (Insertion Sort) 基本思想 直接插入排序是一种简单直观的排序算法,就像我们打扑克牌时的操作:每次摸到一张牌,都…...
深入解析 FFmpeg 的 AAC 编解码过程
深入解析 FFmpeg 的 AAC 编解码过程 —— 技术详解与代码实现 AAC(Advanced Audio Coding) 是一种高效的有损音频压缩格式,因其高压缩效率和良好的音质而被广泛应用于流媒体、广播和音频存储等领域。FFmpeg 是一个强大的多媒体处理工具,支持 AAC 的编码和解码。本文将详细…...
DeepSeek-R1技术报告快速解读
相关论文链接如下: DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language ModelsDeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning 文章目录 一、论文脑图二、论文解读2.1 研究背景2.2 研究方法2.3 …...
windows蓝牙驱动开发-蓝牙常见问题解答
Windows 可以支持多少个蓝牙无线电? Windows 中的蓝牙堆栈仅支持一个蓝牙无线电。 此无线电必须符合蓝牙规范和最新的 Windows 硬件认证计划要求。 蓝牙和 Wi-Fi 无线电如何有效共存? 蓝牙和 Wi-Fi 无线电都在 2.4 GHz 频率范围内运行,因此…...
基于SpringBoot+Vue实现航空票务管理系统
作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,…...
让文物“活”起来,以3D数字化技术传承文物历史文化!
文物,作为不可再生的宝贵资源,其任何毁损都是无法逆转的损失。然而,当前文物保护与修复领域仍大量依赖传统技术,同时,文物管理机构和专业团队的力量相对薄弱,亟需引入数字化管理手段以应对挑战。 积木易搭…...
java项目之美妆产品进销存管理系统的设计与开发源码(ssm+mysql)
项目简介 美妆产品进销存管理系统的设计与开发实现了以下功能: 美妆产品进销存管理系统的设计与开发的主要使用者分为管理员登录后修改个人的密码。产品分类管理中,对公司内的所有产品分类进行录入,也可以对产品分类进行修改和删除。产品管…...
UMLS初探
什么是UMLS UMLS(Unified Medical Language System,统一医学语言系统),简单来说就是将不同的医学标准统一到一套体系的系统,主要为了医疗系统的统一而构建出的。 UMLS的主要组成部分 Metathesaurus:一个…...
保姆级教程Docker部署Zookeeper模式的Kafka镜像
目录 一、安装Docker及可视化工具 二、Docker部署Zookeeper 三、单节点部署 1、创建挂载目录 2、运行Kafka容器 3、Compose运行Kafka容器 4、查看Kafka运行状态 5、验证生产消费 四、部署可视化工具 1、创建挂载目录 2、Compose运行Kafka-eagle容器 3、查看Kafka-e…...
idea插件开发dom4j报错:SAXParser cannot be cast to class org.xml.sax.XMLReader
手打不易,如果转摘,请注明出处! 注明原文:https://blog.csdn.net/q258523454/article/details/145512328 dom4j报错 idea插件使用到了dom4j依赖,但是报错: I will print the stack trace then carry on…...
【Go语言圣经】第八节:Goroutines和Channels
DeepSeek 说 Goroutines 和 Channels 最近非常流行询问DeepSeek某些相关概念或热点的解释,因此在开始系统性地学习《Go语言圣经》之前,我首先向DeepSeek进行了提问。具体的Prompt如下: 有关Golang当中的Goroutines和Channels,我现…...
第3章 使用 Vue 脚手架
第3章 使用 Vue 脚手架 3.1 初始化脚手架3.1.1 说明3.1.2. 具体步骤3.1.3 分析脚手架结构1 总结2 细节分析1 配置文件2 src文件1 文件结构分析2 例子 3 public文件4 最终效果 3.2 ref属性3.3 props配置项3.4 mixin混入3.5 插件3.6 scoped样式3.7 Todo-list 案例3.7.1 组件化编码…...
