LSS (Lift, Splat, Shoot)

项目主页

https://nv-tlabs.github.io/lift-splat-shoot

图1:本文提出一种模型,给定多视角相机数据 (左), 直接在鸟瞰图 (BEV) 坐标系(右)中推理语义。我们展示了车辆分割 (蓝色),可驾驶区域 (橙色) 和车道分割 (绿色) 的结果。然后,这些BEV预测被投影回输入图像中 (左边的点) 。

摘要

自动驾驶汽车感知的目标是从多个传感器中提取语义表示,并将这些表示融合到一个“鸟瞰图(Bird's-eye-view,即BEV)”坐标系中, 以供运动规划使用 。本文提出一种新的端到端架构,从任意数量的相机中直接提取场景的BEV表示。我们的方法背后的核心思想是将每个图像单独通过“抬升(Lift)”生成每个相机的3D特征(a frustum of features), 然后将所有3D特征“拍扁(Splat)”到光栅化的鸟瞰图网格中。通过对整个相机装置进行训练,证明了该模型不仅能够学习如何表示图像, 而且能够学习如何将所有相机的预测融合为一个场景的统一表示, 同时对标定误差具有鲁棒性。在目标分割和地图分割等标准鸟瞰图任务上,所提出的模型优于所有基线和之前的工作 。为了追求学习运动规划(Motion Planning)的密集表示的最终目标,我们通过将模板运动轨迹“投射(Shoot)”到我们的网络输出的BEV Cost Map中,展示了我们模型推理出的representations能够实现可解释的端到端的运动规划 。最后使用激光雷达提供的真值对模型进行了评测。

1. 简介

计算机视觉算法通常将图像作为输入,并输出与坐标系无关的预测——例如分类——或与输入图像在同一坐标系中的预测——例如目标检测、语义分割或全景分割。

这种模式与开箱即用的自动驾驶中的感知算法模式不匹配。在自动驾驶中,将多个传感器作为输入,每个传感器具有不同的坐标系,感知模型最终的任务是在新的坐标系——自车(ego car)坐标系——中产生预测结果,以供下游路径规划器(Planner)使用,如图.2所示。

有许多简单、实用的策略可以将单图像范式(paradigm)扩展到多视图场景。例如,对于n个相机的3D目标检测问题,可以将单个图像检测器单独应用于所有输入图像,然后根据相机的内参和外参(相机坐标系到自车坐标系的转换关系)将每个相机的检测目标旋转+平移(rotate and translate)到自车坐标系。这种单视图范式到多视图场景的扩展蕴含了三个宝贵的对称性:

  • 平移不变性(Translation equivariance)——如果图像内的像素坐标全部被平移,输出将发生等量的位移。全卷积单图像目标检测器大致具有此属性, 这种多视图扩展也从它们继承了此属性[11][6] 。
  • 顺序不变性(Permutation invariance)——最终输出不依赖于N个相机的特定顺序。
  • 自车坐标系等距不变性(Ego-frame isometry equivariance)——在给定的图像中,无论捕获图像的相机相对于ego汽车位于何处, 都将检测到相同的对象。声明这个属性的一种等效方式是,ego-frame的定义可以被旋转/平移,输出也会随之旋转/平移。

上述简单方法的缺点是,使用单幅图像检测器的后处理检测结果阻碍了人们获取ego-frame中的预测结果和传感器输入之间的偏差。由此导致,这种模型无法以数据驱动的方式学习跨相机融合信息的最佳方法。这也意味着反向传播不能使用来自下游运动规划器的反馈来自动地改善感知系统。

本文提出一种名为" Lift-Splat "的模型,保留了上述设计确定的3种对称性,同时也是端到端的( end-to-end differentiabl)。在第3节中,我们解释了我们的模型如何通过生成上下文特征的截头锥体形状(frustum-shaped,参考图4)点云将图像“抬升(Lift)”为3D,并将所有截头锥体“拍扁(splats)”到参考平面上,以便下游的运动规划任务使用。在第3.3节中,我们提出了一种将建议轨迹( proposal trajectorie)“投射(Shooting)”到这个参考平面以进行可解释的端到端运动规划的方法。在第4节中,确定了在全相机平台上有效训练lift-splat模型的实现细节。在第5节中提供了经验证据,证明了我们的模型从可能输入的分布中学习到一种有效的信息融合机制。

图2:(左, 来自SegNet [1])传统上, 诸如语义分割等计算机视觉任务在与输入图像相同的坐标系中进行预测 。(右,来自神经网络运动规划器[41])相比之下,自动驾驶的规划通常在BEV坐标系中进行。我们的模型则直接在给定的BEV坐标中得到预测结果,从而可以直接用于多视图图像的端到端运动规划。

2. 相关工作

从多个相机的图像数据中学习统一表征的方法,建立在传感器融合和单目目标检测方面的最新工作成果之上。来自Nutonomy [2] 、Lyft [13] 、Waymo [35]和Argo [3]的大规模多模态数据集,近来已经使仅以相机输入为条件的整个360度场景的局部ego车辆的充分表征学习成为可能。我们在Lift-Splat架构中探索了这种可能性。

2.1. 单目(Monocular)目标检测

单目目标检测器根据如何对坐标系转换建模来定义,这里的坐标系转换指的是图像平面(Image Plane)坐标系到给定的三维参考坐标系。一个标准的技术是在图像平面上应用一个成熟的2D物体检测器, 然后训练第二个网络,将2D Box回归到3D Box [12,26,31,27]。nuScenes benchmark [31]上目前最先进的3D物体检测器使用了这样一种架构:该架构训练了一个标准的2D检测器,并使用损失函数来预测深度,该损失函数试图将错误的深度误差与错误的Box造成的误差分离开来 。这些方法在3D目标检测benchmark上取得了很好的性能, 因为图像平面中的检测解决了单目深度预测中关于目标检测的基本问题。

最近取得成功的一种方法是分别训练两个网络,一个网络进行单目深度预测,另一个网络单独进行BEV检测[39][40]。这些方法被称为“伪激光雷达(pseudolidar)”。pseudolidar成功的直观原因是其能够训练BEV网络,该网络可以在最终评估检测的坐标系中运行,相对于图像平面坐标系,欧氏距离在BEV坐标系下更有意义 。

图3:我们将模型的“lift”步骤可视化。对于每个像素,我们预测了深度上的分布(左)和上下文向量(context vector)(左上)。沿着射线的每个点的特征由α和 c的外积(右)决定。

第三类单目目标检测器使用3维目标原语(primitives),这些primitives根据它们在所有可用相机上的投影来获取特征。Mono3D [4]通过在地平面上生成三维proposal,并通过投影到可用图像平面上对其进行评分,最终在KITTI数据集上实现了最先进的(SOTA)单目目标检测 。正交特征变换(Orthographic Feature Transform)[29] 建立在Mono3D之上,通过将体素的固定立方体映射到图像上以收集特征,然后训练第二个“BEV”CNN以在3D坐标系中检测体素中的特征。我们的模型能够解决这些模型存在的一个潜在性能瓶颈,那就是一个像素为每个体素贡献了相同的特征, 而没有依赖于该像素对应对象的深度。

2.2. BEV坐标系中的推理

最近,通过使用相机内参和外参从而直接在BEV坐标系中进行推理的模型获得了大量的关注。MonoLayout [21]从单幅图像进行BEV推理,并使用adversarial 损失来帮助模型修复合理的隐藏物体。同时期的工作,金字塔占用网络(Pyramid Occupancy Networks )[28]提出了一 种transformer架构,可将图像表示转换为BEV表示。FISHING Net [9]——也是同时期的工作——提出了一种多视图架构,同时对象进行分隔并执行未来预测。在第5节中展示了我们的模型在经验上优于之前的工作。这些架构,以及我们的架构,都使用了类似于“multi-plane”图像的数据结构, 这些图像来自机器学习图形社区 [34,32,38,20] 。

3. 方法

本节提出一种从任意相机装置捕获的图像数据中学习场景鸟瞰图表示(BEV representations)的方法。我们设计了模型,使其尊重在第1节中确定的对称性。

3.1. Lift:隐式深度分布

我们模型的第一阶段单独对相机装置中的每个图像进行操作。这一阶段的目的是将每个图像从局部二维坐标系“抬升(Lift)”到所有相机共享的三维坐标系。

单目传感器融合的挑战在于,我们需要深度信息才能将相机坐标转换为3D参考帧坐标,但与每个像素相关联的“深度”本质上是模糊的。我们提出的解决方案是为每个像素上所有可能的深度生成表示。

点云中每个点的上下文向量(context vector)被参数化,以匹配注意力和离散深度推理的概念。在像素p,网络预测每个像素的上下文向量c \in R^C和深度分布\alpha \in \Delta^{D-1}。然 后,与点p_d相关联的特征c \in R^C被定义为像素 的上下文向量用深度分布\alpha_d加权的结果:

请注意,如果我们的网络预测\alpha是一个One-Hot向量,则 点的上下文将只针对某个深度d^{*}非零,和pseudolidar方法[39] 一样。如果网络预测的深度为均匀分布,那么网络将为分配给像素p预测出与深度无关的点p_d的表示,如OFT方法 [29] 。因此,从理论上讲,我们的网络能够自动选择是将图像中的上下文放置在BEV表示的特定位置,还是将上下文扩散到整个光线空间中(如果深度是模糊的)。

总而言之, 理想情况下,我们希望为每个图像生成一个函数g_c: (x, y, z) \in R^3 \rightarrow c \in R^C,该函数可以在任何空间位置查询并返回上下文向量。为了利用离散卷积的优势,我们选择将空间离散化。对于相机来说,相机可见的空间体积对应于一个平头金字塔。如图3所示。

笔者注:
相当于2D图片上的一个点(像素)对应3D世界的一条射线,故可以在这条直线上采样N个点(图3中用了10个,实际用了41个);之后网络需要预测这个特征点的深度信息 (distribution over depth,参考直线上的直方图),本文是用softmax的概率表示,用一个D维的向量经过softmax来表示,D表示4-45米范围内以1米为间隔的距离,也就是 D=41,这样的话D上每个位置就代表了该像素处于这个深度范围的概率值。
利用深度信息加权 (scale) 同一位置的图像特征 C(参考图3右侧,由于网络预测的深度在第三个 bin 较高,所以当深度 D=3 时特征与图片特征C最接近,而其余深度处特征较弱)。对一张图片每个2D特征点做相同的操作,就可以生成一个形状类似平头金字塔 (frustum,如图4) 的点云。

3.2. Splat:柱状池化

我们遵循pointpillar [18]架构,转换“Lift”步骤构建的大型点云结果。“Pillars”是具有无限高度的体素。我们将每个点分配给其最近的Pillar,并执行sum pooling,以创建一 个 C×H×W 的张量,可以由标准CNN进行BEV推理。整个lift-splat架构如图4所示 。

Fig. 4: Lift-Splat-Shoot Outline 我们的模型将n个图像 (左) 及其相应的外参和内参作为输入 。在“lift”步骤中,为每个单独的图像生成一个平头金字塔形状的点云(中-左)。然后使用外参和内参将每个平头金字塔“拍扁(Splat)”到BEV平面上 (中-右)。最后,利用BEV CNN对BEV语义分割或运动规划的BEV表示进行处理 (右)。

就像OFT [29]使用积分图像来加快池化步骤一样,我们应用类似的技术来加快sum pooling过程。考虑到生成的点云大小,效率对于训练模型至关重要。我们并非填充每个Pillar然后执行sum pooling,而是通过使用打包和利用“cumsum trick”进行求和池化来避免padding。该操作具有解析梯度(analytic gradient),可以有效地计算以加速autograd,正如第4.2小节所解释的那样。

实际工程中,可以首先构建一个Pillar-based BEV视角的特征图(200x200分辨率,覆盖以车为中心边长100米的正方形区域),然后将上一步骤得到的6个平头金字塔点云中的每个点匹配 (assign) 给距离最近的Pillar,最终BEV space上每个Pillar的特征就是所有匹配到的特征点的和池化 (sum pooling)。

3.3. Shoot:运动规则

Lift-Splat模型的关键方面是,它能够从纯相机输入中进行端到端的运动规划代价图(cost map)学习。在测试时,可以通过“投射(shoot)”不同的轨迹, 对其成本进行评分, 然后根据最低成本轨迹[25]来实现使用推理的成本图进行运动规划。在5.6节中,探究了本模型实现端到端可解释的运动规划的能力,并将其性能与基于激光雷达的端到端神经运动规划器进行了比较。

我们将 “规划(planning)"定义为预测自车K个模板轨迹的分布:

以传感器观测为条件p(\tau | o)。该方法受到最近提出的神经运动规划器( Neural Motion Planne,NMP)[41] 的启发,该架构以点云和高精度地图为条件,生成可用于对所提出的轨迹进行评分的 cost-volum结果。

图5:我们在训练和测试阶段,将我们“投射(shoot)”到cost map上的1K个轨迹模板进行可视化 。在训练期间,每个模板轨迹的代价被计算并解释为模板上的1K-维度的玻尔兹曼分布(Boltzman distribution)。在测试过程中, 我们选择该分布的argmax, 并根据所选择的模板进行操作 。

与NMP中提出的硬边界(hard-margin)损失不同,本文将规划定义为对一组K模板轨迹的分类。为了利用规划问题的cost-volume性质,我们强制K个模板轨迹上的分布采取以下形式:

其中c_o(x, y)是索引到位置x, y的cost map,cost map基于特定的观察 预测得到,因此可以通过优化专家轨迹的对数概率从数据中进行端到端的训练。对于标签,给定一个真值轨迹,我们计算到模板轨迹 的L2距离最近邻居,然后使用交叉熵损失(cross entropy loss)进行训练。

的这种定义使我们能够学习可解释的空间成本函数,而无需定义NMP [41]中的硬边际损失。

在实践中,通过在大量的专家轨迹上运行K-Means来确定模板轨迹集合。在我们的实验中,用于“Shooting”Cost Map的模板轨迹集可视化在图5中 。

4. 实现

4.1. 架构细节

我们模型的神经网络结构类似于OFT [29]。与OFT一样,我们的模型有两个大型骨干网络(backbones)。其中一个backbone分别对每个图像进行操作,以对每个图像生成的点云进行特征化。当点云被“Splat(拍扁)”到参考坐标系中的Pillar时,另一个backbone开始对点云发挥作用。两个网络由我们的Lift-Splat Layer连接,如第3节中的定义,并在图4中可视化 。

对于单独操作每个图像的网络,在包括baseline在内的所有模型的所有实验中,我们都利用了EfficientNet-B0[37]在Imagenet[30]上预训练的 layers 。EfficientNets是在资源有限的情况下通过穷尽的体系结构搜索发现的网络体系结构, 其深度、宽度和分辨率按比例放大。相对于ResNet-18/34/50[8],我们发现EfficientNets在所有模型上都能实现更高的性能,只是需要更多的优化步骤才能收敛,略有不便。

对于我们的BEV网络,我们使用类似于PointPillar[18]的ResNet模块(Blocks)的组合。具体来说,在内核尺寸为7,步长为2卷积之后,进行Batch Norm[10] 和 ReLU [22] ,然后是ResNet-18 的前 3 个元层,获得不同分辨率3个鸟瞰图表示,分别是x_1x_2x_3。然后,按尺度因子4 对x_3进行上采样,与x_1拼接,应用resnet块,最后上采样 2,以返回到原始输入鸟瞰伪图像的分辨率。在我们的最终网络中有1430万个可训练参数。

有几个超参数决定了我们模型的“分辨率”。首先是输入图像的尺寸:H × W。在下面的所有实验中, 我们将输入图像的大小Resize和裁剪为128 × 352, 并相应地调整外参和内参。网络的另一个重要超参数是BEV网格的分辨率:X × Y。在我们的实验中,我们将bins在x和y上均设置在-50米到50米之间,cells大小为0.5米× 0.5米 。因此,结果网格是200 × 200。最后是D的选择,它决定了网络预测的深度分辨率。我们将D限制在4.0米和45.0米之间,间距为1.0米。有了这些超参数和架构设计选择,模型的前向传递在Titan V GPU上以35 hz的速度运行 。

4.2. 锥形池化累积求和技巧

训练效率对于从整个传感器平台的数据中学习至关重要。在第3节中,我们选择对Pillars进行sum pooling,而不是max pooling,因为我们的"cumulative sum"技巧可以避免由于padding而过度使用内存。“累积和技巧”是观察到,总和池可以通过根据 bin id 对所有点进行排序,对所有特征执行累积和,然后减去 bin 部分边界处的累积和值来执行。不依赖autograd对所有三个步骤进行反向传播, 而是可以推导出模块整体的analytic gradient ,将训练速度提高2倍。我们称该层为“Frustum Pooling” , 因为它处理将N个图像产生的Frustum(平头金字塔)转换为与相机数量n无关的固定维度C × H × W张量 。代码可以在我们的project page上找到。

5. 实验与结果

我们使用nuScenes[2]和Lyft Level 5[13]数据集来评估我们的方法。nuScenes是一个大型数据集,包含1k个场景的点云数据和图像数据,每个场景长度为20秒。两个数据集中的相机装置均由6个相机组成,它们大致指向前、前左、前右、后左、后右和后方向。在所有数据集中,相机的视场之间有一个小的重叠。每个数据集中都有对应的相机外参和内参进行坐标转换。由于我们的模型是在相机校准的条件下进行的,因此它能够处理这些转换。

我们定义了两个基于对象的(object-based)分割任务和两个基于地图的(map_based)任务。对于目标分割任务,我们通过向鸟瞰图中投射3D边界框来获得真实的鸟瞰图目标。nuScenes上的car Segmentation指的是类别为vehicle.car的所有边界框。nuScenes上的vehicle segmentation指的是所有vehicle类别的边界框。Lyft上的car分割指的是类别Car的所有边界框,nuScenes上的vehicle分割指的是类别 ∈ { Car, truck, other_vehicle, bus, bicycle}。对于地图,我们使用nuScenes提供的地图转换layers将nuScenes地图转换到到ego坐标系,通过提供的6自由度定位和栅格化信息。

对于所有的目标分割任务, 用正权重1.0的二进制交叉嫡(binary cross entropy)进行训练 。对于车道分割,我们将正权重设置为5.0,对于道路分割,我们使用正权重1.0 [24]。在所有情况下,我们使用Adam [14]进行300k步的训练,学习率1e−3,权重衰减1e−7。我们使用PyTorch框架[23]。

Lyft数据集没有标准的train/val划分。我们分离了48个Lyft场景进行验证,以获得与nuScenes大致相同大小的验证集(Lyft有6048个样本,nuScenes有6019个 样本)。

5.1. Baselines描述

与普通的CNN不同,我们的模型在初始化时配备了三维结构。通过与由标准模块组成的CNN进行比较,表明这种结构对良好的性能至关重要。遵循类似于MonoLayout[21]的架构,也训练一个CNN,仅从图像中输出BEV标签,但在设计架构时没有利用 inductive bias,只在单个相机上训练。该架构具有一个EfficientNet-B0 Backbone,可独立提取所有图像的特征。我们将这些表征连接起来并执行双线性插值进行上采样,转换为R^{X \times Y}张量,作为我们的模型输出的张量。我们设计的网络与我们的模型具有大致相同的参数数量。该基线的弱性能表明,在多视图配置中明确将第一节中的对称性3应用到模型中是多么重要。

为了表明我们的模型正在预测有用的隐式深度,我们将其与预训练CNN的权重被冻结的模型以及OFT [29]进行比较。我们在所有任务上的表现都超过了这些基线,如表1和2所示。我们还超过了在相同的分割任务上的进行性能测试的同时期工作[9][28]。因此,该架构正在为下游任务学习有效的深度分布以及有效的上下文表示。

5.2. 分割

实验证明,Lift-Splat模型能够在BEV坐标系中根据监督学习语义3D表示。对象分割任务的结果如表1所示,地图分割任务的结果如表2所示 。在所有benchmark中,我们的表现都超过了baseline。本文相信,通过隐式投影到3D,对于性能的提高是非常巨大的,特别是在对象分割方面。我们还包括了两个同时期工作的IOU分数[9][28],尽管这两篇论文都使用了不同的鸟瞰图网格定义和不同的Lyft数据集验证分割,因此还不可能进行真正意义上的比较。

5.3. 鲁棒性

由于BEV CNN从数据中学习如何融合跨相机的信息,我们可以训练模型,使其对自动驾驶中发生的简单噪声模型具有鲁棒性,例如外参存在偏差或相机意外挂掉。在图6中,我们验证了通过在训练期间丢弃相机,我们的模型在测试时仍然可以更好地处理丢弃的相机。事实上,当所有6个摄像头都存在时,表现最好的模型是在训练过程中从每个样本中随机丢弃一个摄像头进行训练的模型。我们推断,传感器dropout迫使模型学习不同相机上图像之间的相关性,类似于dropout的其他变体[33][5]。我们在图6的左侧显示,使用噪声外参训练模型可以得到更好的测试性能。对于测试时的少量噪声,在外部环境中训练的无任何噪声的模型表现最好,因为BEV-CNN可以更有信心地相信splat的位置。对于较大的外参噪声,该模型保持了良好的性能。

在图7中,我们在nuScenes上的car分割为每个相机测量了“重要性”。请注意,在nuScenes上丢失摄像头意味着汽车局部区域的某些区域没有传感器测 量,因此性能严格地受整个传感器装置性能的上限限制 。网络由于缺少摄像头而进行修复的定性示例如图8所示。以这种方式衡量每个摄像头的重要性, 表明传感器冗余对安全性更重要。

图6:我们展示了通过对网络进行训练,使其对常见的传感器误差来源具有弹性是有可能的。在左边,我们展示了当外参中存在大量噪声(蓝色)时进行训练,网络在测试时对外部噪声变得更鲁棒。右图显示,在训练期间从每个批次中随机丢弃摄像机(红色)增加了测试时对传感器丢失的鲁棒性。
图7:我们测量了当每个摄像头都缺失时,car分割的IOU。nuScenes相机装置上的后向相机具有更大的视场,因此很明显,失去这个相机相比于完整的相机装置(右侧标记为“full”)的性能最大下降。
表3:我 们对nuScenes数据集中6个相机中的4个的图像进行了训练。然后,我们用新的相机进行评估(bl对应于"左后"相机,fl对应于"左前"相机),我们发现当添加更多在训练期间未见过的传感器时,模型的性能会严格提高。

5.4. Zero-Shot Camera Rig Transfer

我们现在探究Lift-Splat的泛化能力 。在第一个实验中, 当只对nuScenes相机组的一部分相机的图像进行训练, 但在测试时可以访问剩下的两个相机图像时,我们测量了我们模型的性能。在表3中,我们展示了对于car segmentation,当测试阶段加入了新的相机且不经过任何重新训练时,我们的模型的性能提升。

我们将上述实验进一步推进, 并探索如果只在nuScenes数据上训练, 我们的模型对Lyft摄像头的泛化能力如何。定性结果如图9所示,和baseline的对比如表4所示。

图8:对于单个时间戳,我们删除每个摄像头,并可视化相机的丢失如何影响网络的预测。丢失的相机所覆盖的区域在每一种情况下都变得更加模糊。当前面的摄像头被移除时(中上), 网络推断出自车前面的车道和可驾驶区域,并推断出在右上角的摄像头中只能看到一个拐角的汽车的车身。
表4:我们在nuScenes数据集上训练了模型然后在Lyft数据集评估它们。Lyft中的相机和nuScenes是完全不同的,但是模型也取得了超越baseline的效果。注意,我们的模型拉大了与表1和表2中的标准基准的差距。

5.5. 与Oracle Depth的基准测试

将该模型与PointPillar[18]架构进行了benchmark基准测试,该架构使用激光雷达点云的真实深度信息。如表5所示,在所有任务中,我们的架构的性能略低于用激光雷达单次扫描(A single scan)训练的PointPillar。然而,至少在可驾驶区域分割方面,我们接近了LIDAR的性能 。一般来说,在一次激光雷达扫描中,并不是所有车道都是可见的。我们希望在未来在更广泛的环境中测量性能。

为了深入了解该模型与LIDAR的区别,绘制了汽车分割的性能如何随两个控制变量的变化而变化:到自车的距离和天气条件。从nuScenes数据集中每个场景标记附带的描述字符串中确定场景的天气。结果如图10所示。在夜间场景中,该模型的性能比pointpillar差得多。两个模型的性能都随着深度的增加大致呈线性下降。

5.6. 运动规划

最后,通过将Lift-Splat输出的表征训练为成本函数(cost function),来评估模型执行运动规划的能力。我们生成的轨迹间隔为5秒,间隔为0.25秒。为了获得模板,我们将K = 1000的k均值拟合到nuScenes训练集中的所有自车轨迹。在测试时,我们测量了网络预测的轨迹模板与最接近的真实轨迹之间的L2范数误差,以此来衡量网络的预测能力。

Fig. 9: 定性地展示了所提出模型在测试时给定一个全新的相机装置时的表现 。道路分割用橙色表示,车道分割用绿色表示,车辆分割用蓝色表示 。
表5:与使用激光雷达的Oracle Depth模型相比,仍有改进的空间。从相机平台进行视频推断可能是必要的,以获得超越激光雷达所需的深度估计。

该任务是自动驾驶的一个重要实验, 因为该实验的地面真值目标的获取成本比地面真值3D边界框低几个数量级。这项任务对于评估基于相机的方法与基于激光雷达的方法的性能也很重要,因为尽管来自纯相机的3D目标检测的上限肯定是只受限于激光雷达的上限,但使用纯相机的最佳规划器原则上应该上限来自只受激光雷达训练的最佳 规划器的性能。

规划实验的定性结果如图11所示。对pointpillar进行基准测试的经验结果如表6所示 。输出轨迹表现出令人满意的行为, 如遵循道路边界,在人行横道前停车,以及在车辆后方刹车。

6. 结论

本文提出一种架构,旨在从任意相机平台推断BEV表示。该模型在一系列基准分割任务上的表现优于baseline,这些任务旨在探索模型在BEV坐标系中表示语义的能力,而在训练或测试时不需要任何真实深度数据。本文提出训练模型的方法,使网络对简单的标定噪声模型具有鲁棒性。该模型能实现遵循轨迹shooting范式(paradigm)的端到端运动规划。为了满足并可能超越只使用来自点云的真实深度数据的类似网络的性能,未来的工作将需要以图像的多个时间步(multiple time steps)为条件,而不是我们在这项工作中考虑的单个时间步。

图10:我们比较了模型的性能如何随着深度和天气的变化而变化 。正如预期的那样, 在夜间,我们的模型相对于pointpillar的性能下降了。
标题图11:我们展示了1k个轨迹模板中排名前10的轨迹。视频序列可以在我们的 project page看到 。该模型从单个时间戳的观测中预测bimodal 分布和曲线。我们的模型无法获取汽车的速度,所以引人注目的是,该模型预测了人行横道和刹车灯附近的低速轨迹。
表6:由于planning被限定为一组1K个模板轨迹的分类, 因此测量了top-5 、top-10和top-20的精度。所提出的模型在泛化方面仍然落后于基于激光雷达的方法。我们的模型输出轨迹的定性示例如图11所示。

参考文献

Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D

自动驾驶感知算法学习系列(十一)——LSS (Lift, Splat, Shoot) 方法学习(上) - 知乎

自动驾驶感知算法学习系列(十二)——LSS (Lift, Splat, Shoot) 方法学习(下) - 知乎

Lift,Splat,Shoot:通过隐式反投影到3D空间实现对任意相机图像编码

LSS (Lift, Splat, Shoot) 论文+源码万字长文解析 - 知乎

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言项目:数组与函数实践:扫雷游戏

目录 目录: 1.扫雷游戏分析与设计 1.1扫雷游戏的功能说明: 1.1.1使用控制台实现经典扫雷的游戏 1.1.2游戏可以通过菜单实现继续玩或者退出游戏 1.1.3扫雷棋盘是9*9的格子 1.1.4默认随机布置10个雷 1.1.5 可以排查雷 2.扫雷游戏的代码实现 1.遇到的问题…

项目文章|真菌ChIP-seq+RNA-seq解析脱落酸生物合成的调控机制

组蛋白翻译后修饰是表观遗传调控的主要机制之一,已被证明在基因表达的调控中发挥重要作用,参与真菌发育、感染相关的形态发生、环境应激反应、次级代谢产物的生物合成和致病性。我们分享过不少真菌组蛋白修饰的文章,今天接着带来一篇利用ChIP…

Anaconda安装proplot库

看了一下Anaconda中的环境,现在我有4个,其中gee是一个虚拟环境 因此一般在prompt中装库时要先进入其中一个虚拟环境 conda activate geepip install proplot --no-deps下完了之后,发现版本不对应 conda install matplotlib3.4.3

软件开发项目管理/研发项目管理软件:国产EDA工具厂商行芯科技上线奥博思PowerProject项目管理软件平台

国内领先的EDA工具链提供商杭州行芯科技有限公司(以下简称:行芯科技)与北京奥博思软件技术有限公司达成战略合作,奥博思软件将基于PowerProject项目管理系统助力行芯科技实现研发项目的全生命周期管理,提升管理效能&am…

论文阅读:Face Deblurring using Dual Camera Fusion on Mobile Phones

今天介绍一篇发表在 ACM SIGGRAPH 上的文章,是用手机的双摄系统来做人脸去模糊的工作。这也是谷歌计算摄影研究组的工作。 快速运动物体的运动模糊在摄影中是一个一直以来的难题,在手机摄影中也是非常常见的问题,尤其在光照不足,…

jasypt加解密

项目中经常遇到jasypt加解密的配置文件,尤其是项目不是自己创建的时候,压根不知道加密的内容是什么,而配置文件中一般加密的也都是数据库或其他非结构型数据库的账号或密码,这时候想要看一下db的内容就非常的头疼,除了…

【爬虫】– 抓取原创力文档数据

使用RPA工具,实现针对于原创力中不可下载文档的抓取,可延用于其他类似文库 1 使用工具、环境 影刀RPA、WPS Office、谷歌浏览器(非指定) 2 代码流程 3 关键点 此方案只适合抓取非VIP即可预览全文的文档,抓取下来的数…

B007-springcloud alibaba 消息驱动 Rocketmq

目录 MQ简介什么是MQMQ的应用场景异步解耦流量削峰 常见的MQ产品 RocketMQ入门RocketMQ环境搭建环境准备安装RocketMQ启动RocketMQ测试RocketMQ关闭RocketMQ RocketMQ的架构及概念RocketMQ控制台安装 消息发送和接收演示发送消息接收消息 案例订单微服务发送消息用户微服务订阅…

(done) 解释 python3 torch.utils.data DataLoader

特别注意:DataLoader 返回的迭代器是无尽的,依据如下 (CHATGPT3.5) DataLoader 返回的迭代器默认情况下是无尽的,因为它会无限地循环遍历数据集,以提供批量的数据。在训练神经网络时,通常会使用无尽的迭代器来循环遍历…

LEETCODE 100255. 成为 K 特殊字符串需要删除的最少字符数

整体思路: 1.可以看到这道题是要求是最小的,那么可以想到遍历所有情况 2.把题干已知条件转换为一个数组,那么只需要以数组每个元素为开头遍历所有情况即可。 3.对于一个数考虑其后面的情况,其后每个数等于这个数k和数本身的最小值(遍历累计求…

参数高效微调(PEFT)技术概览

参数高效微调(PEFT)技术概览 在大型语言模型(LLMs)的世界里,参数量庞大,通常在70亿至700亿之间。这些模型的自监着训练成本高昂,对公司可能意味着高达1亿美元的支出。而对于资源相对有限的研究…

Codeforces Round 934 (Div. 2) --- C. MEX Game 1 --- 题解

C. MEX Game 1: 题目大意: 思路解析: 重要的是那种只有一个的数字,因为如果这个数字有两个及以上,那么我可以再鲍勃删除之后,再拿,也一定能拿得到,所以瓶颈是只有一个的数字&#x…

爬虫3_爬取翻页URL不变的网站

之前实现了对大学排数据爬取:爬虫2_2019年549所中国大学排名. 近期复现代码,发现原网站升级,在翻页时,发现URL不改变,修改代码,使用网页自动化工具selenium实现对该类网站数据获取。 #-*- coding: UTF-8 -…

活动图高阶讲解-06

31 00:01:52,300 --> 00:02:04,300 刚才讲了,活动里面是动作 32 00:02:04,300 --> 00:02:06,300 这个动作 33 00:02:06,300 --> 00:02:09,300 就可以看作活动的一个 34 00:02:09,300 --> 00:02:13,300 里面的实现的一个行为了 35 00:02:16,300 --&g…

vue项目跳转html页面

1. 把html页面以及相关文件放到public文件夹下(目的和index.html同级) 2.在vue项目中正常写跳转事件,只是路径写法需要注意

【理解指针(三)】

文章目录 一、数组名的理解(1)数组的地址与数组首元素地址的区别 二、使用指针访问数组(1)一维数组传参的本质 三、冒泡排序(1)什么是冒泡排序(2)写冒泡排序 四、结束语 一、数组名的…

堆排序(向下调整法,向上调整法详解)

目录 一、 二叉树的顺序结构 二、 堆的概念及结构 三、数组存储、顺序存储的规律 此处可能会有疑问,左右孩子的父节点计算为什么可以归纳为一个结论了? 四、大小堆解释 五、大小堆的实现(向上和向下调整法) 5.11向上调整法…

Unity Timeline学习笔记(1) - 创建TL和添加动画片段

Timeline在刚出的时候学习了一下,但是因为一些原因一直都没用在工作中使用。 版本也迭代了很久不用都不会用了,抽时间回顾和复习一下,做一个笔记后面可以翻出来看。 创建Timeline 首先我们创建一个场景,放入一个Plane地板&#…

Linux操作系统-08-常用的网络相关命令

1、ping命令 在linux下ping的话会一直ping下去,在windows下的话它会只ping四次就结束, [rootbastion ~]# ping 192.168.0.102 PING 192.168.0.102 (192.168.0.102) 56(84) bytes of data. 64 bytes from 192.168.0.102: icmp_seq1 ttl64 time0.571 ms…

Linux - 线程互斥和互斥锁

文章目录 前言一、为什么要线程互斥原子性 二、互斥锁互斥锁的创建与销毁互斥锁进行互斥 前言 前几节课,我们学习了多线程的基础概念,这节课,我们来对线程互斥和互斥锁的内容进行学习。 一、为什么要线程互斥 首先我们要明白,对…