51-21 LSS (Lift,Splat,Shoot) ,实现 BEV 感知的开山之作 论文精读

这以后阅读的论文逐渐靠近自动驾驶实用领域,本文要讲的是Bird's-Eye-ViewBEV开山之作,来自Nvidia的LSS论文。

LSS核心动机:2D-->3D,构建BEV空间。LSS核心结构首先是利用Lift模块进行深度分布学习,将二维图像特征生成3D特征,其次利用Splat模块做特征映射,把3D特征拍扁得到BEV特征图,最后利用Shoot模块在BEV特征图上进行相关任务操作。

论文和代码地址

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

论文地址:https://arxiv.org/abs/2008.05711 2020.08

代码地址:https://research.nvidia.com/labs/toronto-ai/lift-splat-shoot/

51-21 LSS (Lift,Splat,Shoot) ,实现 BEV 感知的开山之作 论文精读_第1张图片

常用的视觉3D目标检测主要有基于视觉几何和基于深度估计的两种方法:

1)基于视觉几何的方法

这种方法严重依赖很多实验假设和先验知识:

假设1:地面平坦,没有起伏和坑洞。

假设2:目标接地,且可以看到接地点。

先验1:目标高度、宽度或照相机高度。

先验2:相机焦距。

满足了以上假设并有相关先验知识,即可通过2D检测结果,经过相似三角形关系,估算目标大致深度,再通过内参转换,估算出3D box的位置。

显而易见,这种方法局限性很多。首先两个假设和先验知识就很难获取,其次对于多视角目标检测来说,同一个目标可能同时出现在两个视角中,且都不完整,对其做拼接也非常困难。最后这种方法还依赖于2D检测的结果,即使检测框很准,由于目标角度的千变万化,也难以表征目标在2D空间中的实际高度,所以还需要大量的后处理工程进行优化。

2)基于深度估计的方法

使用伪激光雷达点云,实现3D目标检测。这类方法最大问题就是严重依赖于深度估计结果,而不能进行端到端的调优。

基于以上问题,具有上帝视角的鸟瞰图Bird-Eye-ViewBEV是一个很好的解决方案。

当前BEV主流方法分为两类:自底向上方法和自顶向下方法

BEV自底向上方法比较早的代表工作是出自英伟达的LSS,后来BEVDetBEVDepth等模型也是基于LSS的框架来进行优化。

自底向上方法核心内容是:

Lift,孤立对各相机的图像,估计像平面下采样后特征点的潜在深度分布,得到包含图像特征的视锥即点云;

Splat,结合相机内参、外参,把所有相机的视锥点云分配到BEV网格中,对每个栅格中的多个视锥进行sum-pooling计算,形成BEV特征图;

Shoot用Task Head处理BEV特征图,输出相关任务结果。

自顶向下方法的典型工作是Tesla Transformer BEV202010月发布的FSD Beta开始应用此方法。在2021Tesla AI-Day上,Andrej Karparthy披露了更多技术思想。核心是先预定义待生成的BEV特征图,利用Transformer全局感知能力在多个视角图像的特征中多次查询相应信息,并把信息融合更新到BEV特征图中。

BEV网络

在自车ego vehicle周围俯视平面,沿x,y方向划分n个网格,每个网格表示特定物理距离d米。如文中提及的 200*200 BEV网格,每格代表0.5米,那么这个网格就表示100*100米的平面范围。如果恰好ego vehicle中心在网格中心位置,那么网格就表示自车前、后和左、右各50米的范围。

51-21 LSS (Lift,Splat,Shoot) ,实现 BEV 感知的开山之作 论文精读_第2张图片

BEV特征图

BEV网格所有栅格中都填充C个通道的特征值作为上下文内容(contex),就组成了BEV特征图。为了让BEV特征图保留网格x,y方向距离的意义,这里每个栅格中C通道特征值都要来自栅格所对应空间的特征信息,而不是胡乱地填充其它信息。如上图,假如某个栅格所对应空间有一个雪花桶,那么这个栅格里填充的一定是用来描述这个锥桶的特征值,而不是远方树木、红绿灯或行人的特征值。无论采用哪种方法,是自顶向下还是自底向上,其核心目标是:为BEV网格中每个栅格组织并填充合适的特征信息,得到BEV特征图。

本文由深圳季连科技有限公司AIgraphX自动驾驶大模型团队整理编辑。如有错误,欢迎在评论区指正。

铺垫到此,咱们来正式阅读论文。

Abstract

自动驾驶汽车感知目标是从多个传感器中提取语义表示,并将这些表示融合到一个单一的“Bird's-Eye-ViewBEV”坐标系中,以供运动规划使用。本文提出了一种新的端到端体系结构,该体系结构直接从任意数量的摄像机中提取给定图像数据的场景BEV表示。其核心思想是将每个图像单独“lift”为每个相机的特征视锥体,然后将所有视锥体“splat”成一个栅格化BEV网格。通过对整个系统进行训练,模型不仅能够学习如何表示图像,而且还能够学习如何将来自所有相机的预测融合到场景的单个表示中,同时对校准误差具有鲁棒性。在目标分割和地图分割等标准BEV任务上,模型优于所有基线和先前的工作。为了追求学习运动规划密集表示的目标,模型通过将模板轨迹Shoot到网络输出的BEV成本图中,实现了可解释的端到端运动规划。最后使用来自激光雷达的 oracle 深度模型对本模型进行了基准测试。

Introduction

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

这种范式与开箱即用的自动驾驶中的感知设置不匹配。在自动驾驶中,多个传感器作为输入,每个传感器都有不同的坐标系,感知模型最终负责在新的坐标系(自车系统的坐标系)中产生预测,供下游规划者使用,如图2所示。

51-21 LSS (Lift,Splat,Shoot) ,实现 BEV 感知的开山之作 论文精读_第3张图片

有许多简单实用的策略可以将单一图像范式扩展到多视图环境。例如,n个相机的3D目标检测问题,可以将单个图像检测器应用于所有输入图像,然后根据检测到目标的相机的内参和外参,将每个检测旋转并平移到自我框架中。将单视图范式扩展到多视图环境中有三个有价值的对称特征。

1Translation equivariance,如果图像中的像素坐标都移位,输出移位相同的量。全卷积单图像目标检测大致具有这一特性,多视图从它们那里扩展并继承了这一特性。

2Permutation invariance,排列不变性-最终输出不依赖于n个摄像机的特定顺序。

3Ego-frame isometry equivariance,无论拍摄图像的相机相对于ego汽车的位置如何,在给定的图像中都会检测到相同的物体。说明这个属性的等价方式是ego-frame坐标系的定义可以旋转/平移,输出也会随之旋转/平移。

上述简单方法的缺点是,使用来自单图像检测器的后处理检测会阻止人们区分在ego-frame中做出的预测,并一直返回到传感器输入。因此,该模型无法以数据驱动的方式学习,最好的融合跨摄像头信息。这也意味着不能使用反向传播来利用下游规划器的反馈自动改进感知系统。

本文提出了一个名为“Lift-Splat”的模型,它保留了上述设计确定的3种对称性,同时也是端到端可微的。

Related Work

我们从多相机图像数据中学习内聚表示的方法建立在传感器融合和单目物体检测方面的最新工作基础上。最近,来自NutonomyLyftWaymoArgo的大规模多模态数据集,使得仅以摄像头输入为条件的local-ego vehicle整个360度场景的完全表征学习成为可能。我们通过Lift-Splat架构探索了这种可能性。

Monocular Object Detection

单目目标检测的定义是它们如何模拟从图像平面到给定三维参考系的转换。一种标准的技术是在图像平面上应用成熟的2D目标检测器,然后训练第二个网络将2D box回归到3D box中。目前nuScenes基准上最先进的3D目标检测器使用了一种架构,该架构训练标准2D检测器也使用loss来预测深度,该loss试图将由于不正确的深度引起的误差与由于不正确的边界框引起的误差分开。这些方法在3D目标检测基准上取得了很好的性能,在图像检测排除了掩盖单目深度预测的摸棱两可情形。

最近获得经验成功的一种方法是分别训练一个网络进行单目深度预测,另一个网络分别进行BEV检测。这些方法被称为伪激光pseudolidar在经验上取得成功的直观原因是,pseudolidar能够训练一个BEV网络,该网络在最终评估检测的坐标系中运行,并且相对于图像平面,欧几里德距离更有意义。

第三类单目对象检测器使用 3 维对象原语,这些原语根据其在所有可用相机上的投影来获取特征。Mono3D通过在地平面上生成三维建议,在KITTI上实现了最先进的单目目标检测,该建议通过投影到可用的图像上进行评分。Orthographic Feature Transform正交特征变换建立在Mono3D的基础上,将固定的体素立方体投影到图像上来收集特征,然后训练第二个“BEV”CNN以根据体素中的特征在3D中检测。我们的模型解决这些模型的一个潜在性能瓶颈,即一个像素对每个体素的贡献与该像素处的对象深度无关。

Inference in the Bird's-Eye-View Frame

BEV图框架中,使用外部和内部属性来直接执行推理的模型最近受到了广泛的关注。MonoLayout从单个图像执行BEV推断,并使用对抗损失来鼓励模型绘制可信的隐藏对象。在并行工作中,Pyramid Occupancy Network提出了一种transformer架构,将图像表示转换为BEV表示。FISHING Net也是并行工作,提出了一种多视图架构,既可以分割当前时间步长的对象,又可以执行未来预测。我们在第5节中表明我们的模型优于先前的经验工作。这些架构,以及我们的架构,使用类似于机器学习图形社区的多平面图像的数据结构。

Method

在本节中,将介绍从任意相机设备捕获的图像数据中,学习场景BEV图表示的方法。

51-21 LSS (Lift,Splat,Shoot) ,实现 BEV 感知的开山之作 论文精读_第4张图片

Lift: Latent Depth Distribution

模型的第一阶段孤立地对相机设备中的每个图像进行操作。这一阶段的目的是将每个图像从局部二维坐标系 “lift” 提升到在所有摄像机之间共享的三维帧。单目传感器融合的挑战是我们需要把深度转换为参考系坐标,但与每个像素相关的深度本质上是模棱两可的,解决方案是为每个像素生成所有可能深度的表示。

51-21 LSS (Lift,Splat,Shoot) ,实现 BEV 感知的开山之作 论文精读_第5张图片

51-21 LSS (Lift,Splat,Shoot) ,实现 BEV 感知的开山之作 论文精读_第6张图片

看完以上正文,总感觉没读懂,分时段再复看了几遍,好像又读懂了。最后翻看了代码和其他网络博文,似乎可以解读清楚了。

用单目相机进行目标检测,关键是如何恢复图像中的深度信息。

LSS是早期的比较直接的尝试,即先估计每个像素的深度。因为不存在深度标签,这里并没有直接回归深度值,而是对每个像素点预测可能的一系列离散深度值的概率,概率最大的深度值即为估计结果。

相比于给特征点赋予单一深度值,采用所有可能深度的好处在于可以提高鲁棒性,在一些深度值具有歧义性的像素点上表现更好。

因为2D图像中的每个像素点可以理解成一条世界中某点到相机中心的一条射线,现在不知道的是该像素具体在射线上位置,也就是不知道该像素的深度值。官方代码做法是,在距离相机5m到45m的视锥内,每隔1m有一个模型可选的深度值。

图像中每一个像素点对应着世界坐标中的一条射线,那么这个像素点对应的深度应该是多少呢,按照1米的距离划分格子,用概率值表示该像素的深度值处于这个1米的格子内部的概率,用一个D维的向量经过softmax来表示,D表示4-45米范围内以1米为间隔的距离,也就是 D=41,这样的话D上每个位置的值就代表了该像素处于这个深度范围的概率值。

最后,得到的是一个视锥点云,这个视锥是以相机光心为中心,长为w/16,宽为h/16,高从4-45的一个立方体,然后通过相机外参将这个立方体转换到BEV视图下;之后从视锥中提取图像的feature map。

