万字长文盘点时序融合在BEV感知中的应用(上)

关于BEV(Bird-Eye-View)感知,博主几个月前曾分享过相关简介和基础论文,不了解的读者可以先参考一下:

自动驾驶感知新范式——BEV感知经典论文总结和对比(上)_苹果姐的博客-CSDN博客_bev视角

自动驾驶感知新范式——BEV感知经典论文总结和对比(下)_苹果姐的博客-CSDN博客_bev视角

在传统感知算法中,时序融合是提高感知算法准确性和连续性的关键,可以弥补单帧感知的局限性,增加感受野,改善目标检测(Object Detection)帧间跳变和目标遮挡问题,更加准确地判断目标运动速度,同时也对目标预测(Prediction)和跟踪(Tracking)有重要作用.在BEV感知中,时序融合同样可以发挥相应的作用.同时,由于前序帧相关信息可以直接从缓存中读取,并不会带来性能上的大幅下降.下图直观地展示了时序融合的工作原理:

​经过调研,在近年来层出不穷的BEV感知相关工作中,已经有大量的工作使用了时序融合策略.博主在此进行简要的分类和盘点,并会在下篇给出详细的分类表格,欢迎各位读者讨论指正和分享.

传统的时序融合主要是在后处理中使用RNN或卡尔曼滤波等方式进行融合,这种方式由于要增加额外的开销,影响模型的性能,所以近年来大量采用的是特征级融合.特征级融合是继前融合,后融合新提出来的方法,不仅可以用在多传感器融合,也可以用在时序融合,具有跨模态,跨时空的特点.而BEV感知由于自身的特点,存在两个特征域:图像域(自车camera图像坐标系)和BEV域(自车lidar坐标系),这一点可以区别于传统感知算法只有图像域特征,从而BEV感知的时序融合可以在两个特征域任意一个进行,具体融合的方法也有两种:基于CNN的方式和基于Transformer的方式,其中基于CNN的方式又可使用2D卷积和3D卷积,也有CNN和Transformer结合的方法.本文对BEV时序方法的分类主要基于以上几个方面,论文来源基本是2022年的工作.另外由于本文篇幅较长,文末提供精简归纳表格,欢迎阅读下篇获取.

在具体的时序融合方法上,我们主要关注以下几个对融合结果影响较大的方面:一是如何选择前序帧,这个决定了时序融合的有效范围,二是如何进行时空对齐(alignment),即将前序帧特征通过ego-motion进行转换,使之与当前帧特征处于同一个坐标系下,这样才可以进行准确的融合,三是融合的具体方法,最后是融合的分辨率,是融合效果和性能的折中选择.数据集方面,以下大部分模型都使用nuscenes数据集,该数据集有1000个场景(scenes),每个scene包括20+精细标注的关键帧(key frame),间隔0.5秒,每两个关键帧之间存在若干无精细标注的非关键帧(sweeps).

一. 基于Transformer的BEV特征融合

1.BEVFormer[1](上海AI Lab)

[1] BEVFormer: Learning Bird's-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers

code:https://github.com/fundamentalvision/BEVFormer

万字长文盘点时序融合在BEV感知中的应用(上)_第1张图片

​BEVFormer是相对比较早的一个经典BEV感知模型,主体框架是基于transformer生成bev feature,再做基于DETR的目标检测,在之前博客里有详细介绍,主要motion是针对DETR3D[2]的改进,一是DETR3D只有基于稀疏的object query的decoder, BEVFormer增加了基于稠密的bev query的encoder,可以生成稠密的bev feature,二是由于有了bev feature,方便进行稠密的任务,如语义分割等,也方便进行时序融合.时序融合在encoder中的Temporal Self-Attention中实现,这个模块本质上就是deformable attention(来自于deformable DETR[3]),只是query做了前序帧和当前帧的拼接.

[2] DETR3D: 3D Object Detection from Multi-view Images via 3D-to-2D Queries

[3] Deformable DETR: Deformable Transformers for End-to-End Object Detection

BEVformer在前序帧的选择上,是在前面4帧中随机选3帧(只包括关键帧),所以时序范围为2秒,这3帧不是一次性输入,而是迭代地进行两两融合,第一帧由于没有前序帧,只与自己本身融合,也就是每个iteration需要跑4次前向传播和1次反向传播.前序bev feature在缓存中直接读取,不会降低推理的效率.

时空对齐方面,由于是BEV特征域融合,而两帧的bev特征分别在两帧的自车lidar坐标系下,所以需要将前序帧的lidar坐标通过ego-motion转换到当前帧的lidar坐标.这里面又包括两种方式:变换bev feature和变换reference_points(即密集query对应的坐标值),两种方法需要做的变换略有不同.论文中的做法是旋转feature,平移reference_points,这里存在一个问题就是论文中旋转feature的方式会产生全0的黑边,不利于后续的融合,而变换reference_points在后续的grid_sample环节会有插值作用,会更加准确.

