PETRv2: A Unified Framework for 3D Perception from Multi-Camera Images

全文摘要

本文介绍了一种名为PETRv2的统一框架,用于从多视图图像中进行三维感知。该框架基于先前提出的PETR框架,并探索了时间建模的有效性,利用前一帧的时间信息来提高三维物体检测效果。作者在PETR的基础上扩展了三维位置嵌入(3D PE),以实现不同帧对象位置之间的时间对齐,并引入了一个特征引导的位置编码器来改善3D PE的数据适应性。为了支持多任务学习(如BEV分割和三维车道检测),PETRv2提供了简单而有效的解决方案,通过引入特定于任务的查询,在不同的空间下初始化。实验结果表明,PETRv2在三维物体检测、BEV分割和三维车道检测等方面取得了最先进的性能。此外,还进行了详细的鲁棒性分析。作者希望PETRv2能够成为三维感知的强大基准线。代码可以在https://github.com/megvii-research/PETR上获得。

论文方法

方法描述

本文提出的PETRv2是一种基于多视角图像的自动驾驶感知框架,用于检测、分割和识别场景中的对象和车道线。该框架建立在先前的PETR模型之上,并增加了时序建模和BEV分割模块。

首先,对于每帧图像,使用ResNet-50等预训练的卷积神经网络提取特征。然后,根据相机坐标系生成3D坐标。考虑到车辆运动的影响,将前一帧的3D坐标通过姿态变换转换到当前帧的坐标系中。接着,将相邻两帧的2D特征和3D坐标分别连接起来,输入到特征引导位置编码器(FPE)中,以生成关键值和值组件供Transformer解码器使用。最后,将检测、分割和车道查询初始化于不同空间并注入Transformer解码器,更新后的查询被送入任务特定头以进行最终预测。

方法改进

与原始的PETR模型相比,PETRv2引入了以下改进:

  1. 增加了时序建模:通过计算3D坐标之间的距离,实现跨帧目标定位和速度估计。
  2. 引入了BEV分割模块:通过为每个指定区域分配一个seg查询来实现高分辨率BEV地图的分割。
  3. 添加了3D车道检测功能:通过添加lane查询来支持3D车道检测。

此外,本文还提出了特征引导位置编码器(FPE),以利用2D特征提供视觉先验信息。

解决的问题

PETRv2主要解决了以下问题:

  1. 跨帧目标定位和速度估计:通过计算3D坐标之间的距离,实现了跨帧目标定位和速度估计。
  2. 高分辨率BEV地图分割:通过为每个指定区域分配一个seg查询,实现了高分辨率BEV地图的分割。
  3. 3D车道检测:通过添加lane查询,支持3D车道检测。

这些改进使得PETRv2能够更准确地检测、分割和识别场景中的对象和车道线,从而提高自动驾驶系统的性能。

论文实验

本文主要介绍了基于PETR模型的多帧3D目标检测方法PETRv2,并进行了多项对比实验以验证其性能表现。

首先,在nuScenes和OpenLane两个数据集上,作者比较了PETRv2与近期其他公开方法在3D物体检测任务上的性能差异。结果表明,PETRv2在nuScenes测试集中取得了39.8%的mAP和49.4%的NDS,相较于PETR模型有显著提升。此外,PETRv2在BEV分割任务中也表现出色,实现了更好的IoU分数。

其次,作者还对PETRv2进行了不同参数设置下的对比实验,如使用不同的摄像头旋转幅度等。结果显示,增加锚点数量可以进一步提高模型性能,而引入FPE模块则有助于提高模型鲁棒性。

最后,作者还分析了模型在存在相机时间延迟、相机丢失等情况下的性能表现。实验结果表明,时间延迟对模型性能影响较大,相机丢失也会导致较大的性能下降。

综上所述,PETRv2在多个数据集和任务上均表现出优异的性能,且具有较强的鲁棒性和可扩展性。

论文总结

文章优点

该论文提出了一种名为PETRv2的统一框架,用于从多相机图像中实现三维感知。该框架在原有基础上增加了时序建模和多任务学习,并通过引入特征引导位置编码(FPE)来改进了原始的3D位置嵌入(3D PE)。实验结果表明,该框架在3D目标检测、BEV分割和3D车道检测等任务上均取得了最先进的性能。

方法创新点

该论文的主要贡献在于提出了以下几点创新点:首先,作者研究了将位置嵌入变换扩展到时序表示学习的概念,通过相机参数将相机视图中的3D坐标转换为当前帧和前一帧之间的相对坐标,从而实现了时序建模;其次,作者设计了一种针对不同任务的任务特定查询方案,使得不同的任务可以共享相同的解码器,同时使用不同的头部产生高质量的预测结果;最后,作者引入了特征引导位置编码(FPE),通过对2D图像特征进行注入并应用sigmoid层来重新加权3D PE,使其更加数据依赖,提供更有效的查询指导。


