本文经自动驾驶之心公众号授权转载,转载请联系出处。
写在前面&&个人理解
BEV空间中的3D检测已成为自动驾驶领域中非常流行的方法,各大公司都在抢占使用。尽管与透视法相比,BEV已有较大改进,但在现实世界的自动驾驶汽车中部署基于BEV的技术仍然具有挑战性。这主要是由于它们依赖于基于视觉transformer(ViT)的架构,该架构引入了相对于输入分辨率的二次复杂度。为了解决这个问题,BEVENet提出了一种高效的基于BEV的3D检测框架,它利用仅卷积的架构设计来规避ViT模型的限制,同时保持基于BEV方法的有效性。
BEVENet的实验表明,在NuScenes上比SOTA方法快3倍,在NuScene验证数据集上实现了0.456的mAP和0.555的NDS,推理速度为每秒47.6帧。首次实现了基于BEV方法的显著效率提高,突出了其在真实世界自动驾驶应用中的增强可行性!
聊一下目前行业应用的情况
BEV空间中的3D检测在自动驾驶研究界获得了相当大的吸引力。作为基于激光雷达方法的替代方案,使用周视相机生成伪激光雷达点已成为一种前景广阔的解决方案。因此,已经提出了许多将感知任务纳入BEV空间的方法。然而,现有的方法通常对计算要求很高,并且严重依赖于大规模数据集。虽然这些条件可以在实验室环境中满足,但它们对在真实世界中的车辆环境中实施存在相当大的障碍。
ViT模块是需要大量GPU内存消耗和矩阵运算的组件,尽管ViT架构由于其捕获全局语义信息的能力而在基于BEV的方法中被广泛使用,但需要在较多的数据集上进行训练,并且需要比卷积神经网络(CNNs)更长的训练时间,以便于模型理解像素之间的位置关系!尽管训练成本增加,但与基于CNN的模型相比,ViT在各种视觉基准上只提供了微小的改进。
ViT模型的另一个值得注意的限制是其相对于输入维度的二次复杂度,特别是输入图像的分辨率。尽管这些模型是强大的,但它们在嵌入式设备上的部署受到计算资源限制的阻碍。此外,大输入分辨率肯定受到ViT模型的青睐,然而,自动驾驶场景中的大多数物体都相对较小,因此它们的检测对ViT模型来说仍然是一个持续的挑战。
基于上述分析,建议通过研究替代方法来解决这些局限性,例如纯基于CNN的模块。BEVENet主要目标是设计一种高效的3D检测框架,该框架在受约束的硬件条件下采用BEV范式。为此,系统地分析了3D检测pipeline中的六个基本组件:主干、视图投影、深度估计、时间融合、BEV特征编码和检测头。模型复杂性和基准测试指标在分析中都被考虑在内,因为它们是神经网络模型在现实世界中部署的基本指标。
网络的设计
BEVENet的目标是设计一个高效的模型,用于在有限的硬件资源上进行部署,同时保持基于BEV的方法的精度。这里采用了一种基于 reduction based的方法,迭代地降低每个模块的复杂性。具体来说,首先通过GFlop的理论分解和复杂性分析,对NuScenes排行榜上的SOTA方法进行分解。随后,迭代地组合每个模块的备选方案,将速度作为设计选择的基准。最后,试图通过结合来自已建立的基线的最优模型调整策略来提高最终3D检测任务的性能。
如图2所示,BEVENet架构包括六个模块:具有NuImage预训练的共享backbone模型ElanNet;具有查找表的视图投影模块LSS;具有数据增强的全卷积深度估计模块;具有2秒历史信息的时间模块;具有残差block的BEV特征编码器;最后,提出了一种具有环形NMS的简化检测头。
1)Backbone部分
主干模型构成了3D检测任务的基石,利用来自六个相机的输入来提取后续任务的基本语义特征。为了缓解ViT模型带来的复杂性挑战,使用精心挑选的四个模型进行了比较研究。为了对比ViT模型与其卷积模型之间的复杂性,从每个类别中战略性地选择了两个具有代表性的模型。其中包括naive ViT、SwinT、Resnet和ElanNet。通过这项比较研究,目标是挖掘出性能最好的模型,同时坚持提高简单性和性能的目标。除了比较主干之外,还同时研究了提高模型性能的可能技术:试图减轻由来自不同来源的数据集的统计偏移引起的性能恶化(采用了对NuImage的预训练)。
2) View Projection
视图投影模块:来自2D域的相机图像沿着光线被提升到3D空间,在水平方向和垂直方向上进行投影。参考Lift Splat Shoot和BEVDet,特征投影模块预测每个像素的深度概率,根据几何相似性计算地面真实深度(图3)。
3)深度预测
引入深度估计模块来补偿由视图投影引起的depth精度噪声。该模块用自己的深度预测覆盖截头体云点深度,通过经验确定的权重对两者进行平均。该模块摄取激光雷达点和多视图图像;前者作为GT,而后者经过增强以增强预测稳健性(图4)。图像特征、相机参数和图像增强变换矩阵的融合被输入到编码层中。深度估计模块利用内参和外参来增强深度预测。在深度估计模块中,采用了与BEVDepth相同的设计,但将扩充矩阵和外部参数与内部参数一起添加作为深度估计网络的输入,MLP层也被卷积网络所取代。
4)Temporal Fusion 和BEV编码
时间融合模块旨在提高3D检测精度,主要因为模型可以利用潜在时间信息的能力。在被遮挡或遮挡的场景中,它可以根据隐藏目标过去的位置推断隐藏目标的位置。该模块设计简单,通过卷积编码器处理先前帧的累积特征图,利用前两秒跨度的特征更好地解释被遮挡物体的运动和定位。同时,BEV编码器模块充当连接伪激光雷达云和最终检测头的中间层。采用两个残差block将稀疏的激光雷达点变换为特征点的密集矩阵。BEV空间中的每个网格都是通过具有预定义分辨率的体素化生成的。
5)检测头
基于BEV功能,检测头参考了CenterPoint,将预测目标设置为包括自动驾驶场景中物体的位置、scale、方向和速度。为了与其他算法进行公平的比较,在训练阶段采用了与CenterPoint相同的设置。损失函数为:
在推理阶段,根据RepVGG将所有多分支卷积层和BN层重新参数化为级联的普通卷积网络。如图5a所示,检测头包括几个并行卷积神经网络,这种结构可以通过合并卷积层和BN层来简化。如图5c所示,ResNet-like架构等效于没有skip连接或1x1卷积的普通卷积神经网络。identity 模块可以直接添加到输出特征图中,而无需任何特殊操作。同时,通过对批量输入的平均值和标准方差进行数学求和,可以将BN层与卷积层相结合。通过重新参数化简化检测头的图示。与原始检测头相比,通过输出节点的值对其进行数学组合,这将产生相同的结果,但乘法运算较少。
实验对比
数据集和评估指标:BEVENet使用NuScenes基准数据集进行评估,包括通过六个摄像头和一个激光雷达传感器拍摄的1000个驾驶场景。该数据集标注了51.2米地平面内的10个类别,用于3D检测任务。性能评估利用了官方的NuScenes指标,即平均平均精度(mAP)、平均平移误差(ATE)、平均尺度误差(ASE)、平均方位误差(AOE)、平均速度误差(AVE)、均值属性误差(AAE)和NuScenes-Detection Scores(NDS),以及以效率为导向的指标,即每秒帧数(FPS)和GFlops。前者测量NVIDIA A100 GPU上的性能,不包括预处理和后处理时间,而后者使用MMDetection3D工具包。
数据处理:数据处理采用了类似于BEVDet的方法,针对NuScenes数据集的特定需求量身定制,该数据集的原始分辨率为1600×900。在预处理过程中,将其重新缩放到704×256。关键帧变换包括随机翻转、缩放、裁剪、旋转和复制粘贴机制,以解决目标分布中的任何倾斜问题。这些增强操作在数学上被转换为变换矩阵。类均衡分组和采样(CBGS)与复制粘贴机制相结合,在训练过程中应用,遵循CenterPoint的方法。在测试阶段,只缩放图像,但不裁剪图像以与模型的输入尺寸对齐。
在NuScenes排行榜上选择了11种SOTA方法作为基线:BEVFormer、BEVDet、BEVDet4D、BEVDepth、PETR、PGD、FCOS3D、DETR3D、CAPE、SoloFusion和TiGBEV。从表I中,可以看到,与SOTA方法相比,BEVENet在各种性能指标上都取得了显著改进。BEVENet的图像大小为704x256,在161.42的最低GFlop下,其计算效率优于所有其他模型。这反映了BEVENet的资源效率,使其特别适合在硬件受限的环境中进行部署。在FPS方面,BEVENet也以47.6的帧速率表现出色。至于其他核心性能指标,BEVENet的mAP为45.6,NDS为55.5,再次成为所有中最高的。
消融实验:
上面的部分展示了模型的最佳性能,与其他SOTA模型并列。下面将介绍通过复杂性分析确定最终设计中出现的模块的分析过程。考虑到不同模块配置的不同结果,提出了决策背后的基本原理。为了启动分析,首先为BEVENet的六个主要模块中的每一个提出了六个SOTA基线配置,如图2所示。这些基线配置是ResNet50、LSS、原始BEVDepth、具有视觉tarnsformer模型的BEV编码器、设置为8秒的时间融合窗口和利用具有Scale NMS的CenterHead的检测头。这些基线配置在表III中用粗体突出显示。将把用于复杂性分析的初始BEVENet称为BEVENet基线,以将其与最终提出的BEVENet区分开来。对这些基线的添加标记为“+”。六个模块的消融实验分析如下:
在分析不同的主干模型时,仔细检查了ViT、SwinTransformer、ResNet和ELanNet,每个模型都有相似的参数计数,以便进行公正的比较。从ResNet50作为基线开始,根据表III(a),FPS为27.4,mAP为39.3,NDS为45.9,发现ViT在17.9的FPS中表现不佳,Swin-T与ResNet50不相上下,ELanNet在30.2的FPS中更出色。用NuImage预训练增强ELanNet显著提高了性能,将FPS提高到30.3,同时将mAP和NDS分别提高到42.0和50.1。因此,为提高推理效率而设计的ELanNet在这项任务中超过了ViT、Swin Transformer和ResNet50。
视图投影模块的功能是2D到3D转换的关键,它在各种配置中进行了检查,ElanNet将NuImage预训练作为主干。如表III(b)所示,尽管LSS、Transformer和MLP方法之间的FPS、mAP和NDS差异最小,但LSS通过预先计算的图像到点云转换矩阵,将FPS显著提高到34.9,验证了其对视图投影的有效性。同时,对投影后深度优化至关重要的深度估计模块进行了检查。
图6最初反映了BEVDepth结构,显示了其10.9%的巨大复杂性贡献。因此MLP层被2层残差block代替,最低限度的重新设计将FPS提高了近一个点,将mAP提高了两个点(表III(c))。此外,通过集成图像增强矩阵进一步增强了它。
在一系列时间窗口长度上对时间融合模块进行了评估,该模块对高遮挡环境中的有效推理和速度估计细化至关重要。如表III(d)所示,将间隔从“8秒”缩短到“2秒”,FPS适度提高0.6,而不会对mAP或NDS得分造成明显损害。同时,BEV编码器模块作为时间合并特征和检测头之间的联络,出乎意料地将FPS增强了两帧,尽管其复杂性适中,如图6所示。从Transformer作为基线开始,对MLP和残差块替换进行了实验。表III(e)证明了残差block的卓越性能,将FPS提高到38.8。
原文链接:https://mp.weixin.qq.com/s/kEW9DvtmHC7x9VuTLpzMXg