BEVDet4D: Exploit Temporal Cues in Multi-camera 3D Object Detection阅读小结

news/2025/1/11 2:39:36/文章来源:https://www.cnblogs.com/giperx/p/18522187

BEVDet4D: Exploit Temporal Cues in Multi-camera 3D Object Detection

BEVDet4D:在多相机三维目标检测中利用时间线索

摘要

  • 背景:单帧数据包含有限信息,限制了基于视觉的多相机3D目标检测性能。
  • BEVDet4D提出:提出BEVDet4D范式,将BEVDet从仅空间的3D扩展到时空4D工作空间。
  • 改进:通过融合前后帧特征,以极小的计算成本获取时间线索,将速度预测任务简化为位置偏移预测。
  • 性能:在nuScenes基准测试中,BEVDet4D-Base配置以54.5%的NDS刷新记录,超越BEVDet-Base 7.3%。

引言

  • 自动驾驶关注:自动驾驶中的视觉感知任务包括3D目标检测等。
  • 时间相关目标:当前基于单帧的视觉范式在预测速度等时间相关目标时,表现不如Lidar和Radar等相关。
  • BEVDet4D尝试:BEVDet4D首次尝试在4D空间中利用时间信息,通过保留前一帧的BEV特征并与当前帧融合。

相关工作

基于视觉的3D目标检测

发展背景:KITTI基准测试推动了单目3D目标检测技术的快速发展,但受限于数据量和单一视角,难以应对更复杂的任务。

大规模基准测试:新的大规模基准测试nuSscenes、Waymo提供了更多数据和多视角视图,为3D目标检测技术的发展提供了新的方向。

FCOS3D:FCOS3D借鉴了2D检测中的FCOS,将3D目标检测问题转化为2D问题,仅在图像视图中进行感知,擅长预测目标属性,但在感知目标的平移、速度和方向上表现不佳。

PGD:PGD在FCOS3D的基础上进一步发展,通过搜索和解决目标深度预测的不足,提高了准确性,但增加了计算成本和推理延迟。

DETR3D:DETR3D遵循DETR的模式,在注意力模式下检测3D目标,准确性与FCOS3D相似,计算成本减半,尽管如此,复杂的计算流程导致其推理速度与FCOS3D相同。Graph-DETR3D扩展了DETR3D,通过在3D空间中采样多个点来生成对象查询的特征,并根据缩放因子动态调整深度目标,使多尺度训练成为可能。

PETR:PETR通过引入3D坐标生成和位置编码提高了性能,并利用强大的数据增强策略。

BEVDet4D与BEVFormer:BEVDet4D使用2个相邻帧实现了更高的速度精度,而BEVFormer与大多数基于LiDAR的方法相似,通过融合4个相邻帧的特征来实现可比的速度精度。

视频目标检测
  • 时间线索:与图像视图空间的检测任务相比,视频对象检测可以利用时间线索提高检测精度。
  • 获取时间线索方法:预测结果或中间特征。

image-20241101195111162

方法论

网络结构
  • BEVDet4D框架:基于BEVDet,包含图像视图编码器image-view encoder、视图变换器view transformer、BEV编码器BEV encoder和特定任务头task-specific head。
  • 利用时间线索融合特征:通过空间对齐(spatial alignment)操作和拼接操作将保留的特征(generated by the view transformer)与当前帧中相应的特征进行融合。

image-20241101203819313

空间对齐简化速度学习任务
  • 符号定义:定义了全局坐标系、自车坐标系和目标坐标系。空间对齐实际上就是将前一帧的特征与后一帧的特征都放在同一个坐标系下进行对齐(上图中绿色为静态目标,蓝色为动态目标)。对齐后只是在channel维度简单的Concat,因为真正的特征融合其实在BEV Encoder中。

  • 位置偏移预测:不是直接预测目标速度,而是预测相邻两帧中目标的位置偏移。如果没有对齐两帧而直接进行concat,目标在特征图上的偏移量其实是包含了自车运动的,如上图的右上部分绿色静态目标所示。

$$\begin{align}
& 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)
\end{align
}$$

$P_s{e(T)}(T)$:s表示静态物体,e(T)表示T时刻的自车坐标系,P(T-1)表示这个目标物体在T-1时刻的位置。同理$P_sg(T)$表示在全局坐标系下的位置。

$T_{e(T-1)}^{e(T)}$:转换矩阵,从e(T-1)转换到e(T)坐标系。

等式左边表示,先将静态物体在T-1时刻下的自车坐标系中的位置通过转换矩阵转到同一个自车坐标系下即e(T),再计算这个静态目标的位置偏移。根据上面等式展开,学习目标被设定为当前帧自车坐标系下的物体运动,消除了自车运动的影响