全文翻译

摘要

本文提出PETRv2,这是一种用于多视图图像的三维感知统一框架。基于PETR[24],PETRv2探索了时间建模的有效性,利用前一帧的时间信息来提升三维物体检测性能。具体来说,我们扩展了PETR中的3D位置嵌入(3D PE)进行时间建模。3D PE在不同帧的对象位置上实现了时间对齐。此外,还引入了一个特征引导的位置编码器以提高3D PE的数据适应性。为了支持多任务学习(例如BEV分割和3D车道检测),PETRv2通过引入任务特定查询提供了一种简单而有效的解决方案,这些查询是在不同的空间中初始化的。PETRv2在三维物体检测、BEV分割和3D车道检测方面取得了最先进的性能。我们也对PETR框架进行了详细的鲁棒性分析。我们希望PETRv2能够作为三维感知的强大基准。代码可在https://github.com/megvii-research/PETR获得。

1.介绍

最近,自动驾驶系统中的多摄像头三维感知引起了广泛关注。基于BEV的多摄像头三维目标检测方法可以分为BEV基[11、12]和DETR基[20、24、39]的方法。基于BEV的方法(例如,BEVDet [12])通过LSS [33]显式地将多视图特征转换为鸟瞰图(BEV)表示。与这些BEV基部分不同,基于DETR的方法[39]将每个3D对象建模为一个对象查询,并使用匈牙利算法[16]实现端到端建模。在这些方法中,PETR [24],基于DETR [4],通过添加3D位置嵌入(3D PE),将多视图2D特征转换为具有3D位置意识的特征。从3D空间初始化的对象查询可以直接

通过与生成的3D位置感知特征交互来感知3D对象信息。在本文中,我们旨在通过将PETR扩展到时间建模和多任务学习的支持来构建一个强大的统一框架。

对于时间建模,主要问题是如何在三维空间中对不同帧的对象位置进行对齐。现有工作 [11, 20] 从特征对齐的角度解决了这个问题。例如,BEVDet4D[11] 显式地通过姿态变换将前一帧的 BEV 特征与当前帧对齐。然而,PETR 暗示地将 3D 位置编码到二维图像特征,并且无法执行显式的特征转换。由于 PETR 已经证明了 3D PE(将 3D 坐标编码到 2D 特征)在 3D 视觉感知的有效性,我们想知道 3D PE 是否仍然适用于时间对齐。在 PETR 中,相机投影空间中的网格点,用于不同的视图共享,由相机参数转换为 3D 坐标。然后将这些 3D 坐标输入到简单的多层感知器 (MLP) 来生成 3D PE。在我们的实践中,我们发现仅通过将前一帧的 3D 坐标与当前帧对齐,PETR 在时间条件下表现良好。

对于多任务学习,BEVFormer [20] 提供了一个统一的解决方案。它将BEV地图上的每个点定义为一个BEV查询。因此,BEV查询可以用于3D对象检测和BEV分割。然而,在分辨率较大的情况下(例如,256×256),BEV图中的BEV查询的数量(例如,>60,000)往往会变得巨大。这种对物体查询的定义显然不适合PETR,因为transformer解码器中使用了全局注意力。在本文中,我们设计了一种适用于多任务学习的统一稀疏查询方案。对于不同的任务,我们在不同的空间下定义了不同的稀疏任务特定查询。例如,为了进行3D车道检测,车道查询是在锚定车道风格的3D空间中定义的;而为了进行BEV分割,初始化的seg查询是在BEV空间中进行的。这些稀疏的任务特定查询输入到相同的transformer解码器中更新其表示,并进一步注入到不同任务特定的头部以生成高质量的预测。

此外,我们还改进了PETR中的三维PE的生成,并对PETRv2进行了详细的稳健性分析。如上所述,在PETR中,基于相机投影空间中的固定网格点生成三维PE。所有来自一个相机视图的所有图像共享相同的三维PE,使得三维PE数据无关。在此论文中,我们进一步通过引入特征引导的位置编码器(FPE)来改进原始的三维PE。具体来说,将投影到二维上的特征首先注入一个小的多层感知机网络和Sigmoid层以产生注意力权重,该权重用于在元素级别重新加权三维PE。改进后的三维PE是数据依赖性的,为变压器解码器中的查询学习提供信息指导。为了对PETRv2进行全面的稳健性分析,我们考虑了多个噪声情况,包括相机外参噪声、相机丢失和时间延迟。

总结起来,我们的贡献是:

• 我们研究了一种概念简单的位置嵌入变换的扩展,用于时间表示学习。通过在三维PE上进行姿态变换可以实现时间对齐。进一步提出一种特征引导的位置编码器来重新权重三维PE,并从二维图像特征中获得指导。

• 对PETR进行多任务学习的支持,提出了一种简单而有效的解决方案。通过引入任务特定的查询支持BEV分割和三维车道检测。

• 实验表明,所提出的框架在三维物体检测、BEV分割和三维车道检测方面均达到了最先进的性能。此外,还提供了PETR框架的全面评估中详细的鲁棒性分析。

相关工作

2.1 多视图三维对象检测

先前的工作 [2,6,13 - 15,29,35,37,38] 主要是在单视图设置下进行三维物体检测。最近,基于多视图图像的三维物体检测引起了更多的关注。ImVoxelNet[34] 和 BEVDet[12] 投影了多视图图像特征到 BEV 表示中。然后可以使用来自三维点云的方法来执行三维物体检测,例如[42]。DETR3D[39] 和 PETR[24] 主要受端到端 DETR 方法[4,23,28,46]启发,对三维物体检测进行了操作。对象查询在三维空间中定义,并与多视图图像特征交互,在变压器解码器中。BEV-Former[20] 进一步将时间信息引入基于视觉的三维物体检测。采用空间交叉注意力聚合图像特征,而自注意力用于融合历史 BEV 特征。BEVDet4D[11] 在 BEVDet[12]的基础上扩展了。

时域建模并实现了良好的速度估计。BEVFormer [20] 和 BEVDet4D [11] 在 BEV 空间中对多帧特征进行对齐。与它们不同,我们从三维位置嵌入(3D PE)的角度扩展了PETR 的时间版本,并实现时间对齐。

2.2. BEV分割

BEV分割专注于BEV视图中的感知。它将多视图图像作为输入,并将其输出栅格化到地图视图中。VPN [30] 在模拟环境中提出了一种视图解析网络,然后将其转移到真实世界环境中进行跨视图语义分割。LSS [33] 通过隐式估计深度并将二维特征转换为三维空间来转换二维特征,并使用不同的头执行BEV分割和规划。M2BEV [40] 进一步使用相机参数投影从主干提取的特征到三维自我汽车坐标系以生成BEV表示。然后使用多个任务头进行三维检测和分割。BEVFormer [20] 使用预定义的网格状BEV查询与二维图像特征交互以生成BEV特征。CVT [43] 使用交叉视图变压器学习几何变换。HDMapNet [19] 将多视图图像转换为BEV视图并产生矢量化局部语义地图。BEVSegFormer [32] 提出多摄像头可变形注意力构建语义地图。

2.3. 三维车道检测

BEV分割可以重建局部地图的元素,但是它无法建模不同实例之间的空间关联。最近,三维车道检测任务越来越受到关注。3D-LaneNet [7] 是第一个进行三维车道预测的方法。它使用逆透视映射 (IPM) 将特征从正面视图转换到 BEV。Gen-LaneNet [8] 引入了一个新的锚定车道表示来对齐视角锚定表示和 BEV 特征。Persformer [5] 使用可变形注意力通过参考点周围的局部上下文生成 BEV 特征。Curve-Former [1]引入了曲线交叉注意模块计算曲线查询与图像特征之间的相似性。它使用可变形注意力获取对应于参考点的图像特征。

方法

3.1 总体架构

如图1所示,PETRv2的整体架构基于PETR[24]并扩展了时序建模和BEV分割。从多视图图像中提取二维图像特征。
在这里插入图片描述

图1所示。提出的PETRv2的范例。利用骨干网络从多视图图像中提取二维特征,并按照与PETR[24]相同的方法生成三维坐标。为了实现时间对齐,首先对前一帧t−1的PETR中的三维坐标进行位姿变换。然后将两帧的二维图像特征和三维坐标连接在一起,注入到特征引导的位置编码器中,生成用于变压器解码器的密钥和值分量。检测、分割和通道查询在不同空间下初始化,与变压器解码器中的键值组件相互作用。更新后的查询进一步用于预测具有特定任务头部的3D边界框、BEV分割图和3D车道。A为从第t−1帧到第t帧的三维坐标对齐。C为沿着批处理轴的串联操作。

2D主干(例如ResNet-50),并从相机投影空间生成三维坐标,如PETR[24]所述。考虑到自我的运动,首先将上一帧t-1的三维坐标转换到当前帧t的坐标系中,通过姿态变换。然后,相邻帧的二维特征和三维坐标分别进行拼接,并输入到特征引导位置编码器(FPE)。之后,使用FPE来生成变压器解码器的关键和值组件。进一步地,任务特定查询包括检测查询(det queries)和分割查询(seg queries),它们来自不同的空间,被输入到变压器解码器并与多视图图像特征交互。最后,更新后的查询被输入到任务特定头以进行最终预测。

