【论文笔记】Lift-Attend-Splat: Bird’s-eye-view camera-lidar fusion using transformers

本文主要是介绍【论文笔记】Lift-Attend-Splat: Bird’s-eye-view camera-lidar fusion using transformers,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

1. 引言

多模态融合时,由于不同模态有不同的过拟合和泛化能力,联合训练不同模态可能会导致弱模态的不充分利用,甚至会导致比单一模态方法性能更低。

目前的相机-激光雷达融合方法多基于Lift-Splat,即基于深度估计投影图像特征到BEV,再与激光雷达特征融合。这高度依赖深度估计的质量。本文发现深度估计不能为这些模型带来帮助,因为实验表明当深度估计被替换为激光雷达提供的深度,或是完全移除时,模型的性能相同。这表明深度估计是不必要的,可以将Lift-Splat方法替换为更有效的投影机制。

本文提出Lift-Attend-Splat方法,绕过单目深度估计,使用Transformer选择和融合相机与激光雷达特征。相比基于深度估计的方法,本文的方法能更好地利用相机,且能提高性能。

3. Lift-Splat中的单目深度估计

Lift-Splat使用单目深度估计将图像特征投影到BEV:
Proj Lift-Splat = Splat ( F ′ c a m ⊗ D ) \text{Proj}_\text{Lift-Splat}=\text{Splat}(F'^{cam}\otimes D) ProjLift-Splat=Splat(FcamD)

其中 F ′ c a m ∈ R C c × H × W F'^{cam}\in\mathbb{R}^{C_c\times H\times W} FcamRCc×H×W为从图像特征 F c a m ∈ R C × H × W F^{cam}\in\mathbb{R}^{C\times H\times W} FcamRC×H×W得到的上下文特征, D ∈ R N D × H × W D\in\mathbb{R}^{N_D\times H\times W} DRND×H×W为在预定义深度区间上的归一化分布,Splat表示将点投影到 z = 0 z=0 z=0平面上的过程。得到的特征图会与激光雷达特征图拼接或使用门控注意力融合。注意此处将深度估计视为分类问题,从下游任务学习而无显示深度监督。

Lift-Splat深度预测通常较差:通过比较BEVFusion中预测的深度与激光雷达深度图,本文发现深度预测结果不能精确反映场景结构,与激光雷达的深度图明显不同。

促进深度预测不能提高检测性能:进一步探索提高深度估计效果能否提高检测性能。引入激光雷达深度作为深度监督(交叉熵损失)。实验表明,这样做确实可以提高深度估计的效果,但检测性能却随着增大深度损失的权重而降低。这表明模型不能利用更精确的深度估计。本文还进行了两个实验:使用预训练的深度预测模块,以及直接使用激光雷达点云以绕过深度估计模块。前者同样能提高深度估计精度,但降低检测性能;后者和基准方案的性能相当,尽管深度估计的指标全部接近0。

移除深度估计不影响检测性能:上述实验表明基于Lift-Splat的方法不能利用精确的深度。完全移除单目深度估计,将投影公式变为:
Proj no-depth = Splat ( F ′ c a m ⊗ 1 ) \text{Proj}_\text{no-depth}=\text{Splat}(F'^{cam}\otimes 1) Projno-depth=Splat(Fcam1)

其中 1 1 1 D D D的大小相同,其所有值都是1。实验表明,这一方法不会降低性能,这表明深度估计不是该方法的关键部分。这可能是由于激光雷达的存在,使得单目深度的重要性大大降低,因为激光雷达的深度信息更加精确,模型容易抑制错误的投影位置。因此,依赖单目深度估计是不必要的,且会导致相机的不充分利用。

4. 无单目深度估计的相机-激光雷达融合

本文使用简单的Transformer,绕过单目深度估计得到BEV表达。全局Transformer有较大的计算量,因此本文利用几何关系来限制注意力的范围,因为相机特征仅影响其相应射线上的位置。具体来说,本文在图像列与激光雷达BEV网格极射线之间使用交叉注意力,可以为激光雷达特征学习到最相关的图像特征。
在这里插入图片描述
除了投影方式外,本文的方法与Lift-Splat相似,如上图所示。模型包含相机与激光雷达主干、投影与融合模块、以及检测头。

投影水平面:对每个相机,本文考虑穿过图像中心的水平线及其相应的水平面,称为投影水平面。可以使用齐次坐标表达点 x ∈ R 4 x\in\mathbb{R}^4 xR4的集合,且存在 u ∈ R u\in\mathbb R uR满足
C x ∼ ( u , h / 2 , 1 ) Cx\sim(u,h/2,1) Cx(u,h/2,1)

其中 C C C 3 × 4 3\times4 3×4相机投影矩阵(内外参), h h h为图像高度。注意该平面不与BEV平面严格平行,取决于相机外参。在投影水平面上,通过追踪水平线和特征列边缘交点对应的相机射线,并预先设置深度区间,划分为规则的网格 G ∈ R N D × W G\in\mathbb{R}^{N_D\times W} GRND×W,其中每行对应图像特征的一列,如图所示。

投影水平面与BEV网格的对应关系:通过沿 z z z轴投影,容易定义投影水平面与BEV平面的对应关系。通过一个平面网格中心向另一个平面投影并进行特征的双线性采样,可以将激光雷达特征从BEV网格转换到相机投影水平面(称为“Lift”),或是反过来将图像投影水平面的特征转换到BEV(称为“Splat”)。

Lift-Attend-Splat:本文的投影模块如上右图所示,可以分为3步:(i)将BEV激光雷达特征 B lid B^\text{lid} Blid提升到相机 i i i的投影水平面上,得到“提升的”激光雷达特征 B ~ i lid \tilde B_i^\text{lid} B~ilid;(ii)将“提升的”激光雷达特征与图像的相应列通过Transformer编码器-解码器进行注意力交互,产生投影水平面上的融合特征 B ~ i fus \tilde B_i^\text{fus} B~ifus;(iii)将得到的特征splat回BEV,得到 B i fus B_i^\text{fus} Bifus。在注意力步骤,图像各列的特征会被Transformer编码器 E E E编码,然后作为键与值输入到Transformer解码器 D D D中,查询为视锥激光雷达特征。可将上述步骤写为:
B i fus = Splat i ( D ( Lift i ( B lid ) , E ( F i cam ) ) ) B_i^\text{fus}=\text{Splat}_i(D(\text{Lift}_i(B^\text{lid}),E(F_i^\text{cam}))) Bifus=Splati(D(Lifti(Blid),E(Ficam)))

最后,使用简单的融合模块,将来自不同相机的投影特征相加,与激光雷达特征拼接,并通过卷积层得到最终的BEV特征。对所有相机的所有图像列,使用共享的Transformer权重。

注意力vs深度预测:使用深度估计时,图像特征会被投影到BEV的多个位置,但由于深度分布经过了归一化,会导致沿深度分散的投影特征强度过低。而本文的方法可以使同一图像特征对多个BEV网格有相同的贡献,因为注意力权重是沿键(即像素高度)而非查询(射线深度)归一化的。此外,本文方法可以获取激光雷达特征,从而确定投影位置。

5. 实验

5.1 3D目标检测

本文冻结激光雷达主干,与基于Lift-Splat的方法比较。实验表明本文方法有更高的性能,说明本文方法能更好地利用相机特征。

将物体按照大小和距离分组,发现主要的性能提升位于远距离物体和小物体。这些情况正好属于单目深度估计困难的地方。即使远处或小物体含有的激光雷达点云较少,本文的方法也能有效利用图像特征。

5.2 定性分析

可视化本文方法最后一层交叉注意力图(所有注意力头平均)以及BEVFusion深度估计结果(具体过程见附录B.2),以观察图像特征被投影到BEV的什么位置。本文方法主要将图像特征放置在真实边界框附近,这说明可以有效利用激光雷达的上下文,将图像特征投影到最相关的位置。与BEVFusion相比,本文方法特征的分布更加集中。这是因为没有沿射线归一化权重,有更强的灵活性。对于投影到边界框外部的图像特征,融合模块可以抑制其激活。

进一步使用显著性图观察图像的哪个像素最被关注。给定物体查询索引 i i i和概率 z z z时,计算概率最大类别的logit对图像 I j I_j Ij的梯度,可以得到显著性:
∂ z i , c ^ ∂ I ∣ I j , c ^ = arg max ⁡ c z i , c \left.\frac{\partial z_{i,\hat c}}{\partial I}\right|_{I_j},\hat{c}=\argmax_cz_{i,c} Izi,c^ Ij,c^=cargmaxzi,c

这样可以可视化单个像素对特定物体最终预测的贡献。可视化表明,当使用相机和激光雷达训练时,相比仅使用相机训练,模型倾向于选择相机特征的不同位置(物体上部),且离自车越近、越大的物体现象越明显。这可能是激光雷达的存在使模型能选择与激光雷达特征最互补的图像特征。BEVFusion中,无论是单一模态还是多模态训练,模型都倾向于选择物体周边分布更广泛的像素。

5.3 时间特征聚合

可以融合不同时刻的BEV特征,即时间特征聚合(TFA)。步骤如下:(i)保存过去时刻的BEV特征;(ii)进行自车运动补偿,使用双线性插值,与当前帧对齐;(iii)与当前帧BEV特征拼接,并通过 3 × 3 3\times3 3×3卷积。

训练时,使用预训练的主干网络并冻结,结果表明时间特征聚合能大幅提高性能。

5.4 消融实验

  • 比较不同的融合方式(相加融合、拼接+卷积融合、门控sigmoid块),各方式性能接近。
  • 增加投影时注意力阶段的Transformer解码器层数,可以略微提高性能。
  • 增加训练时时间特征聚合时的帧数,也能提高性能。

补充材料

A. Lift-Splat中的单目深度

A.1 从激光雷达计算真实深度

将激光雷达点云投影到图像上,选择每个像素内最近的激光雷达点,其深度作为该像素深度。对于无激光雷达点、或是深度位于范围外的像素,不考虑其真实深度。作为监督时,进一步将深度值转化为深度区间的独热向量 D g t D^{gt} Dgt

A.2 深度图的可视化

对于预测的深度分布图,使用其期望深度进行可视化。

A.3 使用激光雷达作为深度预测的监督

对存在真实深度的像素,将深度分布预测视为分类任务,使用交叉熵损失:
L depth = − 1 N ∑ n = 1 N log ⁡ ( D n ⋅ D n g t ) L_\text{depth}=-\frac 1 N\sum_{n=1}^N\log(D_n\cdot D^{gt}_n) Ldepth=N1n=1Nlog(DnDngt)

B. 详细的实验结果

B.2 详细的定性结果

为得到5.2节所述的注意力可视化结果,首先按下面的方法计算图像到BEV的注意力图 Attn cam i → bev ∈ R H × W × N × M \text{Attn}^{\text{cam}_i\rightarrow \text{bev}}\in\mathbb{R}^{H\times W\times N\times M} AttncamibevRH×W×N×M

取各Transformer解码器最后一层各注意力头的注意力图,计算平均值得到 Attn cam i → frustum ∈ R H × W × D × W ′ \text{Attn}^{\text{cam}_i\rightarrow \text{frustum}}\in\mathbb{R}^{H\times W\times D\times W'} AttncamifrustumRH×W×D×W,其中 D × W ′ D\times W' D×W为视锥维度。然后将视锥注意力权重投影到BEV下,得到 Attn cam i → bev \text{Attn}^{\text{cam}_i\rightarrow \text{bev}} Attncamibev。给定相机图像 I i I_i Ii,通过投影边界框建立二值掩膜 Mask ( i ) ∈ { 0 , 1 } H × W \text{Mask}^{(i)}\in\{0,1\}^{H\times W} Mask(i){0,1}H×W。然后将掩膜内的图像特征投影到BEV网格下:
Attn ( bev ) = max ⁡ i , h , w Attn h , w cam i → bev ⋅ Mask h , w ( i ) \text{Attn}^{(\text{bev})}=\max_{i,h,w}\text{Attn}^{\text{cam}_i\rightarrow \text{bev}}_{h,w}\cdot\text{Mask}^{(i)}_{h,w} Attn(bev)=i,h,wmaxAttnh,wcamibevMaskh,w(i)

对于Lift-Splat投影的可视化,与BEVFusion类似,但将 I i I_i Ii替换为 Mask ( i ) \text{Mask}^{(i)} Mask(i)作为投影的输入。通过深度分布将二值掩膜提升为点云 P ∈ R H × W × N D × 3 P\in\mathbb{R}^{H\times W\times N_D\times 3} PRH×W×ND×3,然后将点投影到 z = 0 z=0 z=0平面,并使用最大池化,这可以保证大型物体的权重不会过分超过小型物体。

B.3 集成与测试时数据增广

使用加权框融合(WBF)方法融合各模型/增广数据的结果。首先对各模型,进行所有增广数据结果的WBF;然后对所有模型的结果再次进行WBF。

这篇关于【论文笔记】Lift-Attend-Splat: Bird’s-eye-view camera-lidar fusion using transformers的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文翻译: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

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi