NeurIPS 2022 | Fast-BEV:一种基于CNN的实时车载BEV感知方法

作者 | 派派星  编辑 | CVHub

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【BEV感知】技术交流群

后台回复【3D检测综述】获取最新基于点云/BEV/图像的3D检测综述!

ad074c9a68b72ead84d737e6509bac27.png

Paper: https://arxiv.org/pdf/2301.07870.pdf
Code: https://github.com/Sense-GVT/Fast-BEV

导读

近年来,基于纯相机的鸟瞰图(BEV)感知技术已经可以不需要昂贵的激光雷达传感器,使其成为经济自动驾驶的可行解决方案。然而,大多数现有的BEV解决方案要么表现不佳,要么需要大量资源来执行车载推理。本文提出了一种简单而有效的框架,称为Fast-BEV,它能够在车载芯片上实时执行BEV感知。为了达到这个目标,我们首先通过实验发现BEV表示可以在不使用昂贵的视图变换或深度表示的情况下足够强大。我们将BEV 作为Baseline,然后进一步引入(1)用于图像和BEV空间的强大数据增强策略以避免过度拟合(2)多帧特征融合机制以利用时间信息(3)优化的部署友好视图变换以加速推理。 通过大量的实验分析,我们证明了Fast-BEV模型家族在边缘上的精度和效率都很高。 特别地,我们的M1模型(R18@256×704)可以在Tesla T4平台上以50FPS的速度运行,在nuScenes验证集上的NDS为47.0%。我们最大的模型(R101@900x1600)在nuScenes验证集上达到了53.5%的新的NDS状态。

引言

e8176f9cc3fd36669a580bb456f3c728.png
Fast-BEV架构概述与性能对比

精确的3D感知系统对自动驾驶来说是至关重要的。经典方法依赖于激光雷达点云提供的精确3D信息。然而,激光雷达传感器通常需要数千美元,这极大地阻碍了它们在中低端车辆上的应用。近年来,基于纯相机的鸟瞰图(BEV)方法已经显示出了极大的潜力,因为它们具有令人印象深刻的3D感知能力和经济成本。

为了从2D图像特征中进行3D感知,nuScenes上最先进的BEV方法要么使用基于隐式/显式深度的投影,要么使用基于Transformer的投影。然而,它们难以在车载芯片上部署:(1)使用深度分布预测的方法通常需要多线程CUDA内核来加速推理,这在资源受限或不支持推理库的芯片上很难操作。(2)。Transformer内部的注意机制需要专用芯片来支持。此外,它们在推理上需要消耗大量时间,实际部署的压力很大。我们目标是设计一个精度高、速度快以及部署友好的BEV感知框架。

基于对上述难点的观察,我们选择遵循BEV的原则,该原则假设在图像到BEV视图变换过程中,沿着相机光线的深度分布是均匀的。为此,我们提出了Fast-BEV,这是一种更强、更快的全卷积BEV感知框架,无需使用昂贵的视图变换器或深度表示。我们首先通过在BEV框架中实现两种训练技术来验证它们的有效性,即强数据增强和时间融合。更具体地说,在图像和BEV空间上应用额外的数据增强可以避免过拟合,从而获得更好的性能。我们还通过引入时间特征融合模块,将BEV从空间域扩展到时空域,使当前关键帧能够利用历史帧的信息。在集成这两种训练技术后,我们的Fast-BEV可以达到与最先进方法相相近的性能。

Fast-BEV继承了BEV的图像到BEV变换。尽管它已经很快了,但我们通过实验证明它可以进一步优化车载平台。我们发现从图像空间到体素空间的投影是延迟的主要原因。具体来说,BEV首先计算每个相机视图的2D到3D投影索引。投影后,它需要聚合所有视图的体素特征。我们发现每一步都可以显著加速。首先是投影索引,由于相机位置和它们的固有/外部参数在建立感知系统时是固定的,我们不需要为每次迭代计算相同的索引。因此,我们提出预先计算固定的投影索引并将其存储为静态查找表,这在推理阶段非常高效。其次,对于体素聚合,我们观察到体素特征非常稀疏,例如,对于6视图数据集,仅有大约17%的位置为非零。这是因为每个体素特征只具有一个相机的信息。我们建议生成一个密集的体素特征以避免昂贵的体素聚合。具体来说,我们让所有相机视图的图像特征投影到相同的体素特征。结合这两种加速设计,我们可以将原始BEV的速度提升了一个数量级。

本文提出的Fast-BEV模型家族表现出色,可以在车载平台上轻松部署。在nuScenes数据集上,我们的M1模型(R18@256×704)可以在Tesla T4平台上以超过50FPS的速度运行,并具有可观的46.9% NDS性能我们的最大模型(R101@900x1600)在nuScenes验证集上创造了新的53.5% NDS状态。总之,我们的贡献如下:

  • 我们在BEV上验证了两种技术的有效性:强数据增强和多帧时间融合,使Fast-BEV达到最先进的性能。

  • 我们提出了两种加速设计:预先计算投影索引并将其投影到相同的体素特征,使Fast-BEV可以在车载芯片上轻松部署,并具有快速的推理速度。

  • 本文所提出的Fast-BEV是针对实时车载BEV感知的首个部署导向工作。希望我们的工作能为工业级别的实时车载BEV感知算法提供启发。

方法

992dfbcaeea61054abdf65db504150b7.png
Fast-BEV架构图

重新审视BEV

BEV是第一个使用统一BEV表示解决多相机多任务感知问题的工作之一。它在车载平台上的应用也更为广泛,因为它没有昂贵的视图变换器或深度表示。正如上图顶部所示,BEV的输入是多相机RGB图像,输出是预测的3D边界框(包括速度)和地图分割结果。BEV有四个关键模块:(1)2D图像编码器,从多相机图像中提取图像特征(2)图像到BEV(2D→3D)视图变换模块,将2D图像特征映射到3D BEV空间(3)3D BEV编码器,处理3D特征,(4)任务特定的头部进行感知任务,例如3D检测。

Fast-BEV的整体架构

尽管BEV可以取得有竞争力的性能,但我们发现它的性能和效率可以进一步提高。正如上图底部所示,我们将三种技术整合到BEV中,从而形成我们更强大,更快的Fast-BEV。

  1. 数据增强。我们经验性地观察到,在BEV的后期训练时期发生了严重的过拟合问题。这是因为原始BEV中没有使用数据增强。受到最近工作的启发,我们在图像和BEV空间中添加强大的3D增强,如随机翻转,旋转等。

  2. 时间融合。在真实的自动驾驶场景中,输入是时间上连续的,并且在时间上具有巨大的互补信息。例如,当前帧中部分遮挡的行人可能在过去的几帧中完全可见。因此,我们通过引入时间特征融合模块,将BEV从空间域扩展到时空域。具体来说,我们使用当前帧BEV特征和存储的历史帧特征作为输入,以端到端的方式训练Fast-BEV。

  3. 优化视图变换。我们发现从图像空间到体素空间的投影占用了大量的时间。我们从两个角度对投影进行优化:(1)我们预先计算固定的投影索引并将其存储为静态查找表,这在推理期间非常高效。(2)我们让所有相机投影到相同的体素上以避免昂贵的体素聚合。我们的方案与基于Lift-Splat-Shoot的改进视图变换方案不同,它不需要开发繁琐困难的DSP/GPU并行计算,它足够快仅使用CPU计算,非常适合部署。

这些改进使我们提出的管道Fast-BEV成为了一种SOTA方法,同时保持了其在车载平台上的简洁性。

数据增强

475a19c7a36cbee75d87a163f3de005a.png
Fast-BEV中使用的数据增强示意图

受到了BEVDet工作的启发,我们为Fast-BEV在图像空间和BEV空间中均加入了数据增强。

图像增强

