不同深度广度力度精度模型的混合精度策略如何确定?有没有自动化方法?

译者:AI研习社(、)


如果你正在 pytorch 中训练深度学习模型,那么如何能够加快模型训练速度呢?

在本文中,我会介绍一些改动最小、影响最大的在pytorch中加速深度学习模型的方法。对于每种方法,我会对其思路进行简要介绍,然后预估提升速度并讨论其限制。我会把我认为重要的部分强调介绍,并在每个部分展示一些实例。接下来我将假设你正在使用GPU训练模型,这些方法基本不需要导入其他的库,只需要再pytorch内进行更改即可。

以下是我根据预估的加速效果对不同方法的排序:

  1. 考虑使用其他的学习率调整计划

  2. 在DataLoader中使用多个辅助进程并页锁定内存

  3. 使用自动混合精度AMP

  4. 当心CPU与GPU之间的数据传输

  5. 将梯度设置为None而不是0

  6. 只在需要的时候打开debugging模式

  7. 规范化输入和批处理 

1. 考虑使用其他的学习率调整计划

在训练中使用的学习率调整计划会极大影响收敛速率以及模型泛化能力。

在最好的情况下,与传统的学习率策略相比,这种策略可以实现巨大的加速—— Smith称之为“超级收敛”。例如,使用1Cycle策略,在ImageNet上减少了ResNet-56训练迭代数的10倍,就可以匹配原始论文的性能。该策略似乎在通用架构和优化器之间运行得很好。

这两个方法的一个缺点是引入了许多额外的超参数。对如何查找好的超参数(包括上文提及的学习率)提供了详细概述和实现。

至于为什么要这样做?现今并不完全清楚,但一个是:定期提高学习率有助于。

pin_memory=True,而不是默认值 False。至于为什么这么做,会给你答案。

根据上述方法, 在四个 worker 和页锁定内存的情况下,在单个epoch中实现了 2 倍加速。

,一般将进程数量设置为可用 GPU 数量的四倍,大于或小于这个值都会降低训练速度。但是要注意,增加num_workers会增加 CPU 内存消耗。

一直以来,人们对于调大batch没有定论。一般来说,在GPU内存允许的情况下增大batch将会增快训练速度,但同时还需要调整学习率等其他超参数。根据经验,batch大小加倍时,学习率也相应加倍。

表明不同的batch大小收敛周期不同。用不同的batch大小进行了一些实验(使用上述1Cycle 策略),实验中他将 batch大小由64增加到512,实现了4倍加速。

然而也要注意,较大的batch会降低模型泛化能力,反之亦然。

PyTorch1.6支持本地自动混合精度训练。与单精度 (FP32) 相比,一些运算在不损失准确率的情况下,使用半精度 (FP16)速度更快。AMP能够自动决定应该以哪种精度执行哪种运算,这样既可以加快训练速度,又减少了内存占用。

AMP的使用如下所示:

GPU上对一些常用语言和视觉模型进行了基准测试,发现在FP32训练中使用AMP提高约2倍的训练速度,最高甚至达到5.5倍。

目前,只有CUDA支持上述方式,查看了解更多信息。

AdamW是由fast.ai提出的具有权重衰减(而非 L2 正则化)的Adam, PyTorch中通过torch.optim.AdamW实现。在误差和训练时间上,AdamW都优于Adam。查看了解为什么权重衰减使得Adam产生更好效果。

此外,和等其他优化器也收到广泛关注。

NVIDA的APEX对等常见优化器进行优化融合,相比PyTorch中的原始Adam,由于避免了GPU内存之间的多次传递,训练速度提升约 5%。

如果你的模型架构时固定的,同时输入大小保持不变,那么设置torch.backends.cudnn.benchmark = True可能会提升模型速度(帮助文档)。通过启用cudNN自动调节器,可以在cudNN中对多种计算卷积的方法进行基准测试,然后选择最快的方法。

至于提速效果,在前向卷积时提速70%,在同时向前和后向卷积时提升了27%。

注意,如果你想要根据上述方法最大化批大小,该自动调整可能会非常耗时。

另外Santosh Gupta的也值得一试,尽管其加速与否尚不完全清除。

检查点通过将计算保存到内存来工作。检查点在反向传播算法过程中并不保存计算图的中间激活,而是在反向传播时重新计算,其可用于模型的任何部分。

具体来说,在前向传播中,function以torch.no_grad()方式运行,不存储任何中间激活。相反,前向传递将保存输入元组和function参数。在反向传播时,检索保存的输入和function,并再次对function进行正向传播,记录中间激活,并使用这些激活值计算梯度。

因此,对于特定的批处理大小,这可能会稍微增加运行时间,但会显着减少内存消耗。反过来,你可以进一步增加批处理大小,从而更好地利用GPU。

虽然检查点可以通过方便实现,但仍需要里哦阿姐其思想与本质。Priya Goyal的很清晰的演示了检查点的一些关键思想,推荐阅读。

增加批处理大小的另一种方法是在调用Optimizer.step()之对多个.backward()传递梯度进行累积。

该方法主要是为了规避GPU内存的限制,但对其他.backward()循环之间的取舍我并不清楚。fastai论坛上的似乎表明它实际上是可以加速训练的,因此值得一试。详情查看托管的。

强烈推荐阅读分布式训练相关文档了解更多信息:

这样内存分配器处理梯度而不是主动将其设置为0,这会产生所示的适度加速,但不要抱有过大期望。

注意,这样做不会有任何副作用!阅读文档查看更多信息。

Pytorch提供了许多调试工具,例如, 和。使用时一定要谨慎,这些调试工具显然会影响训练速度,因此在不需要时将其关闭。

虽然我尚不完全清楚哪种模型可以从梯度裁剪中受益,但毫无疑问的是,对于RNN、基于Transformer和ResNets结构的一系列优化器来说,该方法显然是起到一定作用的。

与其他方法相比,该方法的速度提升是有的。

也许你已经在这样做了,但还是要仔细检查,反复确认:

如果要执行相邻逐点操作,可以使用将它们组合成一个FusionGroup,然后在单内核上启动,而不是像默认情况那样在多个内核上启动,同时还可以保存一些内存进行读写。

