Sparse4Dv2

news2024/11/18 14:25:23

Sparse4D: Multi-view 3D Object Detection with Sparse Spatial-Temporal Fusion

相关内容:总览,Sparse4D v1,Sparse4D v3,
单位:地平线(Sparse4D v1 原班人马)
GitHub:https://github.com/HorizonRobotics/Sparse4D
论文:https://arxiv.org/abs/2305.14018
时间:2023-05
找博主项目讨论方式:wx:DL_xifen
讨论QQ群:345458279

摘要

  1. 稀疏算法在多视角时序感知任务中,非常灵活
  2. 本文,提出另一个增强版本的Sparse4D ,改进了时序融合模块,是利用递归的方式实现了多帧特征采样
  3. 有效的解耦了图像特征和结构化的锚框特征,Sparse4D 可以实现时序特征的高效转换,从而仅通过稀疏特征的逐帧传递来促进时序融合。
  4. 递归的时序融合方法有两个主要的好处。
  5. 首先,它将时序融合的计算复杂度从O (T)降低到O (1),
  6. 其次,它使长时间信息的融合成为可能,从而由于时序融合而导致更显著的性能改进。
  7. Sparse4Dv2,进一步提高了稀疏感知的性能,达到了SOTA的结果在NuScenes 3D检测任务中。

1 引言

  1. 感知模块在自动驾驶系统中起着关键作用。

  2. 实现多传感器与时序特征的高效和有机融合是提高感知性能的关键研究方向

  3. 尽管基于BEV)的方法已经获得了大量的关注,并表现出了较高的感知性能,但我们并不认为它们代表最优的解决方案,理由如下:

    1. 从图像特征到BEV向量空间的转换涉及到重新组织和重新排列密集特征,而不引入额外的视角。然而,这种转换却增加了模型的复杂性
    2. 在感知范围、准确性和计算复杂度之间取得平衡对于获得最佳结果至关重要。不同的驾驶场景(如高速公路、城市或农村地区)需要特定的参数设置,以确保感知能力和计算效率之间的有效权衡。
    3. 在端到端自动驾驶的背景下,基于稀疏的算法产生的实例特征具有更大的意义,因为它们可以更容易地与基于图的模型集成。
  4. 与基于bev的算法不同,PETR系列算法利用基于query的体系结构和全局交叉注意力来实现多视图特征融合。

  5. 类似于原始的DETR,使用了全局注意力,导致高的算力消耗,不能被认为是一种完全的稀疏算法

  6. 基于上述原因,我们专注于稀疏算法,改进感知算法,助力端到端自动驾驶

  7. 我们选择了Sparse4D作为基线算法,进一步增加。


  8. 这个Sparse4D的时时序模块有一个明显的局限性,在执行特征融合之前,它需要采样多帧的历史数据,如图1(a).所示

  9. 这导致了随着历史帧的增加,线性增加了计算复杂度和现存占用。同时难以扩展历史特征。

  10. 图片1

  11. 为了克服上述问题,本文提出了迭代实例特征的方式,替代多帧采样。类似与基于query的跟踪器SteamPETR。


  12. 具体而言,第一帧,采用了单帧的Sparse4D,输出相应的3D边界框和特征。

  13. 对于后续的帧,我们转换前一帧的输出作为当前帧的输入,实例特征保持不变,而实例状态,如3D边界框,则会作为锚框利用自车运动信息,映射到当前帧上。

  14. 锚框的位置embeding也通过锚编码器显示地重新编码

  15. 为了充分利用时序实例特征,本文映入了时序交叉注意力模块在decoder的每一层。

  16. 通过时间投影初始化的实例主要处理轨迹,它们是之前在多个帧上被检测和跟踪的对象。

  17. 对于新出现的对象,我们使用单帧单层解码器初始化它们,选择得分最高的实例子集,然后传播到后续的解码器。

  18. 这种设计避免我们的时序模型增加锚框的数量,从而达到与非时序模型相当的推理速度


  19. 除了时序融合模块,Sparse4Dv2进行了如下的改进:

    1. 将双线性网格采样和加权和结合为一个CUDA算子,重建可变形聚合操作,显著减少了训练过程中的内存占用,并在一定程度上提高了训练速度。
    2. 将摄像机参数编码纳入可变形聚合中,并在训练过程中结合图像和输出坐标增强,以实现更高的感知精度和鲁棒性。
    3. 引入基于激光雷达点云的密集深度监控,便于训练优化,提高检测精度

  20. 在NuScenes数据集上进行了大量3D检测实验,结果显示了Sparse4Dv2具有强大的竞争力

  21. 超越了现有的SOLOFusion和VideoBEV的表现,同时又具有推理速度的优势。