3D 目标检测中的数据增强比 2D 检测更具挑战性,因为 3D 场景中的图像与 3D 相机坐标有直接关系。因此,如果我们在图像上应用数据增强,我们还需要更改相机内参矩阵。对于增强操作,我们基本上遵循常用操作,例如翻转,裁剪和旋转。上图左部展示了一些图像增强的示例。

BEV增强

与图像增强类似,可以在BEV空间上应用类似的操作,如翻转,缩放和旋转。请注意,应在BEV特征图和3D基础真值框上同时应用增强变换,以保持一致性。BEV增强变换可以通过相应地修改相机外参矩阵来控制。上图右部展示了随机旋转增强,这是一种BEV增强。

多帧特征融合

583072499d4a3c85264738521676bd2e.png
时序多帧特征融合模块

受 BEVDet4D 和 BEV- Former 的启发,我们还将历史帧引入当前帧进行时间特征融合。我们在这里使用三个历史关键帧采样当前帧,其中每个关键帧的间隔为0.5秒。我们采用了 BEVDet4D 中的多帧特征对齐方法。如上图所示,在获得四个对齐的BEV特征后,我们直接将它们连接起来并将它们馈送到3D编码器中。在训练阶段,历史帧特征是使用图像编码器在线提取的。在推理阶段,可以将历史帧特征离线保存并直接取出以达到加速效果。

与BEVDet4D和BEVFormer相比,BEVDet4D仅引入了一帧历史帧,我们认为这不足以利用历史信息。通过使用了三帧历史帧,Fast-BEV的性能得到了显著提升。BEVFormer通过使用两帧历史帧略好于BEVDet4D。然而,由于内存问题,在训练阶段,历史特征是没有梯度的,这会导致网络无法进行全面的学习。此外,BEVFormer使用RNN样式连续融合特征,这是一种低效的操作。相比之下,Fast-BEV中的所有帧都以端到端的方式进行训练,对于普通GPU来说更友好。

优化视图变换

d490d4c4a792233f8e539f300de6e4e6.png
M2BEV和Fast-BEV的体素聚合性能对比

视图变换是将2D图像空间的特征转换为3D BEV空间的关键组件,在整个pipeline中通常会花费大量时间。Lift-Splat-Shoot 是视图变换的经典方法。尽管目前已经有高级GPU设备(例如NVIDIA Tesla A100,V100)为其提出了一些加速技术,但这种优化并不能轻易地转移到其他设备,如边缘芯片。另一类视图变换是BEV,其假设深度分布沿着射线均匀。该变换的优点是,一旦我们获得了相机的内外参数,就可以轻松地知道2D到3D投影。此外,由于这里没有使用可学习参数,我们可以轻松地计算2D特征图和BEV特征图之间点的相应矩阵。因此,我们遵循BEV的投影方法,并进一步从两个角度加速它:预先计算投影索引和密集体素特征生成。

投影索引是从2D图像空间到3D体素空间的映射索引。因为我们的方法不依赖于数据相关的深度预测或变换器,所以投影索引对于每个输入都是相同的。因此,我们可以预先计算固定的投影索引并存储它。在推理阶段,我们可以通过查询查询表获得投影索引,这在边缘设备上是非常“便宜”的操作。此外,如果我们从单帧扩展到多帧,我们也可以轻松预先计算内在和外在参数并将其预先对齐到当前帧。

我们发现,BEV会为每个相机视图存储一个体素特征,然后将它们聚合起来生成最终的体素特征(可参考上图)。由于每个相机只有有限的视角,所以每个体素特征非常稀疏,例如,只有约17%的位置是非零的。我们发现这些体素特征的聚合非常昂贵,因为它们的大小非常大。我们提出生成一个密集的体素特征来避免昂贵的体素聚合。具体来说,我们让所有相机视图的图像特征投影到同一个体素特征上,最终得到一个密集的体素。

实验

aeae49db1989fac9e6610d223f46ec10.png
Latency profiling for view transformation of different methods

上表列出了四种不同方法的视图变换延迟结果对比:

  • BEVDepth 在GPU上延迟最小,但它需要专用的硬件支持;

  • 与BEV相比,Fast-BEV在CPU上实现了数量级的性能加速。