当然,求图像特征c实际上并不是用原图像素进行操作,而是用经过backbone提取特征且下采样的特征点(其中,backbone的输入是原图resize、clip预处理后的图像)得到图像特征点,特征点所在的下采样后的平面称作图像特征平面。

51-21 LSS (Lift,Splat,Shoot) ,实现 BEV 感知的开山之作 论文精读_第7张图片

此时我们可以得到深度分布特征α和图像特征c,二者做外积,给每个点生成上下文特征值(contex)。

图 3 中第 3 个深度,即深度为 α2 的视锥点的深度分布概率比较高,那么在图中右侧,相比于此图像特征点的其它视锥点, α2c的语义特征最“显著”,也可以理解为这个图像特征点的信息更多地被编码到了视锥点 α2 。

作者称这一步为lift

Splat: Pillar Pooling

遵循pointpillars架构,通过 “lift” 步骤转换点云输出pillars是具有无限高度的体素。假定每个点到其最近的pillar并执行sum pooling 求和池化以创建 C × H × W张量,该张量可以由标准 CNN 处理以进行BEV推理。

整体lift-splat 架构如图 4 所示。

51-21 LSS (Lift,Splat,Shoot) ,实现 BEV 感知的开山之作 论文精读_第8张图片

就像 OFT 使用积分图像来加速它们的池化步骤一样,我们应用了一种类似技术来加速求和池化。考虑到生成的点云的大小,效率对于训练我们的模型至关重要。我们不是填充每个pillar然后执行求和池化,而是通过使用打包和利用累积技巧进行求和池化来避免填充。该操作有一个分析梯度,可以有效地计算以加快自动梯度,如4.2小节中所述。

正文如上,解读如下。

有了包含空间位置和特征的视锥点云,就可以根据空间位置把每个视锥点的上下文特征(contex)放到BEV网格中的合适位置,组成BEV特征图。(拍扁)

BEV网格由200x200个栅格(BEV Pillar)组成,每个栅格对应物理尺寸为0.5米x0.5米。即BEV网格对应车辆前、后和左、右各50m,且高度不限的3维空间。

通过相机的内外参,把视锥点云转换到自车坐标系下的空间位置。然后排除掉BEV网格所表示空间范围,即以自车为中心前后左右50m范围以外的点,把剩余有效的视锥点云分配到每个BEV Pillar里。

对于一个BEV Pillar分配多个视锥点,作者使用了sum-pooling的方法,把视锥点的特征相加,最后得到了200x200xC的BEV特征图,源码中C取64。

Shoot: Motion Planning

Lift-Splat 模型的一个关键能力是它支持端到端cost map学习,用于仅从相机输入进行运动规划。在测试时,利用推断的cost map进行规划,可以通过“shoot” 射击不同的轨迹来实现,对它们的成本进行评分,然后根据最低成本轨迹采取行动。在第5.6节中,探讨了模型是否能够实现端到端可解释的运动规划,并将其性能与基于激光雷达的端到端神经运动规划进行了比较。

我们制定规划器预测ego vehicle K个模板轨迹上的分布。

51-21 LSS (Lift,Splat,Shoot) ,实现 BEV 感知的开山之作 论文精读_第9张图片

51-21 LSS (Lift,Splat,Shoot) ,实现 BEV 感知的开山之作 论文精读_第10张图片

Lift-Splat已经输出了由N个相机图像编码的BEV features,接下来就是再接上Head来实现特定的任务,这部分由Shoot来实现。

LSS的关键是可以仅使用图像就可以实现端到端的运动规划。在测试时,用推理输出cost map进行规划,”Shoot”输出多种轨迹,并对各个轨迹的cost进行评分,然后根据最低cost轨迹来控制车辆运动。

Implementation

Architecture Details

我们模型的神经结构类似于OFT。与OFT一样,我们的模型有两个大型网络主干。其中一个主干分别对每个图像进行操作,以实现从每个图像生成的点云的特征化。一旦点云splat参考系中的pillar中,另一个主干就会对点云进行操作。这两个网络通过lift-splat层连接在一起,如第3节所定义,图4所示。

