专栏名称: 智驾实验室
欢迎关注“智驾实验室”!本公众号专注于自动驾驶领域,为您带来世界模型的最新研究,多模态大模型的深入解析,以及多模态大模型在自动驾驶领域的应用与落地。在这里,您可以了解到自动驾驶技术的最新动态,洞察行业趋势,与我们一起探索未来出行的无限可能。
目录
相关文章推荐
51好读  ›  专栏  ›  智驾实验室

清华开源 BDC-Occ | 使用2-Bit卷积让Occ占用预测网络直接原地起飞 !

智驾实验室  · 公众号  ·  · 2024-06-12 08:00

正文

ADAS Laboratory




点击上方 蓝字 关注 智驾实验室

扫描上方二维码,加入【 智驾实验室 】交流群,

获取更多内容和资料

现有的3D占用网络需要大量的硬件资源,这阻碍了它们在边缘设备上的部署。二值化神经网络(BNN)大幅降低了计算和内存需求。

然而,与全精度网络相比,它们的性能显著下降。此外,通过增加二值化卷积层的数量来提升二值化模型的性能是一项挑战,这也限制了它们在3D占用预测中的实用性。

为了弥补这些差距,作者提出了一种新颖的二值化深度卷积(BDC)单元,该单元在增加二值化卷积层数的同时有效提升了性能。首先,通过理论分析,作者证明了 二值化卷积引入的最小二值化误差。因此,在BDC单元中,额外的二值化卷积层被限制为

其次,作者引入了每个通道的权重分支,以减轻来自不重要通道特征二值化误差对二值化模型性能的影响,从而在增加二值化卷积层数的同时提升性能。

此外,作者将3D占用网络分解为四个卷积模块,并使用所提出的BDC单元对这些模块进行二值化。通过应用所提出的BDC单元对现有3D占用网络进行二值化,作者创建了BDC-Occ模型。

全面的定量和定性实验表明,所提出的BDC-Occ是当前最先进的二值化3D占用网络算法。

代码和模型已在https://github.com/zzk785089755/BDC上公开提供。

1 Introduction

在3D占用预测任务方面的新进展对机器人领域[37; 49; 50]和自动驾驶领域[36; 47; 48; 46]产生了重大影响,强调了在3D场景中准确感知和预测 Voxel 占用及语义标签的重要性。然而,占用预测需要预测密集的 Voxel ,这导致了相当大的计算开销[1; 31; 32]。此外,占用预测模型的卓越性能依赖于模型规模的增加[10]。这些因素共同阻碍了在边缘设备上部署高性能占用预测网络。例如,卷积神经网络(CNN)[9; 33; 34; 35]具有硬件友好和易于部署的特点。

此外,基于CNN的占用预测网络[5; 6]表现出色的性能,使其成为在边缘设备上部署的首选。然而,高性能的基于CNN的占用网络[1; 10]通常涉及复杂的计算和众多的参数。因此,有必要引入模型压缩技术[51],以减少基于CNN的占用网络的计算复杂度和参数数量。

神经网络压缩和加速的研究包括四种基本方法:量化,剪枝,知识蒸馏和轻量级网络设计。

在这些方法中,二值化神经网络(BNN),属于量化类别,将CNN的权重和激活量化为仅有1位,从而显著降低内存和计算成本。通过将权重和激活量化为1位,BNN[19]在中央处理单元(CPU)上实现时,可以达到32 的内存压缩比和64 的计算减少。此外,与全精度模型相比,BNN[19]只需要逻辑操作,如XNOR和位计数,使其更容易在边缘设备上部署。

近期的研究,如BBCU [24] 和 BiSRNet [18],已经在图像超分辨率[38]和去噪[39]等任务中展示了将复杂模型二值化的能力,并取得了良好的性能。作者尝试用这些二值化算法提出的二值卷积单元替换占用网络中的每个全精度卷积单元。这样的二值化模型可以获得相当高的准确度,但与全精度模型相比,仍然存在明显的性能差距。在全精度模型中,增加卷积层通常会带来性能的提升。然而,二值化模型并未显示出随着二值卷积层数的增加而性能提升的趋势,反而存在性能下降的趋势,这使得二值化模型难以通过增加卷积层数来提升性能。二值占用网络的性能不足不可避免地会对3D空间的感知产生不利影响,从而限制二值化模型在自动驾驶车辆中的部署。

因此,解决随着二值卷积层数增加准确性下降的问题对于弥合二值化模型与全精度模型之间的性能差距至关重要。为了解决这个问题,作者提出了一种新颖的基于BNN的方法,即二值深度卷积占用( BDC-Occ )网络,用于高效实用的占用预测,这是对二值3D占用网络的 首次 研究。

首先,作者的理论分析得出,增加二值卷积核的大小也会增加二值化误差。为了加深二值模型的深度,作者增加了 二值卷积作为额外的层次以减少二值化误差。

其次,作者提出了每个通道权重分支,将新增加的卷积层放置在此分支中以进一步增强二值模型的性能。第三,基于上述分析,作者设计了 二值深度卷积( BDC**)单元,该单元在加深二值卷积层的同时显著提高了二值模型的性能。

最后,作者将3D占用网络分解为四个基本模块,并使用BDC单元为每个模块定制二值化。

本文的创新点和贡献总结如下:

(i) 作者提出了一种新颖的基于BNN的占用网络,名为BDC-Occ,利用了 二值深度卷积( BDC**)单元。据作者所知,这是首次研究二值占用网络的工作。

(ii) 基于理论分析,所提出的BDC单元采用 的二值化卷积层来加深二值化模型。此外,作者引入了每通道权重分支以减轻由于二值化误差导致的二值化卷积层对二值化模型性能的影响。3D占有率网络被分解为四个基本模块,允许使用BDC单元进行定制设计。

(iii) 作者在Occ3D-nuScenes数据集上进行了大量实验,通过加深二值化神经网络,展示了显著的性能提升。作者的方法达到了最先进(SOTA)的结果,并且作者的二值化模型BDC-Occ的性能与全精度模型相当。

2 Related Work

3D Occupancy Prediction

三维占有率预测任务包括两个子任务:预测三维空间中每个 Voxel (voxel)的几何占有率状态,并为它们分配相应的语义标签。

作者可以将主流的3D占有率网络分为两种架构:基于LSS方法的卷积神经网络(CNN)架构,以及基于BEVFormer方法的 Transformer (Transformer)架构。

鉴于卷积神经网络模型部署的优势,本文关注基于CNN的3D占有率网络。MonoScene[1]是一项开创性工作,它使用CNN框架提取2D特征,然后将这些特征转换为3D表示。

BEVDet-Occ[6]利用LSS方法将图像特征转换为鸟瞰图(BEV)特征,并采用BEV池化技术来加速模型推理。FlashOcc[25]用2D卷积替换了BEVDet-Occ中的3D卷积,并将通过2D卷积获得的BEV Level 特征的通道到高度变换得到的占有率逻辑替换了3D卷积得到的占有率逻辑。

SGN[30]采用密集-稀疏-密集的设计,并提出了混合引导和有效的 Voxel 聚合来增强类内特征分离并加速语义扩散的收敛。

InverseMatrixVT3D[17]引入了一种基于投影矩阵的新方法来构建局部3D特征体和全局BEV特征。

尽管这些基于CNN的方法取得了令人印象深刻的成果,但它们依赖于强大的硬件和大量的计算及内存资源,这对于边缘设备来说是不切实际的。

如何在资源受限的设备上开发3D占有率预测网络仍然是一个探索不足的领域。作者的目标是填补这一研究空白。

Binarized Neural Network

BNN  代表了模型量化最极端的形式,将权重和激活值量化为仅仅1位。由于其在对内存和计算压缩方面的重要效果,BNN [19] 在高层视觉和低层视觉中得到了广泛应用。

例如,Xia等人[24]设计了一个二值化的卷积单元BBCU,用于图像超分辨率、去噪以及减少JPEG压缩产生的伪影。Cai等人[18]设计了一个二值化的卷积单元BiSR-Conv,能够调整表示的密度和分布,用于高光谱图像(HSI)的恢复。

然而,BNN在3D占用任务中的潜力尚未被探索。因此,本文探讨了二值化的3D占用网络,旨在保持高性能的同时最小化计算和参数的开销。

3 Method

Base Model

身为轻量级且易于在边缘设备上部署的全精度模型,需要进行二值化。然而,基于卷积神经网络(CNN)[9]或Transformer[14; 13]的先前3D占用网络模型具有高计算复杂度或大的模型尺寸。其中一些工作利用了形变注意力等复杂操作,这些操作难以在边缘设备上进行二值化和部署。

因此,作者重新设计了一个简单、轻量级且可部署的 Baseline 模型,不使用复杂的计算操作。

BEVDet-Occ [5] 和 FlashOcc [25] 仅使用轻量级CNN架构,在3D占用预测任务中展示了卓越的性能。受这些工作的启发,作者采用图2所示的网络结构作为作者的全精度 Baseline 模型。它包括一个图像编码器 ,一个视图转换模块 ,一个鸟瞰图(BEV)编码器 ,以及一个占用预测头 。占用预测网络由这些模块顺序连接而成。假设输入图像为 ,占用预测输出可以表示为

其中 分别表示输入图像的高度和宽度, 分别表示3D空间的长度、宽度和高度, 表示多视角图像的数量。请参阅补充材料以获取 Baseline 模型的更详细描述。

Binarized Deep Convolution

由于其出色的性能和轻量级架构,FlashOcc [25] 作为二值化模型的全程精度基准模型。其性能达到了37.84 mIoU,为二值化模型设定了性能上限。

在全程精度模型中的经验证据表明,增加网络深度可以提高性能。二值化模型的特点使得即使在增加网络深度的情况下,也能显著保持低计算和内存使用。然而,在之前的研究中,Xia等人[24]观察到,在二值化卷积单元内增加二值化卷积层的数量会导致二值化模型性能显著下降,每个单元内二值化卷积层深度增加的性能退化问题限制了二值化模型的进一步应用。为了解决这个问题,作者提出了二值化深度卷积(BDC)单元,旨在通过加深二值化卷积单元的层次而不是降低性能来提高二值化模型的性能。

Cai等人[18]提出了二值化卷积单元BiSR-Conv,可以调整密度并有效实现卷积层的二值化。作者使用BiSR-Conv对FlashOcc [25]进行二值化,形成了作者最初的 BDC-V0 版本,其结构如图3(a)所示。关于BDC-V0的更详细描述请参阅补充材料。该模型达到了 34.51 mIoU 的性能。

定理1 。:_在反向传播过程中,作者将第 个二值化卷积层中参数 的元素级绝对梯度误差的期望值表示为如下:

_其中 是二值化卷积核的大小。

基于定理1,使用 卷积核进行二值化卷积会导致比 核更多的二值化错误。此外,模型需要保留第一个 二值化卷积层以保持其提取局部特征的能力。因此,在基于二值化卷积单元BDC-V0的基础上,作者在 二值化卷积之后、残差连接之前引入了 二值化卷积层,提出了如图3(b)所示的 BDC-V1 。通过加深二值化卷积单元,BDC-V1增强了其特征提取能力,达到了 36.29 mIoU 的性能。

为了进一步加深模型,作者在名为 BDC-V2 的二值化卷积单元中增加了多个 二值化卷积层。BDC-V2的结构如图3(c)所示。作者将增加的多层二值化卷积定义为 ,包括 个RPReLU激活和 二值化卷积层,可以表示为

其中,Repeat 表示重复 次操作

时,性能下降到35.88 mIoU; 时,进一步下降到 35.43 mIoU 。作者观察到,随着 二值化卷积层数的增加,网络性能呈现下降趋势。这是因为在单元中增加更多的二值化卷积层时,累积的二值化错误也随之增加。二值化模型性能的负面影响超过了增加参数的正面影响,导致二值化模型性能下降。

在BNN中,并不是每个通道特征都对二值化模型的有效性有贡献。不显著的通道特征携带的二值化错误会污染重要的通道特征,导致二值化模型性能下降。SENet[26]提出的Squeeze-and-Excitation(SE)模块显式地建模了特征通道间的相互依赖关系,有效地提取了高度显著的特征。

因此,基于SENet[26]的思想,作者提出了 BDC-V3 ,作者使用额外的 二值化卷积来学习每个通道的权重,而不是特征本身。BDC-V3的结构如图3(d)所示。首先,第一个 二值化卷积的输出 作为每个通道权重分支的输入,该分支包括全局平均池化(AvgPool)、多层二值化卷积(MulBiconv)和Sigmoid。分支输出 通过与 相乘得到,表示为

其中 表示元素逐点乘法。当 时,性能提升到了36.89 mIoU;当 时,性能进一步增加到了 37.20 mIoU ,这比全精度基准模型提供的性能上限37.84 mIoU更接近。作者选择了 的BDC-V3作为最终的二值卷积单元,命名为BDConv。

Binarized Convolution Module

蔡等人[18]证明了在二值化卷积层中保持输入和输出维度的一致性是必要的,以确保全精度残差信息的传播。因此,每个二值化卷积模块都需要专门的设计考虑。作者可以将基于CNN的占用网络分解为以下四种卷积模块:

(1) 基本卷积模块:输入 ,输出 ;(2) 下采样卷积模块:输入 ,输出

(3) 上采样卷积模块:输入 ,输出

(4) 通道减少卷积模块:输入 ,输出

作者采用二值化设计方法处理这四种卷积模块,借鉴了之前的工作[23;24;18],如图4所示。图4(a)展示了基本卷积模块,保持了输入特征图的大小和通道数。图4(b)展示了下采样卷积模块,将输入特征图的大小减半并加倍通道数。图4(c)展示了上采样卷积模块,将输入特征图的大小加倍并减半通道数。最后,图4(d)展示了通道减少卷积模块,保持了输入特征图的大小同时将通道数减半。

4 Experiment

Experimental Settings

数据集。 作者使用了Occ3D-nuScenes数据集[4],其中包含28,130个样本用于训练,6,019个样本用于验证。

评估指标。 作者使用平均交并比(mIoU)指标评估Occ3D-nuScenes验证集。与[19]类似,作者计算二值神经网络(BNN)的操作每秒(OPs )作为 来衡量计算复杂性,其中OPs 表示FLOPS。为了计算BNN的参数,使用公式 ,其中上标 分别指代二值化和全精度模型。为了计算总计算和内存成本,将OPs求和为OPs + OPs ,并将Params求和为 +

实现细节。 对于3D占用预测任务,作者采用FlashOcc [25]作为 Baseline 网络。

作者使用了ResNet50 [9]作为图像 Backbone 网络,输入尺寸为 。采用默认的学习率 ,AdamW [40]优化器和权重衰减 。训练大约持续了29小时,在两块NVIDIA 3090 GPU上使用了24个周期,每个GPU的批处理大小为2。对于Occ3D-nuScenes数据集的数据增强策略与FlashOcc [25]保持一致。

之前的工作,如FlashOcc和BEVDet-Occ [6],已经证明了在训练期间摄像头可见性 Mask 的有效性。

因此,作者也采用摄像头可见性 Mask 来提升性能。遵循FlashOcc的设置,作者使用来自BEVDet [5]的预训练模型进行3D目标检测任务作为作者的预训练模型。

Main Results

为了确保性能,作者在图像编码器中避免将图像 Backbone 网络二值化。这个组件包含从图像分类任务中预训练的权重,有效地促进了模型收敛,并融入了图像中的先前语义信息。作者将BEV编码器和占用率头作为所有二值化模型的基础版本(**-B )进行二值化。作者进一步在图像编码器中对图像 Neck 进行二值化,以基于基础版本获得 微型 版本( -T**)。表1展示了作者的方法BDC在Occ3D-nuScenes验证集上的评估结果。为了验证作者提出的BDC方法的有效性,作者将其与其他最先进的二值化模型进行了比较,包括ReActNet [23],BBCU [24],BiMatting [28]和BiSRNet [18]。作者还将其与基于CNN架构的全精度占用率预测网络进行了比较,包括BEVDet-Occ [5]和FlashOcc [25],其中FlashOcc作为所有二值化模型的 Baseline 网络,代表了二值化模型性能的理论上限。

表1展示了不同方法的性能指标(mIoU)、参数数量和操作次数。与其他二值化方法相比,作者的BDC-T和BDC-B几乎在所有二值化模型中取得了最佳或第二佳的结果。特别是,BDC在不增加参数数量或计算复杂性的情况下显著提高了性能。与先前的最先进方法,即BiSRNet-B相比,作者的BDC-T在mIoU上表现出色,超出其**2.73 mIoU (+7.91%) ,同时减少了2.95%的操作和4.76%的参数。此外,BDC-T与全精度模型FlashOcc相比,取得了具有竞争力的结果,只使用了52.26%的操作和59.95%的参数,由于二值化误差,性能损失极小,为 -0.6 mIoU (-1.59%)**。BBCU和BiSRNet在二值化其他模块时都表现出性能下降的问题。与BDC-B相比,BDC-T在二值化图像 Neck 模块时表现得稍好一些,这证明了BDC对二值化模块的鲁棒性。

为了验证所提出BDC的泛化能力,作者还使用nuScenes [11]数据集进行了3D目标检测任务的实验。表2展示了在nuScenes中进行3D目标检测任务的关键性能指标,作者的方法BDC在mAP和NDS这两个重要指标上继续表现出卓越的性能。

Ablation Study

在所有的消融研究中,作者将全精度模型中的BEV编码器和占用率头进行二值化。这种二值化设置在表1中被称为所有二值化模型的基础版本(**-B**)。

