一图看懂这三个网络的区别与联系:
DETR:每个物体query表示一个物体,并在transformer解码器中与2D特征进行交互以生成预测;
DETR3D:物体query预测的3D参考点通过相机参数投影回图像空间,并用于从所有相机视图中采样2D特征,解码器将采样的特征和query作为输入,更新物体query的表示(说到底仍旧是在2D特征中进行交互)
问题:
- 参考点的预测坐标可能不够准确,导致采样的特征超出物体区域。
- 只会收集投影点处的图像特征,这无法从全局视角进行表示学习
- 复杂的特征采样过程会阻碍检测器的实际应用
作者的目标是将多视角的2D特征转换为3D感知特征,可以直接在3D环境下更新物体查询。
为了实现这一目标,首先将由不同视角共享的相机视锥空间离散化为网格坐标。然后,通过不同的相机参数将这些坐标转换为 3D 世界空间的坐标。接着,2D 图像特征从主干网络中提取出来,与 3D 坐标一起输入到一个简单的 3D 位置编码器中,以生成 3D 位置感知特征。3D 位置感知特征将在 transformer 解码器中与物体查询进行交互,更新后的物体查询将进一步用于预测物体类别和 3D 边界框。
与 DETR3D [51] 相比,提出的 PETR 架构带来了许多优势。它保持了原始 DETR [4] 的端到端特性,同时避免了复杂的 2D 到 3D 投影和特征采样。在推理时,3D 位置坐标可以以离线方式生成,并作为额外的输入位置嵌入。这使得实际应用相对更简单。
模型结构
网络结构总揽:
- 多视角图像输入到主干网络(例如 ResNet)中,以提取多视角 2D 图像特征。
- 在 3D 坐标生成器中,共享所有视图的相机视锥空间被离散化为一个 3D 网格。
- 网格坐标通过不同的相机参数进行转换,生成 3D 世界空间中的坐标
- 将 2D 图像特征和 3D 坐标输入到所提出的 3D 位置编码器中,以生成 3D 位置感知特征
- 由query生成器生成的物体query通过与 3D 位置感知特征在 Transformer 解码器中的交互进行更新
- 更新后的查询进一步用于预测 3D 边界框和物体类别
3D Coordinates Generator![](https://i-blog.csdnimg.cn/direct/6f3fa2cfef97419383e45042b36e6deb.png)
3D Position Encoder
图3展示了所提议的3D位置编码器的架构。流程如下:
- 2D图像特征输入:将多视角的2D图像特征输入到一个1×1卷积层中进行维度降维处理。
- 3D坐标转换:通过3D坐标生成器生成的3D坐标经过一个多层感知机(MLP)网络转化为3D位置嵌入(PE)。
- 特征融合:将生成的3D位置嵌入与同视角下的2D图像特征相加,得到3D位置感知特征。
- 展平操作:对3D位置感知特征进行展平操作,将其作为Transformer解码器的输入。
此过程的核心目的是将2D图像特征与3D空间中的位置信息结合起来,从而生成包含3D位置感知的特征,这些特征随后用于对象检测任务。
效果演示
为了演示3D PE 的效果,我们随机选择了前视图中的三个点的 PE,并计算这些点与所有多视角 PE 之间的相似度。如图4所示,这些点附近的区域往往具有较高的相似度。例如,当我们选择前视图中的左点时,左前视图的右区域将具有相对较高的相似度。这表明3D PE 在3D空间中隐式地建立了不同视图之间的位置相关性。也就是建立了不同相机在重叠区域的联系
如图7所示,物体查询在不同视图中倾向于关注同一个物体。这表明3D位置嵌入能够在不同视图之间建立位置相关性。
Query Generator and Decoder
Query Generator:
在PETR的架构中,为了有效生成初始对象查询(object queries),我们借鉴了多个之前工作的方法:
原始DETR [4]:直接使用一组可学习的参数作为初始对象查询。
Deformable-DETR [58]:基于初始化的对象查询预测参考点,从而帮助模型更好地进行定位。
DETR3D [51]:继承了Deformable-DETR的思路,使用参考点来指导3D目标检测。
在3D场景中,为了降低模型的收敛难度,我们引入了类似于Anchor-DETR [50]的策略:
-
锚点初始化:首先,在3D世界空间中,我们初始化了一组可学习的锚点(anchor points),这些锚点均匀分布在0到1的范围内。
-
MLP网络生成查询:然后,将这些3D锚点的坐标输入到一个小型的多层感知器(MLP)网络中,该网络包含两个线性层,用以生成初始的对象查询 Q0。
在我们的实践中,使用3D空间中的锚点可以保证PETR的收敛性,而如果采用DETR的设置或者在鸟瞰图(BEV)空间中生成锚点,则无法达到理想的检测性能。
Decoder:
Head and Loss
实验结果
表2展示了在nuScenes测试集上的性能比较。我们的方法在NDS和mAP这两个指标上也达到了最佳表现。为了与BEVDet [18]进行公平比较,采用Swin-S作为主干网络的PETR也在2112×768的图像大小下进行了训练。结果显示,PETR在mAP上超越了BEVDet [18] 3.6%,在NDS上超越了1.8%。值得注意的是,采用Swin-B主干网络的PETR在性能上与使用外部数据的现有方法相当。当使用外部数据时,采用VOVNetV2 [23]主干网络的PETR在NDS上达到了50.4%,在mAP上达到了44.1%。据我们所知,PETR是首个NDS超过50.0%的基于视觉的方法。
我们还对PETR的收敛性和检测速度进行了分析。首先,我们比较了DETR3D [51]和PETR的收敛情况(参见图5(a))。PETR在前12个epoch内的收敛速度相对较慢,但最终达到了更好的检测性能。这表明PETR需要相对较长的训练时间才能完全收敛。我们猜测原因在于PETR通过全局注意力学习3D关联性,而DETR3D [51]则在局部区域内感知3D场景。
图5(b)进一步报告了不同输入尺寸下PETR的检测性能和速度。FPS(每秒帧数)是在单个Tesla V100 GPU上测量的。在相同的图像尺寸(例如1056×384)下,我们的PETR以10.7 FPS的速度进行推理,而BEVDet [18]的速度为4.2 FPS。需要注意的是,BEVDet [18]的速度是在性能更强的NVIDIA 3090 GPU上测量的。
最后,我们提供了一些失败案例(见图8)。失败案例用红色和绿色圆圈标出。红色圆圈显示了一些未被检测到的小物体。绿色圆圈中的物体则被错误分类。这些错误检测主要发生在不同车辆在外观上高度相似的情况下。
这些定性结果进一步验证了PETR的有效性和局限性,尤其是在处理复杂多视角场景时的表现。尽管模型在大多数情况下表现良好,但仍需在处理小物体和外观相似的物体上进行改进。