2 Related Works

2.1 基于相机的3D检测

参考sparse 4D v1

2.2 多视角特征融合

参考sparse 4D v1

2.3 时序特征融合

参考sparse 4D v1

3 方法

framework

3.1 整体架构
  1. 第一步:提取多视角特征图: I = { I s ∈ R N × C × H s × W s ∣ 1 ≤ s ≤ S } I=\left\{I_{s}\in\mathbb{R}^{N\times C\times H_{s}\times W_{s}}|1\leq s\leq S\right\} I={IsRN×C×Hs×Ws∣1sS}
  2. 其中S表示特征尺度数,N表示视角数
  3. 第二步,将特征图送入decoder,decoder包括1个单帧层和5个多帧层
  4. 单帧层包括3个模块:deformable aggregation, FFN, 输出层(微调bbox和分类)
  5. 多帧层,处理上述3个以外,还有2个多头注意力
  6. 交叉注意力用于增强时序特征的融合,自注意力用于实例特征之间的交互
  7. 首先,初始化一个实例特征集,其中包括anchor和特征
  8. 使用单帧网络对他们进行微调和评分,选择高分实例作为后续多帧网络的输入
  9. 多帧网络输入除了上述的高分实例,还有前一帧的输出(历史帧的实例)
  10. 每一层的anchor数量是一样的,无论是单帧层还是多帧层
  11. 多帧层的输出作为当前帧的检查结果
  12. 同理,将高分实例会保存,作为下一帧的输入。
3.2 实例时序传播
  1. 在Sparse4D中,一个实例有3个部分表征:anchor、实例特征、anchor embedding

  2. Anchor是结构化信息,包括了实例的状态,有明确的物理含义

  3. 实例特征是高维语义特征,从图像中提取出来的,主要是通过图像编码器获取

  4. anchor embedding 就是anchor进行的特征编码

  5. 一个小的anchor 编码器 Ψ \mathbb{\Psi} Ψ 用于映射anchor结构化信息到高维空间

  6. 这个设计 完全是解耦了图像特征和实例的状态信息,所以就非常容易添加先验知识。

  7. 对于实例时序传播,我们可以投影anchor,然后用anchor编码器 去编码投影后的anchor,同时保持特征不变就好。公式如下:

    A t = P r o j e c t t − 1 → t ( A t − 1 ) , E t = Ψ ( A t ) , F t = F t − 1 A_t=\mathbf{Project}_{t-1\to t}(A_{t-1}),\quad E_t=\Psi\left(A_t\right),\quad F_t=F_{t-1} At=Projectt1t(At1),Et=Ψ(At),Ft=Ft1

  8. 其中, A A A 表示 anchor, E E E表示anchor embedding , F F F 表示特征, Ψ \Psi Ψ表示特征编码器

  9. Sparse4D可以用于处理各种感知任务,仅仅是需要设计不同的anchor 和映射函数,针对不同的任务。

  10. 在3D检查任务中,anchor 设定为3D 边界框,同时映射函数可以如下:
    A t − 1 = { x , y , z , w , l , h , sin ⁡ y a w , cos ⁡ y a w , v x , v y , v z } t − 1 I x , y , z ] t = R t − 1 → t ( [ x , y , z ] + d t [ v x , v y , v z ] ) t − 1 + T t − 1 → t [ w , l , h ] t = [ w , l , h ] t − 1 [ cos ⁡ y a w , sin ⁡ y a w , 0 ] t = R t − 1 → t [ cos ⁡ y a w , sin ⁡ y a w , 0 ] t − 1 [ v x , v y , v z ] t = R t − 1 → t [ v x , v y , v z ] t − 1 \begin{gathered} A_{t-1}=\{x,y,z,w,l,h,\sin yaw,\cos yaw,v_{x},v_{y},v_{z}\}_{t-1} \\ \text{I} x,y,z]_{t}=\mathbf{R}_{t-1\to t}([x,y,z]+d_{t}[v_{x},v_{y},v_{z}])_{t-1}+\mathbf{T}_{t-1\to t} \\ [w,l,h]_{t}=[w,l,h]_{t-1} \\ \left[\cos yaw,\sin yaw,0\right]_{t}=\mathbf{R}_{t-1\to t}\left[\cos yaw,\sin yaw,0\right]_{t-1} \\ \left[v_{x},v_{y},v_{z}\right]_{t}=\mathbf{R}_{t-1\to t}\left[v_{x},v_{y},v_{z}\right]_{t-1} \end{gathered} At1={x,y,z,w,l,h,sinyaw,cosyaw,vx,vy,vz}t1Ix,y,z]t=Rt1t([x,y,z]+dt[vx,vy,vz])t1+Tt1t[w,l,h]t=[w,l,h]t1[cosyaw,sinyaw,0]t=Rt1t[cosyaw,sinyaw,0]t1[vx,vy,vz]t=Rt1t[vx,vy,vz]t1

  11. 其中, d t d_t dt 是表示t与t-1之间的时间间隔, R t − 1 → t \mathbf{R}_{t-1\to t} Rt1t T t − 1 → t \mathbf{T}_{t-1\to t} Tt1t表示t-1到t时刻,自车的旋转矩阵和平移矩阵,

  12. 如果是3D 车道线检测任务,anchor可以定义为polyline,同时映射函数可以映射每一个3D点。

3.3 高效可变性聚合
  1. 可变性聚合实现多尺度多视角的特征融合,其中包括特征采样和加权融合。

  2. 在这里插入图片描述

  3. 其中,算法1 只需要多次加载和存储HBM, 也需要存储大量中间量在训练的反向传播中,特别是当尺寸 f f f特别大的时候,实际上,花费了大量的GPU的显存。

  4. 此外,频繁的HBM的访问也拖慢了推理的速度。

  5. 基于此,本文将特征采样和多尺度/多视角加权封装到一个可变性聚合中,作为一个cuda算子,直接一步输出多点的特征。

  6. 上述算子称之为:Efficient Deformable Aggregation (EDA)

    在这里插入图片描述

  7. EDA表现出优异的并行性能,允许在K维度和C维度上实现完全的并行化。

  8. 单个线程的计算复杂度只有 N × S N \times S N×S​。

  9. 此外,对于多视角场景,一个点最多会被投影到两个视图中,从而导致单线程的计算复杂度仅为2S。

  10. 这种设计利用了gpu和AI芯片的并行计算能力,显著提高了效率,并减少了内存消耗和推理时间。

  11. EDA可以作为一种多功能操作,适用于需要多图像和多尺度融合的各种应用。

相机参数编码
  1. 在sparse4D v1中,可变形聚合中的权值是通过一个全连接层来计算的。
  2. 在训练过程中,摄像机参数的信息逐渐嵌入到这个全连接层的参数中,这可以看作是一种隐式的神经表示或对训练集的过拟合。
  3. 这种方法会导致对相机参数的泛化效果不佳。
  4. 具体来说,当交换两幅图像的输入顺序时,权重顺序没有相应变化,影响感知性能。
  5. 此外,如果我们在训练过程中对摄像机参数应用大规模的数据增强,这种参数化的隐式表征,可能会显著的影响收敛速度。
  6. 为了解决这个问题,我们直接将摄像机参数输入到网络中,并将从输出空间到图像坐标空间的变换矩阵映射到一个高维的特征向量中
  7. 然后,我们将这个特征向量添加到实例特征中,并使用组合特征来计算相应视图的权重。
稠密的深度监督
  1. 在实验中,我们发现基于稀疏的方法在早期训练阶段缺乏足够的收敛能力和速度。
  2. 为了缓解这一问题,我们引入了以点云为监督的多尺度密集深度估计方法。
  3. 在推理过程中,这个子网络将不会被使用。
  4. 对于特征图的每个尺度,我们使用1×1卷积来输出预定义的等效焦距的深度值。
  5. 然后,将这些深度值乘以相机焦距与等效焦距的比率。
  6. 密集深度监督的损失函数使用了普通的L1损失
  7. 在加入密集深度监督后,我们将从Sparse4Dv1中删除深度重权模块

4 实验

  1. benchmark

    • 数据:NuScenes

    • 指标:Average Precision (mAP), mean Average Error of Translation (mATE), Scale (mASE),

      Orientation (mAOE), Velocity (mAVE), Attribute (mAAE) and nuScenes Detection Score (NDS),

  2. 实施细节

    1. backbone:ResNet50, ResNet101 , and VoVNet-99
    2. neck:FPN
    3. pretrained weights:ImageNet-1K +nuImages (ResNet),DD3D(VoVNet)
    4. epochs:100
    5. optimizer: AdawM
    6. without CBGS
    7. augmentation: image data augmentation and lidar rotation augmentation
    8. anchors: 600 temporal instances, 300 single-frame
    9. hyperparameters:Sparse4Dv1
  3. 消融实验以及分析

阅读时间:2024年6月26日

找博主讨论方式:wx:DL_xifen

讨论QQ群:345458279

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

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

相关文章

计算机网络之数据通信原理(中)

上节内容传送口:数据通信原理基础 1.数据传输方式 1.1并行传输 并行传输: 字符编码的各个比特同时传输 特点: 一个比特时间内可传输一个字符,传输速度快,每个比特传输要求一个单独的信道支持,通信成本高&#xf…

基于单片机和 Arduino 平台的六自由度可控机械手臂

摘 要 : 为了降低机械手臂的设计开发难度 , 并使之尽早地投入应用 , 设计一种基于单片机和 Arduino 平台的六自由度可控机械手臂 。提出六自由度可控机械手臂的控制方案, 给出机械手臂控制系统的结构框图 。 详细设计六自由度可控机械手臂…

《UDS协议从入门到精通》系列——图解0x35:请求上传

《UDS协议从入门到精通》系列——图解0x35:请求上传 一、简介二、数据包格式2.1 服务请求格式2.2 服务响应格式2.2.1 肯定响应2.2.2 否定响应 三、通信示例 Tip📌:本文描述中但凡涉及到其他UDS服务的,将陆续提供链接跳转方式以便快…

Power BI可视化表格矩阵如何保持样式导出数据?

故事背景: 有朋友留言询问:自己从Power BI可视化矩阵表格中导出数据时,导出的表格样式会发生改变,需要线下再手动调整,重新进行透视组合成自己想要的格式。 有没有什么办法让表格导出来跟可视化一样? Po…

pd虚拟机 Parallels Desktop 19 for Mac 破解版小白安装使用指南

Parallels Desktop 19 for Mac 乃是一款适配于 Mac 的虚拟化软件。它能让您在 Mac 计算机上同时运行多个操作系统。您可借此创建虚拟机,并于其中装设不同的操作系统,如 Windows、Linux 或 macOS。使用 Parallels Desktop 19 mac 版时,您可在 …