3.2 时间建模

PETR [24] 使用图像特征和投影的三维点来生成多视图三维检测的隐式三维特征。在本节中,我们扩展了它,并通过实现更好的定位和速度估计的三维坐标对齐(CA)来实现时间建模。

三维坐标对齐。时间对齐是将帧t-1的三维坐标转换到帧t的坐标系中(见图2)。为了清晰起见,我们首先表示一些坐标系统:相机坐标为c (t),激光雷达坐标为l (t),以及在帧t中的自我坐标e (t)。此外,global坐标系为g。我们定义T dstsrc是从源坐标系到目标坐标系的变换矩阵。

在这里插入图片描述

图2。坐标系从坐标系t - 1变换到坐标系t的图示。

我们使用l(t)作为多视图相机的默认三维空间,用于生成三维位置感知特征。第i个相机投影到三维点P l(t) i (t),可以表示为:
在这里插入图片描述

其中Pm(t)是相机投影空间的网格格点集。Ki∈R4×4是第i个相机的内参矩阵。给定辅助帧t-1,我们从帧t-1对齐到坐标系中的三维点框架t:

以全局坐标空间作为帧t-1和帧t之间的桥梁,T l(t)l(t−1)可以很容易计算:

将对齐的点集 [P l(t) i (t-1),P l(t) i (t)] 用于生成三维PE,如第3.4节所述。

在这里插入图片描述

3.3 多任务学习

在本节中,我们旨在为PETR [24]提供seg查询和车道查询以支持高质量的BEV分割和三维车道检测。

在这里插入图片描述

图3。多任务学习中三种查询的定义。det查询是在整个3D空间中定义的,而seg查询是在BEV空间中初始化的。车道查询用锚线定义,锚线由300个锚点构成。

BEV分割 高分辨率的BEV地图可以被划分成少量的块。我们引入了BEV分割的seg查询,并且每个seg查询对应一个特定的块(例如,BEV地图左上角25×25像素)。如图3(b)所示,在BEV空间中使用固定锚点初始化seg查询,类似于PETR中的检测查询生成过程。然后通过简单的MLP将这些锚点投影到seg查询中,该MLP具有两个线性层。之后,seg查询输入到transformer解码器并与图像特征交互作用。对于transformer解码器,我们采用与检测任务相同的框架。然后更新后的seg查询最终被输入到分割头,类似于CVT[43]中的解码器,以预测最终的分割结果。我们使用focal损失分别监督每个类别的预测。

三维车道检测 我们在PETR中添加了车道查询,以支持三维车道检测(见图3 ©)。我们定义了三维锚定车道,每个锚定车道都表示为一组有序的三维坐标:l = {(x1, y1, z1,),(x2, y2, z2), · · ·,(xn, yn, zn)},其中n是每条车道的样本点数。为了提高对三维车道的预测能力,我们在Y轴上均匀采样固定数量的采样点集,类似于Persformer [5] 。不同于Persformer ,

我们的锚定车道与Y轴平行,而Persformer预先为每个锚定线定义了不同的斜率。变压器解码器更新的车道查询用于预测三维车道实例。三维车道头预测车道类别C以及相对于锚定车道在X轴和Z轴上的相对偏移(Δx,Δz)。由于三维车道长度不是固定的,我们还预测大小为n的可见性向量Tvis来控制车道的起点和终点。我们使用焦散损失监督车道类别的预测,并且使用L1损失监督偏移的预测。

3.4 特征引导位置编码器

PETR将三维坐标转换为三维位置嵌入(3D PE)。生成三维位置嵌入可以表示为:

在这里插入图片描述

其中ψ()是一个简单的多层感知器(MLP)。PETR中的三维PE与输入图像无关。我们主张,由于图像特征可以提供一些有信息的指导(例如深度),因此三维PE应该由二维特征驱动。在本文中,我们提出了一种基于特征引导的位置编码器,它隐式地引入了视觉先验。特征引导的三维位置嵌入的生成可以表示为:

在这里插入图片描述

其中ξ也是一个小型MLP网络。Fi (t)是第i个相机的二维图像特征。如图4所示,通过一个1×1卷积投影得到的二维图像特征输入到一个小型MLP网络ξ和Sigmoid函数以获得注意力权重。三维坐标由另一个MLP网络ψ变换,并乘以注意力权重生成三维PE。三维PE与二维特征相加以获取Transformer解码器的关键值。投影后的二维特征被用作Transformer解码器的价值组件。

在这里插入图片描述

图4。特征引导位置编码器的结构。与PETR[24]不同的是,PETRv2中的3D PE以数据依赖的方式生成,以图像特征为导向。