对于单独对每个图像进行操作的网络,我们在所有模型(包括基线)的所有实验中利用了在Imagenet 上预训练的EfficientNet-B0 层。EfficientNets 是在资源有限的制度下通过详尽的架构搜索找到的网络架构,深度、宽度和分辨率按比例放大。我们发现,在所有模型中,它们相对于 ResNet-18/34/50 具有更高的性能,但需要更多优化步骤才能收敛,这带来了一些不便。

对于BEV网络,我们使用类似于PointPillarsResNet块的组合。具体而言,经过内核7和步长2进行卷积,然后进行batchnormReLU之后,通过ResNet-18的前3meta-layers,以获得不同分辨率x1x2x33BEV图表示。然后,我们将样本x3上采样4,与x1连接,应用resnet块,最后将样本上采样2,以返回到原始输入BEV伪图像的分辨率。我们在最终网络中用了1430万个可训练参数。

有几个超参数决定了我们模型的分辨率。首先,存在输入图像的大小H×W。在下面的所有实验中,我们调整输入图像的大小并将其裁剪为128×352,并相应地调整外部和内部参数。网络的另一个重要超参数是BEV网格的分辨率X×Y的大小。在我们的实验中,我们在xy方向上设置了从-50米到50米的垃圾箱,单元大小为0.5×0.5米。因此,所得网格为200×200。最后,还有D的选择,它决定了网络预测的深度分辨率。我们将D限制在4.0米到45.0米之间,间隔1.0米。有了这些超参数和架构设计选择,该模型的前向通道在Titan V GPU上以35Hz运行

Frustum Pooling Cumulative Sum Trick

训练效率对于从整个传感器装备的数据中学习至关重要。在第3节中,我们选择跨pillar的求和池化,而不是最大池,因为我们的累积求和技巧避免了由于填充而导致的过度内存使用。累积求和技巧是指可以通过根据bin id对所有点进行排序,对所有特征进行累积求和,然后减去bin部分边界处的累积和值来执行求和池化。不依赖自动求导在所有三个步骤中进行反向传播,而是可以导出整个模块的分析梯度,从而将训练速度提高2倍。我们将该层称为“Frustum Pooling”,因为它处理将n个图像产生的视锥体转换为与相机数量无关的固定维C×H×W张量。

Experiments and Results

我们探讨了模型仅在nuScenes数据上进行训练,那么它在多大程度上适用于Lyft相机设备,定性结果如下图所示

道路分割用橙色表示,车道分割用绿色表示,车辆分割用蓝色表示。

规划实验的定性结果如下图所示,在 1k 个模板中显示排名前 10 的轨迹。视频序列在项目页面上提供。模型从单个时间戳的观察中预测双峰分布和曲线。模型无法访问汽车的速度,因此模型预测横道和刹车灯附近的低速轨迹是令人信服的。

51-21 LSS (Lift,Splat,Shoot) ,实现 BEV 感知的开山之作 论文精读_第11张图片

Conclusion

在这项工作中,我们提出了一种架构,旨在从任意相机装备中推断bird's-eye-view,BEV图表示。我们的模型在一系列基准分割任务中优于基线,这些任务旨在探测模型在BEV图框架中表示语义的能力,而无需在训练或测试时访问ground truth深度数据。我们提出了训练模型的方法,使网络对简单的校准噪声模型具有鲁棒性。最后,我们表明该模型能够实现遵循轨迹射击范式的端到端运动规划。为了达到并可能超过专门使用来自点云的ground truth深度数据的类似网络的性能,未来的工作将需要以图像的多个时间步长为条件,而不是我们在这项工作中考虑的单个时间步长。

后续很多围绕深度估计、Pooling计算,多帧融合等优化,这些工作取得了显著提升效果。另外一些围绕自顶向下的路线,Transformer构建BEV,BEVformer、VoxelFormer等这些工作也取得很好的成效。

当前有部分工作另辟蹊径,用大模型的思路,譬如利用vision transofrmer,ViT建立的Sparse4D-v3 模型实现了full end-to-end tracking and detection。

你可能感兴趣的:(AutoGPT,自动驾驶大模型,人工智能,transformer,自动驾驶,智慧城市,目标跟踪,gpt-3,计算机视觉)