0. 简介
基于视觉的语义占用和流动预测在为现实世界任务(如自动驾驶)提供时空线索方面发挥着至关重要的作用。现有方法优先考虑更高的准确性,以满足这些任务的需求。在本研究中,《ALOcc: Adaptive Lifting-based 3D Semantic Occupancy and Cost Volume-based Flow Prediction》努力通过引入一系列针对性的改进来提升3D语义占用预测和流动估计的性能。首先,我们引入了一种考虑遮挡的自适应提升机制,并结合深度去噪技术,以提高2D到3D特征转换的鲁棒性,并减少对深度先验的依赖。其次,我们通过利用共享语义原型来共同约束2D和3D特征,从而增强3D特征与其原始2D模态之间的语义一致性。这一过程辅以基于置信度和类别的采样策略,以应对3D空间中的长尾挑战。为了减轻在语义和流动的联合预测中对特征编码的负担,我们提出了一种基于鸟瞰视图(BEV)代价体积的预测方法,该方法通过代价体积将流动和语义特征联系起来,并采用分类-回归监督方案来解决动态场景中流动尺度的变化。我们的纯卷积架构框架,命名为ALOcc,在速度和准确性之间实现了最佳平衡,在多个基准测试中取得了最先进的结果。在Occ3D上,以及在没有相机可见掩模的训练条件下,我们的ALOcc在RayIoU方面实现了绝对提升2.5%的效果,同时在与最先进技术相当的速度下运行,使用相同的输入尺寸( 256 × 704 256 \times 704 256×704)和ResNet-50主干网络。相关的代码将会在Github上开源
1. 主要贡献
此外,我们提出了一种基于鸟瞰视图(BEV)的成本体积方法用于占用流预测。该任务的一个关键挑战在于,联合预测语义和流动对特征施加了两种类型的表示压力。为了缓解这种压力,我们将来自地面上多个高度层的体素特征聚合为BEV表示,创建一个参考历史BEV特征的成本体积。利用成本体积和体素特征进行流动估计,使得体素特征能够优先考虑占用语义信息,从而减轻多任务预测的约束。此外,我们提出了一种混合分类-回归技术用于流动预测,增强了模型对不同流动尺度的适应性。如图1所示,我们的方法在多个语义占用和流动预测基准上始终优于现有方法,确立了新的最先进性能。此外,我们通过空间压缩等技术提出了具有多种模型变体的ALOcc。我们的方法在保持竞争性计算效率的同时,实现了卓越的性能。这在模型性能和计算成本之间建立了良好的平衡,特别有利于自动驾驶等实时应用。总之,我们的主要贡献包括:
图1. 我们的ALOcc的语义占用和流动预测结果。ALOcc在各种基准和指标上超越了之前的最先进技术,展现出强大的性能。输入图像的尺寸和主干网络分别标准化为256 × 704和ResNet50。
- 我们引入了一种2D到3D的自适应提升方法,通过自适应权重调整将2D信号转换为被遮挡和稀疏区域,同时结合深度去噪以防止收敛到局部最优解。
- 我们首次提出了一种基于BEV的成本体积方法用于占用流预测,减轻了多任务设置中特征编码的负担,并通过结合分类和回归增强了流动预测。
- 我们提出了共享语义原型,将类间关系从2D转移到3D,通过选择性原型训练和不确定性感知采样缓解了类别不平衡问题。
- 在多个语义占用和流动预测基准上的全面评估显示出对当前最先进技术的一致改进。我们提供了多种模型变体,其中我们的实时版本优于现有的实时方法。
2. 方法
我们的研究聚焦于基于视觉的3D语义占用和流动预测。给定N个输入图像
{
I
i
∈
R
H
×
W
×
3
}
i
=
1
N
\{I^i \in \mathbb{R}^{H \times W \times 3}\}_{i=1}^N
{Ii∈RH×W×3}i=1N,目标是预测3D语义占用网格和3D占用流网格,监督信号为相应的真实值
O
s
∈
R
X
×
Y
×
Z
O_s \in \mathbb{R}^{X \times Y \times Z}
Os∈RX×Y×Z 和
O
f
∈
R
X
×
Y
×
Z
×
2
O_f \in \mathbb{R}^{X \times Y \times Z \times 2}
Of∈RX×Y×Z×2。
O
s
O_s
Os中的每个值标识其对应空间位置的类别,包括空(表示未占用空间)以及行人和汽车等语义类别。流网格
O
f
O_f
Of 中的每个体素包含一个2D流动向量,指定在x和y方向上的运动。图2展示了我们方法的示意图。最初,从周围图像中提取2D特征,这些特征随后通过自适应提升转换为3D空间。提升后的特征与历史帧数据一起在3D空间中编码。编码后的体积特征随后通过各种任务头解码,以预测3D语义占用和流动网格。总体而言,第4节介绍了增强2D到3D视图转换的遮挡感知自适应提升技术。第5节详细描述了我们的基于语义原型的占用预测头,增强了2D-3D语义对齐并缓解了长尾问题。第6节讨论了BEV成本体积方法和一种新的回归-分类策略,以增强占用流预测。
图2. 提出的ALOcc的整体框架。图像特征通过自适应提升转换为3D空间,然后与历史帧一起由3D编码器进行编码。生成的体积特征随后由不同的任务头进行解码。
3. 重新审视基于深度的LSS
作为基于视觉的占用预测的核心模块,2D到3D视图转换过程被表述为:
V
f
=
M
T
⋅
cat
{
I
f
i
}
i
=
1
N
(1)
V_f = M_T \cdot \text{cat} \{ I^i_f \}_{i=1}^N \tag{1}
Vf=MT⋅cat{Ifi}i=1N(1)
其中
I
f
i
I^i_f
Ifi 和
V
f
V_f
Vf 分别表示图像特征和提升特征,
cat
{
⋅
}
\text{cat}\{·\}
cat{⋅} 表示连接操作,这里省略了展平和重塑操作。基于深度的LSS将MT初始化为零矩阵,并用图像深度概率填充它。对于每个像素
x
(
u
,
v
)
x(u,v)
x(u,v),深度被预测为沿相机视线离散化区间的占用概率:
{
P
(
o
i
d
∣
x
)
}
i
=
1
D
\{P(o_i^d|x)\}_{i=1}^D
{P(oid∣x)}i=1D。坐标投影函数
R
(
⋅
)
R(·)
R(⋅) 将图像坐标系统(ICS)中的3D坐标
(
u
,
v
,
d
)
(u,v,d)
(u,v,d) 映射到体素坐标系统(VCS)中:
(
x
,
y
,
z
)
=
R
(
u
,
v
,
d
)
(x,y,z) = R(u,v,d)
(x,y,z)=R(u,v,d)。每个深度概率被分配到MT中,行索引对应于四舍五入后的体素坐标
[
(
x
,
y
,
z
)
]
[(x,y,z)]
[(x,y,z)],列索引对应于
(
u
,
v
)
(u,v)
(u,v)。由于MT的稀疏性,这一过程通常通过稀疏操作实现,例如在PyTorch中的稀疏COO张量或BEVPool [10, 36]。
4. 关注遮挡的自适应提升
我们通过引入从表面到遮挡区域的概率转移,增强了基于深度的局部表面重建(LSS)。首先,我们将第3.1节中基于硬取整的填充策略替换为基于概率的软填充方法。如图3所示,我们使用三线性插值将点
(
x
,
y
,
z
)
(x,y,z)
(x,y,z)的概率扩散到其在体素坐标系统(VCS)中的八个邻近点。插值计算出八个概率值:
图3. (a) 基于深度的LSS与(b) 我们的遮挡感知自适应提升的比较。虚线表示相机的视线,透明度表示将2D特征映射到3D体素的权重,透明度越高表示权重越大。
p i = ( 1 − ∣ x − x ^ i ∣ ) ⋅ ( 1 − ∣ y − y ^ i ∣ ) ⋅ ( 1 − ∣ z − z ^ i ∣ ) , ( 2 ) p_i = (1−|x− \hat{x}_i|)·(1−|y − \hat{y}_i|) · (1 −|z − \hat{z}_i|), \quad (2) pi=(1−∣x−x^i∣)⋅(1−∣y−y^i∣)⋅(1−∣z−z^i∣),(2)
其中, { ( x ^ i , y ^ i , z ^ i ) } i = 1 8 \{(\hat{x}_i, \hat{y}_i, \hat{z}_i)\}_{i=1}^8 {(x^i,y^i,z^i)}i=18是邻近体素中心的坐标。然后,我们用 p i ⋅ P o ( x , y , z ) p_i · P^{o}(x,y,z) pi⋅Po(x,y,z) 填充矩阵 M T M_T MT,用相应的体素坐标索引列,用 ( x ^ i , y ^ i , z ^ i ) (\hat{x}_i, \hat{y}_i, \hat{z}_i) (x^i,y^i,z^i) 索引行。这种方法根据距离分配深度概率 P o ( x , y , z ) P^{o}(x,y,z) Po(x,y,z),使得二维到三维的映射在坐标上是可微的。
基于深度的LSS方法通过显式的深度概率建模来引导二维到三维特征的转换,表现出色。然而,深度估计的目标遵循 δ \delta δ分布,这导致大多数权重集中在表面点上。因此,遮挡区域的权重显著降低,造成了限制模型捕捉这些区域信息的归纳偏差。我们旨在在视图转换过程中弥合可见部分与遮挡部分之间的差距。具体而言,我们解决两种类型的遮挡:1)同一物体内的遮挡,2)不同物体之间的遮挡。对于这两种情况,我们构建了从可见部分到遮挡部分的概率转移矩阵。对于前一种遮挡类型,我们设计条件概率将表面概率转移到遮挡长度概率。给定像素点 x x x的离散深度概率 { P ( o d i ) } i = 1 D \{P(o^i_d)\}_{i=1}^D {P(odi)}i=1D,我们对离散化的遮挡长度预测采用相同的区间划分。我们引入贝叶斯条件概率 P ( o l ∣ o d ) P(o_l|o_d) P(ol∣od),将离散深度概率 P ( o d ) P(o_d) P(od)转换为离散遮挡长度概率 P ( o l ) P(o_l) P(ol):
P ( o l j ) = ∑ i = 1 D P ( o l j ∣ o d i ) ⋅ P ( o d i ) , j = 1 , . . . , D . ( 3 ) P(o^j_l) = \sum_{i=1}^D P(o^j_l | o^i_d) · P(o^i_d), \quad j = 1,...,D. \quad (3) P(olj)=i=1∑DP(olj∣odi)⋅P(odi),j=1,...,D.(3)
为了确定 P ( o l j ∣ o d i ) P(o^j_l | o^i_d) P(olj∣odi),我们考虑深度的物理意义:如果相机视线到达点 i i i,则表示所有深度更浅的点(即索引小于 i i i的点)都是空的。因此,我们只需估计深度 d i d_i di到更大深度位置的条件概率。 P ( o l j ∣ o d i ) P(o^j_l | o^i_d) P(olj∣odi)被建模为:
P ( o l j ∣ o d i ) = { 0 , if j < i 1 , if j = i f h ( x , j − i ) , if j > i . ( 4 ) P(o^j_l | o^i_d) = \begin{cases} 0, & \text{if } j < i \\ 1, & \text{if } j = i \\ f_h(x,j - i), & \text{if } j > i. \end{cases} \quad (4) P(olj∣odi)=⎩ ⎨ ⎧0,1,fh(x,j−i),if j<iif j=iif j>i.(4)
其中, f h ( x , j − i ) f_h(x,j - i) fh(x,j−i)表示如果区间 i i i对应于表面点,则区间 j j j被占用的可能性。对于每个像素点 x x x,我们计算 ( D − 1 ) (D - 1) (D−1)个离散概率,涵盖 i i i和 j j j之间的所有相对位置。在实践中,从深度到遮挡长度概率的转换是通过将深度概率与因果条件概率矩阵相乘来实现的。对于物体间的遮挡,我们设计了一个概率转移矩阵,以将占用概率传播到周围点。对于每个点 ( u , v , d i ) (u,v,d^i) (u,v,di),我们根据其特征 x x x估计多个偏移量 ( Δ u k , Δ v k ) (\Delta u_k,\Delta v_k) (Δuk,Δvk)及相应的转移权重 w k w_k wk。新的周围点 ( u + Δ u k , v + Δ v k , d i ; w k ⋅ P ( o l i ) ) (u + \Delta u_k,v + \Delta v_k,d^i;w_k · P(o_l^i)) (u+Δuk,v+Δvk,di;wk⋅P(oli))通过软填充被纳入 M T M_T MT,并可以在训练过程中进行优化。为了提高计算效率,我们仅对具有最高深度概率的 k k k个点应用此转移。深度概率在二维到三维语义转换中的主导作用可能会由于初始深度估计不准确而导致模型收敛不佳。为了解决这个问题,我们引入了一种去噪操作,类似于物体检测算法中的查询去噪[8, 14, 49]。该方法利用真实深度概率来指导早期模型训练。我们采用真实深度和预测深度的加权平均来引导训练中的自适应提升过程。真实深度的权重初始化为1,并根据余弦退火策略逐渐降低到0。这可以表示为:
P ( o d ) = 1 + cos ( π t T ) 2 ⋅ P g t ( o d ) + 1 − cos ( π t T ) 2 ⋅ P p r e d ( o d ) , ( 5 ) P(o_d) = \frac{1 + \cos\left(\frac{\pi t}{T}\right)}{2} · P_{gt}(o_d) + \frac{1 - \cos\left(\frac{\pi t}{T}\right)}{2} · P_{pred}(o_d), \quad (5) P(od)=21+cos(Tπt)⋅Pgt(od)+21−cos(Tπt)⋅Ppred(od),(5)
其中, P ( o d ) P(o_d) P(od)是用于自适应提升的最终深度概率。 P g t ( o d ) P_{gt}(o_d) Pgt(od)和 P p r e d ( o d ) P_{pred}(o_d) Ppred(od)分别是真实和预测的深度概率。 t t t是当前训练步骤, T T T是总的退火步骤数。在测试期间, P ( o d ) = P p r e d ( o d ) P(o_d) = P_{pred}(o_d) P(od)=Ppred(od)。
5. 基于语义原型的占用头
在2D到3D特征转换之后,我们通过共享原型增强2D和3D特征之间的语义对齐。如图4所示,我们为每个类别初始化一个语义原型,该原型同时作为2D和3D特征损失计算中的类别权重。这种共享原型的方法创建了一个连接2D和3D语义的捷径,促进了跨维度的一致特征表示。
图4. 基于语义原型的占用头。共享的语义原型为2D和3D特征计算分割对数值。训练仅在根据对数值不确定性采样的前K个体素(或像素)上进行。
考虑到每个类别的原型,解码语义占用的直观方法是计算体素特征与原型之间的相似性,然后进行交叉熵监督。然而,由于驾驶场景中语义类别的高度偏斜分布,这种方法并不理想。为了解决这一不平衡问题,我们提出了一种原型无关的损失,仅考虑每个场景的真实占用图中存在的类别。
我们通过真实数据提取所有现有语义类别的原型(包括空类的嵌入),并计算这些原型与3D特征之间的内积,以生成类别掩码。为了进一步增强尾部类别的训练,我们采用了一种基于不确定性和类别先验的采样技术 [6, 13, 50]。我们使用从内积得出的每个原型的对数映射作为每个体素不确定性的度量。这种不确定性与类别先验形成一个多项分布。然后,我们根据该分布从整个占用图中采样K个体素。损失仅在采样点上计算。最终的3D感知损失被公式化为二元交叉熵和Dice损失的组合:
L 3 D = α L D i c e + β L b c e (6) L_{3D} = \alpha L_{Dice} + \beta L_{bce} \tag{6} L3D=αLDice+βLbce(6)
其中, α \alpha α和 β \beta β是平衡系数, L D i c e L_{Dice} LDice和 L b c e L_{bce} Lbce分别表示Dice损失和二元交叉熵损失。每个类别掩码是独立预测的,确保丰富的类别不会掩盖少数类。L2D在2D空间中应用类似的监督,使用Dice损失和二元交叉熵损失来指导2D特征图。最终,每个体素的预测类别被确定为对语义原型或空嵌入响应最高的类别:
o
v
=
arg
max
c
(
M
L
P
(
P
c
)
⋅
f
v
)
(7)
o_v = \arg\max_c(MLP(P_c) \cdot f_v) \tag{7}
ov=argcmax(MLP(Pc)⋅fv)(7)
其中,
f
v
\mathbf{f}_v
fv 表示体素的特征,
P
c
P_c
Pc 表示类别
c
c
c 的原型或自由嵌入,而 MLP 则进一步对
P
c
P_c
Pc 进行编码。
6. 基于BEV成本体积的占用流预测
如图2所示,我们从编码的体积特征中解码占用流。基本上,流网络 f f l o w f_{flow} fflow 预测占用流为:
o ^ f ^ = f f l o w ( f v ) , (8) \hat{o}_{\hat{f}} = f_{flow}(f_v), \tag{8} o^f^=fflow(fv),(8)
我们通过最小化L2损失并最大化余弦相似度来监督与真实流的对比:
L f l o w r e g = ∥ o ^ f − o f ∥ 2 2 − o ^ f ⋅ o f ∥ o ^ f ∥ 2 ⋅ ∥ o f ∥ 2 , (9) \mathcal{L}_{f l o w}^{reg} = \| \hat{o}_f - o_{f} \|^2_2 - \frac{\hat{o}_f \cdot o_{f}}{\| \hat{o}_f \|_2 \cdot \| o_{f} \|_2}, \tag{9} Lflowreg=∥o^f−of∥22−∥o^f∥2⋅∥of∥2o^f⋅of,(9)
其中L2损失确保了幅度的准确性,而余弦相似度则保证了方向的精确性。同时预测语义占用和流需要同时考虑语义和运动信息,这增加了特征编码的压力。因此,我们提出基于跨帧语义信息构建流先验(即BEV成本体积)。具体而言,我们对0到4米高度的体积特征进行平均,以创建一个以前景为中心的BEV特征,如图5所示。我们对BEV特征进行下采样,以增加感受野,同时减少计算开销。然后,我们使用相机参数将前一帧的BEV特征包裹到当前帧的坐标系中,并在每个点周围的多个假设点与当前帧特征进行匹配。成本体积通过计算每对特征之间的余弦相似度构建:
图5. 流头的示意图。成本体积是由下采样的BEV特征生成的,并与体积特征一起用于预测区间概率。最终的流值作为区间中心值的加权和进行计算。
c v ( f v ( t ) , i ) = f v ( t ) ⋅ w r a p ( f v ( t − 1 ) ( Δ p i ) ) ∥ f v ( t ) ∥ 2 ⋅ ∥ w r a p ( f v ( t − 1 ) ( Δ p i ) ) ∥ 2 , (10) cv(f_v^{(t)}, i) = \frac{f_v^{(t)} \cdot wrap(f_v^{(t-1)}(\Delta p_i))}{\| f_v^{(t)} \|_2 \cdot \| wrap(f_v^{(t-1)}(\Delta p_i)) \|_2}, \tag{10} cv(fv(t),i)=∥fv(t)∥2⋅∥wrap(fv(t−1)(Δpi))∥2fv(t)⋅wrap(fv(t−1)(Δpi)),(10)
其中 f v ( t ) f_v^{(t)} fv(t) 是当前帧的BEV特征, w r a p ( f v ( t − 1 ) ) wrap(f_v^{(t-1)}) wrap(fv(t−1)) 是前一帧的BEV特征包裹到当前帧的坐标系中,而 Δ p i \Delta p_i Δpi 表示预定义的假设点。我们省略了后处理的上采样和扩展操作,如图5所示。然后将成本体积与当前帧的BEV特征连接,方程8可以重写为:
o ^ = f f l o w ( c a t ( f v ( t ) , c v ( f v ( t ) ) ) ) . (11) \hat{o} = f_{flow}(cat(f_v(t), cv(f_v(t)))). \tag{11} o^=fflow(cat(fv(t),cv(fv(t)))).(11)
基于成本体积的流预测方法通过在前一帧中与不同位置的特征进行语义匹配来计算流,从而减轻了同时编码语义和运动的表示负担。值得注意的是,它重用了前一帧的缓存体积特征,避免了第二次推理的需要。
为了提高我们模型在不同尺度上预测流值的能力,我们提出了一种混合方法,通过结合回归和分类来实现。我们根据从训练集中得出的最大和最小流值将流值划分为多个区间。我们的流头预测流落入每个区间的可能性。连续流预测被公式化为区间中心值的加权和:
o ^ = f ∑ i = 1 N b p b i ⋅ b i , (12) \hat{o} = f \sum_{i=1}^{N_b} p_b^i \cdot b^i,\tag{12} o^=fi=1∑Nbpbi⋅bi,(12)
其中 p b i p_b^i pbi 是第 i i i 个区间的预测概率, b i b^i bi 是与第 i i i 个区间对应的流值,而 N b N_b Nb 是区间的总数。
基于方程9中的回归监督损失,我们引入了一个额外的基于真实值区间索引的分类损失:
L f l o w c l s = − ∑ i = 1 N b 1 ( I n d e x [ o f ; b ] = b i ) log ( p b i ) , (13) \mathcal{L}_{f l o w}^{c l s} = -\sum_{i=1}^{N_b} \mathbb{1}(Index[o_f; b] = b^i) \log(p_b^i), \tag{13} Lflowcls=−i=1∑Nb1(Index[of;b]=bi)log(pbi),(13)
其中 1 ( ⋅ ) \mathbb{1}(\cdot) 1(⋅) 是指示函数, I n d e x [ o f ; b ] Index[o_f; b] Index[of;b] 表示真实值 o f o_f of 在预定义区间中的索引。最终的占用流损失为:
L f l o w = L f l o w r e g + L f l o w c l s . (14) \mathcal{L}_{f l o w} = \mathcal{L}_{f l o w}^{r e g} + \mathcal{L}_{f l o w}^{c l s}. \tag{14} Lflow=Lflowreg+Lflowcls.(14)
7. 结论
在本文中,我们探讨了基于视觉的三维语义占用和流预测所面临的挑战。我们提出了一种考虑遮挡的自适应提升方法,并辅以深度去噪,以增强二维到三维视图转换过程的适应性和鲁棒性。为了进一步改善语义占用学习,我们引入了一种基于语义原型的占用头,该方法对齐了二维和三维语义,并结合困难样本挖掘技术以缓解长尾问题。此外,我们提出了一种基于BEV成本体积的方法,以促进占用流学习,从而减轻特征同时表示语义和流的负担。在Occ3D和OpenOcc数据集上进行的评估表明,我们的方法优于当前的最先进解决方案。得益于我们方法的轻量化特性,我们提供了多个模型版本:我们性能最优的模型在可比性能下比其他方法更快,而我们最快的模型在与类似速度的方法相比时表现出色。