BEVDepth: Acquisition of Reliable Depth for Multi-view 3D Object Detection 论文笔记

本文主要是介绍BEVDepth: Acquisition of Reliable Depth for Multi-view 3D Object Detection 论文笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文链接:https://arxiv.org/abs/2206.10092

1.引言

        目前的图像3D目标检测方法在深度估计上的效果很差。基于深度3D检测器特点:

  1. 若无真实深度的监督,虽然最终的3D检测结果鼓励模型输出正确的深度,但要学习到精确的深度是很困难的;
  2. 此外,理论上深度子网络应该根据相机内外参推断深度,但目前方法都没有这么做;
  3. 深度估计后的视图转换子网络很低效,比不基于深度的方法有更慢的速度。

        本文的BEVDepth网络使用来自点云的稀疏深度监督;考虑到运动时的外参扰动引起的真实深度扰动,提出深度校正网络;为了在预测深度时利用相机参数,使用了相机感知注意力模块;提出高效体素池化操作,快速将图像特征投影到BEV,减小视图转换的时间和计算量。

3.BEVDepth

        总体结构:原始的BEVDepth就是LSS主干加上CenterPoint检测头。如上图所示,BEVDepth包含图像编码器(提取图像特征F^{2d})、DepthNet(用图像特征估计离散的图像深度图D^{pred})、视图转换器(将图像特征按F^{3d}_i=F^{2d}_i\otimes D_i^{pred}转换到3D空间得到F^{3d},并池化为BEV表达)、3D检测头(预测类别、边界框偏差和其他属性)。

        显式的深度监督:使用点云数据P得到深度监督D^{gt}。设R_i\in\mathbb{R}^{3\times3}t_i\in\mathbb{R}^3为自车坐标(点云坐标)到第i个相机坐标的旋转和平移矩阵,K_i\in \mathbb{R}^{3\times3}为该相机的内参。首先计算

\hat{P}^{img}_i(ud,vd,d)=K_i\cdot(R_iP+t_i)

并进一步转化为2.5D图像坐标P_i^{img}(u,v,d)u,v为图像像素坐标)。未投影到图像上的点被丢弃。

        为对齐投影点云和预测深度,在P_i^{img}使用了最小池化和独热编码(记为操作\phi),则真实离散深度图为D_i^{gt}=\phi(P^{img}_i)

        深度估计损失使用二元交叉熵损失。

        深度校正:由于上一步中使用的Rt参数可能由于自车运动而不精确,从而导致F^{2d}D^{gt}不对齐,这在DepthNet的感受野很小的时候存在大问题。深度校正网络通过增大DepthNet的感受野来解决不对齐问题,即在DepthNet中使用多个残差块和可变形卷积,如下图的右下角所示。

        相机感知的深度预测:经典相机模型中,估计深度需要相机内参。首先将相机内参通过MLP放大到特征图的尺寸,然后通过Squeeze-and-Excitation模块(见此文第三点)用其重新加权图像特征。此外,将相机的外参与内参拼接,帮助DepthNet感知F^{2d}在自车坐标系下的空间位置。因此整个相机感知的深度预测可写为

D_i^{pred}=\textup{DepthNet}(\textup{SE}(F_i^{2d}|\textup{MLP}(\textup{Flatten}(R_i)\oplus \textup{Flatten}(t_i)\oplus\textup{Flatten}(K_i))))

        高效体素池化:该模块将3D特征转化为2D BEV特征,即将落在每个BEV网格内的3D特征求和。在LSS中使用累加求和技巧,但其排序操作和累加求和的顺序性都引入了额外计算时间。本文的高效体素池化如下图所示,思想是为每个棱台特征分配一个CUDA线程,将其添加到相应的BEV网格中。

4.实验

4.1 实验设置

        深度估计任务的评价指标为尺度不变对数误差(SILog)、平均相对误差绝对值(Abs Rel)、均方相对误差(Sq Rel)、平均log10误差(log10)和均方根误差(RMSE)。

        使用图像数据增广如随机裁剪、缩放、翻转、旋转,以及BEV特征数据增广如随机缩放、翻转和旋转。

4.2 消融研究

        显式深度监督和深度校正:原始的BEVDepth的深度估计误差很大;增加显式深度监督和深度校正后,总体和各项检测精度均有所提升,且深度估计误差大幅减小。

        相机感知:引入相机内外参的编码后,检测精度和深度估计精度也都有一定提升。

        高效体素池化:该操作使得训练和推断速度均能加快到3至4倍。

        多帧融合:直接拼接相邻两帧的BEV特征会导致自车运动带来的空间不对齐;本文通过对齐中间的点云(即将上一帧的点转换到当前帧的自车坐标下:P^{cur}=T^{global2cur}\cdot T^{prev2global}\cdot P^{prev},其中T为平移-旋转矩阵),然后进行体素池化,得到对齐的BEV特征。

        实验表明多帧方法能减小速度/属性估计误差,并提高检测精度。

4.3 主要结果

        相比于其余方法,本文的定位误差大幅下降,表明深度预测的精度高。

这篇关于BEVDepth: Acquisition of Reliable Depth for Multi-view 3D Object Detection 论文笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/328333

相关文章

深入探讨Java 中的 Object 类详解(一切类的根基)

《深入探讨Java中的Object类详解(一切类的根基)》本文详细介绍了Java中的Object类,作为所有类的根类,其重要性不言而喻,文章涵盖了Object类的主要方法,如toString()... 目录1. Object 类的基本概念1.1 Object 类的定义2. Object 类的主要方法3. O

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

2014 Multi-University Training Contest 8小记

1002 计算几何 最大的速度才可能拥有无限的面积。 最大的速度的点 求凸包, 凸包上的点( 注意不是端点 ) 才拥有无限的面积 注意 :  凸包上如果有重点则不满足。 另外最大的速度为0也不行的。 int cmp(double x){if(fabs(x) < 1e-8) return 0 ;if(x > 0) return 1 ;return -1 ;}struct poin

2014 Multi-University Training Contest 7小记

1003   数学 , 先暴力再解方程。 在b进制下是个2 , 3 位数的 大概是10000进制以上 。这部分解方程 2-10000 直接暴力 typedef long long LL ;LL n ;int ok(int b){LL m = n ;int c ;while(m){c = m % b ;if(c == 3 || c == 4 || c == 5 ||

2014 Multi-University Training Contest 6小记

1003  贪心 对于111...10....000 这样的序列,  a 为1的个数,b为0的个数,易得当 x= a / (a + b) 时 f最小。 讲串分成若干段  1..10..0   ,  1..10..0 ,  要满足x非递减 。  对于 xi > xi+1  这样的合并 即可。 const int maxn = 100008 ;struct Node{int

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear