【论文笔记】Ada3D: Exploiting the Spatial Redundancy with Adaptive Inference for Efficient 3D Object Detec

Ada3D: Exploiting the Spatial Redundancy with Adaptive Inference for Efficient 3D Object Detection
原文链接:https://arxiv.org/abs/2307.08209

1. 引言

  3D感知需要快速而精确。基于体素的方法能达到SotA性能,但受限于自动驾驶汽车的资源,难以达到实时要求。
  导致较长处理时间的原因有二:一是过大的模型,包含3D稀疏卷积等耗时操作;二是算法需要处理的输入太大(激光雷达点太多)。过去的文章从模型压缩角度考虑;本文从数据层面考虑减小推断时间的方法。
  通常的基于体素的网络使用3D主干从输入点云提取3D特征,然后投影到BEV并进一步用2D主干处理。但3D体素和2D BEV均存在空间冗余,如来自路面和建筑的点属于3D检测的背景点。当随机丢弃30%的点或丢弃70%边界框(前景)外的点,性能只有轻微下降。现有的3D CNN平等对待每一个点,在背景区域浪费大量的计算与存储。2D BEV特征图只有很少一部分有像素值,其余部分均为背景0值。但目前的方法将2D BEV特征图视为密集特征图,使用常规的CNN处理。通过第一个BN层后,特征图失去了其稀疏性。
  本文提出自适应推断方法Ada3D,以减小数据冗余。对3D和2D主干均使用自适应推断,在推断时选择性地过滤冗余的3D体素和2D BEV特征。使用轻型预测器在BEV下评估输入特征的重要性,预测分数与激光雷达点密度组合判断是否丢弃点。此外,提出简单有效的稀疏性保留批归一化,消除背景像素的影响并保留2D BEV特征的稀疏性。Ada3D能在不牺牲性能的情况下大幅减小计算量和存储量。

3. 方法

3.1 带有自适应推断的、基于体素的检测

在这里插入图片描述
  体素化操作生成稀疏体素 X 3D ∈ R N × C X_\text{3D}\in\mathbb{R}^{N\times C} X3DRN×C,其中 N N N为体素数量, C C C为特征通道数。3D体素主干 F 3D \mathcal{F}_\text{3D} F3D使用3D稀疏卷积提取点云特征,得到 X ~ 3D \tilde{X}_\text{3D} X~3D。进一步通过沿 z z z轴的求和池化,投影到BEV上得到2D特征 X 2D ∈ R C × W × H X_\text{2D}\in\mathbb{R}^{C\times W\times H} X2DRC×W×H。将投影过程和其逆过程分别记为 Γ 3D → 2D \Gamma_{\text{3D}\rightarrow\text{2D}} Γ3D2D Γ 2D → 3D \Gamma_{\text{2D}\rightarrow\text{3D}} Γ2D3D。2D主干网络 F 2D \mathcal{F}_\text{2D} F2D进一步提取BEV特征,最后送入检测头 F head \mathcal{F}_\text{head} Fhead进行边界框预测。
  自适应推断在3D和2D主干中均被采用。对3D主干的第 i i i层,自适应推断可表达为: X 3D i = F 3D i ( X ~ 3 D i − 1 ) X_\text{3D}^i=\mathcal{F}_\text{3D}^i(\tilde{X}_{3D}^{i-1}) X3Di=F3Di(X~3Di1)其中 X ~ 3D i − 1 = Γ 2D → 3D ( F drop ( Γ 3D → 2D ( X 3D i − 1 ) , S ) ) ⊙ X 3D i − 1 S = F score ( Γ 3D → 2D ( X 3D i − 1 ) ) \tilde{X}_\text{3D}^{i-1}=\Gamma_{\text{2D}\rightarrow\text{3D}}(F_\text{drop}(\Gamma_{\text{3D}\rightarrow\text{2D}}(X_\text{3D}^{i-1}),S))\odot X_\text{3D}^{i-1}\\S=F_\text{score}(\Gamma_{\text{3D}\rightarrow\text{2D}}(X_\text{3D}^{i-1})) X~3Di1=Γ2D3D(Fdrop(Γ3D2D(X3Di1),S))X3Di1S=Fscore(Γ3D2D(X3Di1))这里 S ∈ R W × H S\in\mathbb{R}^{W\times H} SRW×H表示BEV像素的重要性分数,该分数由 F score F_\text{score} Fscore(输入为BEV投影后的3D体素)组合预测器输出和点云密度得到。给定丢弃率 R drop R_\text{drop} Rdrop,空间过滤过程 F drop F_\text{drop} Fdrop基于重要性分数 S S S丢弃BEV特征的大多数冗余部分,生成独热掩膜用于指示给定位置是否应该被保留。通过广播回3D空间并与原始3D体素特征按元素相乘,得到下采样的3D体素特征 X ~ 3 D i − 1 \tilde{X}_{3D}^{i-1} X~3Di1。过滤掉的体素被视为0值,不会被存储和处理。更多关于 F drop F_\text{drop} Fdrop F score F_\text{score} Fscore的细节见3.2和3.3节。
  类似地,对于2D主干的第 i i i层,自适应推断可以表达为: X 2D i = F 2D i ( X ~ 2 D i − 1 ) X ~ 2D i − 1 = F drop ( X 2D i − 1 , S ) ⊙ X 2D i − 1 S = F score ( X 2D i − 1 ) X_\text{2D}^i=\mathcal{F}_\text{2D}^i(\tilde{X}_{2D}^{i-1})\\\tilde{X}_\text{2D}^{i-1}=F_\text{drop}(X_\text{2D}^{i-1},S)\odot X_\text{2D}^{i-1}\\S=F_\text{score}(X_\text{2D}^{i-1}) X2Di=F2Di(X~2Di1)X~2Di1=Fdrop(X2Di1,S)X2Di1S=Fscore(X2Di1)

