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}
X3D∈RN×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}
X2D∈RC×W×H。将投影过程和其逆过程分别记为
Γ
3D
→
2D
\Gamma_{\text{3D}\rightarrow\text{2D}}
Γ3D→2D和
Γ
2D
→
3D
\Gamma_{\text{2D}\rightarrow\text{3D}}
Γ2D→3D。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~3Di−1)其中
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~3Di−1=Γ2D→3D(Fdrop(Γ3D→2D(X3Di−1),S))⊙X3Di−1S=Fscore(Γ3D→2D(X3Di−1))这里
S
∈
R
W
×
H
S\in\mathbb{R}^{W\times H}
S∈RW×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~3Di−1。过滤掉的体素被视为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~2Di−1)X~2Di−1=Fdrop(X2Di−1,S)⊙X2Di−1S=Fscore(X2Di−1)
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} Ypred∈RW×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. 硬件实验
经过实验可以得到如下结论:
- 在原始模型的基础上使用SP-BN替换BN后,能获得更稀疏的BEV特征图,从而极大增加2D主干的推断效率。
- 3D主干的端到端延迟与丢弃率相关。
- Ada3D在更大的场景和更精细地体素化下更加有效。反过来,提高效率能进一步降低体素大小从而提高性能。
5. 分析与讨论
5.1. 消融研究
重要性预测器精确地评估了输入特征的重要程度。实验表明,预测器能识别边界框内的特征;只有极少的特征被错误地评估了重要性。
密度指导避免了丢弃远处的小物体。仅使用预测器导致了明显的性能下降,特别是对于小物体。密度指导能补偿因为点云稀疏而预测出低重要性的远处小物体。仅使用预测器分数或密度均会导致某些边界框内的点被丢弃,从而影响性能。
SP-BN在不影响性能的情况下保留了BEV的稀疏性。
5.2. 自适应推断的分析
Ada3D引入了可忽略的开销。由于输入分辨率低且使用了分组卷积,测试时预测器的开销仅占2D检测器的1%。
Ada3D能提高性能。由于可能丢弃噪声,自适应推断甚至可能提高性能。