1. BEVFormer原理概述
BEVFormer原理是通过利用多视角相机图像生成BEV特征并进行3D目标检测的方法,该方法使用了一个基于变换器的编码器和一个基于残差连接的多层感知机编码器,其中通过空间交叉注意力模块实现不同视角摄像头的特征提取,通过时间自注意力模块实现历史特征和当前时刻特征相关性信息的提取。
如Figure 1所示,目标是查询自车前方黑色线框处目标信息,方法主要包括两部分:一,基于空间交叉注意力机制对多不同视角摄像头图像特征的查询;二、基于时间自注意力机制对历史BEV特征进行查询,然后求时间自注意力输出和Q查询concat,并与多相机features求spatial cross-attention,之后经过其他残差连接、归一化等处理送入目标检测或分割头进行目标检测或分割。
2. BEVFormer算法流程
- 首先使用一个预训练的ResNet-101-DCN-FPN作为作为骨干网络,从多视角图像中提取多个尺度的特征。
- 使用一个包含六个重复编码器层的编码器模块,每个编码器层由一个时间自注意力模块和一个空间交叉注意力模块。
- 时间自注意力模块用于建模不同时刻BEV特征的依赖关系,即让当前时刻的特征能够关注到前一个时刻的特征。
- 将时间自注意力模块的输出与多相机features拼接,构成最终的BEV查询,输入空间交叉注意力模块。空间交叉注意力模块用于建模不同相机视角之间的依赖关系,即让当前时刻特征能够关注道不同相机视角的特征。
- 编码器模块使用了预定义的网格状的BEV查询向量作为输入,通过时间自注意力模块和空间交叉注意力模块进行更新和交互,最终输出BEV特征。
- 最后使用一个编码器模块,包含一个解码器模块,包含一个基于残差连接的多层感知机和一个基于变换器的检测头,从BEV特征中预测3D目标的类别、位置和速度等信息。
3. BEVFusion算法原理
BEVFusion是一种高效且通用的多任务多传感器融合框架,它可以在共享的BEV空间表示空间中统一多模态特征。BEVFusion的核心思想是将相机和激光雷达的信息在BEV空间中对齐,而不像传统方法在点云空间中对齐。这样可以避免相机到激光雷达的投影造成的特征密度损失,提高融合的效果。本文相机2D->3D转换采用了Shoot: Encoding images from arbitrary camera rigs by mplicitly unprojecting to 3d方法。
BEVFusion的主要算法流程如下:
- 首先将相机图像通过一个编码器网络(2D backbone + FPN)提取特征,并将特征映射到BEV空间(2D->3D Projector),得到一个BEV特征图。
- 将激光雷达点云通过一个编码器网络(3D backbone,PointNet++)提取特征,并将特征映射到BEV空间,得到一个BEV特征图。
- 使用一个融合模块将camera BEV和lidar BEV feature进行融合,并输入到多任务Heads,执行不同感知任务。
附录
Lift, Splat, Shoot: Encoding Images From Arbitrary Camera Rigs by Implicitly Unprojecting to 3D,是一篇关于使用多视角相机数据直接生成鸟瞰视图(Bird’s-Eye View,BEV)表示的论文。
- 这篇文章的主要贡献是提出了一个新的端到端架构,可以从任意数量的相机输入中提取一个统一的BEV表示,而不需要使用其他传感器(例如lidar)或者精确的标定信息。这样,就可以为自动驾驶场景提供一个更鲁棒和智能的感知系统。
- 这篇文章的核心思想是利用两个操作:lift和splat,来将相机特征从图像空间隐式地投影到3D空间。具体来说:
- lift是指将每个相机视图的图像特征提取出来,并转换到一个与相机视锥对应的3D特征张量中。这样,就可以保留图像特征的语义密度和几何信息。
- splat是指将所有相机视锥的3D特征张量投影到一个共享的BEV网格中,并进行融合。这样,就可以将不同相机视图的信息对齐到同一个BEV坐标系中。