paddle实现3d目标检测_计算机视觉

图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这类大型车辆目标



paddle实现3d目标检测_paddle实现3d目标检测_02

图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预测paddle实现3d目标检测_paddle实现3d目标检测_03个参考点,然后利用相机参数将参考点反投影回图像,对2D图像特征进行采样,最后根据采样得到的2D图像特征预测3D目标信息。如果参考点预测的不够准确,那么投影回图像的位置就有可能位于目标区域之外,导致采样得到无效的图像特征。

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

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



paddle实现3d目标检测_计算机视觉_04

图3 DETR3D和PETR方法对比




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

2. 方法介绍



paddle实现3d目标检测_计算机视觉_05

图4 PETR方法框架




2.1 3D Coodinates Generator



paddle实现3d目标检测_nuScenes_06

图5 空间转换示例




  PETR的空间转换方法取自论文DGSN,如图5所示。相机视锥空间用paddle实现3d目标检测_目标检测_07表示,其中paddle实现3d目标检测_3D_08是图像的像素坐标,paddle实现3d目标检测_计算机视觉_09是和像平面正交的深度。世界空间用paddle实现3d目标检测_目标检测_10表示,利用相机内参可以将相机视锥空间变换到3D世界空间:paddle实现3d目标检测_paddle实现3d目标检测_11  由于NuScenes数据集有6个相机,PETR和DGSN的空间转换会有些差异。首先将相机视锥空间离散成大小为paddle实现3d目标检测_nuScenes_12的三维网格,网格中的每一点paddle实现3d目标检测_3D_13可以表示成paddle实现3d目标检测_目标检测_14考虑有6个相机,不同相机之间会存在交叠区域,3D世界空间的一点可能位于多个相机的视锥空间中,那么相机paddle实现3d目标检测_3D_15的视锥空间中的点paddle实现3d目标检测_3D_13在世界空间中的坐标可以表示为paddle实现3d目标检测_3D_17通过相机内外参可以将相机视锥空间变换到世界空间:paddle实现3d目标检测_paddle实现3d目标检测_18其中paddle实现3d目标检测_计算机视觉_19是第paddle实现3d目标检测_3D_15个相机的变换矩阵(根据相机内外参计算得到)。

paddle实现3d目标检测_nuScenes_21将世界空间的点paddle实现3d目标检测_3D_22进行归一化:paddle实现3d目标检测_计算机视觉_23

2.2 3D Position Encoder



paddle实现3d目标检测_nuScenes_24

图6 3D位置编码器




paddle实现3d目标检测_paddle实现3d目标检测_25及世界空间点paddle实现3d目标检测_3D_26:
paddle实现3d目标检测_paddle实现3d目标检测_27paddle实现3d目标检测_3D_26经过MLP得到3D Position Embbeding,再和paddle实现3d目标检测_paddle实现3d目标检测_25相加,得到3D感知特征:paddle实现3d目标检测_nuScenes_30其中paddle实现3d目标检测_paddle实现3d目标检测_03是相机的个数。最后将paddle实现3d目标检测_目标检测_32展开作为Transformer Decoder的输入。

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



paddle实现3d目标检测_nuScenes_33

图7 3D PE相似度




2.3 Query Generator

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

2.4 Decoder、Head and Loss

paddle实现3d目标检测_paddle实现3d目标检测_34个标准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坐标生成
  相机视锥空间paddle实现3d目标检测_nuScenes_12中,paddle实现3d目标检测_目标检测_36,并按照CaDDN论文中的线性递增量化方式(LID)对深度进行量化,XY方向范围为[-61.2m, 61.2m],Z轴方向范围为[-10m, 10m]。



paddle实现3d目标检测_目标检测_37

图8 深度量化方式




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

3.2 实验结果

paddle实现3d目标检测_3D_38符号的表示使用了FCOS3D的主干预训练模型。总的来看实验结果基本符合预期:高分辨率>低分辨率,Swin-Transformer>ResNet101>ResNet50,有预训练>无预训练。另外,表1中的PETR相关指标都使用了CBGS数据增强。



paddle实现3d目标检测_nuScenes_39

表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也对不上,不知道具体是在什么配置下进行实验的。



paddle实现3d目标检测_目标检测_40

表2 3D Position Embedding消融实验




paddle实现3d目标检测_目标检测_41的卷积,模型将无法收敛,paddle实现3d目标检测_paddle实现3d目标检测_42,这是由于paddle实现3d目标检测_目标检测_41的卷积会破坏2D特征和3D位置的对应关系。从表3(b)可以看出2D特征和3D PE的融合方式对于最终性能倒是影响不大。然后网络自己学习到的锚点会比均匀采样的锚点好,增加锚点数量也能为模型性能带来正收益。



paddle实现3d目标检测_3D_44

表3 3D Position Encoder消融实验




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



paddle实现3d目标检测_paddle实现3d目标检测_45

图9 可视化object query的注意力