论文阅读:《PETR: Position Embedding Transformation for Multi-View 3D Object Detection》

图1 NuScences纯视觉3D检测榜单 (2022.3.18)

  这篇论文对应NuScenes纯视觉榜三方法PETR,旷视科技于2022年3月上传至arXiv。PETR是DETR3D的改进,在没有外部训练数据的情况下,性能已经优于DETR3D。本人由于工作原因比较关注ATE(平均目标中心点误差)和AOE(平均目标偏航角误差)两项指标,从图2可以看出,PETR方法AOE指标基本和DETR3D方法持平,但ATE指标除了bicycle类别均优于DETR3D,尤其是bus和construction vehicle这类大型车辆目标

图2 PETR和DETR3D性能对比

  1. PETR论文链接:https://arxiv.org/abs/2203.05625
  2. DETR3D论文链接:https://arxiv.org/abs/2110.06922

1. 论文动机

  论文作者认为DETR3D方法存在3个缺点:

a. 参考点投影机制
  DETR3D首先根据object query预测 N N N个参考点,然后利用相机参数将参考点反投影回图像,对2D图像特征进行采样,最后根据采样得到的2D图像特征预测3D目标信息。如果参考点预测的不够准确,那么投影回图像的位置就有可能位于目标区域之外,导致采样得到无效的图像特征。

b. 单点特征采样
  DETR3D只会选取参考点反投影位置对应的图像特征,导致模型对于全局特征学习的不够充分。

c. 流程复杂
  特征采样过程比较复杂,不利于方法落地。

图3 DETR3D和PETR方法对比

  PETR通过3D Position Embedding将多视角相机的2D特征转化为3D感知特征,使得object query可以直接在3D语义环境下更新,省去了参考点反投影以及特征采样两个步骤。

2. 方法介绍

图4 PETR方法框架

2.1 3D Coodinates Generator

图5 空间转换示例

  PETR的空间转换方法取自论文DGSN,如图5所示。相机视锥空间用 ( u , v , d ) (u, v, d) (u,v,d)表示,其中 u , v u,v u,v是图像的像素坐标, d d d是和像平面正交的深度。世界空间用 ( x , y , z ) (x, y, z) (x,y,z)表示,利用相机内参可以将相机视锥空间变换到3D世界空间: ( x y z ) = ( 1 / f x 0 − c x / f x 0 1 / f y − c y / f y 0 0 1 ) ( u d v d d ) (1) \left(\begin{matrix}x\\y\\z \end{matrix} \right) = \left(\begin{matrix}1/f_x & 0 & -c_x/f_x \\ 0 &1/f_y & -c_y/f_y \\ 0 & 0 & 1 \end{matrix} \right) \left(\begin{matrix}ud\\vd\\d \end{matrix} \right) \tag{1} xyz=1/fx0001/fy0cx/fxcy/fy1udvdd(1)  由于NuScenes数据集有6个相机,PETR和DGSN的空间转换会有些差异。首先将相机视锥空间离散成大小为 ( W F , H F , D ) (W_F,H_F,D) (WF,HF,D)的三维网格,网格中的每一点 j j j可以表示成 p j m = ( u j d j , v j d j , d j , 1 ) T (2) p_j^m=(u_jd_j, v_jd_j, d_j, 1)^T \tag{2} pjm=(ujdj,vjdj,dj,1)T(2)考虑有6个相机,不同相机之间会存在交叠区域,3D世界空间的一点可能位于多个相机的视锥空间中,那么相机 i i i的视锥空间中的点 j j j在世界空间中的坐标可以表示为 p i , j 3 d = ( x i , j , y i , j , z i , j , 1 ) T (3) p_{i,j}^{3d}=(x_{i,j},y_{i,j},z_{i,j},1)^T \tag{3} pi,j3d=(xi,j,yi,j,zi,j,1)T(3)通过相机内外参可以将相机视锥空间变换到世界空间: p i , j 3 d = K i − 1 p j m (4) p_{i,j}^{3d}=K_i^{-1}p_j^m \tag{4} pi,j3d=Ki1pjm(4)其中 K i − 1 ∈ R 4 × 4 K_i^{-1}\in R^{4\times 4} Ki1R4×4是第 i i i个相机的变换矩阵(根据相机内外参计算得到)。

  最后,根据给定的空间范围 [ x m i n , y m i n , z m i n , x m a x , y m a x , z m a x ] [x_{min},y_{min},z_{min},x_{max},y_{max},z_{max}] [xmin,ymin,zmin,xmax,ymax,zmax]将世界空间的点 p i , j 3 d p_{i,j}^{3d} pi,j3d进行归一化: { x i , j = ( x i , j − x m i n ) / ( x m a x − x m i n ) y i , j = ( y i , j − y m i n ) / ( y m a x − y m i n ) z i , j = ( z i , j − z m i n ) / ( z m a x − z m i n ) (5) \left \{ \begin{aligned}x_{i,j}&=(x_{i,j}-x_{min})/(x_{max}-x_{min})\\y_{i,j}&=(y_{i,j}-y_{min})/(y_{max}-y_{min})\\z_{i,j}&=(z_{i,j}-z_{min})/(z_{max}-z_{min})\end{aligned} \right. \tag{5} xi,jyi,jzi,j=(xi,jxmin)/(xmaxxmin)=(yi,jymin)/(ymaxymin)=(zi,jzmin)/(zmaxzmin)(5)

2.2 3D Position Encoder

图6 3D位置编码器

  经由Backbone和3D Coodinates Generator得到2D图像特征 F 2 d F^{2d} F2d及世界空间点 P 3 d P^{3d} P3d:
F 2 d = { F i 2 d ∈ R C × H F × W F , i = 1 , 2 , … , N } P 3 d = { P i 3 d ∈ R ( D × 4 ) × H F × W F , i = 1 , 2 , … , N } (6) \begin{aligned} F^{2d}&=\{F_i^{2d}\in R^{C\times H_F \times W_F},i=1,2,\dots, N\} \\P^{3d}&=\{P_i^{3d}\in R^{(D\times 4)\times H_F \times W_F},i=1,2,\dots, N\} \end{aligned} \tag{6} F2dP3d={ Fi2dRC×HF×WF,i=1,2,,N}={ Pi3dR(D×4)×HF×WF,i=1,2,,N}(6) P 3 d P^{3d} P3d经过MLP得到3D Position Embbeding,再和 F 2 d F^{2d} F2d相加,得到3D感知特征: F 3 d = ψ ( F i 2 d , P i 3 d ) = { F i 3 d ∈ R C × H F × W F } , i = 1 , 2 , … , N (7) F^{3d}=\psi(F_i^{2d},P_i^{3d})= \{F_i^{3d}\in R^{C\times H_F \times W_F}\}, i=1,2,\dots, N \tag{7} F3d=ψ(Fi2d,Pi3d)={ Fi3dRC×HF×WF},i=1,2,,N(7)其中 N N N是相机的个数。最后将 F 3 d F^{3d} F3d展开作为Transformer Decoder的输入。

  为了说明3D PE的作用,作者从前视图像中随机挑选了3个像素点对应的PE,并计算这3个PE和其他所有视角图像PE的相似度,如图7所示。3D世界空间中左前方的一点理论上会同时出现在前视相机左侧和左前相机右侧,从第一行图像可以看出,PE相似度的确是符合这个先验认知的。所以可以证明3D PE的确建立了3D空间中不同视角的位置关联。

图7 3D PE相似度

2.3 Query Generator

  回顾一下图3,DETR使用一组可学习的参数作为初始的object query,DETR3D基于初始的object query预测一组参考点,PETR为了降低3D场景的收敛难度,首先在3D世界空间中以均匀分布的方式初始化一组可学习的3D锚点,然后锚点经过一个小型MLP生成初始的object query。论文作者还提到,如果使用DETR的方式或在BEV空间生成锚点,最终模型性能都不理想。

扫描二维码关注公众号,回复: 15241394 查看本文章

2.4 Decoder、Head and Loss

  PETR网络的后半部分基本就沿用DETR和DETR3D的配置:使用 L L L个标准Transformer Decoder层迭代地更新object query;检测头和回归头都沿用DETR3D,回归目标中心相对于锚点的偏移量;分类使用focal loss,3D框回归使用L1 loss。

3. 论文实验

3.1 实现细节

2D特征提取
  论文实验了ResNet、Swin-Transformer、VovNetV2作为2D主干网络,但都是取第五阶段的特征图(1/32分辨率)上采样然后和第四阶段的特征图(1/16分辨率)相加,作为最终的2D特征。

3D坐标生成
  相机视锥空间 ( W F , H F , D ) (W_F,H_F,D) (WF,HF,D)中, D = 64 D=64 D=64,并按照CaDDN论文中的线性递增量化方式(LID)对深度进行量化,XY方向范围为[-61.2m, 61.2m],Z轴方向范围为[-10m, 10m]。

图8 深度量化方式

训练策略
  使用了多尺度训练策略,保持图像横纵比的情况下,短边随机在640和900长度下选择。然后根据CenterPoint方法,将真值实例在3D空间中随机旋转-22.5°~22.5°进行数据增强。

3.2 实验结果

  整体性能如表1所示,作者实验了不同主干网络、不同图像分辨率,以及预训练模型的性能差异,其中带 † \dag 符号的表示使用了FCOS3D的主干预训练模型。总的来看实验结果基本符合预期:高分辨率>低分辨率,Swin-Transformer>ResNet101>ResNet50,有预训练>无预训练。另外,表1中的PETR相关指标都使用了CBGS数据增强。

表1 NuScenes验证集性能

  表2实验了不同PE方式对模型性能的影响,2D表示仅DETR提出的朴素2D PE方式,MV表示加入多视角区分的PE,3D表示本论文提出的3D PE。从表中数据可以看到,3D PE的作用还是比较明显的,但在3D PE上加入2D PE性能反而所有下降,同时加入2D PE和MV PE性能是提升的。个人感觉论文的PE消融实验并没有讲清楚第5组相比第3组的性能提升,到底是2D PE带来的还是MV PE带来的。而且消融实验中0.309的mAP指标和表1也对不上,不知道具体是在什么配置下进行实验的。

表2 3D Position Embedding消融实验

  表3(a)中有一点值得注意,从3D世界坐标得到3D PE需要经过一个MLP,如果这个MLP使用 3 × 3 3\times 3 3×3的卷积,模型将无法收敛, m A P = 0 mAP=0 mAP=0,这是由于 3 × 3 3\times 3 3×3的卷积会破坏2D特征和3D位置的对应关系。从表3(b)可以看出2D特征和3D PE的融合方式对于最终性能倒是影响不大。然后网络自己学习到的锚点会比均匀采样的锚点好,增加锚点数量也能为模型性能带来正收益。

表3 3D Position Encoder消融实验

  图9是将卡车目标对应的object query的注意力可视化的效果,左前和左后镜头都有很高的响应。

图9 可视化object query的注意力

猜你喜欢

转载自blog.csdn.net/qq_16137569/article/details/123576866