当前位置:   article > 正文

BEVFormer和BEVFormer-v2论文解读

BEVFormer和BEVFormer-v2论文解读
paper发表地方代码链接Nusnenes_test(NDS)Nuscenes_val(NDS)
BEVFormerECCV2022pytorch代码0.5690.517
BEVFormer v2CVPR2023-0.6340.529

一、Bevformer: Learning bird’s-eye-view representation from multi-camera images via spatiotemporal transformers
在这里插入图片描述
出发点: 之前基于BEV的方法需要利用深度信息将图像转换到BEV空间,但是不准确的深度信息会导致BEV特征位置不正确,从而影响最后的性能。同时为了更好的搭建时间和空间上特征的交互,作者提出了一种不需要深度信息就可以得到BEV Feature,同时该特征可以很好的融合空间和时序特征的方法。

框架流程: 文章首先将多视角的图像特征输入到Backbone(ResNet-101)中来获取不同视角的图像特征,之后利用所设计的Transformer结构来获取BEV特征,最后将该BEV特征输入到任务头中进行具体任务的 处理。
所设计的Transformer包含三个部分:BEV Queries的生成,空间跨模态注意力,时序自注意力

  • BEV Queries:作者定义了一个网格状的可学习的参数 Q ∈ R H × W × C Q\in R^{ H\times W \times C} QRH×W×C作为BEVFormer的query, H , W H,W H,W表示BEV平面的大小,Q中 ( x , y ) (x,y) (x,y)元素表示该位置所对应的特征 R 1 × C R^{1 \times C} R1×C。相当于把要检测的BEV空间分成 H × W H \times W H×W大小,每个块表示空间中 s × s s \times s s×s大小的地方,之后每个位置有一个特征来表示该位置。Q的中间位置表示ego car,同时添加了可以学习的位置编码
  • 空间跨模态注意力:首先将BEV Query中每个位置投影到图像空间,之后利用Deformable attention来获取到相关的特征。
    1、BEV Query投影:首先将BEV Query中心移动到右上角如公式(1)并转换成具体位置不再是格栅类型的坐标,将BEV Query在Z方向展开,同时采样 N r e f N_{ref} Nref个高度点,之后利用内外参矩阵将该三维坐标点 ( x ′ , y ′ , z j ′ ) j N r e f (x',y',z'_j)_j^{N_{ref}} (x,y,zj)jNref投影到图像平面。如公式(2)所示
    x ′ = ( x − W 2 ) × s ; y ′ = ( x − H 2 ) × s z ( i j ) [ x i j , y i j , 1 ] T = T i [ x ′ , y ′ , z j ′ 1 ] T
    x=(xW2)×s;y=(xH2)×sz(ij)[xij,yij,1]T=Ti[x,y,zj1]T
    x=(x2W)×s;y=(x2H)×sz(ij)[xij,yij,1]T=Ti[x,y,zj1]T

    2、特征聚合:在获取到投影到图像平面的参考点后,从该参考点周围进行采样,之后将采样后的特征加权融合来更新query。具体过程如公式(3)
    S C A ( Q p , F t ) = 1 ∣ V h i t ∣ ∑ i ∈ V h i t ∑ j = 1 N r e f D e f o r m A t t n ( Q p , p ( p , i , j ) , F t i )
    SCA(Qp,Ft)=1|Vhit|iVhitj=1NrefDeformAttn(Qp,p(p,i,j),Fti)
    SCA(Qp,Ft)=Vhit1iVhitj=1NrefDeformAttn(Qp,p(p,i,j),Fti)
  • 时间自注意力:首先利用内外参矩阵将 t − 1 t-1 t1时刻的BEV特征 B t − 1 B_{t-1} Bt1转换到当前时间,之后考虑到移动的物体会有一些偏差,作者设计了时序自注意力模块,首先将value设置成当时时刻BEV特征Q和前一时刻对齐后的的BEV特征 B T − 1 ′ B_{T-1}' BT1拼接起来,后利用Deformable attention来进行计算。
    T S A ( Q p , { Q , B t − 1 ′ } ) = ∑ v ∈ { Q , B T − 1 ′ } D e f o r m A t t n ( Q p , p , V )
    TSA(Qp,{Q,Bt1})=v{Q,BT1}DeformAttn(Qp,p,V)
    TSA(Qp,{Q,Bt1})=v{Q,BT1}DeformAttn(Qp,p,V)

    3D目标检测分类头:利用的是Deformable DETR中的
    地图分割的回归头:利用的是SegFormer中的

二、BEVFormer v2: Adapting Modern Image Backbones to Bird’s-Eye-View Recognition via Perspective Supervision
在这里插入图片描述
出发点: 首先作者观察到利用ConvNeXt-XL作为backbone和利用VoVNet-99作为backbone的效果差不都,但是前者的参数量是后者的3.5倍。这两个backbone不同的就是前者只是基于2d图像进行训练,后者还是利用DDAD-15M数据集进行预训练,说明了引入自动驾驶数据可以帮助预训练模型获取3D感知的能力。所以作者设计了一个基于透视图的3D辅助头,来帮助Backbone构建3D感知的能力。
流程: 首先输入多个视角的数据到Backbone中获取到多个视角的特征,之后将该特征分别输入到所设计的透视3D检测头中进行初步的分类和回归,同时让Backbone具有3D感知能力,之后利用BEVFormer中所设计的时间和空间注意力模块来获取BEV特征,作者对时间注意力模块进行了修改,最后将透视3D感知头输出的3D建议框编码成reference point,并与预先定义的query embedding生成的Reference point构建成混合reference point输入到DETR头中做第二次分类和回归。
模型主要为3部分:透视监督,Ravamped时序编码,混合query编码

  • 透视监督: 首先作者介绍了引入透视监督的必要性,作者分析BEVFormer该类基于BEV检测的方法发现,该类方法在更新BEV query的时候指利用了很少的图像特征,从而使得图像的Backbone无法很好的学习到3D感知特征。并指出之前方法由于利用了自动驾驶的数据集进行预训练从而避免了找个问题,因此提出了透视监督。该损失直接作用域透视图上进行密集的预测,使得Backbone可以提取3D感知中有用的信息(深度,角度)。作者该部分利用的检测头是类似FCOS3d中的检测头,如下图所示:
    在这里插入图片描述
  • Ravamped时序编码:考虑到原来的时序自注意力模型没有很好的时序建模能力,作者引入了warp,拼接和残差模块来处理,首先通过利用双三次插值进行warp操作将k时刻的特征变换到当前时候,之后将两个特征拼接同时利用残差连接。
  • 混合query编码:首先定义一批query用于生成偏移以及权重矩阵,参考点部分包含两个:第一个是第一阶段的输出生成一批reference point以及上述query的位置编码生成的reference point。之后利用之前生成的BEV feature作为value,具体如下图所示:
    在这里插入图片描述
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/42147
推荐阅读
相关标签
  

闽ICP备14008679号