3.5.稳健性分析

尽管最近有很多关于自动驾驶系统的论文,但只有少数几篇[20, 33]研究了所提出方法的鲁棒性。LSS [33] 在测试时展示了在外部噪声和相机脱落下的性能。同样地,BEVFormer [20] 展示了模型变体对相机外参数的稳健性。实践中,传感器误差和系统偏置多种多样,并且由于安全性和可靠性的高要求,验证这些情况的影响非常重要。我们旨在对我们的方法进行广泛的实验研究。如图 5 所示,我们关注以下三种常见的传感器错误类型:

外在噪声:现实世界中,外在噪声非常普遍,例如汽车颠簸引起的相机晃动或由环境力造成的相机偏移。在这种情况下,系统提供的外在信息并不准确,并且感知结果会受到影响。

相机丢失:当一个相机故障或被遮挡时,会发生相机图像丢失。多视图图像提供了全景视觉信息,但存在其中一些在现实世界中不存在的可能性。有必要评估这些图像的重要性,以便提前准备传感器冗余策略。

相机延迟:由于相机曝光时间,相机延迟也是一个挑战,尤其是在夜间。较长的曝光时间导致系统接收来自以前的时间图像,并带来显著的输出偏移。

4 实验

4.1 数据集和指标

我们在nuScenes基准测试[3]和OpenLane基准测试[5]上评估我们的方法。NuScenes[3]是一个多任务的大规模数据集,涵盖了三维物体检测、BEV分割、三维物体跟踪等。该数据集正式分为训练/验证/测试集,分别有700/150/150个场景。我们主要关注两个子任务:三维物体检测和BEV分割。我们也对Open-Lane基准测试[5]上的三维车道检测进行了实验。Openlane[5]是大规模的现实世界三维车道数据集。它有20万帧和超过88万个精心标注的车道,并且使用了14类车道类别覆盖广泛的车道类型。

对于三维物体检测,每个场景有20秒的视频帧,并且标注了大约40个关键帧。我们报告官方评估指标包括nuScenes检测得分(NDS)、平均精度(mAP)和五个真阳性(TP)指标:平均位移误差(mATE)、平均尺度误差(mASE)、平均方向误差(mAOE)、平均速度误差(mAVE)和平均属性误差(mAAE)。NDS是一个综合指标来评价检测性能。

对于BEV分割,我们遵循LSS [33] 并使用IoU分数作为度量。地面真实包括三个不同的类别:可行驶区域、车道和车辆。车道类别由两个地图层组成:车道分隔线和道路分隔线。对于车辆分割,我们通过将3D边界框投影到BEV平面来获得BEV地面真实情况[33]。车辆分割的地面真实情况是指所有包含自行车、公共汽车、汽车、建筑、摩托车、拖车和卡车的meta类别的边界框。

对于三维车道检测,我们遵循Persformer [5] 使用F1分数和类别准确度作为指标。当预测车道实例的75%点具有小于1.5米的点到点欧几里得距离时,该车道实例被认为是正确预测。此外,我们还报告了近处X误差、远处X误差、近处Z误差和远处Z误差来评估模型。这些四个指标用于在指定范围内评估结果的平均误差。

4.2 实施细节

在我们的实现中,ResNet[9]、VoVNetV2[17]和EfficientNet[36]被用作特征提取的主干。输入分辨率1/16的P4特征(合并来自主干的C4和C5特征)用于生成二维特征。三维坐标生成与PETR[24]一致。遵循BEVDet4D[11],我们在训练期间随机采样一个帧作为前一帧,在[3T,27T]范围内,而在推理期间采样15T帧。T(≈ 0.083)是两个扫描之间的间隔时间。

框架。我们的模型使用AdamW优化器进行训练,权重衰减为0.01。学习率初始化为2.0×10−4,并通过余弦退火策略[26]进行衰减。所有实验都在8个Tesla A100 GPU上进行了24轮(2倍的调度)的训练,除了消融研究外,总批处理大小均为8。在推理过程中没有使用测试时间增强方法。

对于三维对象检测,我们对nuScenes测试数据集进行实验,在1500个det查询上。遵循PETR [24]中的设置,我们在三维世界空间中初始化一组可学习的锚点,并通过一个小的MLP网络生成这些查询。类似于FCOS3D [38] ,我们添加额外的解耦层用于回归目标。我们扩展DN-DETR [18] 中的查询去噪以加速三维对象检测的收敛。对于每个地面真实3D方框,中心会随机偏移小于 (w / 2, l / 2, h / 2),其中 (w, l, h) 是物体的大小。我们也采用Focal Loss [21] 进行分类和L1损失进行3D边界框回归。匈牙利算法 [16] 被用于将地面真实与预测之间的标签分配。对于BEV分割,我们遵循[33]中的设置。我们使用nuScenes数据集提供的地图层来生成200×200 BEV地图的真实值。我们将切片大小设置为25×25,并且使用625个seg查询来预测最终的BEV分割结果。对于3D车道检测,我们遵循[5]中的设置。图像输入尺寸为360×480。我们使用100个车道查询来预测3D车道。我们将每个锚定车道中的点数设置为10,并在Y轴上的预测范围是[3米,103米] 和X轴上的预测范围是[-10米,10米] 。距离是在Y轴上的固定位置计算的:[5米,10米,15米,20米,30米,40米,50米,60米,80米,100米] 对于3D锚定车道。

