BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation论文个人总结

BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation 论文笔记

论文链接:[2205.13542] BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation (arxiv.org)

本文为个人理解,有误之处还请大家指正,一起学习交流
有另一篇也叫BEVFusion的工作,BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework,这篇主要是设计了融合模块,偏向于决策级融合,最近看这篇工作比较多,环境搭建可以参考一下我以前的博客
本篇论文主要是从数据表示入手,在特征层面融合数据,为下游任务提供便利

1、简介

不同传感器拥有不同的表示,在多模态融合3D目标检测方案中,常见的是利用投影矩阵建立像素和LiDAR点之间的硬关联。

2D目标检测的巨大突破引发了3D目标检测,所以一种思想是将LiDAR点投影到图像上,形成RGB-D数据,但是这样做会带来严重的几何失真,如下图(a)所示,因为在RGB-D图像中,相邻的两个像素可能在3D空间中距离很远。

另一种思想是将图像像素投影到LiDAR点云中,但是由于LiDAR点云的稀疏性,大约只有5%的像素能和点云匹配上,如下图(b)所示,这严重浪费了图像丰富的语义特征。

作者试着打破点级融合是多传感器融合的最佳方案,提出将两种模态的信息分别投影到同一空间中(BEV),如下图(c)所示,然后再运用设计的融合模块对其进行融合。因为这是在数据表示级别上进行的工作,所以其有很强的鲁棒性,可以适应多种下游任务。

BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation论文个人总结_第1张图片

2、相关工作

3、方法

BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation论文个人总结_第2张图片

简单来说,分别提取两种模态的特征后,对相机特征进行“升维”操作,然后转换为相机BEV视图特征;对LiDAR特征进行“压缩”操作,转为LiDAR BEV特征视图。随后利用设计的融合模块对两种模态的特征进行融合。

3.1 Unified Representation

Q: 为什么选择BEV空间?

A: 因为现阶段驾驶场景在高度轴上没有重叠,而且BEV能同时保留语义特征和几何结构。将点云转换为BEV视图非常容易,只需压缩一下Z轴,难点还是在相机视图到BEV视图的转换。

3.2 Efficient Camera-to-BEV Transformation

如何将相机视图转换到BEV视图,作者主要参考了Lift, Splat, Shoot: Encoding Images From Arbitrary Camera Rigs by Implicitly Unprojecting to 3D (arxiv.org)这篇论文。

BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation论文个人总结_第3张图片

将相机视图转换为BEV视图,要知道图像上各像素对应的距离信息,根据 Lift, Splat, Shoot: Encoding Images From Arbitrary Camera Rigs by Implicitly Unprojecting to 3D (arxiv.org) ,从每个像素引出一条射线,在这条射线上生成一些离散的深度值,让网络自行选择合适的深度值,这样就能将像素转换为相机特征点云,记为(N, H, W, D),N是相机个数,(H, W)为特征图大小,D是离散出来的点个数。特征点云沿x、y轴进行量化(理解为分格子),步长为r,然后用BEV pooling来聚合每个r×r BEV网格内的特征,沿z轴压平。一开始读的时候也不太明白,想一下相机的成像原理就很好理解了。

这样操作有些问题,因为点实在是太多了,典型的工作负载下,每帧生成的特征点云数量比LiDAR特征点云密度高两个数量级,所以作者建议使用precomputation和interval reduction来减少计算量。

precomputation:因为相机特征点云的坐标是固定的(根据相机内参和外参标定),所以预计算每个点的3D坐标和BEV网格索引,并根据网格索引对所有点进行排序,记录每个点的rank。在推理过程中,根据预计算的排序对所有特征点进行重排。

个人理解:因为是从像素离散出若干个点(到底对应哪个点是不确定的),预计算所有离散出点的坐标和BEV网格索引。然后网络自行选择完合适的点后,记录一下rank,在推理过程前利用这个rank对特征点进行重排,再进行推理。

interval reduction:将特征点云关联到BEV网格后,同一网格中的点就能在张量中连续表示,下一步操作是利用池化操作,进一步缩减计算量(相当于在一个网格内选出最强特征)。如下图(b)所示,Lift, Splat, Shoot: Encoding Images From Arbitrary Camera Rigs by Implicitly Unprojecting to 3D (arxiv.org) 原来是计算所有点的预固定和,然后减去边界处的累计和来执行sum pooling(根据最上面那副图的value,计算前面所有的value和,得到PrefSum,1+3=4,1+3+7=11,1+3+7-1=10…,然后中间那幅图,Results第一个为4,第二个4是8-4得到,7是15-8得到),这样做会得到了许多没有使用的部分。因此作者使用专门的GPU核,为每个网格分配一个线程,计算结果并写回。这种操作能将特征聚合的延迟从500ms减少到20ms,如下图(c)所示。
BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird’s-Eye View Representation论文个人总结_第4张图片

3.3 Fully-Convolutional Fusion

毕竟相机图像的深度值是估计的,难免不准确,所以使用包含残差块卷积BEV编码器来进行补偿。

剩余部分略

你可能感兴趣的:(计算机视觉,人工智能)