当前位置: 首页 > news >正文

(已开源-AAAI25) RCTrans:雷达相机融合3D目标检测模型

在这里插入图片描述
在雷达相机融合三维目标检测中,雷达点云稀疏、噪声较大,在相机雷达融合过程中提出了很多挑战。为了解决这个问题,我们引入了一种新的基于query的检测方法 Radar-Camera Transformer (RCTrans)。具体来说:

  • 首先设计了一个雷达稠密编码器来丰富稀疏的有效的雷达token,然后将它们与图像token拼接起来。通过这样做可以充分挖掘每个感兴趣区域的3D信息,减少融合阶段空token的干扰。
  • 然后设计了一个剪枝顺序解码器,根据获得的token和随机初始化的query来预测 3D 框。为了缓解雷达点云中高度测量值的歧义,我们通过顺序融合结构逐步定位物体的位置。它有助于在token和query之间获得更精确和更灵活的对应关系。
  • 解码器采用剪枝训练策略,在推理过程中可以节省很多时间,抑制query失去独特性。在大规模nuScenes数据集上的大量实验表明了该方法的优越性,获得了新的SOTA的雷达相机融合3D检测结果。

项目链接:https://github.com/liyih/RCTrans


文章目录

      • Introduction
      • Method
      • Experiments

Introduction

引言和相关工作部分这里就不介绍了,在原文中作者提出了雷达传感器的两个主要缺陷:稀疏和噪声大,这也是目前量产雷达最主要的痛点。导致非空的雷达pillars数量大概是激光雷达Pillars数量的10%。图一中作者比较了RCTrans模型和目前纯视觉以及相机雷达融合模型的对比,可以看到同等配置下,RCTrans都是优于RCBEVDet,在推理速度上略慢于RCBEVDet。

在这里插入图片描述


Method

RCTrans模型框图如图2所示,首先使用两个并行分支(雷达与图像分支)提取多模态token。在雷达分支中,我们将使用雷达稠密编码器来生成稠密有效的雷达特征。然后,position embedding添加到token中。最后,随机初始化的query将被发送到 Pruning Sequential Decoder 和token一起预测 3D 框。整个训练是一个端到端的过程,不需要冻结任何参数,模型具体细节可以参考StreamPETR和FUTR3D。
在这里插入图片描述
这里介绍下雷达稠密编码器,如下图所示。我们的目标是找到一个结构简单的网络,可以自适应地填充每个BEV雷达网格和聚合多尺度信息,以促进不同大小的目标检测。自适应填充每个 BEV 网格的最简单方法是使用全局自注意力机制。然而,由于BEV网格数量较多,该方法耗时较长。为了解决这个问题,首先对原始的BEV特征进行下采样,并在最小分辨率与它们交互。同时,下采样过程可以大大减少无效网格的数量,从而提高交互后获得的特征质量。受 U-Net的启发,我们以相同的 BEV 分辨率连接不同感受野大小的特征,有效地保留了不同大小的对象的特征,这里做了三次下采样和三次上采样。对最小分辨率做自注意力时,添加了2D position embedding。

在这里插入图片描述
下面介绍下position embedding的生成,对于图像position embedding,我们使用PETR中提出的3D位置嵌入。给定一个图像token T i T_i Ti,一系列点 p ( u , v ) = p i ( u , v ) = ( u × d i , v × d i , d i , 1 ) , i = 1 , 2 , 。 . . , d p(u, v) = p_i (u, v) = (u \times d_i, v \times d_i, d_i, 1), i = 1, 2,。.., d p(u,v)=pi(u,v)=(u×di,v×di,di,1),i=1,2,..,d 为定义在相机视锥空间中的点。这里, u u u v v v 是token在图像空间中的索引, d d d 是沿深度轴的点数。之后,通过下列公式计算图像位置嵌入:
P E i m = Φ i m ( K p ( u , v ) ) , P E_{i m}=\Phi_{i m}(K p(u, v)), PEim=Φim(Kp(u,v)),