在实践中,对齐操作通过特征对齐实现。给定前一帧的候选特征$\mathcal{F}'(T-1, P^{e(T)})$和当前帧的候选特征$\mathcal{F}'(T, P^{e(T)})$,对齐的特征可以表示为$\mathcal{F}'(T-1, P^{e(T)}) = \mathcal{F}(T-1, T_{e(T)}^{e(T-1)} P{e(T)})$。其中$T_{e(T)} P^{e(T)}$表示双线性插值(bilinear interpolation)。插值只是一种次优方法,可能会导致精度退化,退化的幅度与BEV特征的分辨率呈相关。更优的方法是调整视图变换器中由Lift操作产生的点云的坐标,但是这种方式会破坏BEVDet中提出的视图变换加速方法,因此并未采用。

实验

4.1 实验设置
  • 数据集:nuScenes数据集,包含1000个场景,6个相机图像,5个雷达和1个激光雷达点。
  • 评估指标:包括mAP、ATE、ASE、AOE、AVE、AAE和NDS。
4.2 基准结果
  • nuScenes val set
    • BEVDet4D-Tiny在nuScenes验证集上得分47.6% NDS,超过基线BEVDet-Tiny39.2% NDS。速度误差从 BEVDet-Tiny 的 0.909 mAVE 降低到 BEVDet4D-Tiny 的 0.337 mAVE,降幅达 62.9%。方向预测误差从 BEVDet-Tiny 的 0.523 mAOE 降低到了 BEVDet4D-Tiny 的 0.460 mAOE,降幅为 12.0%。 这是因为目标的方向和速度之间存在强耦合关系
    • BEVDet-Base 的 47.2% NDS 提升到 BEVDet4D-Base 的 54.5% NDS。超过了同期工作 BEVFormer的+2.8% NDS(即 54.5% NDS 对比 51.7% NDS)。同时在测试时间上运行得更快(即 1.9 FPS 对比 1.7 FPS)。
  • nuScenes test set
    • BEVDet4D在测试集上以56.9% NDS领先,超过BEVDet 8.7%。也比同期的 BEVFormer高出 3.4% NDS。
    • BEVDet4D 从验证集的 55.2% NDS 到测试集的 56.9% NDS,性能提升了 1.7% NDS。这表明在 BEVDet4D 中利用时间线索也有助于提高模型的泛化性能
4.3 消融研究

image-20241102160337457

  • 构建BEVDet4D:展示了如何构建BEVDet4D的鲁棒性能。
    • 对比A和B,对于预测速度任务,如果增加平移对齐操作,相对的可以简化速度预测任务,mATE平移误差由0.711降低到0.672,速度误差 1.544 mAVE 降低至1.186 mAVE。但依然高于基准BEVDet-Tiny,推测原因是对于速度预测任务,由于相邻两帧之间的时间间隔不一致,位置偏移的分布与速度的分布相差甚远。
    • C直接简化任务为位置偏移的预测任务,速度误差大幅度降低至 0.479 mAVE。
    • D在时间融合之前增加extra BEV Encoder使计算量略微增加 2.8%,但对推理速度的影响可以忽略不计。这一修改相对于C进行了全面提升。E通过调整训练过程的权重weight,相对于D又有一定提升。
    • F通过增加考虑对齐过程中的自车姿态旋转变化,进一步将mAVE速度误差从 0.435降低了 13.6%至 0.376。这表明精确的对齐操作有助于提高速度预测的精度
    • image-20241102162525431
    • 为了在当前帧与参考帧之间搜索最佳测试时间间隔,选择三个不同的时间间隔进行消融实验,根据图4所示最佳间隔约为 15T(使用12Hz 的未标记相机扫描,两个相机扫描之间的时间间隔表示为T≈0.083s),默认将其设置为测试时间间隔。而在训练过程中通过在[3T,27T]内随机采样时间间隔来实现数据增强。表3中的G将速度误差从 0.376 进一步降低了 12.8%至 0.328。

image-20241102163605678

  • 插值操作的精度退化:以表3的C研究不同BEV分辨率和插值操作对精度的影响。
    • 根据表4,在视图变换后进行插值操作,会引入系统误差,效果些许下降。但是得益于保留了视图变换操作的完整(含BEVDet的加速方法),FPS直接由7.8提升至15.6。
    • 而在提高BEV分辨率后,插值操作在前或在后对性能引起的差异可忽略不计。
    • 高 BEV 分辨率有助于减轻插值操作引起的精度退化。从推理加速的角度来看,不建议在视图变换内进行对齐操作。

image-20241102164910126

  • 时间融合的位置:研究了在BEVDet4D框架中进行时间融合的不同位置。
    • A表明视图转换器生成的BEV特征过于粗糙无法直接使用,B表明如果添加一个额外的 BEV 编码器可以帮助缓解这个问题。
    • C表明BEV编码器可以通过抵抗前一帧特征带来的位置误导,并根据两个候选特征之间的差异来估计速度。