相比于未融合版本,融合这些操作可以使fused_gelu的执行速度提高5倍。

当然,你还可以在Reddit上与交流讨论。

PyTorch Lightning的作者William Falcon在这两篇种介绍了关于加快训练的内容。同时,已集成以上一些技巧与方法。

和写了很多关于和的文章。


AI研习社是AI学术青年和AI开发者技术交流的在线社区。我们与高校、学术机构和产业界合作,通过提供学习、实战和求职服务,为AI学术青年和开发者的交流互助和职业发展打造一站式平台,致力成为中国最大的科技创新人才聚集地。

如果,你也是位热爱分享的AI爱好者。欢迎与一起,学习新知,分享成长。

雷峰网版权文章,未经授权禁止转载。详情见。

最近在IEEE T-PAMI投稿的一篇BEV综述论文“ Vision-Centric BEV Perception: A Survey“,在arXiv上传于2022年8月4日,作者来自上海科技大学、香港中文大学、香港科技大学、上海AI实验室和赢彻科技(挂名在肯塔基大学和马里兰大学)。

以视觉为中心的BEV感知,由于固有的优点,如呈现的世界自然表示和融合的友好模式,最近受到了工业界和学术界的越来越多关注。随着深度学习的快速发展,人们提出了许多方法来解决以视觉为中心的BEV感知问题。然而,目前还没有关于这一新兴研究领域的综述。为了促进其未来的研究,本文全面综述以视觉为中心的BEV感知及其扩展的最新进展。该文对常用的算法进行了系统的回顾和总结,还提供了若干BEV感知任务的深入分析和比较结果,有助于启发未来的研究方向。此外,还讨论了实现细节,其有助于相关算法的开发。