为了模拟外在噪声并评估效果,我们选择随机应用相机外在参数的三维旋转。三维旋转在现实场景中是非常常见和典型的,我们忽略了其他的噪声模式,如平移,以避免多变量干扰。具体来说,我们从多个摄像机中随机选择一个来应用三维旋转。表示α、β和γ分别为X轴、Y轴和Z轴的度数,我们在最大幅度为αmax、βmax、γmax∈{2,4,6,8}的不同旋转设置下进行研究,其中αmax=2意味着α均匀采样在[-2,2]之间,例如。在实验中,我们将Rmax=M表示αmax=βmax=γmax=M。

4.3. 最新状态比较

在这里插入图片描述

表1。nuScenes val集上近期作品的比较。对FCOS3D和PGD的结果进行了微调和测试,并延长了测试时间。DETR3D、BEVDet和PETR用CBGS[45]进行训练。†是从FCOS3D主干初始化的。

表1比较了我们的方法与nuScenes验证集上最近的工作。我们的方法在公共方法中达到了最先进的性能。PETRv2即使使用ResNet-50也取得了39.8%的mAP和49.4%的NDS。表2显示了在nuScenes测试集上的性能比较。我们的PETRv2超越了PETR,其NDS提高了8.3%,mAP提高了6.7%。得益于时间建模,mAVE可以达到0.343m/s,而PETR为0.808m/s。与其他时间方法相比,PETRv2分别优于Swin-Base[25]和BEVFormer[20] V2-99[17] 2.2%的NDS。这表明通过三维PE进行的时间对齐也可以获得出色的表现。值得注意的是,PETRv2可以通过简单的特征对齐轻松应用于实际应用。

我们还比较了PETRv2在nuScenes数据集上的BEV分割性能。如表3所示,我们使用ResNet-101和VoV-99作为主干进行实验。由于PETRv2是PETR的时序扩展,因此我们主要与BEVFormer进行公平对比。使用ResNet-101主干,我们的PETRv2在IoU-lane和IoU-Drive指标上显著优于BEVFormer,并且在IoU-Vehicle指标上具有可比性。使用预训练的VoV-99主干,我们的PETRv2达到了最先进的性能。

如表4所示,我们与最先进的三维车道检测方法进行了比较。由于Persformer [5]使用EfficientNet作为主干是一个静态的方法,因此我们没有使用时间信息进行公平的比较。

比较。与Performers的50.5%相比,我们的方法在相同的EfficientNet主干上实现了51.9%的F1分数。使用强大的预训练VoV-99主干,我们方法的表现得到了显著提高。我们也尝试用400个锚点来表示每条车道,并且实验结果表明增加锚点的数量可以进一步提高性能。我们认为10个锚点不足以建模相对复杂的三维车道,这使得准确预测变得困难。值得注意的是,在我们的方法中,大量锚点只增加了边际计算成本。增加的成本主要是来自车道头部MLP的更高维度。

4.4 消融研究

在本节中,我们使用VoVNet-99作为主干进行消融实验。主干在DDAM15M数据集[31]和Nuscenes的训练集中预训练,并且输入图像大小为800×320,模型经过了24个epoch的训练。检测查询的数量设置为900。

在这里,我们探索了我们在设计中两个关键组件的效果:三维坐标对齐(CA)和特征引导位置编码器(FPE)。为了进行消融研究,我们仅训练了3D检测分支以清晰起见。如表5 (a)所示,在没有CA的情况下,PETRv2仅提高了2.7%的NDS和0.5%的mAP性能。有了CA,性能进一步提高到2.1%的NDS和0.9%的mAP。mAVE指标降低至0.429米/秒,这与原始PETR基准相比具有很大的优势。为了验证FPE的有效性,我们将PETR中的3D位置编码器替换为FPE。NDS指标增加了1.5%,而mAP只增加了0.2%。

在PETRv2上应用FPE,mAP实现了相对较高的改进(0.8%)。这表明FPE模块对PETR的时序版本也是有益的。

4.5 稳定性分析