多层二值卷积(MulBiconv)消融研究。 为了探索MulBiconv中二值化卷积层的数量对二值化模型性能的影响,作者在使用BDC-V2和BDC-V3的同时,改变MulBiconv中的二值化卷积层数量( )对FlashOcc进行二值化。

结果如图5所示。当 时,BDC-V2的结构与BDC-V1相同。在这种情况下,BDC-V3中的MulBiconv不包含带有每个通道权重分支的可学习参数。随着 的增加,作者观察到BDC-V2的性能逐渐下降,随后出现波动。相比之下,随着 的增加,BDC-V3最初显示出性能提升,随后也出现波动。与BDC-V2相比,BDC-V3表现出轻微的性能提升。当MulBiconv选择 时,BDC-V3达到最佳性能,达到37.20 mIoU。在这一点上,模型参数减少带来的增益与二值化误差造成的损失之间的差距达到最大,实现了最佳的权衡。

细分消融研究。 作者使用四种BDC变体的二值化FlashOcc,其中BDC-v0代表二值化方法BiSRNet。此外,对于使用多层二值卷积(MulBiconv)的BDC-V2和BDC-V3,作者设置

结果在表3中呈现,从中作者可以得出以下结论:(1) 与BDC-V0相比,仅在每个二值化卷积单元中添加一个 二值化卷积层的BDC-V1,获得了显著的 1.78 mIoU (+5.16%) 提升。由于二值化卷积的性质,额外的二值化卷积层对模型参数和计算复杂度的影响最小。(2) 通过在BDC-V2中的每个二值化卷积单元中添加多层二值卷积(MulBiconv),与BDC-V1相比,作者观察到性能大幅下降,同时参数数量和计算复杂度略有增加。(3) 与BDC-V2相比,BDC-V3显示出显著的性能提升 1.77 mIoU 。此外,BDC-V3比BDC-V1额外获得了 0.91 mIoU 。在每个通道权重分支内放置额外的二值化卷积层有效地增强了模型性能。

核尺寸消融研究。 为了验证 二值化卷积是否比 二值化卷积引起更多的二值化误差,可能导致性能下降,作者将BDC-V1和BDC-V2( )应用于FlashOcc。

作者在表4中呈现结果。对于BDC-V1,将 二值化卷积替换为连续的 二值化卷积导致性能从36.29 mIoU下降到33.01 mIoU,而参数数量和计算复杂度没有变化。此外,作者验证了使用 二值化卷积作为第一个卷积层的必要性。如果将其替换为 二值化卷积,二值化卷积单元的感受野将受到限制,无法与相邻像素特征建立联系,导致性能从36.29 mIoU下降到35.32 mIoU。对BDC-V2( )的实验也支持连续 二值化卷积导致二值化误差并影响二值化模型性能的结论。

Visualization

作者还展示了BDC和BiSRNet在Occ3D-nuScenes验证集上的一些定性结果。如图6所示,BDC在第一行和最后一行对公共汽车的预测是全面的。在第二行,BDC成功识别了所有行人,而BiSRNet [18] 却忽略了场景中的一些行人。此外,在第三行,BDC对路缘石的预测是准确的,而BiSRNet却将其误分类为可行驶表面,这可能存在安全隐患。另外,在第四行,BDC准确地重建了场景中的交通灯,展示了其在场景感知方面的强大能力。

5 Conclusion

本文引入了一种用于二值化3D占用网络的二值深度卷积(BDC)单元。BDC单元解决了在BNN中观察到的增加二值化卷积层数量会导致模型性能下降的问题。理论分析表明, 二值化卷积在训练过程中引入的最小二值化误差。因此,在BDC单元中,除了初始的二值化卷积是 核之外,其余的都是 二值化卷积。此外,BDC采用逐通道权重分支方法,有效减轻了不重要的通道特征二值化误差对二值化模型性能的影响,从而在增加二值化卷积层数的同时提高性能。此外,广泛的实验验证了BDC单元的有效性。作者提出的方法显著优于现有的最先进的二值化卷积网络,并且接近全精度网络的表现。

局限性。 作者尚未测试作者的方法在Transformer架构中的性能,这可能限制了其更广泛的应用。

More Details About Base Model

基础模型由一个图像编码器 、一个视图转换模块 、一个鸟瞰图(BEV)编码器 和一个占用率 Head 组成。占用率预测网络由这些模块顺序连接而成。假设输入图像为







请到「今天看啥」查看全文