英文题目:BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers
中文题目:BEVFormer: 通过时空Transformers从多摄像头图像学习鸟瞰图表示
论文地址:https://arxiv.org/pdf/2203.17270v1.pdf
领域:机器视觉,自动驾驶
发表时间:2022年3月
作者:Zhiqi Li等
出处:南京大学,上海人工智能实验室,香港大学
代码和数据:https://github.com/zhiqi-li/BEVFormer
阅读时间:2022.05.22
文中方法和特斯拉视频(特斯拉2021人工智能日AI Day完整视频)架构相似。比较有意思的地方是在BEV层面结合了时间和空间信息。
在3D感知领域,雷达已取得了很好效果,机器视觉近几年也受到关注,除了成本低,相对雷达,它还能感知远距离物体,以及识别道路标识。
BEV鸟瞰图从多个摄像头信息计算表征,用于描述周围场景。分割任务证明了BEV的有效性,但由于该方法基于深度信息生成BEV容易出错,所以在三维目标检测方面效果不显著。
另外,时间信息也很重要,比如车往前开的时候,现在被遮挡的物体,之前可能是能看到的。但是目前用到时序数据的不多,主要因为运动中的情况不断变化,不能通过简单堆叠前帧的方法来辅助当前预测。
文中提出了结合多摄像头和历史BEV特征的方法BEVFormer,如图-1所示:
左图是BEV的网格图,即鸟瞰图,Ego是汽车本身,黑色方块是关注的物体;中图的交叉注意力结合了多个摄像头信息的空间信息;右图使用自注意力模型,结合了之前数据的BEV信息。以此来解决估计运动物体的速度和检测严重遮挡物体的问题。
BEVFormer有六个Encoder层,每层如图-2所示
左图描述了车载的6个摄像头,通过底层 Backbone 提取多层图像特征(Feature Map);中间图 (a)展示了一个编码层包含时间的自注意力和空间的交叉注意力,空间信息由左图提供,它的输入还包括前一层的网格BEV特征(橙色)和BEV查询(蓝色),输出是BEV特征;右侧的图(b)细化了空间交叉注意力,BEV查询只与它感兴趣的摄像机图片特征交互;右图©细化了时间自注意力,查询与之前的BEV特征和当前的BEV特征交互。
其中BEV查询是网格形状的可学习参数,用于从摄像头中查询BEV特征。
预测阶段,在时间t,读取多摄像头的图片特征F,以及t-1时刻的BEV特征,通过上述处理,输出BEV在t时刻的特征,送入下一层;多层处理完最后输出的BEV特征送入下游任务。
定义一个网格形状的可学习的参数Q ∈ RH×W×C,其中H,W是BEV平面的大小,其中每个点p=(x,y)指向现实世界中s米的区域,每个点对应一个大小为C的查询Qp。BEV的中心点一般是汽车本身所在的区域。依照惯例,在输入BEVFormer框架前,将位置嵌入到Q查询中。
多个摄像头,每个摄像头又有多层特征输出时,数据量非常大,因此使用了多头注意力。具体使用形变注意力deformable attention(一篇非常精典的论文)。BEV查询使每个点只与某些摄像头(视图)相关。
本文将形变注意力从2D扩展到3D。如图-2(b)所示,先将查询扩展成了一个柱形,采样3D参考点,再投影到2D。把与某点相关的视图记作Vhit。把2D点作为查询Qp的参考点,从相关视图中这些点周围采样。最终得到采样特征的加权和作为空间交叉注意力的输出:
式中的i是摄像头索引,j是参考点,N是柱中所有高度参考点,F是特征,Q是查询,P(p,i,r)是投影函数,用于获取第i图中的第j个参考点。
使用投影函数计算参考点方法如下:
x’,y’是真实世界坐标,x,y是BEV上的坐标,W,H是BEV大小,S是每个BEV小格对应现实世界的米数。
现实中,不仅有位置x’,y’,还有高度z’,对于每个查询点p,获取一个3D柱
,通过相机的投影矩阵将三维参考点投影到不同的图像视图上。
此处的P(p, i, j)是由第j个3D点(x’, y’,z’j)投影到第i个视图上的2D点,Ti是第i个相机的已知投影矩阵。
通过结合历史BEV来表征当前环境。查询Q和前一时间的Bt-1,首先要对齐运动中的Bt-1和Q,将对齐后的B记作B’,由于物体在运动中,因此,通过自注意力建模:
与之前的形变注意力不同的时,此处的位置偏移∆p是通过串联Q和B’t-1来预测的。
相对于简单的堆叠之前的BEV,自注意力更有效地对长时依赖建模,也减少了计算量和信息干扰。
Encoder输出的DEV特征Bt大小为HxWxC,可用于自动驾驶的3D物体探测(预测三维边界框和速度,无需NMS后处理)和地图分割等任务中。
从过去2s中随机抽取3个样本,表示为t-3,t-2,t-1,t,在时间t,根据多摄像头的输入和Bt-1生成Bt,Bt包含四个样本的时空信息,最终输出到下游任务,计算损失函数。
对视频中的每帧计算,并保留BEV特征用于后续计算,尽管使用了时间信息,但是文中方法的预测时间与其它方法差不多。
实验使用两个公开的自动驾驶数据集:nuScenes和Waymo。
nuScense包含1000个,每个约20s的数据,标注2Hz,每个样本包含6个摄像机具有360度的水平场景。对于目标检测任务有标注了1.4M个3D框,共包含10个类别。5种评价标准:ATE, ASE, AEO, AVE, AAE,另外,nuScense还提出了NDS来计算综合评分。
Waymo Open Dataset包含798个训练序列和202个验证序列,每帧5张图片,摄像机具有252度的水平场景,但提供了360度的标注。由于Waymo是高分辨率且高采样的,所以利用5秒采样切分数据,并只检测车辆类别。
基础模型使用使ResNet101-DCN和VoVnet-99,三层256通道的FPN,BEV大小为200x200,每小块对应0.512米,用6层编码层,从-5米到3米取4个高度的参考点,24次迭代。由于Waymo不能取到360度全景,由此对BEV大小做了调整。
基线使用VPN和Lift-Splat模型做对比,另外,还对比了不使用时间信息的BEVFormer-S模型。
Modality中L表示雷达,C表示摄像机,可以看到BEVFormer与雷达效果相似。另外,对于速度mAVE也有明显提升。
针对3D检测和地图分割同时训练两种任务,以节省资源,结果如表-4所示:
可以看到,在车辆分割中多任务训练效果更好,而道路和车道分割效果较差,这可能是负迁移导致的。
与之前模型相比,使用了Deformable的BEV模型有明显提升。相对于全局注意力,只关注参考点的注意力(限制了感受野),稀疏注意力利用了先验的感兴趣区域,取得了更好效果,且相对比较节省资源。
通过BEVFormer与BEVFormer-S的比较可以看出,使用时间注意力的效果,其优势如下:更好地预测速度;预测位置方向更准确;对遮挡物体有更高召回率。
由于需要处理多视图,时间主要用于backbone模型;另外,缩减了BEVFormer后,效果下降也能接受。
如图-4所示,模型只在较远和小型物体识别有误。