表6显示了在nuScenes数据集上进行推理时的定量结果总结。我们比较了PETRv2、PETR和PETR+FPE(FPE表示特征引导的位置编码器)。随着噪声增加,所有三种模型的表现都持续下降,表明外接噪声的影响。在极端噪声设置中Rmax = 8,PETRv2下降了4.12%mAP和2.85% NDS,PETR+FPE下降了4.68%mAP和3.42% NDS,而PETR下降了6.33%mAP和4.54% NDS。观察到FPE提高了对外接噪声的鲁棒性,而使用多个帧的时间扩展并没有带来显著的鲁棒性收益。

我们还在图6中展示了当随机丢失一个摄像头时模型的表现。在nuScenes数据集的这六个摄像头中,前视和后视摄像头是最关键的,它们的缺失分别导致了mAP下降5.05%和13.19%。由于其广角(120°),后视摄像头尤其重要。其他摄像头的丢失也带来了平均性能降低2.93%mAP和1.93%NDS。请注意,nuScenes数据集中的摄像头重叠区域非常小,因此任何摄像头的缺失都很难通过相邻的摄像头进行补偿。实践中,在紧急情况下传感器冗余是必要的,而相机之间的互补需要更深入的研究。

相机时间延迟的效果在表7中显示。在nuScenes中,关键帧被标注为真实值,并且我们利用了关键帧之间的未标注的帧。

将帧作为输入图像来模拟时间延迟。0.083秒的延迟导致mAP下降了3.19%,NDS下降了8.4%,表明时间延迟对检测有显著影响。当时间延迟超过0.3秒时,性能急剧下降到26.08% mAP和36.54% NDS。由于在实际系统中不可避免的时间延迟会影响检测,因此应该更加关注它。

结论

本文介绍PETRv2,一种多摄像头图像的三维感知统一框架。PETRv2在PETR的基础上扩展了时间建模和多任务学习。通过三维位置嵌入的时间对齐,PETRv2自然地实现了多帧建模,并提高了三维检测性能。为了全面了解PETRv2框架,我们进一步提供了一个详细的分析,在三种类型的模拟传感器错误下PETRv2的鲁棒性。我们希望PETRv2可以作为三维感知的强大基准和统一框架。在未来,我们将探索大规模预训练、更多三维视觉任务以及自动驾驶系统的多模态融合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/33562.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

项目基于oshi库快速搭建一个cpu监控面板

后端&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.github.oshi</groupId><artifactId>oshi-…

设计模式——Chain(责任链)设计模式

摘要 责任链设计模式是一种行为设计模式&#xff0c;通过链式调用将请求逐一传递给一系列处理器&#xff0c;直到某个处理器处理了请求或所有处理器都未能处理。它解耦了请求的发送者和接收者&#xff0c;允许动态地将请求处理职责分配给多个对象&#xff0c;支持请求的灵活传…

【Nacos02】消息队列与微服务之Nacos 单机部署

Nacos 部署 Nacos 部署说明 Nacos 快速开始 Nacos 快速开始 版本选择 当前推荐的稳定版本为2.X Releases alibaba/nacos GitHuban easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications. - Re…

查看 tomcat信息 jconsole.exe

Where is the jconsole.exe? location: JDK/bin/jconsole.exe

