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

论文链接

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

0. Abstract

  • 提出了一种新的端到端架构,可以根据任意数量摄像机的图像数据直接提取场景的鸟瞰图表示
  • 方法的核心思想是将每个图像独立地“提升”(lift)到每个摄像头的特征金字塔中,然后将所有特征金字塔“喷洒”(splat)到一个光栅化的鸟瞰视图网格中
  • 了实现学习密集表示以供运动规划的目标,展示了该模型推断的表示可以通过将模板轨迹"射入"(shoot)由我们的网络输出的鸟瞰图成本地图来进行可解释的端到端运动规划

1. Intro

Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D 论文阅读_第1张图片

Fig.2 (左,来自SegNet)传统上,计算机视觉任务,如语义分割,涉及在与输入图像相同的坐标系中进行预测。(右,来自神经运动规划器)相比之下,自动驾驶的规划通常在鸟瞰图坐标系中进行。我们的模型直接在给定的鸟瞰图坐标系中进行预测,以实现从多视图图像的端到端规划。
  • 在自动驾驶中,多个传感器以不同的坐标框架作为输入,最终的感知模型需要在新的坐标框架(即自车坐标系)中生成预测结果,以供下游的规划器使用
  • 对于将单图像范式扩展到多视图设置,有许多简单、实用的策略
    • 对于从n个相机中进行3D物体检测的问题,可以将单图像检测器应用于每个输入图像,然后根据检测到物体的相机的内参数和外参数将每个检测旋转和平移至自我坐标系中
  • 将单视图范式扩展到多视图设置中,具有三个有价值的对称性
    • 翻译等变性:如果图像内的像素坐标全部平移,输出也将以同样的程度平移
    • 排列不变性:最终的输出不依赖于 n 个相机的特定排序
    • 自我框图等变性:在给定图像中,无论拍摄图像的相机相对于自我车辆位于何处,相同的物体都会被检测到(自我框图的定义可以旋转/平移,输出也会随之旋转/平移)

上述方法缺点

  • 使用来自单图像检测器的后处理检测结果会导致无法区分从自己的角度预测到传感器输入的预测结果
  • 模型无法通过数据驱动的方式学习如何在不同摄像头之间融合信息的最佳方式
  • 无法使用反向传播来自下游规划器的反馈自动改进感知系统

2. Related Work

本文从多台摄像机的图像数据中学习连贯表示的方法是基于传感器融合和单目物体检测的最新工作。本文的工作探索完全基于摄像机输入对自车局部的整个360°场景进行表征学习的可能性

2.1 单目目标检测

  • 单目目标检测器是根据其对图像平面到给定三维参考框架的转化建模方式来定义的

    • 一种标准的技术是在图像平面上应用成熟的2D目标检测器,然后训练第二个网络将2D包围框回归为3D包围框
    • 最新的3D目标检测器使用一种结构,训练一个标准的2D检测器来预测深度,使用一种通过寻求将由于不正确深度引起的错误与由于不正确包围框引起的错误相分离的损失函数
  • 伪激光雷达:最近的实证成功方法。分别训练一个网络进行单目深度预测以及另一个进行鸟瞰检测。伪激光雷达使得能够训练一个在最终评估检测结果的坐标框内操作的鸟瞰视图网络

  • 第三类单眼物体检测器使用三维物体基元,通过它们在所有可用相机上的投影获取特征

2.2 鸟瞰图角度推断

  • 从单张图像进行鸟瞰图推理,并使用对抗性损失来鼓励模型填补出合理的隐藏物体
  • 将图像表示转换为鸟瞰图表示的Transformer
  • 一种多视角架构,既对当前时间步骤中的物体进行分割,又进行未来预测

3. Method

给定 n 个图像 { X k ∈ R 3 × H × W } n \{X_k\in\mathbb{R}^{3\times H \times W}\}_n {XkR3×H×W}n ,每个图像都有一个外在矩阵 E k ∈ R 3 × 4 E_k∈ \mathbb{R}^{3×4} EkR3×4 和一个内在本矩阵 I k ∈ R 3 × 3 I_k ∈ \mathbb{R}^{3×3} IkR3×3。试图在 BEV 坐标系 y ∈ R C × X × Y y ∈\mathbb{R}^{C×X×Y} yRC×X×Y 中找到场景的光栅化表示。外在矩阵和内在矩阵共同定义了 n 个相机中每个相机从参考坐标 (x, y, z) 到局部像素坐标 (h, w, d) 的映射。在训练或测试期间,我们不需要使用任何深度传感器

3.1 Lift:潜在深度分布

对于相机平台中的每个图像单独进行操作。目的是将每幅图像从局部的二维坐标系"提升"(Lift)到所有相机共享的三维框架

  • 单目传感器融合的挑战在于我们需要将深度转化为参考帧坐标,但是与每个像素相关的"深度"本质上是模糊的。解决方案是为每个像素生成所有可能深度的表示

  • X ∈ R 3 × H × W X∈\mathbb{R}^{3 × H × W} XR3×H×W 为一幅外参为 E E E,内参为 I I I 的图像, p p p 为图像中像素,图像坐标为 ( h , w ) (h,w) (h,w)

    • ∣ D ∣ | D | D 个点 { ( h , w , d ) ∈ R 3 ∣ d ∈ D } \{(h,w,d)∈\mathbb{R}^3 | d∈D\} {(h,w,d)R3dD} 关联到每个像素,其中D为离散深度集合,例如由 { d 0 + ∆, . . , d 0 + ∣ D ∣ ∆ } \{d0 +∆,..,d0 + | D |∆\} {d0+..d0+D∣∆} 定义。在这个变换中没有可学习的参数
    • 对于给定大小为 D ⋅ H ⋅ W D · H · W DHW 的图像,我们只需创建一个大的点云
  • 点云中每个点的上下文向量被参数化,以匹配注意力和离散深度推断的概念

    • 在像素 p p p 处,网络预测每个像素的上下文 c ∈ R C c∈\mathbb{R}^C cRC 和深度分布 α ∈ Δ ∣ D ∣ − 1 α∈\Delta^{| D | - 1} αΔD1。定义与点 p d p_d pd 相关的特征 c d ∈ R C c_d∈\mathbb{R}^C cdRC 为像素 p p p α d α_d αd 缩放后的上下文向量
      c d = α d c (1) c_d=\alpha_d c\tag{1} cd=αdc(1)

    • 如果我们的网络预测 α α α 的 one-hot 向量,那么在点 p d p_d pd 处的上下文将仅在单个深度 d ∗ d^∗ d上非零

      "one-hot" 向量是一种在机器学习和数据处理中常用的编码方式。它是一个二进制的向量,其中只有一个元素是1,其他元素都是0。这个唯一的1表示某个特定的类别或状态
    • 如果网络对深度预测出均匀分布,网络将为分配给像素 p p p 的每个点 p d p_d pd 预测相同的表示,与深度无关

  • 因此,网络能够在将图像的上下文放置在鸟瞰表示的特定位置之间进行选择,也可以将上下文扩展到整个空间光线,例如在深度模糊的情况下

理想情况下,我们希望为每个图像生成一个函数 g c : ( x , y , z ) ∈ R 3 → c ∈ R C g_c:(x, y, z) ∈ \mathbb{R}^3 → c ∈ \mathbb{R}^C gc:(x,y,z)R3cRC,该函数可以在任何空间位置进行查询并返回一个上下文向量

Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D 论文阅读_第2张图片

Fig.3 可视化了模型中“lift”步骤。对于每个像素,我们预测深度 α α α 属于 Δ D − 1 \Delta^{D−1} ΔD1 的分类分布(左侧),以及上方左侧的上下文向量 c ∈ R C c ∈ \mathbb{R}^C cRC。沿射线的每个点的特征由 α α α c c c 的外积确定(右侧)

3.2 Splat:柱状池化

  • 遵循 PointPillars 架构,通过 Lift 操作转换大点云输出

  • “柱子”是具有无限高度的体素。将每个点分配给最近的柱子,并执行求和池化来创建一个 C × H × W C × H × W C×H×W 张量,该张量可以由标准 CNN 处理以进行鸟瞰图推理

Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D 论文阅读_第3张图片

