论文标题:
FB-BEV: BEV Representation from Forward-Backward View Transformations
论文作者:
Zhiqi Li, Zhiding Yu, Wenhai Wang, Anima Anandkumar, Tong Lu, Jose M. Alvarez
导读: 本文弥补前向投影和后向投影的不足,提出了前后视图转换模块。多视图图像和 BEV 表示之间的关键,即为视图转换模块。该模块使用反向投影,提炼前向投影中没有激活的空白 3D 网格,提高了大规模 BEV特征表示的稳定性。©️【深蓝AI】编译
视觉转换模块(VTM),主要作用在视图转换过程,将多视图特征转换为BEV特征表示,是基于视觉的 BEV 感知系统的关键部件。**目前,VTM 存在两种主流的方法模式:前向投影和反向投影。**前向投影以 NVIDIA 提出的 BEV 感知算法 LSS(Lift, Splat, Shoot)为代表,在不借助后处理操作,直接产生稀疏的 BEV 特征。反向投影以 BEVFormer 为例,投影匹配时易于产生假阳性 BEV 特征,主要由于缺少统一的深度信息。
为解决上述的不足,我们提出一个新颖的前后视图转换模块,我们的方法弥补了当前方法的不足,有助于增强 BEV 表示的质量。我们提出的算法为 FB-BEV,在 nuScenes 测试集上取得了 62.4% NDS 得分结果。
2.1 前向投影:
如图1中左边所示,前向投影是将相机特征投射到BEV平面上最为直观的方法,其中涉及图像平面上每个像素深度值的估计,并且使用相机标定参数来确定每个像素在3D空间中的对应关系。我们称这一过程为前向投影。
其中2D像素主动投影,而3D空间被动接收来自图像空间的特征。这一过程中,预测每个像素深度的准确性,是获得高质量BEV特征的关键。为了解决预测像素深度这一难题,NVIDIA提出的BEV感知算法LSS(Lift, Splat, Shoot)首先使用深度分布来建模每个像素的不确定性,但LSS有一点不足:它只能生成离散且稀疏的BEV表示。
如图2所示,BEV特征的密度随着距离变大而减小。当在nuScenes数据集上使用LSS的默认配置,即为同通过将图像“抬升(Lift)”为3D点云,并将所有截头锥体“拍扁(splats)”到参考平面上时,那么在投射过程中,仅有50%的3D网格可以接收到有效的图像特征。
2.2 反向投影:
在动机方面,反向投影和前向投影完全相悖。在反向投影机制之下,3D空间的点占据主动。例如,BEVFormer会预先设定要填充的3D空间坐标,然后将这些3D点投射回2D图像上,具体如图1中间所示。因此,每个预设定的3D空间位置都可以获得与之对应的图像特征。反向投影获得的BEV表示特征,会比LSS稠密得多,因为每个BEV网格都填充了与之对应的图像特征。
然而,反向投影的缺陷也尤为明显,如图3所示:虽然获得了稠密的BEV特征表示,然而因为遮挡和深度误匹配,会产生很多错误的3D到2D空间的对应关系,这一错误匹配造成的主要原因是投影过程中的深度信息的丢失。近来,前向投影领域得到进一步发展,借助更多的深度监督信息辅助提高深度分布的准确性,这有助于3D感知。
图3|BEVFormer生成的BEV特征表示图©️【深蓝AI】编译
考虑到前向投影和反向投影各自的优缺点,我们提出了前后视图转换这一综合方法来解决当前视图转换所存在的限制,具体如图1右边所示。
为解决前向投影中的稀疏BEV特征表示问题,我们使用反向投影提炼前向投影中的稀疏区域。
针对反向投影由于缺失深度信息的指导,而产生假阳性特征的问题,我们提出一个深度感知的反向投影,借助深度一致性,衡量每个投影关系的质量,来抑制假阳性特征。
何为深度一致性?是通过一个3D点和与之对应的2D投影点的深度分布距离来确定的,即为深度一致性。基于这一深度感知的方法,不匹配的反向投影会被给定一个较低的权重,从而减少由于假阳性BEV特征导致的推理。
我们将提出的视图转换模块的命名为FB-BEV,它是一个二阶段方法。该模块工作流程大致如下:
首先,使用前向投影生成初始的稀疏BEV表示,为了获得更加稠密的BEV表示且考虑不带来较大的计算量,我们采用一个前景区域推荐网络,来选择前景BEV网格。之后,反向投影使用这些前景网格作为BEV查询,并借助深度感知机制,通过将这些查询反向投影到图像,进一步提炼细化BEV网格。
3.1 整体架构
如图4所示,FB-BEV主要包含三个关键模块:
· 带有前向投影的视图转换模块F-VTM
· 前景区域推荐网络FRPN
· 带有深度感知的反向投影视图转换模块B-VTM
并且,我们还使用一个深度网络来预测深度分布,相关深度分布信息会在所有模块中被使用。
在推理阶段,我们将多视图RGB图像喂给图像基干网络,并获得图像特征 F = { F i } i = 1 N c F\!=\!\{F_i\}_{i=1}^{N_c} F={Fi}i=1Nc,其中 F i F_i Fi是第 i i i个相机的视图特征, N c N_c Nc是所有相机数量。然后,我们通过将图像特征 F F F喂入到深度网络,获得深度分布 D = { D i } i = 1 N c D = \{D_i\}_{i=1}^{N_c} D={Di}i=1Nc。将视图特征 F F F和深度分布 D D D作为输入,F-VTM将会产生一个BEV表示 B ∈ R C × H × W B\in \mathbb{R}^{C\times H \times W} B∈RC×H×W,其中 C C C是通道维度, H × W H\times W H×W是BEV特征的空间形状。FRPN以BEV特征作为输入,并预测一个二分掩码 M ∈ R H × W M\in\mathbb{R}^{H\times W} M∈RH×W,用来检测前景区域。只有前景网格 B [ sigmoid ( M ) > t f ] B[\text{sigmoid}(M)>t_f] B[sigmoid(M)>tf]会被喂入到B-VTM中进一步提炼细化,其中 t f t_f tf是前景阈值。最终的BEV特征 B ′ ∈ R C × H × W B'\in \mathbb{R}^{C\times H \times W} B′∈RC×H×W是通过将细化后的BEV特征添加到上获得。
3.2 前向投影
前向投影模块F-VTM遵循LSS的模式,Lift步骤基于对应的深度分布,将2D图像中的每个像素投射进3D体素空间。Splat步骤通过池化操作聚合一个体素中所有像素的值。
3.3 前景区域推荐网络
由F-VTM获得到的BEV特征是稀疏的,并且存在很多未被激活的空白BEV网格。为了获得更加稠密的BEV表示,就得填充这些空白的BEV网格。但对于3D目标检测,我们感兴趣的前景目标仅仅占据整体BEV特征的一小部分。为了在BEV特征 B B B中定位前景目标,我们使用一个简单的分割网络,从BEV特征中生成一个二值掩码 M ∈ R H × W M\in \mathbb{R}^{H\times W} M∈RH×W。
在推理阶段,来自于F-VTM的BEV特征 F = { F i } i = 1 N c F\!=\!\{F_i\}_{i=1}^{N_c} F={Fi}i=1Nc作为输入预测,然后得到二值掩码 M M M,我们使用掩码阈值过滤掉不需要的BEV网格 { Q x , y ∣ M [ ( x , y ) ] > t f } \{Q_{x,y}|M[(x,y)]\!>\!t_f\} {Qx,y∣M[(x,y)]>tf}。因此,我们获得一组离散BEV网格,其中 ( x , y ) (x,y) (x,y)是每个前景BEV网格的位置。每个BEV网格 Q x , y Q_{x,y} Qx,y可以被看作一个BEV查询,需要进一步提炼细化。
3.4 深度感知的反向投影
深度感知的反向投影主要有两点功能:
1.有效填充任意分辨率的BEV,可以选择生成特定区域的BEV特征,来弥补前向投影产生的稀疏特征;
2.当和前向投影方法配合使用时,会提供一个更加全面的BEV表示。
·深度一致性
深度学习一致性作为反向投影的基础概念,如果用数学函数来描述,则是将一个3D点 ( x , y , z ) (x,y,z) (x,y,z)投影到一个2D图像点 ( u , v ) (u,v) (u,v),基于相机投影矩阵 P ∈ R 3 × 4 P\in \mathbb{R}^{3\times 4} P∈R3×4。这一过程可以通过数学公式表示为:
d ⋅ [ u v 1 ] T = P ⋅ [ x y z 1 ] T ( 1 ) d\cdot\begin{bmatrix} u &v & 1 \end{bmatrix}^T= P \cdot \begin{bmatrix} x &y &z & 1 \end{bmatrix}^T\quad(1) d⋅[uv1]T=P⋅[xyz1]T(1)
其中 d d d表示3D点 ( x , y , z ) (x,y,z) (x,y,z)在平面的深度信息,显然,对于任意3D点 ( λ x , λ y , λ z ) (\lambda x, \lambda y, \lambda z) (λx,λy,λz),其中 λ ∈ R + \lambda\in \mathbb{R}^{+} λ∈R+,它们共享相同的2D图像投射点 ( u , v ) (u,v) (u,v),因此这些3D点 ( λ x , λ y , λ z ) (\lambda x, \lambda y, \lambda z) (λx,λy,λz)表征了相似的图像特征。
那么,为了缓解BEV特征稀疏这一问题,本文主要通过前向投影针对不同深度信息预测不同的权重。特别地,针对每个点 ( u , v ) (u,v) (u,v),它预测一个针对每个离散深度 ( d 0 + i Δ ) (d_0 + i\Delta) (d0+iΔ)的权重 w i w_i wi,并且满足 i ∈ { 0 , 1 , ⋯ , ∣ D ∣ } i\! \in \! \{0, 1,\cdots, |D|\} i∈{0,1,⋯,∣D∣}, D D D是一组离散深度, d 0 d_0 d0是初始深度, Δ \Delta Δ是深度间隔。因此,当考虑到关于点 ( u , v ) (u,v) (u,v)的两个离散深度 ( d 0 + i Δ ) (d_0 + i\Delta) (d0+iΔ)和 ( d 0 + j Δ ) (d_0 + j\Delta) (d0+jΔ),它最终落到3D点 ( x i , y i , z i ) (x_i,y_i,z_i) (xi,yi,zi)和 ( x j , y j , z j ) (x_j,y_j,z_j) (xj,yj,zj)。
为了结合反向投影的深度信息并增强投影质量,本文引入了深度一致性 w c w_c wc,如图5所示。
可以看出,由于关于点 ( u , v ) (u,v) (u,v)的离散深度分布向量 [ w 0 , w 1 , ⋯ , w ∣ D ∣ ] [w_0, w_1,\cdots, w_{|D|}] [w0,w1,⋯,w∣D∣]是已知的,因此关于深度值 d d d和这一深度分布向量之间的深度一致性 w c w_c wc,可以通过将 d d d转变为深度分布向量 [ w 0 ′ , ⋯ , w i ′ , w i + 1 ′ , ⋯ w ∣ D ∣ ′ ] [w_0',\cdots,w_i', w_{i+1}', \cdots w_{|D|}'] [w0′,⋯,wi′,wi+1′,⋯w∣D∣′]。
其中仅仅 w i ′ w'_i wi′和 w i + 1 ′ w'_{i+1} wi+1′是非零的,并且满足 ( d 0 + i Δ ) ≤ d ≤ ( d 0 + ( i + 1 ) Δ ) (d_0 + i\Delta) \le d \le (d_0 + (i+1)\Delta) (d0+iΔ)≤d≤(d0+(i+1)Δ)。
深度一致性 w c w_c wc可以表示为:
w c = [ w 0 , w 1 , ⋯ , w ∣ D ∣ ] ⋅ [ w 0 ′ , w 1 ′ , ⋯ , w ∣ D ∣ ′ ] = w i w i ′ + w i + 1 w i + 1 ′ ( 2 ) w_c = [w_0, w_1,\cdots, w_{|D|}]\cdot [w_0', w_1',\cdots, w_{|D|}']= w_iw_i' + w_{i+1}w_{i+1}'\quad(2) wc=[w0,w1,⋯,w∣D∣]⋅[w0′,w1′,⋯,w∣D∣′]=wiwi′+wi+1wi+1′(2)←公式或因设备不同显示不完整,左右滑动即可查看→
该公式满足 w i ′ = 1 − d − d 0 − i Δ Δ , w i + 1 ′ = 1 − w i ′ w_i' \!= \!1\!-\!\frac{d-d_0-i\Delta}{\Delta} , w_{i+1}' \!= \!1\!-\! w_i' wi′=1−Δd−d0−iΔ,wi+1′=1−wi′的条件。
·方法的实现
深度一致性是一个通用的机制,可以被插入到任意反向投影的方法中。本文所提到的深度感知反向投影,是基于空间跨注意力的BEVFormer。原始的空间块注意力SCA可以表示为:
SCA ( Q x , y , F ) = ∑ i = 1 N c ∑ j = 1 N ref F d ( Q x , y , P i ( x , y , z j ) , F i ) , ( 3 ) \text{SCA}(Q_{x,y}, F)\!= \!\sum_{i=1}^{{N_\text{c}}} \sum_{j=1}^{{N_\text{ref}}}\mathcal{F}_d(Q_{x,y}, \mathcal{P}_i(x, y, z_j), F_i),\quad(3) SCA(Qx,y,F)=i=1∑Ncj=1∑NrefFd(Qx,y,Pi(x,y,zj),Fi),(3)←公式或因设备不同显示不完整,左右滑动即可查看→
其中, Q x , y Q_{x,y} Qx,y是一个位于点 ( x , y ) (x,y) (x,y)的BEV查询, F F F则是多视图特征。对于每个在BEV平面的点 ( x , y ) (x,y) (x,y),BEVFormer将会把这个点提升到 N r e f N_{ref} NrefD点,并带有不同的高度 z i z_i zi。
通过使用深度一致性,我们可以直接完善SCA模块:
SCA d a ( Q x , y , F ) = ∑ i = 1 N c ∑ j = 1 N ref F d ( Q x , y , P i ( x , y , z j ) , F i ) ⋅ w c i j , ( 4 ) \text{SCA}_{da}(Q_{x,y}, F)= \!\sum_{i=1}^{{N_\text{c}}} \sum_{j=1}^{{N_\text{ref}}}\mathcal{F}_{d}(Q_{x,y}, \mathcal{P}_i(x, y, z_j), F_i)\cdot{w_c^{ij}},\quad(4) SCAda(Qx,y,F)=i=1∑Ncj=1∑NrefFd(Qx,y,Pi(x,y,zj),Fi)⋅wcij,(4)←公式或因设备不同显示不完整,左右滑动即可查看→
其中, w c i j w_c^{ij} wcij是3D点 ( x , y , z i ) (x,y,z_i) (x,y,zi)和2D点 ( u i , v i ) (u_i,v_i) (ui,vi)之间的深度一致性。
4.1 实验设定
·数据集和指标
nuScenes数据集是一个大规模的自动驾驶数据集,包含1000个不同场景。数据集中每个场景的关键样本,以2Hz的频率进行标注,每个样本包含来自于6个相机的RGB图像。nuScenes数据集提供了一系列测量3D检测质量的指标,包括NDS、mAP、mATE、mASE、mAOE、mAVE和mAAE。
其中,NDS表示为:
N D S = 1 10 [ 5 m A P + ∑ m T P ∈ T P ( 1 − m i n ( 1 , m T P ) ) ] {\rm NDS}\!=\!\frac{1}{10}[5{\rm mAP}\!+\!\sum_{{\rm mTP}\in \mathbb{TP}} (1\!-\!{\rm min}(1,{\rm mTP}))] NDS=101[5mAP+mTP∈TP∑(1−min(1,mTP))]←公式或因设备不同显示不完整,左右滑动即可查看→
·实现细节
默认使用ResNet-50,并且每个图像大小为256x704。训练过程中,采用CBGS策略,并且在图像和BEV都进行数据增强,包括:随机缩放、反转、旋转。默认情况,我们模型训练20个epoch,使用的batchsize为64,并且采用AdamW作为优化器,初始学习率为2e-4。
4.2 基准实验结果
表1显示FB-BEV方法在nuScenes val数据集上的3D检测结果,以及和两个方法BEVDet和BEVFormer的对比。在不使用时间信息或深度监控的情况下,我们的方法以 2.4% NDS 和 2.7% NDS 的显著优势优于 BEVDet 和 BEVFormer。
表2显示,我们的模型获得了62.4% NDS得分,并以 0.5 分的明显优势超过了之前的 SOLOFusion 。
4.3 消融实验
**·深度感知的反向投影:**在表3中,我们比较了在 FB-BEV 和 BEVFormer 中采用深度感知后向投影的结果。采用深度感知投影后,BEVFormer 的 NDS 得分提高了 0.9%。
**·FRPN的有效性:**如表4所示,FRPN有效性不仅提高推理效率,而且提高检测准确率。
**·稀疏度降低的有效性:**如表5所示,降低稀疏度可以提高检测的准确率。
本文提出一种前后投影模式,解决当下投影方法的种种不足——通过解决前向投影生成的稀疏特征,以及在反向投影中引入深度信息,构建了一个更加准确的投影关系。这两个阶段的视图转换模块,适合更高分辨率的BEV特征表示,并且可以应用于超长距离的目标监测或高分辨率的占据感知。
编译|匡吉
审核|Los
移步公众号【深蓝AI】,第一时间获取自动驾驶、人工智能与机器人行业最新最前沿论文和科技动态。