对于低成本的自动驾驶系统,以视觉为中心的BEV感知是一个长期的挑战,因为摄像头通常放置在自车上,与地面平行,面向外部。图像在与BEV正交的透视图(PV)中获取,并且两个视图之间的变换是不适定问题。最早工作[用单应矩阵以物理和数学方式将平坦地面从PV转换为BEV。多年来,这种方法一直占据主导地位,直到平地硬约束无法满足复杂真实场景的自主驾驶要求。随着计算机视觉中数据驱动方法的发展,近年来出现了许多基于深度学习的方法,通过求解PV-BEV变换来促进以视觉为中心的BEV感知。

基于视图变换,当前BEV视觉感知工作可分为两大类:基于几何的变换和基于网络的变换。如图1所示:

前者充分利用摄像头的物理原理以可解释的方式迁移视图。除了经典的基于homograph的方法外,通过显式或隐式深度估计将2-D特征提升到3-D空间是主要的解决方案。对于图像的每个像素,都存在一条来自摄影机的光线,该光线会遇到现实世界中的目标。不是直接将像素映射到BEV,另一种方法是计算每个像素的深度分布,利用该分布将2D特征提升到3D,然后通过降维从3D获得BEV表示。

这些方法对深度采用不同的假设,例如精确值、射线上的均匀分布或射线上的类分布。深度监督来自于最终的显式深度值或任务监督。对于后者,其方法采用神经网络作为PV到BEV的视图投影。深度神经网络在解决计算机视觉任务方面取得了巨大进展,它充当了一个复杂的映射函数,以不同的模式、维度、表示等将输入转换为输出。简单的想法是使用变分编码器-解码器(VE-D)或MLP将PV特征投影到BEV。上述方法在某种程度上采用了自下而上(bottom-up)的策略,以前向的方式处理转换。另一种重要的基于网络的方法采用自顶向下(top-down)的策略,通过交叉注意机制直接构造BEV query并搜索前视图像上的相应特征。为了匹配不同的下游任务,各种方法提出稀疏、密集或混合query。

以视觉为中心的BEV感知是,给定输入图像序列,算法需要将这些透视图输入转换为BEV特征,并执行感知任务,如在BEV中检测目标的3D边框或周围环境的语义图。与基于激光雷达的方法相比,以视觉为中心的方法可以从图像中获得更丰富的语义信息,并依靠对图像的高级理解来推断场景几何结构,但缺乏精确的深度测量。为了获得有效解决该问题的统一表示,最近的研究通常采用视图转换范式,将视角理解转换为感知的BEV特征。

是3-D感知的核心任务之一。根据不同的输入数据模式,该任务可分为多个设置,包括基于图像、基于激光雷达和基于多模态的3-D检测。

基于图像的3D检测设置需要模型预测仅给定多个图像的目标类别和3-D边框。以前的工作通常直接从透视图特征进行预测,这是一个简单的过程,但在实践中对多视图摄像头数据进行复杂的后处理,难以利用来自多个视图和时间连续帧的立体视觉线索。因此,最近基于BEV的方法在该领域引起了更多的关注,并在效率和性能方面取得了巨大的进步。

如下表1是BEV 3D检测的基准方法:

添加图片注释,不超过 140 字(可选)

基于激光雷达的3-D检测方法在3-D感知方面取得了巨大成功。由于激光雷达提供了对周围3D环境的精确测量,它们比基于图像的方法表现出更好的性能,并拥有许多丰富的研究经验。其可以分为基于点和基于体素的方法,基于体素方法在实践中可以进一步简化为BEV感知。这些成功经验为视觉为中心的BEV感知发展提供了重要基础。

RGB图像包含关于目标颜色、形状和纹理的丰富信息,但不能提供精确的深度信息,这可以从激光雷达补充。雷达只能提供粗略的定位信号,而激光雷达可以感知物体的运动。如何有效利用这些传感器是3D感知领域的一个长期问题。随着视觉为中心的BEV感知发展,为视觉输入提供了更加一致和统一的表示学习范式,因此组合来自不同模态的特征也更加方便。

有两条工作路线:即基于MLP的方法和基于Transformer的方法。除了地图生成外,还需要检测BEV的车道,以缓解透视的效应。3DLaneNet是利用CNN以端到端方式预测车道3-D位置的开创性工作。GEN LaneNet首先将图像投影到虚拟顶视图中,然后设计两步框架来回归车道位置,这可以显著改善不平路面的车道检测。Persformer利用类似Transformer的架构从前视图特征生成更好的BEV特征,并同时预测2D和3D车道。

将透视图转换为BEV的一个传统而直接的解决方案是,利用二者之间的自然几何投影关系,称为基于几何的方法。根据如何弥合这两个视图之间的差距,以前的工作可以分为两组:

基于homograph的方法和基于深度(depth)的方法

。前者的早期采用简化几何关系,其近期仅关注水平地面感知,而后者更适用于实际场景。

3-D空间中的点可以通过透视映射变换到图像空间,而将图像像素投影到3-D空间的逆问题是病态的。

,基于逆映射点位于水平面的附加约束,解决数学上不可能的映射问题。单应矩阵可以从相机的内和外参物理地导出。一些方法用卷积神经网络(CNN)提取PV图像的语义特征,并估计图像中的垂直消失点和地平面消失线(地平线),以确定单应矩阵。

IPM运行后,许多下游感知任务,如光流估计、检测、分割、运动预测、规划等,都可以基于BEV图像完成。由于IPM严重依赖于平坦地面假设,这些基于IPM的方法通常无法准确检测地平面上方的目标,如建筑物、车辆和行人。一些方法利用语义信息来减少失真。OGMs将PV中车辆的足迹(footprint)分割结果转换为BEV,遵循homography的平坦地面假设,避免车身位于地面上方造成的变形。根据这一思想,BEVStitch使用两个分支来分割车辆和道路的足迹,并分别通过IPM将其转换为BEV,然后缝合到BEV上,构建完整的路线图。

有些方法在网络训练阶段使用IPM变换特征图,而不是在预处理或后处理中应用IPM。Cam2BEV通过应用IPM变换每个视图的特征图,从多个车载摄像头获得整体BEV语义图。MVNet基于IPM将2D特征投影到共享的BEV空间,聚集多视图特征,并用大卷积核来解决行人检测中的遮挡问题。3D LaneNet专注于单个图像预测车道的3D布局,不假设摄像机高度,而是以监督方式训练额外网络分支来估计单应矩阵。然后在特征图的不同尺度上采用投影变换。

由于前向视图和BEV之间存在较大间隙和严重变形,仅采用IPM不足以在BEV生成无失真图像或语义图。BridgeGAN将homography视图作为中间视图,并提出了一种基于多GAN的模型来学习PV和BEV之间的跨视图转换,其利用GAN来增强生成的BEV图像真实性。MonoLayout利用GAN生成不可见位置的信息,并估计具有动态目标的场景布局。

基于homograph方法主要基于PV和BEV之间平地面的物理映射,具有良好的可解释性。IPM在下游感知任务的图像投影或特征投影中起作用。为了减少地平面以上区域的失真,充分探索了语义信息,并广泛使用GAN来提高BEV特征的质量。由于从PV到BEV的实际转换是不适定的,IPM的硬假设解决了部分问题。PV整个特征图的有效BEV映射仍有待解决。

如图2是这类方法的按时间顺序概述:

PV-BEV变换的一种重要方法是

。基于深度的PV-BEV方法自然建立在显式3D表示上。与基于激光雷达的3-D检测一样,基于所使用的表示,这些方法可以分为两种类型:基于点的方法和基于体素的方法。

基于点的方法直接使用深度估计将像素转换为点云,在连续3-D空间中散播。其更直接,更容易集成单目深度估计和基于激光雷达的3D检测成熟经验。先驱工作,伪激光雷达(pseudo- LiDAR)首先将深度图转换为伪激光雷达点,然后输入最先进的基于激光雷达的3D检测器。作为一项开创性的场景工作,Pseudo-LiDAR++通过立体视觉深度估计网络和损失函数提高了深度精度。AM3D提出用互补的RGB特征装饰伪激光雷达点云。

与基于激光雷达的3-D检测方法类似,纯摄像头方法也有两种常见的选择来表示变换后的3-D特征或几何。与分布在连续3-D空间中的点云相比,体素通过离散3-D空间来构造用于特征变换的均匀结构,为3-D场景理解提供了更有效的表示;后续基于BEV的模块可以直接附加。尽管牺牲了局部空间精度,但在覆盖大规模场景结构信息方面其仍然更有效,并且与视图转换的端到端学习范式兼容。

具体而言,该方案通常使用深度引导直接在相应的3D位置散射2D特征(而不是点)。先前的工作将2D特征图与相应的预测深度分布进行外积(outer product)来实现这一目标。早期的工作假设分布是均匀的,即沿射线的所有特征都相同,如OFT。这项工作建立了一个内部表示,以确定图像中哪些特征与正交BEV上的位置相关。在定义的均匀间隔3-D格(lattice)上,它构建3-D体素特征图,并在投影的相应图像特征图区域累积特征来填充体素。然后,沿垂直轴对体素特征求和获得正交特征图,然后深度卷积神经网络提取BEV特征用于3-D目标检测。值得注意的是,对于图像的每个像素,网络对分配的3D点预测相同的表示,即预测沿深度的均匀分布。这类方法通常不需要深度监督,并且可以在视图转换之后以端到端方式学习网络中的深度或3D位置信息。

相反,另一种范式会明确预测深度分布,并以此仔细构建3D特征,LSS代表了这种方法。其预测深度上的类分布(categorical distribution)和上下文向量,其外积确定透视光线每个点的特征,更好地接近真实深度分布。此外,它将来自所有摄像机的预测融合到场景的一个结合表征中,对标定误差更具鲁棒性。BEVDet遵循这一LSS范式,提出了一种从BEV进行全摄像机多视图的3D检测框架,包括图像视图编码器、视图transformer、BEV编码器和检测头。其新版本BEVDet4D展示了基于多摄像机3D检测的时域线索。具体而言,该方法保留前一帧的中间BEV特征,并将其与当前帧生成的特征连接。

先前的研究表明,当使用预测深度分布来提升2-D特征时,该分布精度非常重要。CaDDN用经典方法对激光雷达点投影的稀疏深度图进行插值,并以此监督深度分布的预测。这种监督和鼓励锋利分布预测的损失函数,在这种方法中至关重要。其他基于双目的3D检测方法DSGN和LIGA Stereo也依赖于类似的监督,其中稀疏的激光雷达深度图更有效。其他不用深度标签的方法,只能从稀疏实例标注中学习此类3D位置或深度信息,仅靠网络学习,要困难得多。除了将深度监督纳入检测框架之外,DD3D和MV-FCOS3D++指出,深度估计和单目3D检测的预训练可以显著增强2D主干的表征学习。许多基于BEV的方法也受益于这些预训练主干。

与基于IPM的方法相结合

除了单目深度估计外,立体匹配还可以在纯摄像头感知中预测更精确的深度信息。它依赖于适当多视图设置自然形成的基线。其中,双目设置是最常见和研究最深入的设置,其特点是重叠区域大,只有较小的水平偏移才能建立合适的多视图设置。在以前工作的一个多视图设置中,即安装在自主车辆的环视摄像机,相邻视图之间的重叠区域通常非常小,因为主要目标是用较少的摄像机覆盖整个空间。在这种情况下,深度估计主要依赖于单目理解,基于BEV的方法仅在多视图感知的简单性和统一性方面具有优势。

相比之下,在双目情况下的深度估计中具有更重要的优点。最近的双目方法,如DSGN和LIGA-Stereo,通常使用平面扫描(plane sweeping)表征进行立体匹配和深度估计。然后,从平面扫描特征体中采样体素和BEV特征,并执行3D检测。其他针对多视图设置的方法,如ImVoxelNet,也显示了这种基于体素的公式在室内场景的有效性,其中重叠区域在相邻区域也更大。此外,对于连续帧,两个时域相邻的图像也可以满足这些条件。DfM从理论上分析了这个问题,并采用类似的方法从视频中实现更精确的单目3D检测。

:基于深度的视图变换方法通常基于显式3-D表示、量化体素或连续3-D空间的点云散射。基于体素的方法使用均匀的深度向量或明确预测的深度分布将2D特征提升到3D体素空间,并执行基于BEV的感知。相反,基于点的方法将深度预测转换为伪激光雷达表示,然后用自定义网络进行3-D检测。如下表2显示了3-D检测的结果。

如图3是基于深度的方法时间顺序概述:

早期的方法通常第一步用伪激光雷达表示,在第二步直接用3D探测器;然而,由于难以进行可推广的端到端训练,面临着模型复杂度和性能低的问题。

由于计算效率和灵活性,最近的方法更加关注基于体素的方法。这种表示已广泛应用于不同任务的纯摄像机方法中。

深度监督对于这种基于深度的方法很重要,因为准确的深度分布可以为特征PV转换为BEV时提供基本线索。

如DfM、BEVDet4D和MV-FCOS3D++所分析的,在时域建模中此类方法是一个有希望的方向。

基于几何的方法明确建立在摄像机投影过程的物理原理上,将视图从PV转换为BEV,这是一种可解释的解决方案。另一种选择是以

的方式对视图转换进行建模,有效地利用摄像头几何结构,其中神经网络充当PV和BEV之间的映射函数。为了涵盖单应性等复杂变换,

多层感知器(MLP)在某种程度上可以看作是一个复杂的映射函数,其将输入映射到具有不同模态、维度或表示的输出。摆脱标定摄像机设置包含的继承感应偏差,一些方法倾向于利用MLP学习摄像机标定的隐式表示,实现在两个不同视图(即PV和BEV)之间转换,如图8是MLP的转换方法按时间顺序概述。

VED采用MLP瓶颈层的变分编码器-解码器架构,将驾驶场景的前视图视觉信息转换为2-D顶视图笛卡尔坐标系。它是第一个对单目图像执行端到端学习实时生成语义度量(semantic-metric)占用网格图(occupancy grid map)的系统。出于对全局感受野的需求,VPN选择两层MLP,通过扁平-映射-重塑(flattening-mapping-reshaping)过程将每个PV特征图转换为BEV特征图。然后,添加来自不同摄像机的所有特征图,进行多视图融合。FishingNet基于VPN的视图转换模块,将摄像机特征转换为BEV空间,并与雷达和激光雷达数据进行后融合,实现多模态感知和预测。

为了充分利用空间上下文并更好地关注行人等小目标,PON和STA-ST首先利用特征金字塔多分辨率地提取图像特征。然后,通过MLP沿高度轴折叠图像特征,沿深度轴扩展,执行视图变换。该设计的思路来自这样一个观察事实:虽然网络需要大量垂直上下文将特征映射到BEV(由于遮挡、缺乏深度信息和未知的地面拓扑),但在水平方向上BEV位置和图像位置之间的关系可以用简单的摄像头几何结构建立。

HDMapNet采用了基于MLP的特征投影策略,目的是在BEV中生成矢量化地图元素,并从周围摄像机的图像中嵌入实例和方向。单向投影(unidirectional projection)难以保证前向视图信息的有效传递,因此额外MLP可以将特征从BEV投影回到PV,检查其是否正确映射。受这种双向投影的激励,PYVA提出了一种循环自监督方案,整合视图投影。它还引入了一个基于注意的特征选择过程,将两个视图关联起来,为下游分割任务获得更强的BEV特征。

HFT分析了基于摄像机模型的特征变换和无摄像机模型的特性变换的优缺点。前者是基于IPM的方法,可以很容易地处理局部道路和停车场等区域的PV-BEV转换,但这些方法依赖于平坦地面假设,对地面以上的区域进行变形。后者,基于MLP或基于注意的方法,可以避免采用这个基础,但收敛缓慢,没有任何几何先验。为了从这两种方法中获益并避免其固有的缺点,HFT设计了一种混合特征变换,由两个分支组成,分别利用几何信息和捕获全局上下文。

基于MLP的方法忽略了标定摄像机的几何先验,并利用MLP作为通用映射函数来建模从PV到 BEV的转换。虽然MLP在理论上是一种通用的近似器,但由于缺乏深度信息、遮挡等原因,视图变换仍然难以推理。此外,多视图图像通常单独变换,并以“后融合”的方式进行集成,这使得基于MLP的方法无法利用重叠区域带来的几何潜力。如表3显示了基于网络(包括MLP)的的视图转换方法获得的结果。

基于MLP的方法更多地关注单个图像的情况,而多视图融合还没有得到充分的研究。

基于MLP的方法通常被最近提出的基于transformer的方法所超越(见后一节)。

除了MLP之外,transformer(具有交叉注意)也是一个现成的解决方案,用于将PV映射到 BEEV,无需明确利用摄像头模型。基于MLP和基于Transformer的张量映射之间有三个主要区别。首先,由于加权矩阵在推理过程中是固定的,因此MLP学习的映射不依赖于数据;相反,transformer中的交叉注意与数据相关,其中加权矩阵与输入数据相关。此数据相关性属性使transformer更具表现力,但很难训练。其次,交叉注意是置换不变的(permutation-invariant),意思是transformer需要位置编码来区分输入顺序;MLP对排列自然敏感。最后,基于transformer的方法采用自顶向下的策略,通过构造query并通过注意机制搜索相应的图像特征,而不是像基于MLP的方法那样以前向方式处理视图变换。

特斯拉是第一个使用Transformer将PV特征投影到BEV平面。该方法首先使用位置编码设计一组BEV query,然后通过BEV query和图像特征之间的交叉注意机制执行视图转换。从那时起,人们提出了许多方法来使用transformer,或者更具体地说,交叉注意来建模视图转换。根据transformer解码器中可学习slots(称为query)的粒度,将这些方法分为三类:基于稀疏query的方法、基于密集query的方法和基于混合 query的方法。如图10是基于transformer转换方法的按时间顺序概述:

如下表4是基于transformer方法的语义分割结果展示:

下面分别讨论三种基于transformer的视图转换方法。

基于稀疏query的方法

对于基于稀疏查询的方法,查询嵌入使网络能够直接产生稀疏感知结果,而无需显式执行图像特征的密集变换。这种设计选择对于以目标为中心的感知任务(如3D目标检测)是很自然的,但将其扩展到密集感知任务(例如分割)并不简单。

受2D检测框架DETR的启发,STSU遵循基于稀疏查询的框架,从单个图像提取表示BEV空间中局部道路网络的有向图。该方法还用两组稀疏查询来联合检测3-D目标,一组用于中心线,另一组用于动态目标,其中网络可以利用目标和中心线之间的相关性。后续工作TopologyPL考虑道路网络的拓扑结构,通过最小循环(minimal cycles)保持,改进了STSU。同时,DETR3D提出了一个类似的范例,但侧重于多摄像机输入的3D检测,并用基于几何的特征采样过程代替交叉注意。它首先从可学习的稀疏查询中预测3-D参考点,然后使用标定矩阵将参考点投影到图像平面上,最后对相应的多视图多尺度图像特征进行采样,进行端到端的3-D边框预测。为了缓解DETR3D中复杂的特征采样过程,PETR将摄像机参数导出的3-D位置嵌入编码到2-D多视图特征中,这样稀疏查询可以直接与交叉注意中位置-觉察图像特征进行交互,实现更简单、更优雅的框架。如图11提供了DETR3D和PETR的范例比较。

后续工作PETRv2将3D位置嵌入扩展到时域来利用时域信息。为了解决DETR3D中特征聚合不足的问题并改善重叠区域的感知结果,Graph-DETR3D通过图结构学习聚合每个目标查询的各种图像信息来增强目标表示。类似地,ORA3D专注于改善DETR3D重叠区域的性能。它通过立体视差监督和对抗训练来规范重叠区域的表示学习。为了利用环视摄像机的视图对称性作为归纳偏差去简化优化并提高性能,PolarDETR提出3D检测的极参数化,它重新制定了边框参数化、网络预测和损失计算,所有这些都在极坐标系中。它还利用除投影参考点特征之外的上下文特征来缓解DETR3D中上下文信息不足的问题。

SRCN3D基于另一个2D检测框架SparseRCNN设计了一种基于稀疏提议(sparse proposal)的多摄像机3D检测方法,其中每个提议包含一个可学习的3D边框和一个编码实例特征的可学习特征向量。为了取代基于交叉注意的特征交互,提出稀疏特征采样模块和动态实例交互头,从提议边框中提取的RoI特征去更新提议的特征。

基于密集query的方法

对于基于密集查询的方法,每个查询都预先分配3D空间或BEV空间的空间位置。查询数目由光栅化空间的空间分辨率决定,通常大于基于稀疏查询方法。密集BEV表示可以通过密集查询与多个下游任务(如3D检测、分割和运动预测)图像特征之间的交互来实现。

Tesla首先使用位置编码和上下文概括在BEV空间中生成密集的BEV查询,然后利用查询和多视图图像特征之间的交叉注意进行视图转换。在不考虑摄像机参数的情况下,执行BEV查询和图像特征之间的普通交叉注意。为了促进交叉注意的几何推理,CVT提出一种摄像头-觉察的交叉注意模块,为图像特征配备从摄像头内外参标定中获得的位置嵌入。由于每个transformer解码器层的注意操作在大量query和key元素中有较大的内存复杂度,通常限制图像分辨率和BEV分辨率以减少内存开销,在许多情况下这可能会阻碍模型的可扩展性。

最近,人们做出了许多努力来解决基于密集查询的方法的这个问题。

的稀疏空间采样和注意机制的关系建模能力,只关注稀疏位置可以显著减少普通注意的内存开销。

的视图变换模块以此进行BEV分割,

的视图转换模块以此做3D车道检测。同时,

还采用可变形注意,用于BEV平面的密集查询与多视图图像特征之间的交互。它还设计一组历史BEV查询,并通过查询和历史查询之间的可变形注意操作利用时域线索。

Ego3RT将密集查询放置在极BEV网格上,并依靠可变形注意使查询和多视图图像特征相互作用。然后,通过网格采样将极BEV特征转换为笛卡尔特征,用于下游任务。值得注意的是,BEVFormer和Ego3RT不是直接从BevSeFormer中的查询特征预测参考点,而是利用摄像头参数和查询的预定义3D位置来计算2D参考点,用于变形注意中的特征采样。

类似地,PersFormer依靠IPM计算图像的参考点。通过这种设计,网络可以利用几何先验,更好地识别图像的适当区域进行引导,但这有可能对标定矩阵更加敏感。GKT展开投影2D参考点周围的核区域,并将BEV查询与相应展开的核特征进行交互,从而在摄像机标定固定的情况下,实现从BEV查询到像素位置的固定映射。该算子可以被视为可变形注意,具有固定采样偏移和基于相似度的注意权重。然后,提出一种从BEV-2D的查找表(LUT)索引策略,用于快速推理。

CoBEVT没有采用可变形注意,而是提出了一种称为融合轴向注意(FAX)的新注意变型,以低计算复杂度推理高层次上下文信息和区域细节特征。具体地说,它首先将特征图划分为3D非重叠窗口,然后在每个局部窗内进行局部注意,并在不同窗口之间进行全局注意。

另一种有希望减少内存开销的方法是,用3D几何约束去简化基于交叉注意的交互。Image2Map提出了一个单目BEV分割框架,首先假设单目图像中的垂直扫描线与从摄像机中心开始的BEV平面光线之间存在1-1关系。然后,视图转换可以表示为一组1-D序列-序列的转换问题,并通过transformer建模。基于这种几何约束,Image2Map避免了2D图像特征图和BEV查询之间的密集交叉关注,相反,它只包含1-D序列-序列的转换,形成了一个内存友好、数据高效的体系结构。

transformer模块作为视图变换第二步,增强由基于几何视图变换第一步获得的初始BEV特征。Image2Map和GitNet都只处理单个图像输入。当考虑360度图像作为输入时,需要进行额外调整,来自不同摄像机的极射线对齐到自车坐标系中,因为极射线的原点是不同的摄像机中心。PolarFormer设计了一个极坐标对齐模块,聚集来自多个摄像机的光线,生成结构化极坐标特征图。提出一种多尺度极坐标表示学习策略,用于处理极坐标距离维度上的无约束目标尺度变化。与PolarDETR类似,其边框预测直接在极坐标系中进行。

LaRa首先将多视图图像特征编码到潜空间中,然后通过交叉注意模块查询潜表示获得BEV特征,从而控制计算量。紧凑的潜空间,和输入大小和输出分辨率进行解耦,实现精确的计算预算控制。此外,提出一种基于射线的位置嵌入方法,该方法从标定矩阵中导出,增强视觉特征,并引导特征和潜向量之间的交叉注意。

基于混合 query的方法

基于稀疏查询的方法适用于以目标为中心的任务,但无法导出显式密集BEV表示,不适用于密集感知任务,如BEV分割。因此,PETRv2中设计了一种混合查询策略,其中除了稀疏目标查询外,还提出了一种密集分割查询,每个分割查询负责分割特定的patch(即16×16的形状)。

尽管基于稀疏查询的方法在目标检测任务上取得了很好的结果,但其3-D表示在自车坐标系下没有几何结构感,因此难以执行密集预测任务,如地图分割。相反,具有显式空间分布的稠密查询为BEV空间提供了稠密和统一的表示,很容易采用不同的感知头。然而,由于大量BEV查询的巨大计算成本,为了实现高分辨率的特征图,必须提高注意机制的效率。在过去几年中,高效transformer结构受到了广泛关注。然而,这些工作通常侧重于自注意,其中Key和Query来自同一个元素集。如果Key和Query来自两个未对齐的集合,其在交叉注意中的有效性,仍有待探索。

从概念上讲,基于Transformer的方法可以仅依靠注意机制执行视图变换,并且不一定需要几何先验。早期的方法确实没有将任何几何信息(如标定矩阵或像素深度)纳入其transformer框架。然而,置换不变的性质使transformer不确定图像区域和BEV像素之间的空间关系,从而使网络收敛速度变慢,并且训练需要大量数据。现在有更多的方法试图利用3D几何约束实现快速收敛或数据效率。

给定查询的3D坐标(预定义或使用查询特征预测),摄像机标定矩阵定义了从BEV空间到图像平面的映射,反之亦然,其为视觉特征和查询的交互提供了良好的线索。因此,大多数基于transformer的方法都以各种方式利用了标定矩阵。基于deformable attention的方法,通常依赖于摄像机投影矩阵来计算用于特征采样的2D参考点,这有助于网络关注图像上的适当区域并抛弃全局注意。

利用标定矩阵的另一种有希望的方法是,根据摄像头几何结构将每个图像垂直扫描线预先分配给BEV射线,然后将全局交叉注意简化为逐列注意。该策略还可以显著节省计算量。此外,标定矩阵可用于生成3-D位置嵌入,以几何先验丰富图像特征,并帮助transformer通过隐式几何推理学习从PV-BEV的映射。

虽然基于transformer的方法不一定需要逐像素深度进行视图变换,但深度信息对于transformer的几何推理仍然很重要。在nuScenes 目标检测基准上,大多数基于transformer的方法受益于深度预训练,其提供了有用的深度感知2D特征,用于建立查询和图像特征之间的关联。深度预测也可以联合优化,帮助视觉为中心的3D检测,其中真值深度可以从投影的激光雷达点或目标方向的深度标签中得出。MonoDTR和MonoDETR都设计了一个单独的模块来生成深度感知特征,并预测transformer中位置编码的像素深度。然后,MonoDTR使用transformer集成基于锚点检测头的上下文特征和深度特征,而MonoDETR通过备有深度交叉注意的transformer解码器使目标查询与深度特征交互,修正transformer以实现深度-觉察,从而直接从2D图像解码3D预测。

基于transformer的视图投影变得越来越流行。除了作为一个视图投影器,transformer还可以作为一个特征提取器来取代卷积主干,或者作为一个检测头来取代基于锚点的头和无锚点的头。随着在自然语言处理(NLP)中开发大型transformer模型的趋势,自主驾驶行业的研究人员也在探索大型和通用transformer的有效性,为了给感知和预测等多个任务提取强大表征。另一方面,基于transformer-解码器的检测头和基于bipartite-matching的标签分配策略已常常用于基于图像的3D检测,因为不需要NMS等后处理。

nuScenes数据集是最常用的视觉为中心感知数据集,六个标定摄像机覆盖360度水平视场。下表5显示基于transformer的视图变换方法在nuScenes目标检测基准上的结果。

当考虑密集感知任务(如道路分割)时,通常采用密集查询,因为基于稀疏查询的方法没有BEV空间的显式表示。

正如在基于深度的视图转换方法中所观察到的,时域信息对于基于transformer的方法也是至关重要的。时域融合的方法在mAP和mAVE上通常比单帧方法表现更好。

由于每个摄像机的感知范围都是一个带有径向轴的楔形,因此建议不做基于垂直轴的笛卡尔参数化,而是做基于非垂直轴的极参数化,这将是进一步研究的一个有趣方向。

交通场景的BEV表示,包括精确的位置和尺度信息,可以准确地映射到真实的物理世界,这有助于许多下游任务。同时,BEV表示还充当物理介质,为来自各种传感器、时间戳和智体的数据提供可解释的融合方式。BEV下的两个主要扩展是:

从PV-BEV变换方法导出的紧凑有效的BEV表示,对许多下游任务都很友好,例如目标检测、地图分割、预测和运动规划。共享主干网可以大大节省计算成本并提高效率。因此,一些工作试图使用统一的框架同时执行多个任务。

借助多摄像机视频的时空BEV表示,FIERY首先提出了一种在一个网络结合感知和预测的框架。StretchBEV在每个时间戳对潜变量进行采样,并估计残余变化,产生未来状态。为了减少内存开销,BEVerse设计迭代流程,有效生成未来状态,并联合推理3D检测、语义地图重建和运动预测任务。M2BEV还提出了一种基于BEV表示的多任务方法,并通过均匀深度假设简化投影过程以节省内存。

对于基于transformer的方法,为了不同感知任务,STSU和PETRv2引入和共享图像特征交互的任务特定查询。BEVFormer首先通过密集BEV查询将多视图图像投影到BEV平面上,然后在共享BEV特征图上采用不同的任务特定头,如Deformable DETR和掩码解码器,用于端到端的3D目标检测和地图分割。Ego3RT和PolarFormer也采用了类似的策略。

虽然有几项研究表明,CNN受益于与多个相关任务的联合优化,但3D目标检测和BEV分割的联合训练通常不会带来改善。检测性能通常受到影响,不同类别之间对分割性能的改善并不一致。需要更多的努力来探索不同感知任务之间的依赖关系,实现联合改进。

BEV表示为多传感器、多帧和多智体融合提供了一种方便的方法,通过利用综合信息,极大地提高了自主驾驶中的感知能力。

目前自动驾驶车辆通常配备三种传感器,包括摄像头、激光雷达和雷达,执行感知任务。不同的传感器各有优缺点,如表7所示。

摄像机拍摄的图像具有丰富的外观特征,如颜色、纹理和边缘,但对光线敏感,缺乏深度信息。激光雷达点云包含精确的深度信息和丰富的几何特征,但缺乏纹理信息。雷达的探测范围比激光雷达长,可以直接捕捉运动目标的速度,但点云非常稀疏且噪声大,难以提取形状和尺度等视觉特征。一种理想的感知解决方案是在一个网络中集成和利用这些传感器的优点,实现高质量的性能。然而,由于原始数据在表征上的巨大差异,合理有效的融合并不容易。

先前的图像和点云融合策略可分为

数据级融合和特征级融合

。前者使用标定矩阵将像素特征附加到点,反之亦然。后者在直接融合两种高维特征之前,提取PV的图像特征和3D或BEV的点云特征。随着BEV感知算法的快速发展,一种更具可解释性的图像和点云融合方法是将图像特征传输到BEV,并根据BEV上的物理对应关系融合来自两个模态数据的特征。

根据BEV下的精确融合方法,融合方法可进一步分为三类。

第一类依靠深度制导,在3D空间进行融合。根据预测深度和几何约束从图像平面采样特征来构建体素空间。无需显式摄像机投影,AutoAlign通过自监督学习自适应地对齐像素和3-D体素的语义一致性,并指导跨模态特征交互。这与AutoAlign中的全局注意不同。AutoAlignV2用确定性投影矩阵指导跨模态特征的自动对齐,并在模态之间实现稀疏采样。然后,对于每个体素,直接建立图像特征和相关点云特征之间的关系。Frustum PointNets 和 CenterFusion 也在3-D空间中进行融合处理,利用截锥(frustum)投影将检测到的2-D目标图像特征变换到相应的3-D位置,然后分别与激光雷达检测和雷达检测进行融合。

第二类方法从多模态输入中提取的BEV特征,然后融合。BEVFusion在融合阶段充分保留图像的稠密语义信息和空间几何信息,并提出一种有效的BEV池化操作来加速推理。RRF通过投影和双线性采样为图像特征定义一个3D体,连接光栅化雷达BEV图像,并降低垂直维度,最终得到BEV融合特征图。FISHINGNet将摄像机、激光雷达和雷达的特征分别转换为单一、通用、自顶向下的语义网格表示,然后将这些特征聚合为BEV的语义网格预测。

第三类BEV融合方法以3D检测任务为目标,将3D参考点初始化为查询,从所有可用模态中提取特征进行融合。FUTR3D采用基于查询的模态无关特征采样器和transformer解码器,用于传感器融合的3D目标检测;该方法可以容易地适用于任何传感器组合和设置。TransFusion用标准的3D和2D主干提取激光雷达BEV特征图和图像特征图,并依赖前者进行查询初始化。接下来,沿垂直维度压缩图像特征,然后用交叉注意将特征投影到BEV平面,与激光雷达BEV特征融合。具体来说,这种方法是面向输出的,通过注意机制自适应地学习如何融合。

除了多模态融合外,时域融合是鲁棒可靠感知系统的另一个关键组成部分,原因如下。首先,它累积连续观测值,减轻摄像机视图相关特性造成的自遮挡和外遮挡的影响,有助于检测严重遮挡的目标并生成可靠的道路图。其次,时域线索是估计目标的时域属性(如速度、加速度、转向等)的必要条件,有助于分类和运动预测。第三,虽然从单个图像进行深度估计自然是不适定和困难的,但由连续图像形成的立体几何结构为绝对深度估计提供了重要的指导和充分研究的理论基础。

考虑到时域信息在连续图像帧的好处,许多方法将原始输入信号串联起来,将图像提取的特征串联起来,或使用RNN或transformer进行视频理解,但很少采取这些步骤做3D感知。这是因为摄像头随着自车移动而改变姿态,这意味着连续PV表征没有严格的物理对应关系。PV中时域特征的直接融合,对精确3D定位带来改进是有限的。幸运的是,BEV表示法很容易转换为世界坐标系,可以作为桥梁,以物理方式融合视觉为中心的连续数据。

BEVDet4D首先基于自运动将前一帧BEV特征图warp到当前帧,这样特征放在同一坐标系中,然后沿通道维度连接对齐的特征图,馈送到检测头。这种基于级联的时域融合策略简单且可扩展,如Image2Map、FIREY和PolarFormer等。除级联外,还用对称聚合(symmetric aggregation)函数,如max、mean,组合时间打包的特征。

当运动目标在不同的时间戳有不同的网格位置,具有相同物理位置但不同时间的BEV特征可能不属于相同的目标。因此,为了更好地建立不同时间相同目标的关联,BEVFormer通过一个自注意层对特征之间的时域连接进行建模,其中当前BEV特征用作查询,而warp的前BEV特征作为 Key和Value。

PETRv2没有打包BEV特征图,而是直接在PV和3-D坐标图上执行包裹操作。它首先通过基于自运动将前帧的3D坐标转换为当前帧来生成前帧的位置编码。然后,将两帧的2-D图像特征和3-D坐标连接在一起,用于transformer解码器,其中稀疏目标查询能够与当前和以前的特征做交互获得时域信息。类似地,UniFormer将先前帧的PV特征转换为统一的虚拟视图,并使用交叉注意去融合和集成所有历史和当前特征。

上述方法都侧重于PV-BEV变换后BEV平面的时域融合。此外,虽然这些工作加入时域信息后显著提高了定位精度,但没有明确指出这种现象的理论基础。相反,DfM从时域线索在深度估计发挥作用的理论分析开始,并选择在前期阶段利用这些线索,通过更好的深度估计促进PV-BEV转换。DfM不依赖于单个图像的单目理解,而是集成来自时域相邻图像的立体几何线索。为了处理立体视觉估计方法无法处理的情况,其提出了一种单目补偿策略来自适应平衡单目估计和立体视觉估计。基于精确的深度估计,DfM然后将2D图像特征提升到3D空间,并检测其3D目标。

如表8所示,将模型从纯空间3D空间提升到时-空4D空间可显著提高整体检测性能,尤其是速度和方向预测。然而,大多数时域模型最多只利用4个先前帧,而长期历史信息在很大程度上被忽略。例如,当帧数大于4时,BEVFormer的性能开始下降,这意味着远距离信息没有得到很好的利用。

最近文献大多基于单智体系统,在处理遮挡和检测完整交通场景中的不稳定目标方面存在问题。车对车(V2V)通信技术有可能通过附近自主车辆之间广播传感器数据来提供同一场景的多视点。根据这一想法,CoBEVT首先设计了一个多智体多摄像头感知框架,该框架可以协同生成BEV地图预测。为了从多智体数据中融合摄像头特征,它首先基于自车姿态和发送者的姿态对来自其他智体的BEV特征进行几何warp,然后用一个transformer和建议的融合轴向注意机制,融合来自多智体的接收BEV特征信息。然而,由于没有多智体数据的可用真实世界数据集,因此所提出的框架仅在模拟数据集进行了验证,在真实世界的泛化能力仍然未知,需要进一步检查。

视觉为中心的感知方法通常涉及多种数据模式,并在类不平衡数据集上进行实验,因此需要各种数据增强方法,以几何关系为保证为较少标注的类提供训练技巧。此外,性能和效率之间的平衡也是一个重要问题,包括:感知分辨率、网络设计、辅助任务和训练细节。

由于始终从PV到BEV做视图转换,因此这两个视图的感知范围设置实现了性能和效率的预期折衷。近年来,随着图形卡计算能力的快速发展,PV图像分辨率和BEV网格大小显著增加。如表9所示,增加这些感知分辨率可以显著提高性能,但也会影响推理速度。尽管这些基于BEV的方法在nuScenes上取得了有希望的结果,甚至接近基于激光雷达的方法,但高输入分辨率造成的高计算负担仍然是部署的一个严重问题,值得进一步探索。

此外,这里主要考虑网格大小对BEV感知分辨率的影响,因为感知范围始终与基于激光雷达的检测器设置一致。然而,在一些实际场景中,这些常见设置是不够的,例如高速公路上的高速情况,这是另一个需要进一步研究的问题。

检测性能的另一个关键因素是不同的特征提取主干和检测头。这种方法通常缺乏足够的语义监督来理解透视图。因此,大多数方法用基于单目方法预训练的PV主干进行3D检测或深度估计。使用额外深度数据预训练的大主干可以显著提高3D检测性能。至于检测头,除了基于激光雷达检测的传统锚点3D检测头、无锚点头和CenterPoint头之外,基于transformer的方法通常使用DETR3D或Deformable-DETR头来实现完全端到端的设计。

由于在训练过程中可以利用各种数据模式,如图像、视频和激光雷达点云,设计辅助任务更好地学习表征,成为了最近研究的热点问题。除了深度估计、单目2D/3D检测和2D车道检测等经典辅助任务外,还设计了从交叉模态设置中提取知识的方案,如立体视觉学习单目和激光雷达学习立体视觉。然而,这一新趋势仍然侧重于小数据集的实验,需要大规模数据集进一步验证和开发,因为大量训练数据可能会削弱这种训练方法的益处。

首先,由于大多数方法都涉及视图转换和不同的模式,因此数据增强可以应用于PV图像和BEV网格。最近的方法通常利用三种类型的数据增强。其中,BEV网格增强对于该范式尤为重要。此外,对于类不平衡问题,与基于激光雷达的方法类似,一些方法利用CBGS来增加长尾类的样本数量。然而,针对这个问题的工作仍然很少。

我要回帖

更多关于 深度广度力度精度 的文章

 

随机推荐