具体的融合方式上,论文中是在Temporal Self-Attention模块中把时空对齐后的前序bev feature和当前bev feature分别做deformable attention,再在h*w平面做算术平均进行融合.这里算术平均有点简单粗暴,也可以修改为自适应的融合方式.融合分辨率也就是encoder中query的数量论文中用的比较大,是200*200,而decoder的query数量与与之类似的经典bev3D模型DETR3D相同,为900.其中,DETR3D无时序版本,并且只有decoder.

如下图所示,基于R101的BEVFormer时序版本比单帧高了4个点的mAP,单帧版本也比DETR3D高出3个点,属于非常大的提升了.

万字长文盘点时序融合在BEV感知中的应用(上)_第2张图片

​nuscenes val set

2.PolarDETR[4](华中科大,地平线机器人)

[4] Polar Parametrization for Vision-based Surround-View 3D Detection

code: https://github.com/hustvl/PolarDETR (waiting)

万字长文盘点时序融合在BEV感知中的应用(上)_第3张图片

​PolarDETR[4]在整体框架上接近于DETR3D[3],主要不同点一是bev特征和目标位置的表征和从笛卡尔坐标系转换到了极坐标系,即由半径r,方位角α, 高度z进行表征,二是加入了时序融合.

关于第一点,论文中给出了为什么使用极坐标系的解释,如下图,假设目标At1和At2由于位置和朝向刚好匹配,在两个2D视角内的呈现是完全相同的,bev有效检测范围是d,这时候在笛卡尔坐标系中At1将被过滤掉,而At2会被保留下来,这对于模型训练来讲显然是不利于收敛的,问题就在于笛卡尔坐标系的各个边界点距中心的距离不一致.而如果使用极坐标系,只要两个目标距自车距离相等,就将被同等对待.

万字长文盘点时序融合在BEV感知中的应用(上)_第4张图片

​关于时序融合,本文采用的方式和BEVFormer[1]类似,也是基于transformer的bev特征融合,只是这里融合的是代表目标的object query,而不是代表bev feature的bev query.时序对齐的方法是在极坐标bev下,把当前帧采样点投影到前序帧获取特征,类似于变换reference_points.融合方法是所有帧channel维度拼接后做self attention,区别于BEVFormer的两两迭代融合,但具体用了多少帧由于代码还未公开所以不确定.

PolarDETR与DETR3D等模型的指标对比如下图所示:

万字长文盘点时序融合在BEV感知中的应用(上)_第5张图片

nuscenes val set

二.基于CNN(2D/3D conv)的BEV特征融合

3.BEVDet4D[7]/BEVDepth4D[6](鉴智机器人)

[5] BEVDet: High-performance Multi-camera 3D Object Detection in Bird-Eye-View

[6] BEVDepth: Acquisition of Reliable Depth for Multi-view 3D Object Detection

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

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

万字长文盘点时序融合在BEV感知中的应用(上)_第6张图片

​BEVDet4D和BEVDepth4D是基于BEVDet[5]和BEVDepth增加时序融合的版本.二者框架非常类似,与BEVFormer属于两种得到bev表征的方式,即基于LSS[8]思想,多视角特征先通过深度估计网络进行像素级的深度估计,再投影到bev空间,通过基于CNN的bev encoder进行编码后连接Centerpoint[8]检测头.BEVDepth4D的主要改进是增加了对深度估计网络的监督,使结果更准确.

[8] Lift, Splat, Shoot: Encoding Images From Arbitrary Camera Rigs by Implicitly Unprojecting to 3D

BEVDet4D的时序融合发生在投影到bev空间得到bev feature后,与前序帧先经过时空对齐,在channel维度拼接,再送入bev encoder进行融合.这里的时空对齐是使用grid_sample把前序帧特征warp到当前帧,和直接旋转平移feature或reference_points本质上相同,但博主认为,如果后续还要做deformable self attention进行融合的话,这样处理效率较低,因为还需要再做一次grid_sample来取相应的value,还是直接对reference_points进行变换可以获得较高的效率.不过这里后续是使用CNN进行融合,影响不大.CNN这里用的是2D卷积.因为这种架构需要额外的深度估计网络,所以bev feature分辨率不能太大,文中采用了16倍下采样.在前序帧的选择上,训练阶段是在前3帧或后3帧随机选1帧,推理阶段只在前3帧随机选一帧.训练阶段把后续帧也加进来可以提高鲁棒性.

[9] Center-based 3D Object Detection and Tracking

如下图所示,加入时序融合的BEVDet4D比BEVDet提升3个点,同时也比BEVFormer提升1个点.

万字长文盘点时序融合在BEV感知中的应用(上)_第7张图片