3.2. 重要性预测器设计

  本文使用轻量级CNN,从输入特征预测各位置的空间重要性分数。

推断

  预测器的推断过程可表示为: Y pred = F pred ( X BEV ; Θ pred ) Y_\text{pred}=F_\text{pred}(X_\text{BEV};\Theta_\text{pred}) Ypred=Fpred(XBEV;Θpred)其中 F pred F_\text{pred} Fpred是参数为 Θ pred \Theta_\text{pred} Θpred的预测器,输出为单通道热图 Y pred ∈ R W × H Y_\text{pred}\in\mathbb{R}^{W\times H} YpredRW×H。直观来看,垂直空间中的冗余较少,因此压缩垂直空间对效率的提升有限;此外在3D空间中预测重要性比较困难。注意预测器由多个分组卷积构成,输入分辨率为原始BEV分辨率的1/8,且其权重在3D主干和2D主干的不同层之间是共享的,可以减小参数和计算。

训练

  由于丢弃大量边界框外的点仅会使性能轻微下降,表明边界框的中心应该有更高的重要性。本文按照CenterPoint的方法,通过添加峰值在物体中心的高斯核生成真实热图 M gt M_\text{gt} Mgt。使用均方误差(MSE)损失函数进行训练。

3.3. 密度指导的空间过滤

  预测分数 Y pred Y_\text{pred} Ypred能有效代表输入特征的相对重要性,但点云在近处密集、远处稀疏,预测器会倾向在密集区域预测较高的重要性,而忽略远处的物体。本文使用点云的BEV密度调整预测器分数: S = F score ( X BEV ) = F pred ( X ; Θ pred ) ⋅ D g β S=F_\text{score}(X_\text{BEV})=F_\text{pred}(X;\Theta_\text{pred})\cdot D_g^\beta S=Fscore(XBEV)=Fpred(X;Θpred)Dgβ其中 D g D_g Dg是由大小为 g g g的核池化后的密度热图, β \beta β是调整密度分布的超参数,使得预测分数和密度分布有相同的方差。

3.4. 稀疏性保留的批归一化

  由于BEV特征图是稀疏的,若使用常规方法,则其在通过第一个BN层后就会失去稀疏性,会浪费大量空间存储信息较少的背景特征。
  直接的解决方法是只对非空像素进行BN,但这样会导致训练不稳定和性能下降,因为其损害了特征的相对关系。因此,本文进行改进,提出“稀疏性保留的批归一化”(SP-BN),在对非空像素进行BN时不减去特征的均值。这样,非零像素能与背景像素区分。SP-BN的表达式如下: x ^ i ( k ) = x i ( k ) ( σ B ( k ) ) 2 + ϵ \hat{x}_i^{(k)}=\frac{x_i^{(k)}}{\sqrt{(\sigma_B^{(k)})^2+\epsilon}} x^i(k)=(σB(k))2+ϵ xi(k)其中 σ B ( k ) \sigma_B^{(k)} σB(k)是标准差。通过将BN替换为SP-BN,可以在性能不下降的情况下大幅增加BEV的稀疏性。

“损害了特征的相对关系”可以这样理解:假设非0像素值均相等(方差为0),则对非空像素进行BN后,会导致所有像素均为0,前景和背景变得无法区分。

4. 实验

4.1. 实施细节

自适应推断设计

  本文仅在3D和2D主干的部分层加入自适应推断。

4.2. 性能与效率的比较

  实验结果表明,加入Ada3D的模型能达到与原始模型相当的性能,但推断时间和存储消耗能大幅减小。通过调整丢弃率 R drop R_\text{drop} Rdrop,可以在不同的资源预算下进行推断。与压缩模型的方法相比,Ada3D能在性能下降更小的情况下实现更快的推断。

4.3. 硬件实验

  经过实验可以得到如下结论:

  1. 在原始模型的基础上使用SP-BN替换BN后,能获得更稀疏的BEV特征图,从而极大增加2D主干的推断效率。
  2. 3D主干的端到端延迟与丢弃率相关。
  3. Ada3D在更大的场景和更精细地体素化下更加有效。反过来,提高效率能进一步降低体素大小从而提高性能。

5. 分析与讨论

5.1. 消融研究

  重要性预测器精确地评估了输入特征的重要程度。实验表明,预测器能识别边界框内的特征;只有极少的特征被错误地评估了重要性。
  密度指导避免了丢弃远处的小物体。仅使用预测器导致了明显的性能下降,特别是对于小物体。密度指导能补偿因为点云稀疏而预测出低重要性的远处小物体。仅使用预测器分数或密度均会导致某些边界框内的点被丢弃,从而影响性能。
  SP-BN在不影响性能的情况下保留了BEV的稀疏性

5.2. 自适应推断的分析

  Ada3D引入了可忽略的开销。由于输入分辨率低且使用了分组卷积,测试时预测器的开销仅占2D检测器的1%。
  Ada3D能提高性能。由于可能丢弃噪声,自适应推断甚至可能提高性能。

猜你喜欢

转载自blog.csdn.net/weixin_45657478/article/details/132134960
今日推荐