fe0f03e30bc567ca90f9c2fe9664499f.png
Comparison on the nuScenes val set

上表列出了SOTA方法在nuScenes验证集上的性能对比:

  • 与现有先进方法相比,Fast-BEV在mAP和NDS指标上表现优越。例如,使用ResNet-50作为骨干网络,Fast-BEV达到0.346 mAP和0.477 NDS,显着优于BEVDet4D-Tiny (0.323 mAP和0.453 NDS)。

  • Fast-BEV超过了其他具有更大输入分辨率的方法,如PETR-R50 (0.313 mAP和0.381 NDS)。

  • 在使用更大的骨干网络ResNet-101和更高的图像分辨率情况下,Fast-BEV获得了最高的0.535 NDS,超过了没有深度/激光雷达监督的BEVDet4D-Base 0.515 NDS和BEVFormer-R101 0.517 NDS。

3d0ea28e949b63efe48901082de7bc9b.png
The modular design of the serial models denoted as M0-4 are presented

上表列出了在不同的控制变量下的模型性能对比(2D编码器、图像分辨率、体素分辨率和3D编码器):

  • M1模型(R18@256×704)可以在Tesla T4平台上达到50FPS的帧率,在nuScenes验证集上的NDS值为0.470。

  • 当2D编码器从R18增大到R50时,图像分辨率从250×704增加到384×1056,此部分的延迟增加了近3倍。

  • 当体素分辨率从200×200×4增加到300×300×6,3D编码器从2b-192c增大到6b-256c时,视图变换和3D编码器的延迟显着增加了近4倍和5倍。

baaaa15c30e231463c963597227c353b.png

上表列出了多种消融实验对比结果:

  • 数据增强(表4):无论单独使用图像增强还是BEV增强都能显著提高性能。对于图像增强,mAP和NDS分别增加了3.8%和2.8%。对于BEV增强,mAP和NDS分别增加了1.8%和2.3%。当两种增强结合使用时,mAP和NDS可以进一步提高4.6%和4.4%。

  • 多帧特征融合(表5):当增加一个历史帧时,mAP和NDS显著提高了2.8%和7.8%。当进一步增加到四个历史帧时,mAP和NDS继续提高了3.0%和9.3%。

  • 分辨率(表6,表7):Fast-BEV在832×1440输入图像尺寸时达到了49.1%的最佳NDS值。将图像分辨率固定为384×1056,体素分辨率为200 × 200 × 6时对3D检测有很好的效果,并且增加空间平面或高度维度的分辨率并不能提高性能。

  • 2D/3D 编码器(表9):当编码器从ResNet-18增大到ResNet-101时,mAP和NDS分别增加了5%和4%。就3D编码器而言,当编码器从2块增大到6块时,检测任务的mAP和NDS分别增加了0.1%和0.5%。2D编码器的规模对性能的影响比3D编码器大。

  • 训练轮数(表8):Baseline和Fast-BEV在第24轮和第48轮分别达到了33.8%和45.1%的最佳NDS值。Fast-BEV的上限要高于Baseline,并且Fast-BEV需要更多的训练轮数才能取得更好的结果,这是由于强大的数据增强和时间特征融合。

总结

本文提出了一种更强大,更快的全卷积BEV感知框架Fast-BEV,该框架能轻松部署在车载系统。与BEV基线相比,Fast-BEV引入了强大的3D增强和时间特征信息,极大地提升了模型性能。 此外,我们还优化了视图转换,使其更适合部署。具体地,我们建议预先计算投影索引,并让所有相机投影到相同密度的体素。最后,我们希望Fast-BEV能够照亮车载BEV感知系统在工业界落地的前程。

33fafcd807a9c0417a50e7ef22c621c6.png

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、硬件配置、AI求职交流等方向;

91b6397562537c53b38b5acf54f7e1cd.jpeg

添加汽车人助理微信邀请入群

备注:学校/公司+方向+昵称

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值