Fig.4 Lift-Splat-Shoot 概括图 我们的模型将 n 个图像(左)及其相应的外部和内部参数作为输入。在“提升”步骤中,为每个单独的图像(中左)生成截头锥体形状的点云。然后使用外部参数和内部参数将每个截锥体投射到鸟瞰平面(右中)上。最后,鸟瞰图 CNN 处理鸟瞰图表示以进行 BEV 语义分割或规划(右)

  • 模型不是填充每个支柱然后执行总和池,而是通过使用打包和利用总和池的 “cumsum 技巧” 来避免填充

3.3 Shoot:运动规划

模型的关键之处在于它**能够从相机输入端到端的代价图学习进行运动规划**

  • 在测试时,使用推断的成本地图进行规划可以通过"拍摄"不同的轨迹,对其成本进行评分,然后根据最低成本轨迹行事来实现

  • 将"规划"定义为预测自我车辆在K个模板轨迹上的分布
    T = { τ i } K = { { x j , y j , t j } T } K \mathcal{\Tau}= \{τ_i\}_K = \{\{x_j,y_j,t_j\}_T\}_K T={τi}K={{xj,yj,tj}T}K

  • 以传感器观测值 P ( τ ∣ O ) P(τ|O) P(τO) 为条件。我们的方法受到最近提出的神经运动规划器(NMP)的启发,这是一种基于点云和高清地图的架构,可以生成可用于对建议的轨迹进行评分的成本量

  • 在NMP中提出硬边际损失,而是将规划构建为对一组K模板轨迹的分类。为了利用计划问题的成本-数量性质,强制在 K 个模板轨迹上进行分布,采用以下形式
    p ( τ i ∣ o ) = exp ⁡ ( − ∑ x i , y i ∈ τ i c o ( x i , y i ) − ∑ τ ∈ T exp ⁡ ( − ∑ x i , y i ∈ τ i c o ( x i , y i ) (2) p(\tau_i|o)=\frac{\exp(-\underset{x_i,y_i\in \tau_i}{\sum}c_o(x_i,y_i)}{-\underset{\tau\in\Tau}{\sum}\exp(-\underset{x_i,y_i\in \tau_i}{\sum}c_o(x_i,y_i)}\tag{2} p(τio)=τTexp(xi,yiτico(xi,yi)exp(xi,yiτico(xi,yi)(2)

    • 其中 c o ( x , y ) c_o(x,y) co(x,y) 是通过在位置 x, y 处预测给定观测值 o 的成本图中建立索引来定义的,因此可以通过优化专家轨迹的对数概率,从数据中进行端到端训练

    • 对于标签,给定一个真值轨迹,我们计算到模板轨迹 T \Tau T 的 L2 距离最近的邻居,然后用交叉熵损失进行训练

    • p ( τ i ∣ o ) p(\tau_i|o) p(τio) 的这种定义使我们能够学习可解释的空间成本函数,而无需像 NMP 那样定义硬边际损失

    • 在实践中,通过在大量专家轨迹上运行K - Means来确定模板轨迹的集合

      Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D 论文阅读_第4张图片

      Fig.5 在训练和测试过程中,我们将我们"shooting"到的1K轨迹模板可视化到我们的成本地图上。在训练过程中,每个模板轨迹的代价被计算并解释为模板上的1K维Boltzman分布。在测试过程中,我们选择该分布的argmax,并根据所选择的模板进行操作

4. Implementation

4.1 架构细节

  • 模型的神经结构类似于OFT。与 OFT 一样,模型有两个大型网络主干网。其中一个主干对每个图像进行单独操作,以便对每个图像生成的点云进行特征化。另一个主干在点云被溅射到参考系的柱子中后,就会在点云上运行
  • 对于在每个图像中独立进行操作的网络,利用在Imagenet上预训练的EfficientNet-B0的层来构建所有模型,包括基线模型。
  • 对于鸟瞰网络,使用了类似PointPillars的ResNet块的组合
    • 经过一个核为7、步幅为2的卷积,然后进行批归一化和ReLU
    • 通过 ResNet-18 的前 3 个元层来获得不同分辨率 x 1 , x 2 , x 3 x_1,x_2,x_3 x1,x2,x3 的 3 个鸟瞰图表示
    • 按比例因子对 x 3 x_3 x3 进行上采样,与 x 1 x_1 x1 连接,应用 resnet 块,最后上采样,以返回到原始输入鸟瞰图伪图像的分辨率
  • 几个超参数决定了我们模型的“分辨率”
    • 输入图像的大小 H × W (所有实验都将输入图像调整大小并裁剪为 128 × 352 的大小)
    • 另一个重要的超参数是鸟瞰网格 X × Y 的分辨率大小

4.2 视锥体池化累计和技巧

  • 模型选择跨柱状池化,而不是最大池,因为“累积和”技巧可以避免由于填充而导致过多的内存使用
    • 可以通过根据 bin id 对所有点进行排序,对所有特征执行累积和,然后减去 bin 部分边界处的累积和值来执行求和池化
    • 无需依赖 autograd 通过所有三个步骤进行反向传播,而是可以导出整个模块的分析梯度,从而将训练速度提高 2 倍

5. Experiments and Results

  • 我们使用 nuScenes 和 Lyft Level 5 数据集来评估我们的方法
  • 定义了两个基于对象的分割任务和两个基于地图的任务
    • 对于对象分割任务,通过将 3D 边界框投影到鸟瞰平面中来获得地面实况鸟瞰目标
    • 对于所有对象分割任务,使用正权重 1.0 的二元交叉熵进行训练
  • Lyft 数据集没有提供规范的训练/验证分割。分离了 48 个 Lyft 场景进行验证,以获得与 nuScenes 大小大致相同的验证集

5.1 基线描述

  • 与普通 CNN 不同,模型在初始化时配备了 3 维结构。遵循类似于 MonoLayout 的架构,该架构也训练 CNN 仅从图像输出鸟瞰图标签,但在设计架构时不利用归纳偏差,并且仅在单个摄像机上进行训练

  • 为了表明我们的模型正在预测有用的隐式深度,我们将预训练 CNN 的权重冻结的模型与 OFT 进行比较

    Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D 论文阅读_第5张图片

5.2 分割

  • Lift-Splat 模型能够在鸟瞰图框架的监督下学习语义 3D 表示
  • 在所有基准测试中,我们的表现都优于基线。我们相信隐式非投影到 3D 所带来的性能提升是巨大的,特别是对于对象分割而言

5.3 鲁棒性

  • 由于鸟瞰 CNN 从数据中学习如何融合摄像头之间的信息,因此可以训练模型,使其对自动驾驶中出现的简单噪声模型(例如外部因素有偏差或摄像头失效)具有鲁棒性

  • 通过在训练期间掉落相机来验证,模型在测试时可以更好地处理掉落的相机

    Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D 论文阅读_第6张图片

Fig.6 证明了可以训练网络,使其能够适应常见的传感器误差源。在左侧,展示了通过在外部(蓝色)中使用大量噪声进行训练,网络在测试时对外部噪声变得更加鲁棒。在右侧,展示了在训练期间从每批次中随机丢弃相机(红色)可以提高测试时传感器丢失的鲁棒性

  • 测量了每个摄像头对于 nuScenes 上汽车分割性能的“重要性”

    • nuScenes 上丢失摄像头意味着汽车本地区域的某些区域没有传感器测量结果,因此性能严格受到完整传感器装备性能的上限限制

      Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D 论文阅读_第7张图片

      Fig.7 当每个摄像头丢失时,测量汽车分割的交叉并集。 nuScenes 摄像头装备上的后向摄像头具有更宽的视野,因此直观地说,与完整摄像头装备(右侧标记为“完整”)的性能相比,失去该摄像头会导致性能最大下降。

      Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D 论文阅读_第8张图片

      Fig.8 对于单个时间戳,删除每个摄像机并可视化摄像机的损失如何影响网络的预测。在每种情况下,丢失的相机覆盖的区域都会变得更加模糊。当前置摄像头被移除时(顶部中间),网络会推断出自我前方的车道和可驾驶区域,并推断出在右上角摄像头中只能看到一个角落的车身。

5.4 零镜头相机装备传输

  • 在我们的第一个实验中,测量模型的性能,仅使用 nuScenes 相机设备的一部分相机的图像进行训练,但在测试时可以访问其余两个相机的图像

    Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D 论文阅读_第9张图片

    表 3:仅使用来自 nuScenes 数据集中 6 个摄像机中的 4 个摄像机的图像进行训练。然后,我们使用新摄像头( 1 b l 1_{bl} 1bl 对应于“左后”摄像头, 1 f l 1_{fl} 1fl 对应于“左前”摄像头)进行评估,发现随着我们添加更多在训练期间看不见的传感器,模型的性能会严格提高

    Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D 论文阅读_第10张图片

    表 4:在 nuScenes 上训练模型,然后在 Lyft 上对其进行评估。 Lyft 摄像头与 nuScenes 摄像头完全不同,但该模型成功地泛化得比基线好得多

5.5 针对 Oracle 深度的基准测试

  • 将我们的模型与 pointpillars 架构进行基准测试,该架构使用来自 LIDAR 点云的地面真实深度

  • 在所有任务中,该工作的架构的表现比使用激光雷达单次扫描训练的点柱稍差。

  • 然而,至少在可驾驶区域分割方面,可以注意到本文接近激光雷达的性能。一般来说,并不是所有车道都可以在激光雷达扫描中看到。我们希望将来能够在更广泛的环境中衡量性能

    Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D 论文阅读_第11张图片

    表 5:与使用激光雷达预言深度的模型相比,仍有改进的空间。为了获得超越激光雷达所需的深度估计,可能需要来自摄像头装置的视频推理

  • 为了深入了解模型与激光雷达的不同之处,绘制了汽车分割的性能如何随着两个控制变量的变化而变化:到自我车辆的距离和天气条件

  • 在夜间场景中,模型的性能比预期的点柱差很多。随着深度的增加,这两种模型的性能大致呈线性下降

    Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D 论文阅读_第12张图片

    Fig.10 比较了模型的性能随深度和天气的变化。正如预期的那样,模型在夜间的性能相对于点柱有所下降

5.6 运动规划

  • 通过将 Lift-Splat 的表示输出训练为成本函数来评估模型执行规划的能力

  • 生成的轨迹长度为 5 秒,间隔为 0.25 秒。为了获取模板,将 K = 1000 的 K 均值拟合到 nuScene 训练集中的所有自我轨迹

  • 这项任务对于对基于相机的方法与基于激光雷达的方法的性能进行基准测试也很重要,因为尽管仅使用相机进行 3D 对象检测的上限肯定受到仅使用激光雷达的上限,但原则上仅使用相机的最佳规划器应该仅通过激光雷达训练的最优规划器的性能上限

    Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D 论文阅读_第13张图片

    Fig.11 显示 1k 个模板中排名前 10 的轨迹。项目页面上提供了视频序列。模型根据单个时间戳的观察结果预测双峰分布和曲线。模型无法获取汽车的速度,因此该模型能够预测人行横道和刹车灯附近的低速轨迹,这一点令人信服

    Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D 论文阅读_第14张图片

    表 6:由于规划被构建为一组 1K 模板轨迹之间的分类,因此测量了 top-5、top-10 和 top-20 的准确度

6. Conclusion

  • 提出了一种旨在从任意相机装备推断鸟瞰图表示的架构
  • 模型在一系列基准分割任务上的表现优于基准,这些任务旨在探测模型在鸟瞰图框架中表示语义的能力,而无需在训练或测试时访问地面真实深度数据
  • 提出了训练模型的方法,使网络对简单的校准噪声模型具有鲁棒性
  • 该模型能够实现遵循轨迹射击范式的端到端运动规划

你可能感兴趣的:(3d,论文阅读)