其中 K K K是相机内参矩阵, Φ i m \Phi_{i m} Φim MLP网络。由于雷达无法获得物体的精确高度信息,对于雷达位置嵌入,我们使用二维BEV嵌入,忽略BEV网格的高度信息。雷达位置嵌入由式下列公式计算而来:
P E r a = Φ r a ( Ψ ( h , w ) ) P E_{r a}=\Phi_{r a}(\Psi(h, w)) PEra=Φra(Ψ(h,w))

其中 ( h , w ) (h, w) (h,w)为BEV网格的2D坐标, Φ r a \Phi_{r a} Φra为MLP网络, Ψ ( h , w ) \Psi(h, w) Ψ(h,w) 为正弦余弦函数。通过位置嵌入,不同模态的信息可以隐式地与三维空间中的目标query对齐。

关于本文提出的剪枝顺序解码器,首先初始化了在3D空间可学习的n个query参考点,对应query特征初始化为0。query位置投影到雷达空间可以用下面公式来投影:
{ r x i ′ = r x i × ( x max ⁡ − x min ⁡ ) + x min ⁡ r y i ′ = r y i × ( y max ⁡ − y min ⁡ ) + y min ⁡ r z i ′ = r z i × ( z max ⁡ − z min ⁡ ) + z min ⁡ \left\{\begin{aligned} r_{x i}^{\prime} & =r_{x i} \times\left(x_{\max }-x_{\min }\right)+x_{\min } \\ r_{y i}^{\prime} & =r_{y i} \times\left(y_{\max }-y_{\min }\right)+y_{\min } \\ r_{z i}^{\prime} & =r_{z i} \times\left(z_{\max }-z_{\min }\right)+z_{\min } \end{aligned}\right. rxiryirzi=rxi×(xmaxxmin)+xmin=ryi×(ymaxymin)+ymin=rzi×(zmaxzmin)+zmin

往图像上投影可以用下面的公式(3D空间到视锥空间):
R i m = K − 1 R r a R_{i m}=K^{-1} R_{r a} Rim=K1Rra

对应的3D和2D position embedding可以用如下公式表示:
P E 3 d = Φ i m ( R i m ) , P E 2 d = Φ r a ( Ψ ( R r a ) ) P E_{3d}=\Phi_{im}(R_{im}), P E_{2d}=\Phi_{ra}(\Psi(R_{ra})) PE3d=Φim(Rim),PE2d=Φra(Ψ(Rra))

本文提出将单层decoder分成两个小的decoder,并独立进行模态融合。

在每个解码器层的末尾,我们将预测query的位置。在下一层,新的位置嵌入将根据更新的位置生成。给定更新后的查询 F q n + 1 F^{n+1}_q Fqn+1 ,我们预测查询位置的偏移量 ΔR,更新后的位置 R n + 1 R_{n+1} Rn+1 可以通过 Rn + ΔR 计算。在每一层中,我们使用顺序结构来融合多模态信息,这导致解码器层数比传统的解码器要多2倍,会导致额外的推理时间。更重要的是,随着我们在每个解码器层之后更新query的位置,一些目标query可能逐渐位于同一个区域,并失去特征独特性。这会导致某些区域的信息被忽略,注意力机制可能无法学习有效的表示学习概念,从而阻止模型实现预期的性能改进。为此,我们提出了一种剪枝训练策略,该策略在训练期间使用 6 层解码器,在推理过程中仅使用 3 层解码器。


Experiments

实验部分,作者使用的数据集是nuScenes数据集,主要对比了3D检测指标和3D追踪指标。实验细节部分:

  • 基于StreamPETR和 MMDetection3D代码库实现 RCTrans。
  • 和CRN一样,将4帧历史帧的信息聚集到当前帧,使用StreamPETR中提出的以目标为中心的时间建模来进行时间融合。
  • 训练时解码器层数设置为 6,在推理过程中设置为3。在时间融合中,将剪枝后最后一层的输出插入到内存队列中。
  • query数量、内存队列大小和传播query的数量分别设置为 900、512 和 128。
  • 对于雷达,和CRAFT一样,聚集了6个过去雷达扫描帧,并将雷达点的最大数量设置为 2048。雷达 BEV 的大小设置为 128×128。
  • 在8个NVIDIA A100 GPU 上训练网络,训练epoch数量为90,批量大小为 32。速度在单个NVIDIA RTX3090 GPU 上进行评估。学校率初始值为 1 0 − 4 10^{-4} 104,优化器使用的是AdamW。

下面是在验证集和测试集上3D检测任务的性能对比:

在这里插入图片描述

在这里插入图片描述
如表1所示,本文们的方法在不同的图像主干网下取得了最好的性能,时间消耗略有增加。例如,当使用 Swin-T 作为主干网并将图像大小设置为 256×704 时,与SOTA雷达相机解决方案 RCBEVDet 相比,RCTrans将NDS 提高了 3.2%,mAP 提高了 2.4%,而延迟增加了大约 5 毫秒。

多个主干网的实验结果表明,RCTrans具有良好的适应性,在实际应用中有利于模型部署和迁移。更重要的是,RCTrans击败了所有纯视觉的检测方法,包括我们的视觉基线模型 StreamPETR,这证明了我们的方法可以有效地使用雷达信息来补充检测结果。在nuScenes测试集上如表2所示,RCTrans取得了64.7%的NDS和57.8%的mAP,优于所有其它方法。值得注意的是,RCTrans在mAVE上获得了巨大的性能提升,证明了模型从雷达数据中提取有用的速度补偿信息。

在这里插入图片描述
如表3所示,将RCTrans与nuScenes测试集上现有的相机和雷达相机跟踪解决方案进行了比较。总体而言,我们的方法产生了最好的结果。与CRN相比,我们的方法显着提高了 AMOTA、FP、FN 和 IDS。我们比较的跟踪结果都是基于CenterPoint中基于速度的最近距离匹配获得的,因此跟踪性能的提高主要是由于我们的方法更准确地预测速度

下面是消融实验,图像骨干网是ResNet50,分辨率是256x704。如表 4 所示,每个模块都可以持续提高性能。与单模态相比,使用多模态输入可以显着提高模型性能。与常用的BEV编码器,如SECOND相比,使用提出的雷达稠密编码器(RDE)可以获得1.3%的NDS和1.6%的mAP提高。更重要的是,剪枝顺序解码器 (PSD) 将 NDS 提高了 2.2%,mAP 提高了 2.7%。

在这里插入图片描述
在训练期间将解码器的数量设置为 6,在推理过程中仅使用前3层会导致出色的性能,同时将推理时间减少了17.7毫秒,同时将 NDS 提高了 0.2%。造成这种现象的原因是,在每一层之后重新计算position embedding可以快速获得准确的对齐和更快的收敛,但会使一些query集中在同一个区域。此外,通过顺序结构在每一层融合不同的模态信息将导致更多transformer层数,在推理过程中减少解码器层的数量可以加快推理过程,而不会降低性能。
在这里插入图片描述
最后是模型鲁棒性分析,如表6所示,RCTrans在不同的传感器故障情况下优于所有现有的方法。具体来说,与 RCBEVDet 相比,RCTrans 在相机出现故障的条件下将 mAP 分别提高了 5.0%、15.3% 和 3.8%。值得注意的是,当丢弃的相机数量为3时,RCTrans 仍然可以得到接近空丢弃一个相机的效果,这是对过去方法的重要改进。上述现象表明,我们的模型可以在传感器故障情况下实现更稳定的效果。
在这里插入图片描述

相关文章:

(已开源-AAAI25) RCTrans:雷达相机融合3D目标检测模型

在雷达相机融合三维目标检测中,雷达点云稀疏、噪声较大,在相机雷达融合过程中提出了很多挑战。为了解决这个问题,我们引入了一种新的基于query的检测方法 Radar-Camera Transformer (RCTrans)。具体来说: 首先设计了一个雷达稠密…...

Elasticsearch:在 HNSW 中提前终止以实现更快的近似 KNN 搜索

作者:来自 Elastic Tommaso Teofili 了解如何使用智能提前终止策略让 HNSW 加快 KNN 搜索速度。 在高维空间中高效地找到最近邻的挑战是向量搜索中最重要的挑战之一,特别是当数据集规模增长时。正如我们之前的博客文章中所讨论的,当数据集规模…...

unittest VS pytest

以下是 unittest 和 pytest 框架的对比表格: 特性unittestpytest设计理念基于类的设计,类似于 Java 的 JUnit更简洁,基于函数式编程设计,支持类和函数两种方式测试编写需要继承 unittest.TestCase 类,方法以 test_ 开…...

Tableau数据可视化与仪表盘搭建-基础图表制作

目录 对比分析:比大小 柱状图 条形图 数据钻取 筛选器 热力图 气泡图 变化分析:看趋势 折线图 预测 面积图 关系分布:看位置 散点图 直方图 地图 构成分析:看占比 饼图 树地图 堆积图 对比分析:比大…...

Center Loss 和 ArcFace Loss 笔记

一、Center Loss 1. 定义 Center Loss 旨在最小化类内特征的离散程度,通过约束样本特征与其类别中心之间的距离,提高类内特征的聚合性。 2. 公式 对于样本 xi​ 和其类别yi​,Center Loss 的公式为: xi​: 当前样本的特征向量&…...

3125: 【入门】求1/1+1/2+2/3+3/5+5/8+8/13+13/21……的前n项的和

文章目录 题目描述输入输出样例输入样例输出 题目描述 求1/11/22/33/55/88/1313/2121/34……的前n项的和。 输入 第1行&#xff1a;一个整数n&#xff08;1 < n < 30 &#xff09;。 输出 一行&#xff1a;一个小数&#xff0c;即前n项之和&#xff08;保留3位小数&…...

如何确保获取的淘宝详情页数据的准确性和时效性?

要确保获取的淘宝详情页数据的准确性和时效性&#xff0c;可从以下几个方面着手&#xff1a; 合法合规获取数据 遵守平台规则&#xff1a;在获取淘宝详情页数据之前&#xff0c;务必仔细阅读并严格遵守淘宝平台的使用协议和相关规定。明确哪些数据可以获取、以何种方式获取以及…...

云计算是如何帮助企业实现高可用性的

想象一下&#xff0c;你正在享受一个悠闲的周末&#xff0c;突然接到同事的电话&#xff1a;公司的核心系统宕机了&#xff01;这个场景对很多IT从业者来说并不陌生。但在云计算时代&#xff0c;这样的噩梦正在逐渐远去。 一位前辈告诉我&#xff1a;"在技术世界里&#…...

143.《python中使用pymongo》

文章目录 pymongo安装pymongo连接数据库mongodb操作创建数据库判断数据库是否存在创建集合判断集合是否已经存在插入集合插入一条多条插入 查询数据查询一条数据查询所有数据查询指定字段的数据统计查询统计所有记录数按条件统计记录数分页列表查询比较查询$eq$gt$gte$in$lt$lt…...

Babylon.js 的 Mesh 与 Unity 的 GameObject:深入对比与分析

在 3D 开发领域&#xff0c;Babylon.js 和 Unity 是两款极具影响力的引擎&#xff0c;分别在 Web 平台和游戏开发领域占据重要地位。要深入理解这两款引擎的异同&#xff0c;从其核心对象——Babylon.js 的 Mesh 和 Unity 的 GameObject ——入手进行对比&#xff0c;是…...

MySQL安装,配置教程

一、Linux在线yum仓库安装 打开MySQL官方首页&#xff0c;链接为&#xff1a;https://www.mysql.com/ 界面如下&#xff1a; 在该页面中找到【DOWNOADS】选项卡&#xff0c;点击进入下载页面。 在下载界面中&#xff0c;可以看到不同版本的下载链接&#xff0c;这里选择【My…...

Android折叠屏适配(权宜之计)

现在折叠屏手机出了也有一段时间了&#xff0c;但是除了大厂app&#xff0c;其他app适配折叠屏还是比较少&#xff0c;如果真的想做好折叠屏完全适配&#xff0c;那这个文章可能并不适合&#xff0c;这里只是一个简单适配的思路。 如果原先你的app已经适配了平板&#xff0c;那…...

Spark是什么?Flink和Spark区别

Spark是什么&#xff1f;Flink和Spark区别 一、Spark二、Spark和Flink区别三、总结 一、Spark Apache Spark 是一个开源的大数据处理框架&#xff0c;主要用于大规模数据处理和分析。它支持多种数据处理模式&#xff0c;包括批处理、流处理、SQL 查询、机器学习和图处理等。 核…...

Cocos Creator 3.8 修改纹理像素值

修改的代码&#xff1a; import { _decorator, Component, RenderTexture, Sprite, Texture2D, ImageAsset, SpriteFrame, Vec2, gfx, director, log, math, v2 } from cc;const { ccclass, property } _decorator;ccclass(GradientTransparency) export class GradientTrans…...

如何评价deepseek-V3 VS OpenAI o1 自然语言处理成Sql的能力

DeepSeek-V3 介绍 在目前大模型主流榜单中&#xff0c;DeepSeek-V3 在开源模型中位列榜首&#xff0c;与世界上最先进的闭源模型不分伯仲。 准备工作&#xff1a; 笔者只演示实例o1 VS DeepSeek-V3两个模型&#xff0c;大家可以自行验证结果或者实验更多场景&#xff0c;同时…...

SQL左连接的两种不同情况示例和外连接示例

Oracle&#xff1b;有2个表如下&#xff1b; 执行下图选中的左连接&#xff1b; 左表10条记录&#xff0c;右表3条记录&#xff0c;结果是10条记录&#xff1b; 执行下图的左连接&#xff0c; 老师表为左表&#xff0c;学生表为右表&#xff0c;结果会显示每个老师&#xff0c…...

【渗透测试术语总结】

Top 渗透测试常用专业术语 相信大家和我一样&#xff0c;搞不清这些专业名词的区别&#xff0c;所以我来整理一下。 1. POC、EXP、Payload与Shellcode POC&#xff1a;全称 Proof of Concept &#xff0c;中文 概念验证 &#xff0c;常指一段漏洞证明的代码。 EXP&#xf…...

Unity2D初级背包设计后篇 拓展举例与不足分析

Unity2D初级背包设计中篇 MVC分层撰写(万字详解)-CSDN博客、 如果你已经搞懂了中篇&#xff0c;那么对这个背包的拓展将极为简单&#xff0c;我就在这里举个例子吧 目录 1.添加物品描述信息 2.拓展思路与不足分析 1.没有删除只有丢弃功能&#xff0c;所以可以添加垃圾桶 2.格…...

Kafka优势剖析-幂等性和事务

目录 1. 幂等性&#xff08;Idempotence&#xff09; 1.1 什么是幂等性&#xff1f; 1.2 幂等性的实现 1.2.1 生产者 ID 和序列号 1.2.2 重复消息检测 1.2.3 幂等性的优势 1.3 幂等性的配置 2. 事务支持&#xff08;Transactions&#xff09; 2.1 什么是事务支持&…...

MyBatis深入了解

目录 xml 映射文件中&#xff0c;除了常见的select、insert、update、delete 标签之外&#xff0c;还有哪些标签? Dao 接口的工作原理是什么?Dao 接口里的方法&#xff0c;参数不同时&#xff0c;方法能重载吗? MyBatis 是如何进行分页的?分页插件的原理是什么? 简述 …...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...

使用SSE解决获取状态不一致问题

使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件&#xff0c;这个上传文件是整体功能的一部分&#xff0c;文件在上传的过程中…...