Advertisement

An Efficient Transformer for Simultaneous Learning of BEV and Lane Representations ...——论文笔记

阅读量:

参考代码:暂无

1. 概述

介绍:transformer相关工作在车道线检测领域已经被证实是可行的,只不过大部分情况其耗时比较多,这是由于多数时候还构建了bev grid query去获取bev特征,而PETR这个方法直接在图像特征上加3D位置编码就快很多了。无论是显式构建bev特征还是直接在图像特征上加3D编码,它们都是拿对应特征与目标query做cross attention得到最后结果,而这篇文章的算法以lane query作为中间桥梁,分别与bev特征和图像特征做cross attention,得以将图像特征与bev特征关联起来,这样构建的检测器轻量且不同模态间信息能够相互关联。

2. 方法设计

2.1 整体pipeline

文章算法的结构见下图:
在这里插入图片描述
若是去掉最下面的分支文章的方法和PETR有点类似,但是这里添加了bev空间的位置编码,使得其能感知并预测bev下的分割结果。上述结构大体上可划分为如下几个部分:

  • 1)lane query、图像特征、bev特征之间两两cross attention,在优化lane query表达的同时也提取和优化了bev特征
  • 2)lane query得到的表达作为dynamic kernel参数分别与图像特征和bev特征做矩阵乘法得到对应感知结果。这些感知结果通过匈牙利匹配与GT关联,并计算loss反传

2.2 位置编码

图像域位置编码:
图像数据经过backbone之后得到特征F\in R^{H_a*W_a*C},则在假定的深度bins下可以得到图像的相机视锥矩阵G\in R^{H_a*W_a*D*4},而视锥矩阵可以依据相机内外参数变换到实际bev看空间下(p_j来自于G):
p_j^{'}=K^{-1}p_j
上述的过程生成实际空间视锥表达G^{'}\in R^{H_a*W_a*D*4},同时通过网络预测的方式得到深度先验表达D\in R^{H_a*W_a*D},则图像域的位置编码被描述为:
E_{uv}=[\sum_{d=1}^DD_{uvd}(G_{uvd}^{'}W_1+b_1)]W_2+b_2
其中,W_1\in R^{4*C/4}, b_1\in R^{C/4},W_2\in R^{C/4*C}, b_2\in R^{C}

bev特征位置编码:
对于bev特征T\in R^{H_b*W_b*C}在给定bev特征空间到真实车体空间的转换矩阵之后便可以得到bev特征的空间网格矩阵H\in R^{H_b*W_b*Z*4},同时在T上预测车体坐标下的高度分布Z\in R^{H_b*W_b*Z}。则bev处的位置编码描述为:
p_{xy}=[\sum_{z=1}^ZZ_{xyz}(H_{xyz}W_1+b_1)]W_2+b_2
其中,这里的W_1,b_1,W_2,b_2的维度与图像域的位置编码一致。

2.3 decomposed cross attention

定义lane query、图像特征、bev特征分别为Q\in R^{L*C},I\in R^{H_aW_a*C},B\in R^{H_bW_b*C},则lane query的更新形式为(更新之后的lane query使用O\in R^{L*C}表示):
O_i=Q_i+\sum_{j=1}^{H_aW_a}f_o(Q_i,I_j)g_o(I_j)+\sum_{k=1}^{H_bW_b}f_o(Q_i,B_k)g_o(B_k)
其中,g_o代表的是一个不带bias的全连阶层,而attention weight则是由f_o得到的:
f_o(Q_i,I_j)=\frac{exp(Q_i^TW_\theta^TW_\phi I_j)}{\sum_{j=1}^{H_aW_a}exp(Q_i^TW_\theta^TW_\phi I_j)}
其中,权重W_\theta,W_\phi \in R^{C*C}

得到新一层的lane query表达之后需要更新bev特征了:
V_i=B_i+\sum_{j=1}^Lf_v(B_i,O_j)g_v(O_j)
同样的对于图像特征也进行更新:
M_i=I_i+\sum_{j=1}^Lf_m(I_i,O_j)g_m(O_j)

这里将不同的attention机制进行比较,其中original和decomposed attention它们的模块见下图所示:
在这里插入图片描述
对于IPM-based attention则参考persformer中的实现,那么这三种不同类型的attention性能如何呢?见下表:
在这里插入图片描述

2.4 网络loss与infer

经过优化之后的lane query会经过3个MLP网络得到3个输出:图像域和bev域dynamic kernel,以及objectnessS。dynamic kernel与对应维度特征运算得到对应的预测结果R,之后用这些结果计算loss。

objectness loss:
L_{obj}(Y_i,Y_j^{*})=-log(S_{i1})

classification loss:
L_{cls}(Y_i,Y_j^{*})=-\sum_{k=0}^{N-1}S_{j(k+2)}^{*}\cdot log(S_{j(k+2)})

offset loss:
L_{offset}(Y_i,Y_j^{*})=\frac{1}{H_aW_a}\sum_{m=0}^{H_a-1}\sum_{n=0}^{W_a-1}||R_a^{imn}-(R_a^{imn})^{*}||_1+\frac{1}{H_bW_b}\sum_{m=0}^{H_b-1}\sum_{n=0}^{W_b-1}||R_b^{imn}-(R_b^{imn})^{*}||_1

在进行匈牙利匹配的时候匹配代价为:
L_{match}(Y_i,Y_j^{*})=\lambda_{obj}L_{obj}(Y_i,Y_j^{*})+\lambda_{cls}L_{cls}(Y_i,Y_j^{*})+\lambda_{off}L_{off}(Y_i,Y_j^{*})

与GT匹配自然是选择最小的那个了:
\argmin_z\hat{z}=\sum_{j=1}^NL_{match}(Y_{z(j)},Y_j^{*})

完成匹配之后整体的loss为:
loss=\frac{1}{M}\sum_{j=1}^M[\lambda_{obj}L_{obj}(Y_{z(j)},Y_j^{*})+\lambda_{cls}L_{cls}(Y_{z(j)},Y_j^{*})+\lambda_{off}L_{off}(Y_{z(j)},Y_j^{*})+\frac{1}{L-M}\sum_{i\notin C}\lambda_{obj}L_{obj}(Y_i,\phi)

模型infer的后处理,类似于YOLO形式的object和offset获取,见bev部分的伪代码:
在这里插入图片描述

3. 实验结果

Openlane val上的性能比较和各工况下的性能表现:
在这里插入图片描述

全部评论 (0)

还没有任何评论哟~