结论

  • 贡献:BEVDet4D通过利用时空4D空间中的时间线索,显著提升了多相机3D目标检测的性能,特别是在速度预测方面。
  • 未来工作:将专注于设计框架和范式,主动挖掘时间线索。

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

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

相关文章

H7-TOOL的LUA小程序教程第17期:扩展驱动AD7606, ADS1256,MCP3421, 8路继电器和5路DS18B20(2024-11-01)

LUA脚本的好处是用户可以根据自己注册的一批API(当前TOOL已经提供了几百个函数供大家使用),实现各种小程序,不再限制Flash里面已经下载的程序,就跟手机安装APP差不多,所以在H7-TOOL里面被广泛使用,支持在线调试运行,支持离线运行。TOOL的LUA教程争取做到大家可以无痛调…

Print和Println区别

看这样一段程序: // 我的减重程序,lbs是磅的简称package mainimport ("fmt" )func main() {fmt.Println("My weight on the surface of Mars is ")fmt.Println(112 * 0.3783)fmt.Println(" lbs, and I would be ")fmt.Println(19 * 365 / 687)…

【semantic Kernel】Semantic Kernel Tools(VS Code插件)

2023年4月13日,Microsoft发布了一个 Semantic Kernel 的 VS Code 插件,Semantic Kernel Tools,用于进行Semantic Function的开发和调试工作。 Semantic Kernel Tools的安装只需要VS Code即可,不需要额外的其他的环境。 在 VS Code的扩展中搜索 Semantic Kernel Tools ,点击…

java.file文件与IO流.study

但断电后后数据消失。 而IO流就是对数据进行读写 File创建对象: 绝对路径与相对路径: File提供的判断文件类型,获取文件信息功能: File创建和删除文件相关方法: File 遍历文件夹的方法: 代码实现: 文件搜索,实现遍历文件夹下的多级目录:遍历删除文件夹及其里边的…

如何高效驾驭海量任务处理的艺术

场景 在支付业务中,我们需要对接很多渠道,再与渠道交易的过程中,因为网络超时,或者渠道返回订单状态结果未知,这是我们一般都需要主动去调用渠道的查询结果去查询订单的最终结果,如果因为某些异常原因积压了大批量这样的订单,我们怎么如何高速快速的查询这种订单? MySQ…

学期(2024-2025-1) 学号(20241420) 《计算机基础与程序设计》第六周学习总结

学期(2024-2025-1) 学号(20241420) 《计算机基础与程序设计》第六周学习总结 作业信息这个作业属于哪个课程 <班级链接>(如[https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP))这个作业要求在哪里 <作业要求链接>(https://www.cnblogs.com/rocedu/p/9…

数组篇-代码随想录

数组篇 跳-二分查找-704-力扣 class Solution {public int search(int[] nums, int target) {if (nums == null || nums.length == 0) return -1;if (target < nums[0] || target > nums[nums.length - 1])return -1;int left = 0, right = nums.length - 1;while (left …

闲话 11.2

杂项乱写 11.2也是打上搜了。小木棍 曾经在题库上做过,数据水就过了,交洛谷发现只有 87pts。 《剪 枝 盛 宴》钦定长度:最小肯定是最长的那根木棍,最长肯定是所有木棍的总和,并且这个长度一定只能是总和的因数。 选择顺序:如果选一个长的合法,那么选若干个和相同的短的一…

Nuxt.js 应用中的 nitro:config 事件钩子详解

title: Nuxt.js 应用中的 nitro:config 事件钩子详解 date: 2024/11/2 updated: 2024/11/2 author: cmdragon excerpt: nitro:config 是 Nuxt 3 中的一个生命周期钩子,允许开发者在初始化 Nitro 之前自定义 Nitro 的配置。Nitro 是 Nuxt 3 的服务器引擎,负责处理请求、渲染…

源鲁杯2024[Round 3] CheckImg

新思路:十六进制错位恢复 新知识:DNA编码 下载文件,是一张图片,010、属性、pngcheck都没有发现信息,用stegslove打开查看, 在red0通道发现图片下面有明显的隐写,后面的green0有提示(这图片真的好大,一整个屏幕看不到完整的)Green0通道的整句话应该是attention to det…

第三十一讲:为什么还有kill不掉的语句?

第三十一讲:为什么还有kill不掉的语句? 简概依旧是平平无奇的开篇 ​ 在 MySQL 中有两个 kill 命令: ​ 一个是 kill query + 线程 id,表示终止这个线程中正在执行的语句; ​ 一个是 kill connection + 线程 id,这里 connection 可缺省,表示断开这个线程的连接,当然如果…