大数据新视界 -- Hive 元数据管理:核心元数据的深度解析(上)(27 / 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

大数据实验E5HBase:安装配置,shell 命令和Java API使用

实验目的 熟悉HBase操作常用的shell 命令和Java API使用&#xff1b; 实验要求 掌握HBase的基本操作命令和函数接口的使用&#xff1b; 实验平台 操作系统&#xff1a;Linux&#xff08;建议Ubuntu16.04或者CentOS 7 以上&#xff09;&#xff1b;Hadoop版本&#xff1a;3…

【Linux系统】Linux内核框架(详细版本)

Linux体系结构&#xff1a;Linux操作系统的组件详细介绍 Linux 是一个开源的类 UNIX 操作系统&#xff0c;由多个组件组成&#xff0c;具有模块化和层次化的体系结构。它的设计实现了内核、用户空间和硬件的高效协作&#xff0c;支持多用户、多任务操作&#xff0c;广泛应用于…

如何使用apache部署若依前后端分离项目

本章教程介绍,如何在apache上部署若依前后端分离项目 一、教程说明 本章教程,不介绍如何启动后端以及安装数据库等步骤,着重介绍apache的反向代理如何配置。 参考此教程,默认你已经完成了若依后端服务的启动步骤。 前端打包命令使用以下命令进行打包之后会生成一个dist目录…

oracle 11g中如何快速设置表分区的自动增加

在很多业务系统中&#xff0c;一些大表一般通过分区表的形式来实现数据的分离管理&#xff0c;进而加快数据查询的速度。分区表运维管理的时候&#xff0c;由于人为操作容易忘记添加分区&#xff0c;导致业务数据写入报错。所以我们一般通过配置脚本或者利用oracle内置功能实现…

【不稳定的BUG】__scrt_is_managed_app()中断

【不稳定的BUG】__scrt_is_managed_app函数中断 参考问题详细的情况临时解决方案 参考 发现出现同样问题的文章: 代码运行完所有功能&#xff0c;仍然会中断 问题详细的情况 if (!__scrt_is_managed_app())exit(main_result);这里触发了一个断点很奇怪,这中断就发生了一次,代…

FFmpeg源码中,计算CRC校验的实现

一、CRC简介 CRC(Cyclic Redundancy Check)&#xff0c;即循环冗余校验&#xff0c;是一种根据网络数据包或电脑文件等数据产生简短固定位数校核码的快速算法&#xff0c;主要用来检测或校核数据传输或者保存后可能出现的错误。CRC利用除法及余数的原理&#xff0c;实现错误侦…

核密度估计——从直方图到核密度(核函数)估计_带宽选择

参考 核密度估计&#xff08;KDE&#xff09;原理及实现-CSDN博客 机器学习算法&#xff08;二十一&#xff09;&#xff1a;核密度估计 Kernel Density Estimation(KDE)_算法_意念回复-GitCode 开源社区 引言 在统计学中&#xff0c;概率密度估计是一种重要的方法&#xff0…

学习记录,正则表达式, 隐式转换

正则表达式 \\&#xff1a;表示正则表达式 W: 表示一个非字&#xff08;不是一个字&#xff0c;例如&#xff1a;空格&#xff0c;逗号&#xff0c;句号&#xff09; W: 多个非字 基本组成部分 1.字符字面量&#xff1a; 普通字符&#xff1a;在正则表达式中&#xff0c;大…

9.19GNU启动DEBUG

是因为 、 在Windows上&#xff0c;CMake默认不会生成make文件&#xff0c;而是生成Visual Studio项目文件&#xff08;如果你使用的是MSVC&#xff09;或其他IDE的项目文件&#xff0c;或者如果你指定了MinGW或Clang&#xff0c;它可能会生成Makefile&#xff08;但这通常不是…

Python 数据分析用库 获取数据(二)

Beautiful Soup Python的Beautiful Soup&#xff08;常被称为“美丽汤”&#xff09;是一个用于解析HTML和XML文档的第三方库&#xff0c;它在网页爬虫和数据提取领域具有广泛的应用。 作用 HTML/XML解析&#xff1a; Beautiful Soup能够解析HTML和XML文档&#xff0c;包括不…

4.STM32通信接口之SPI通信(含源码)---软件SPI与W25Q64存储模块通信实战《精讲》

经过研究SPI协议和W25Q64&#xff0c;逐步了解了SPI的通信过程&#xff0c;接下来&#xff0c;就要进行战场实战了&#xff01;跟进Whappy步伐&#xff01; 目标&#xff1a;主要实现基于软件的SPI的STM32对W25Q64存储写入和读取操作&#xff01; 开胃介绍&#xff08;代码基本…

并发框架disruptor实现生产-消费者模式

Disruptor是LMAX公司开源的高性能内存消息队列&#xff0c;单线程处理能力可达600w订单/秒。本文将使用该框架实现生产-消费者模式。一、框架的maven依赖 <!-- https://mvnrepository.com/artifact/com.lmax/disruptor --><dependency><groupId>com.lmax<…

红日靶场vulnstack (五)

前言 好久没打靶机了&#xff0c;今天有空搞了个玩一下&#xff0c;红日5比前面的都简单。 靶机环境 win7&#xff1a;192.168.80.150(外)、192.168.138.136(内) winserver28&#xff08;DC&#xff09;&#xff1a;192.168.138.138 环境搭建就不说了&#xff0c;和之前写…

SpringBoot中@Import和@ImportResource和@PropertySource

1. Import Import注解是引入java类&#xff1a; 导入Configuration注解的配置类&#xff08;4.2版本之前只可以导入配置类&#xff0c;4.2版本之后也可以导入普通类&#xff09;导入ImportSelector的实现类导入ImportBeanDefinitionRegistrar的实现类 SpringBootApplication…

Cursor+Devbox AI开发快速入门

1. 前言 今天无意间了解到 Cursor 和 Devbox 两大开发神器,初步尝试以后发现确实能够大幅度提升开发效率,特此想要整理成博客以供大家快速入门. 简单理解 Cursor 就是一款结合AI大模型的代码编辑器,你可以将自己的思路告诉AI,剩下的目录结构的搭建以及项目代码的实现均由AI帮…