​nuscenes val set

4.PolarFormer[10](复旦大学,达摩院)

[10] PolarFormer: Multi-cam从哦女era 3D Object Detection with Polar Transformers

code: https://github.com/fudan-zvg/PolarFormer (waiting)

万字长文盘点时序融合在BEV感知中的应用(上)_第8张图片

​PolarFormer是在PolarDETR之后进一步使用极坐标系进行bev特征表征的模型,框架有点类似于BEVFormer,即使用transformer生成bev feature,和PolarDETR的主要区别也类似于BEVFormer与DETR3D的区别,即是否先生成显式的bev feature. 但与BEVFormer最大的不同点是,生成bev feature后不是直接接检测头,而是先经过为极坐标系设计的基于CNN的Polar BEV encoder进行编码,再经过Polar head得到检测结果.

所以PolarFormer的时序融合方式是类似于BEVDet4D的,只是前序帧的选择上不同,训练是在前3-27帧(包含key frame和sweep)随机选一帧,推理在前15帧随机选一帧(这个方法类似于下文即将介绍的PETRv2),sweep帧属于非关键帧,没有标注,但更加密集,但由于前序帧融合只需要feature不需要标注,且加入sweep帧可以提高数据的多样性,所以sweep帧用在前序帧选择上也是非常合适的.融合分辨率采用的是64*256(r,α).

下图体现了使用极坐标系带来的提升,主要对标BEVFormer:

万字长文盘点时序融合在BEV感知中的应用(上)_第9张图片

​nuscenes val set

5.BEVerse[11](清华大学,鉴智机器人)

[11] BEVerse: Unified Perception and Prediction in Birds-Eye-View for Vision-Centric Autonomous Driving

code: GitHub - zhangyp15/BEVerse: The official repository for BEVerse

万字长文盘点时序融合在BEV感知中的应用(上)_第10张图片

​BEVerse是一个感知预测一体化模型,主体基于LSS生成bev feature,再经过spatial-temporal bev encoder进行时空编码,再进行下游的检测分割和预测任务.由于需要做预测,时序融合成为重要部分,并且需要前序帧和后续帧都要加入训练,选择的帧数相应也会比较多.时序对齐的方法仍然类似于BEVDet4D,只是BEVDet4D只使用1帧前序帧,BEVerse使用的是前2帧+后4帧,每帧都用grid_sample warp到当前帧再进行channel维度的拼接.拼接完成后,模型设计了Temporal3DConvModel进行时序的融合,和上文两个基于CNN融合的模型不同,BEVerse由于使用的帧数比较多,采用3D卷积和3D池化对所有帧进行融合.3D卷积是处理连续帧信息的一个重要方式.分辨率使用的是128*128.

下图展示了BEVerse的检测性能和同期模型的对比:

万字长文盘点时序融合在BEV感知中的应用(上)_第11张图片

​nuscenes val set

三.基于Transformer+CNN的BEV特征融合

6.D-align[12](汉阳大学)

[12] D-Align: Dual Query Co-attention Network for 3D Object Detection Based on Multi-frame Point Cloud Sequence

既然有基于transformer的融合也有基于CNN的融合,也随之诞生了更加复杂的transformer+CNN的时序融合.博主目前主要看到的是D-align,专门针对时序融合设计了一个使用双query和互注意力的复杂结构.

万字长文盘点时序融合在BEV感知中的应用(上)_第12张图片

​D-align是个点云模型,可以直接通过卷积网络获取bev feature,并可以很容易地在bev坐标系下进行时序对齐(上图左下角),重点在于后续的融合.参考上图灰色区域架构,融合网络主要分为如下几个步骤:

a.把当前帧Bt和前序帧Ut-k分成两个query集合Bt和Ut-k,即所谓的双query,并初始化(上图橙色框),先对当前帧和每一个前序帧特征做差,用CNN提取motion信息(公式1,绿色模块):

公式1

b.得到Mt-k后经过deformable attention模块更新Ut-k(公式2,蓝色模块):

​公式2

c.将每个更新后的Ut-k与当前帧query做gated attention[13]进行融合,更新Bt,以上步骤重复L层.(公式3,4,紫色模块):

​公式3

​公式4

[13] Robust Deep Multi-modal Learning Based on Gated Information Fusion Network

如上图右上角,最后更新的Bt经过上采样后连接检测头进行检测,整个结构比较复杂但层次还是清晰的.效果如下图所示:

万字长文盘点时序融合在BEV感知中的应用(上)_第13张图片

​nuscenes test set

请继续阅读下篇,文末有超精简归纳表格哦~

万字长文盘点时序融合在BEV感知中的应用(下)_苹果姐的博客-CSDN博客

你可能感兴趣的:(计算机视觉原创知识分享,人工智能,深度学习,计算机视觉,自动驾驶)