EFFOcc
约 5413 字大约 18 分钟
2025-05-07
https://github.com/synsin0/EFFOcc
摘要
本文提出了一种高效的占用学习框架EFFOcc,旨在从最小化的标签中学习高效的3D占用网络(OccNets),以实现自动驾驶中的高效3D占用预测。现有的OccNets计算复杂且对标签需求大,通常依赖于复杂的3D卷积模块或变换器,并需要大规模密集的体素标签进行监督。这使得OccNets难以在车载设备上部署。我们的主要贡献包括:
提出了一种高效的融合式OccNet,仅使用简单的2D操作符,并在三个大规模基准测试(Occ3D-nuScenes、Occ3D-Waymo和OpenOccupancy-nuScenes)上达到了最先进的精度。以ResNet-18作为图像主干网络的融合模型在Occ3D-nuScenes基准测试中,拥有2135万参数,平均交并比(mIoU)达到51.49。
提出了一种多阶段的占用导向型知识蒸馏方法,将融合式OccNet的知识高效地转移到仅依赖视觉的OccNet中。在仅使用40%标记序列进行训练的情况下,通过从融合式OccNet蒸馏,我们的视觉OccNet能够达到94.38%的性能(mIoU = 28.38),而完全标记的视觉OccNet的mIoU为30.07。
我们在nuScenes和Waymo Open Dataset两个大规模数据集上的三个公共基准测试中验证了我们的模型,并展示了其有效性。代码将发布在https://github.com/synsin0/EFFOcc。
I. 引言
自动驾驶感知需要对环境进行全面理解。常见的以目标为中心的处理流程(包括检测、跟踪和预测)将障碍物表示为边界框。这些流程难以处理超长、形状不规则的物体。近年来,占用网格在自动驾驶感知中重新受到关注。特斯拉开创性地将占用网格地图(OGM)扩展到占用网络(OccNet)。特斯拉的视觉占用网络利用深度学习技术将视觉特征投影到3D体素中,并解码出包括占用、语义和运动流在内的多种信息。尽管视觉占用网络近期取得了成功,但它们通常需要大量标注数据才能达到高精度。由于占用标注是基于点云分割和目标检测标注的次级标注,我们通常会自动标注整个连续场景。因此,我们需要使用场景作为最小单元来进行高效学习。我们希望用最少的场景来训练OccNet,使其尽可能准确。我们发现,激光雷达-摄像头融合占用网络更适合拟合少量标注数据。我们提出从融合式教师模型中提取占用知识,并将其迁移到仅依赖视觉的学生模型中,同时使用少量标注数据和其他未标注数据。我们相信,知识蒸馏有助于提升仅依赖视觉的OccNet的性能,尤其是对于未标注数据。在知识蒸馏过程中,我们首先将教师模型的占用结果分解为三个子区域:前景、背景和空区域。然后,这些区域掩码既适用于鸟瞰图(BEV),也适用于3D区域。我们在教师模型和仅依赖视觉的学生模型之间进行了BEV区域和3D区域的特征蒸馏。图1展示了在不同数据规模下蒸馏的优势。总结来说,我们的贡献如下:
- 我们提出了一个高效的占用学习框架EFFOcc,能够高效且有效地训练融合式和仅依赖视觉的OccNet。我们提供了一个用于激光雷达-摄像头融合的简单融合式OccNet,并讨论了如何通过轻量级设计提升融合模型的性能。
- 我们提出了一种多阶段的占用导向型蒸馏方法,通过融合式教师模型蒸馏出一个实时的仅依赖视觉的占用网络,并在与其他实时视觉OccNet相比时,使用更少的标签获得了具有竞争力的性能。
- 我们在nuScenes和Waymo Open Dataset两个大规模数据集上的三个公共基准测试中验证了我们的模型,并展示了其有效性。
II. 相关工作
A. 高效占用网络
3D占用网络(OccNets)通过均匀划分3D体素来描述世界。OccNets能够在遮挡下准确重建一般物体,但它们通常会给车载部署带来巨大的计算负担。为了减少3D体素计算量,人们提出了不同的方法。PanoOcc在每一层中用稀疏卷积替换3D卷积操作符,同时预测非空体素的占用率,并删除预测为空的体素以保持稀疏性。FlashOcc和FastOcc提出了高效的通道到高度的映射,避免了复杂的3D卷积计算。南京大学的SparseOcc提出了一个完全稀疏的模型,利用几何稀疏性和稀疏实例查询来适应目标稀疏性,并使用掩码变换器。上海交通大学的SparseOcc在基于几何的视图变换后移除空体素,并在之后使用稀疏卷积操作符。此外,还提出了一个稀疏潜在扩散器,用于扩散与被占用体素相邻的空体素。他们实现了显著的74.9%的FLOPs减少。大多数计算高效的网络设计都是为了仅依赖视觉的OccNets,而EFFOcc首次探索了在少量标签训练下表现良好的高效融合网络。
B. 自动驾驶感知中的知识蒸馏
知识蒸馏是一种学习技术,旨在将大型复杂教师模型的知识转移到小型学生模型中。知识蒸馏广泛应用于从教师模型(例如基于激光雷达或融合式检测器)学习视觉鸟瞰图检测。然而,与检测任务相比,占用任务更具挑战性,因为占用预测存在更严重的类别不平衡,不仅存在于前景目标之间,还存在于背景元素之间。因此,当前基于视觉的占用网络在前景障碍物的准确性上较低。为了在体素特征之间进行蒸馏,RadOcc将神经渲染应用于图像平面,作为蒸馏中体素特征的辅助监督。与以往的研究相比,EFFOcc提出了一个半监督的知识蒸馏问题:在有限的标签和足够的数据下,EFFOcc提出从标记和未标记样本中提取教师模型的特征。
III. 方法论
A. 3D占用预测任务的表述
占用预测任务被表述为构建一个具有固定感知范围和分辨率的语义3D占用网格。传感器信息来自环视摄像头和360度激光雷达。每个体素网格由语义类别表示。
B. 架构
EFFOcc的框架如图2所示。总体目标是从模型中心的角度最小化网络和训练成本。第III-C节介绍了仅使用2D操作符的轻量级融合网络设计。第III-D节使用融合式OccNet作为教师模型,并将教师模型的占用结果作为感兴趣区域。我们提出的区域分解蒸馏方法通过不同的标签比例提升了仅依赖视觉的OccNet的性能。
C. 轻量级融合网络
我们的设计目标是在尽可能少的网络参数下实现类似的准确性。我们从OpenOccupancy中介绍的体素级密集融合方法开始。它包括一个视觉分支、一个点云分支、一个由3D卷积操作符支持的自适应体素融合模块,以及一个多尺度分割头,采用粗到细的查询。我们将每个模块替换为轻量级版本,而不损失性能精度。我们移除了OpenOccupancy激光雷达分支上的3D CNN,将所有占用池化和Conv3D占用编码器替换为BEVpoolv2和Conv2D BEV编码器,将体素融合层替换为BEV融合层。此外,该模型仅使用单尺度特征图和单阶段粗预测。我们的网络与体素级密集融合方法的比较如图3所示。对于点云分支,我们使用平均特征编码作为体素特征编码(VFE)层,并使用下采样步长为8的Spconv8x作为激光雷达编码器。然后将稀疏的3D特征投影到BEV特征中。对于图像分支,我们使用图像编码器,并采用BEVpoolv2作为视图投影器,以加速从透视图到BEV的转换。我们采用简单的Conv2d操作符作为融合层。在融合层之后,我们使用轻量级的SECOND和SECOND FPN作为BEV,以更多地受益于检测预训练。占用头由两个Conv2d层组成,高度通道从特征通道中分离出来,用于最终的3D输出。
我们使用了以往工作中的损失函数。它们是交叉熵损失L_ce、Lovász-softmax损失L_ls、几何亲和力损失L_geo_scal和语义亲和力损失L_sem_scal。对于Occ3D-Waymo的情况,我们使用在线难例挖掘(OHEM)损失。Lovász-softmax损失和亲和力损失消耗更多的GPU内存,并在OpenOccupancy基准测试中显著提升性能,但在Occ3D基准测试中帮助较小(在mIoU上小于1.0)。在Occ3D-nuScenes基准测试的大多数实验中,除非特别提到,我们仅使用交叉熵损失以节省训练阶段的GPU内存。总损失L_total是每个损失的加权和:
L_total = w_ce * L_ce + w_ls * L_ls + w_geo * L_geo_scal + w_sem * L_sem_scal
我们设置所有权重w_ce = w_ls = w_geo = w_sem = 1。
D. 多阶段占用蒸馏 蒸馏过程将融合式OccNet的知识转移,以提升仅依赖视觉的OccNet的性能。我们首先进行简单的蒸馏,仅在鸟瞰图(BEV)特征之间进行全空间特征对齐,但未能提升准确性。一个可能的原因是,占用网络需要同时处理前景、背景和空旷的周围环境,同时面临更严重的不平衡语义分布。我们对BEV特征图的统计发现,不到1%的柱子包含前景目标,大约40%的柱子包含背景,其余的柱子都是空的。我们设计了蒸馏策略,使其更多地关注前景体素。受到BEV检测器多阶段蒸馏实践的启发,我们在BEV空间和3D空间中进行蒸馏。我们将教师模型预测的前景、背景和空区域进行分解,并将区域输入到BEV空间和3D空间中。教师模型F_t和学生模型F_s之间的BEV特征L_d_bev和3D特征L_d_occ的蒸馏损失为:
L_d_bev = ∑{i∈{f,b,e}} (w_i / |S_i|) ∑ ∑_{y} S_i(x,y) * (F_t(x,y) - F_s(x,y))^2
L_d_occ = ∑{i∈{f,b,e}} (w_i / |S_i|) ∑ ∑{y} ∑ S_i(x,y,z) * (1 - cos(F_t(x,y,z) - F_s(x,y,z)))
L_distill = w_bev * L_d_bev + w_occ * L_d_occ
其中,前景区域掩码S_f、背景区域掩码S_b和空区域掩码S_e具有区域权重w_f、w_b、w_e。x、y、z表示BEV或3D特征图上的坐标索引。所有区域掩码均为二进制。W、L、H是3D特征图的宽度、长度和高度。|S_f|是前景区域网格的总和。我们经验性地设置w_f = w_b = w_e = 1,以平均三个区域的权重。我们为BEV特征图计算均方误差(MSE)损失,为3D特征图计算余弦相似性损失。最终的蒸馏损失L_distill是BEV L_d_bev和3D空间L_d_occ的蒸馏损失的加权(w_bev和w_occ)和。当输入数据被标记时,仅依赖视觉的学生网络使用蒸馏损失和分类损失的总和进行训练;当输入数据未标记时,仅使用蒸馏损失进行训练。
IV. 实验
A. 数据集和评估指标
我们在三个流行的占用基准测试中验证了我们的模型:Occ3D-nuScenes、Occ3D-Waymo和OpenOccupancy-nuScenes。所有基准测试中用于预测3D占用的主要评估指标是所有语义类别的平均交并比(mIoU)。设C为类别数量,其中TP_c、FP_c和FN_c分别对应于类别c_i的真正例、假正例和假负例的数量。
mIoU = (1/C) ∑_{c=1}^{C} (TP_c / (TP_c + FP_c + FN_c))
Occ3D-nuScenes是基于大规模公开可用的nuScenes数据集构建的。该数据集包含700个训练场景、150个验证场景和150个测试场景,每个场景的关键帧速率为2Hz。车辆的传感器配置包括6个环视摄像头,分辨率为1600×900,以及安装在车顶的一个32线激光雷达。Occ3D-nuScenes中有17个语义类别,包括一般目标类别。Occ3D-Waymo是基于大规模公开可用的Waymo Open Dataset构建的。该数据集包含1000个序列,其中798个分配给训练集,其余202个用于验证。真值标签以10Hz的频率进行标注。车辆的传感器配置包括5个环视摄像头,分辨率为1920×1280或1920×1080,以及5个激光雷达。Occ3D-Waymo中有15个语义类别,包括一般目标类别。对于这两个数据集,Occ3D将周围世界划分为3D体素网格,分辨率为[200, 200, 16],感知范围为[-40m, -40m, -5m, 40m, 40m, 3m],体素大小设置为0.4m。OpenOccupancy-nuScenes也是基于nuScenes数据集构建的。该基准测试比Occ3D-nuScenes更具挑战性,因为它需要更大的感知范围[-51.2m, -51.2m, -5m, 51.2m, 51.2m, 3m]和更精细的分辨率[512, 512, 40],体素大小设置为0.2m。在语义类别方面,OpenOccupancy忽略了一般目标类别,仅包含16个语义类别。
B. 实现细节
数据预处理:在训练和推理阶段,我们首先加载多视图图像及其相机参数,然后对每个输入图像进行归一化、填充和多尺度翻转以进行图像增强。我们聚合多扫面激光雷达点云,并对点云和体素标签进行随机翻转以进行BEV增强。我们没有使用任何测试时增强技术。我们在训练阶段使用Occ3D基准测试的相机掩码。
训练和推理:我们的代码基于MMDetection3D版本1.0.0rc4。实验在8个2080TI GPU或4个A6000 GPU上进行,总批量大小为16。我们使用AdamW优化器,学习率为0.0001,权重衰减为0.01。我们使用指数移动平均(EMA)钩子以提高准确性。我们在推理阶段将批量大小设置为1。推理速度通过单个A6000 GPU测量。
C. 有限标签下的高效学习结果
表I展示了OccNet的总体高效学习性能。我们分别使用不同比例的数据来训练融合式和仅依赖视觉的网络。在此设置中,为了展示数据的效率,我们没有使用任何检测网络的预训练权重,因为检测网络是使用所有数据训练的。我们可以清楚地看到,当训练数据非常有限时,融合网络仅使用相对较少的标注就能达到相当的性能,但仅依赖视觉的网络性能较低。我们的蒸馏方法非常高效。在仅使用40%标注序列进行训练的情况下,我们实现了92.44%的性能(mIoU = 28.38),而使用100%标注训练的视觉网络的mIoU为30.07。使用80%的标注数据时,经过蒸馏的OccNet比100%标注的视觉OccNet高出1.04 mIoU。
D. 提出的融合式占用网络的结果
- Occ3D-nuScenes上的结果:表II展示了Occ3D-nuScenes验证集上的结果。基线是基于视觉的最先进的模型以及RadOcc的教师模型RadOcc-LC。我们的激光雷达模型与基于Swin-B的视觉模型相比,性能仅差0.09 mIoU,但运行速度显著更快。EFFOcc-B采用了三种额外的损失函数,与仅使用交叉熵损失训练的模型相比,提升了1.17 mIoU。然而,使用多种损失函数进行训练会使训练时间翻倍。因此,我们尝试将训练周期延长至48个epoch,并从头开始训练模型,模型性能提升至51.49 mIoU,比RadOcc-LC高出2.11 mIoU。我们的实践表明,检测预训练和更长的训练周期有助于实现融合式OccNet的最先进性能。
我们进一步扩展图像主干网络,并训练了使用ResNet50和SwinTransformer-Base作为图像主干网络的EFFOcc-R50和EFFOcc-Swin-B。当使用参数更多的图像主干网络时,模型性能进一步提升。EFFOcc-R50使用256×704的图像大小,而EFFOcc-Swin-B使用512×1408的图像大小。EFFOcc-Swin-B比RadOcc-LC实现了显著的+4.70 mIoU增益。我们在图4中比较了融合式基线模型和我们模型的模型参数和运行速度。我们的模型是一个高度计算高效的占用网络,在类似的mIoU精度下,模型参数减少了80%以上,加速了18倍。
Occ3D-Waymo上的结果:表III展示了Occ3D-Waymo验证集上的结果。为了与视觉模型的评估保持一致,我们仅评估对相机可见的体素。为了在较小的数据规模上快速验证,我们遵循Occ3D的实践,使用20%的训练数据训练每个模型8个epoch。激光雷达模型的mIoU精度是视觉方法的两倍多,这主要是因为Waymo的激光雷达比nuScenes的32线激光雷达要强大得多。在激光雷达模型中添加轻量级图像分支可以使性能合理提升+1.90 mIoU。如果模型在100%的数据上训练24个epoch,总共使用150k训练样本,激光雷达模型比融合模型高出0.76 mIoU。图像分支导致精度下降的异常现象可能是由于激光雷达特征网络的充分训练、视觉覆盖不完整以及激光雷达和视觉之间的冲突。
OpenOccupancy-nuScenes上的结果:表IV展示了OpenOccupancy-nuScenes验证集上的结果。我们的模型比其他模型更轻量级,因为我们使用ResNet-18作为图像主干网络,图像大小为256×704,而其他模型使用ResNet-50和896×1600的图像大小。与其他激光雷达-摄像头融合OccNet相比,我们实现了最佳的语义mIoU 22.9和最佳的几何IoU 30.8。与Occ3D-nuScenes基准测试相比,我们的方法在更大的感知范围和更精细的网格分辨率下也表现出同样良好的性能。
E. 经过知识蒸馏的视觉OccNet的结果 表V展示了仅依赖视觉的占用网络的结果。我们使用ResNet-50作为图像主干网络,并输入单帧图像,大小为704×256。该模型使用BEVDet的检测预训练检查点进行初始化。我们从融合式教师模型中蒸馏视觉模型,使用所有标注数据训练48个epoch。在这种设置下,我们的蒸馏模型比基线FlashOcc提升了2.22 mIoU。我们在表VI中进行了不同蒸馏方法的消融研究。我们首先在没有蒸馏的情况下训练FlashOcc-R50 24个epoch。我们在BEV空间和3D占用空间中进行蒸馏。我们测试了不同的损失函数,包括前景和背景加权的L1损失(FG/BG)、1-余弦相似性(1-cosine)、均方误差(MSE)、交叉熵损失和Kullback-Leibler(KL)散度损失。我们还测试了BEV蒸馏和3D蒸馏之间的不同权重。我们发现,BEV和3D蒸馏的权重相等、BEV空间使用MSE损失、3D空间使用1-余弦损失时,精度最高,mIoU达到33.93。
F. 定性结果 我们在图5中可视化了一个单帧的融合式、仅依赖视觉的以及经过蒸馏的占用预测示例。与蒸馏前的仅依赖视觉的模型相比,经过蒸馏的模型与融合式教师模型的对齐更好,尤其是在远处物体的重建方面。
V. 结论 本文主要讨论了如何以最小的标签和计算成本训练占用网络的最小工作流程设计。在两个大规模公共数据集上,我们的方法在性能上与现有的OccNet相当甚至超越了它们,同时显著降低了训练成本并提高了可用性。此外,我们设计了一种多阶段蒸馏策略,使融合网络能够提高仅依赖视觉的轻量级占用网络的准确性。未来的工作中,我们将研究更有效的主动学习技术,以寻找OccNet所需的最小标签。