编译正则表达式模式re.compile

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 编译正则表达式模式 re.compile [太阳]选择题 根据给定的Python代码,哪个选项是正确的? import re pattern re.compile(r\d) print(f"【显示】pattern{patter…

eBPF 如何塑造 Linux 和平台工程的未来

当Docker 于 2013 年突然出现时,Linux 容器似乎一夜成名。但容器(以及微服务和Kubernetes)的演变实际上是基于 Linux 操作系统中的内核原语而进行的,历时数十年。 Docker 使用这些原语(即 cgroups 和命名空间&#xf…

前端框架中的前端安全性(Front-end Security)

聚沙成塔每天进步一点点 本文回顾 ⭐ 专栏简介前端框架中的前端安全性(Front-end Security)1. 引言2. 常见的前端安全威胁2.1 跨站脚本攻击(XSS)2.1.1 防御措施 2.2 跨站请求伪造(CSRF)2.2.1 防御措施 2.3 …

YOLOv8改进 | 添加注意力篇 | 结合Mamba注意力机制MLLA助力YOLOv8有效涨点(全网独家首发)

一、本文介绍 本文给大家带来的改进机制是结合号称超越Transformer架构的Mamba架构的最新注意力机制MLLA,本文将其和我们YOLOv8进行结合,MLLA(Mamba-Like Linear Attention)的原理是通过将Mamba模型的一些核心设计融入线性注意力…

【毛毛虫案例-拖拽 Objective-C语言】

一、这个毛毛虫案例啊,是这个样子的, 1.首先,你这个脑袋,这个蓝色的脑袋,它是可以拽起来的, 下面的红色球,一个一个中心点之间,相互去附着, 其他的红色球,是拖不起来的, 只有这个蓝色的东西,可以拽起来,这个蓝色的View,还有重力, 这个蓝色的View,我在拖动它…

Spring底层原理之proxyBeanMenthod实例 动态代理 反射 Bean的拦截

proxyBeanMenthod 假设我们要进行一个系统的二次开发 然后第一次开发我们实用的是XML声明bean 二次开发的时候要用注解 我们如何把bean都加载上来呢 我们首先创建一个全新的配置类 package com.bigdata1421.config;public class SpringConfig32 { } 我们创建一个APP 加载…

R语言数据分析案例37-旅游景点聚类分析

一、研究背景 近年来,随着旅游业的迅猛发展,旅游景点的竞争日益激烈。如何在众多景点中脱颖而出,吸引更多游客,成为各大景点管理者关注的焦点。通过对旅游景点进行深入的数据分析,可以帮助管理者更好地了解景点的优势…

HashMap第5讲——resize方法扩容源码分析及细节

put方法的源码和相关的细节已经介绍完了,下面我们进入扩容功能的讲解。 一、为什么需要扩容 这个也比较好理解。假设现在HashMap里的元素已经很多了,但是链化比较严重,即便树化了,查询效率也是O(logN),肯定没有O(1)好…

最新MDYS14源码影视视频网站模板/苹果CMS系统/附搭建教程

最新MDYS14源码影视视频网站模板/苹果CMS系统/附搭建教程 基本介绍: 1、后台增加自定义参数,对应会员升级页面,以及积分充值 2、视频,演员,专题,收藏,会员系统模块齐全,支持子分类…

本地读取classNames txt文件

通过本地读取classNames,来减少程序修改代码,提高了程序的拓展性和自定义化。 步骤: 1、输入本地路径,分割字符串。 2、将className按顺序放入vector容器中。 3、将vector赋值给classNmaes;获取classNames.size(),赋值给CLASSES;这样,类别个数和类别都已经赋值完成。…

阀门盘根的介绍

盘根(编制盘根)(packing)也叫密封填料,通常由较柔软的线状物编织而成,通常截面积是正方形或长方形、圆形的条状物填充在密封腔体内,从而实现密封。填料密封最早是以棉麻等纤维塞在泄漏通道内来阻止液流泄漏…

牛客挑战赛75 D. 不存在的玩家(sg图dp)

题目 思路来源 灵茶山群群友 https://blog.csdn.net/Code92007/article/details/110354429 题解 其实想了想,和20年小米邀请赛决赛这个G题的dp思路是一样的,姑且称为sg图dp吧 按sg值从大到小dp,每次补上全局sg值-1的这些点, …

XML简介XML 使用教程XML的基本结构XML的使用场景

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把手教你开发炫酷的vbs脚本制作(完善中……) 4、牛逼哄哄的 IDEA编程利器技巧(编写中……) 5、面经吐血整理的 面试技…

VCS编译bug汇总

‘typedef’ is not expected to be used in this contex 注册前少了分号。 Scope resolution error resolution : 声明指针时 不能与类名同名,即 不能声明为adapter. cannot find member "type_id" 忘记注册了 拼接运算符使用 关键要加上1b&#xff0…

开发板以电脑为跳板连接互联网

标题 开发板以电脑为跳板连接互联网网络共享方式桥接方式 开发板以电脑为跳板连接互联网 分享下用网线直连电脑的开发板如何以电脑为跳板连接互联网的两个方法。 网络共享方式桥接方式 补充下,我的电脑连接的是无线网络,开发板和电脑是用网线进行连接的…