原文链接:https://arxiv.org/abs/2412.10371
简介:本文提出以高斯为中心的端到端自动驾驶框架GaussianAD,利用3D语义高斯描述场景。将场景初始化为均匀分布的3D高斯,并使用环视图像逐步细化之,得到3D高斯场景表达。使用稀疏卷积进行3D感知,并为动态语义高斯预测3D流,规划自车轨迹并进行未来场景预测。GaussianAD可端到端训练,其中感知真值是可选的。NuScenes数据集上的实验证明了本文方法在多种任务上的有效性。
1. 3D场景表达的重要性
自动驾驶的目标是在给定场景观测 { o } \{o\} {o}的情况下,产生安全的控制信号(如油门、制动和转向)。场景观测 { o } \{o\} {o}可从传感器(如相机)得到。
自动驾驶方法通常假设存在高性能控制器,并学习当前和历史观测
{
o
}
\{o\}
{o}到未来自车轨迹
{
w
}
\{w\}
{w}的映射
f
f
f:
{
o
T
−
H
,
⋯
,
o
T
}
→
f
{
w
T
+
1
,
⋯
,
w
T
+
F
}
\{o^{T-H},\cdots,o^T\}\overset{f}{\rightarrow}\{w^{T+1},\cdots,w^{T+F}\}
{oT−H,⋯,oT}→f{wT+1,⋯,wT+F}
其中 T T T为当前时刻, H H H为历史帧数, F F F为预测的未来帧数。每个路径点包括BEV下的 { x , y , ψ } \{x,y,\psi\} {x,y,ψ}由2D位置 { x , y } \{x,y\} {x,y}和偏航角 ψ \psi ψ。
传统自动驾驶方法将
f
f
f分解为感知、预测和规划模块,分别训练后进行连接:
{
o
T
−
H
,
⋯
,
o
T
}
→
d
T
d
T
→
{
d
T
+
1
,
⋯
,
d
T
+
F
}
{
d
T
+
1
,
⋯
,
d
T
+
F
}
→
{
w
T
+
1
,
⋯
,
w
T
+
F
}
\{o^{T-H},\cdots,o^T\}\rightarrow d^T\\ d^T\rightarrow\{d^{T+1},\cdots,d^{T+F}\}\\ \{d^{T+1},\cdots,d^{T+F}\}\rightarrow\{w^{T+1},\cdots,w^{T+F}\}
{oT−H,⋯,oT}→dTdT→{dT+1,⋯,dT+F}{dT+1,⋯,dT+F}→{wT+1,⋯,wT+F}
其中 d d d为场景描述(如实例边界框或地图元素),通常只包含场景的部分信息。
不同任务关注提取不同信息,而这些模块的分开训练会加剧这一问题。因此,有方法转向端到端训练,可微地连接不同模块并进行联合学习:
{
o
T
−
H
,
⋯
,
o
T
}
→
r
T
→
r
T
,
d
T
→
r
T
,
{
d
T
+
1
,
⋯
,
d
T
+
F
}
→
{
w
T
+
1
,
⋯
,
w
T
+
F
}
\{o^{T-H},\cdots,o^T\}\rightarrow r^T\rightarrow r^T,d^T\rightarrow r^T,\{d^{T+1},\cdots,d^{T+F}\}\rightarrow\{w^{T+1},\cdots,w^{T+F}\}
{oT−H,⋯,oT}→rT→rT,dT→rT,{dT+1,⋯,dT+F}→{wT+1,⋯,wT+F}
其中 r r r为场景表达,能提供比 d d d更加全面的信息。
r r r在整个模型中传递信息,因此其选择对性能至关重要。 r r r需要包含3D结构信息,并在性能和效率之间做出平衡。
2. 以高斯为中心的自动驾驶
3D高斯表达。类似GaussianFormer,本文使用3D语义高斯表达场景。每个高斯包括均值、协方差和语义分数属性。该表达是稀疏的显式表达。
从图像到高斯。3D高斯及其高维查询被初始化为可学习向量。使用高斯编码器迭代地增强表达。高斯编码器包含自编码模块(进行高斯之间的交互)、图像交叉注意力模块(聚合视觉信息)和细化模块(微调高斯属性)。注意与GaussianFormer不同,本文使用4D稀疏卷积构成的时间编码器从过去帧和当前帧聚合高斯信息。
从高斯进行稀疏3D检测。使用3D稀疏CNN网络
V
V
V编码3D高斯表达
r
r
r,并用一组智能体token
D
D
D来解码
V
(
r
)
V(r)
V(r)得到3D物体
a
a
a:
a
=
f
a
(
D
,
V
(
r
)
)
a=f_a(D,V(r))
a=fa(D,V(r))
其中 f a f_a fa为全局交叉注意力(学习3D物体token)和3D物体解码头 d a d_a da构成。
从高斯建立稀疏地图。类似检测任务,使用一组地图token
M
M
M表达语义地图。关注三类地图元素(车道分隔带、道路边界和人行横道):
m
=
f
m
(
M
,
V
(
r
)
)
m=f_m(M,V(r))
m=fm(M,V(r))
其中 f m f_m fm包括全局交叉注意力(学习地图token)和语义地图解码头 d m d_m dm构成。
运动预测。该模块通过预测其它交通参与者的未来轨迹来辅助自车轨迹规划。智能体token
D
D
D与地图token
M
M
M通过交叉注意力进行交互,得到运动token
M
o
M_o
Mo:
M
o
=
C
A
(
D
,
M
)
M_o=CA(D,M)
Mo=CA(D,M)
可对运动token M o M_o Mo使用运动解码器 d m o d_{mo} dmo,同时将 M o M_o Mo送入自车轨迹规划头。
用于场景预测的高斯流。从当前高斯表达
r
T
r^T
rT和预测的自车轨迹
w
T
+
N
w^{T+N}
wT+N预测高斯的移动,从而得到未来高斯表达
r
T
+
N
r^{T+N}
rT+N:
r
T
+
N
=
f
r
(
r
T
,
w
T
+
N
)
r^{T+N}=f_r(r^T,w^{T+N})
rT+N=fr(rT,wT+N)
注意此处没有考虑未来因自车移动产生的新观测区域。随后,将 r T + N r^{T+N} rT+N送入占用解码器 d o c c d_{occ} docc,以预测未来的占用。通过未来占用监督,可保证场景预测能力,从而提高自车轨迹预测性能。
3. 端到端GaussianAD框架
首先初始化均匀分布的3D高斯
G
0
G_0
G0,通过从环视图像
o
o
o整合信息逐步细化之,得到高斯场景表达
r
r
r。此时可选择性地从
r
r
r中提取不同的场景描述
d
d
d作为辅助任务。具体来说,可使用高斯到体素的溅射来获取密集体素特征、使用稀疏卷积获取稀疏查询。随后,直接预测3D高斯的演化,以减小信息损失,并依据高斯进行轨迹规划。GaussianAD的完整框架如下:
{
o
T
−
H
,
⋯
,
o
T
}
→
r
T
(
→
r
T
,
d
T
)
→
{
r
T
,
r
T
+
1
,
⋯
,
r
T
+
F
}
→
{
w
T
+
1
,
⋯
,
w
T
+
F
}
\{o^{T-H},\cdots,o^T\}\rightarrow r^T(\rightarrow r^T,d^T)\rightarrow\{r^T,r^{T+1},\cdots,r^{T+F}\}\rightarrow\{w^{T+1},\cdots,w^{T+F}\}
{oT−H,⋯,oT}→rT(→rT,dT)→{rT,rT+1,⋯,rT+F}→{wT+1,⋯,wT+F}
其中 ( → r T , d T ) (\rightarrow r^T,d^T) (→rT,dT)表示可选步骤。
训练时,对
d
d
d使用不同的感知损失(如3D占用预测损失、3D检测损失、语义地图损失和运动损失):
J
p
e
r
c
(
d
,
d
^
)
=
λ
o
c
c
J
o
c
c
(
d
,
d
^
)
+
λ
d
e
t
J
d
e
t
(
d
,
d
^
)
+
λ
m
a
p
J
m
a
p
(
d
,
d
^
)
+
λ
m
o
t
i
o
n
J
m
o
t
i
o
n
(
d
,
d
^
)
J_{perc}(d,\hat d)=\lambda_{occ}J_{occ}(d,\hat d)+\lambda_{det}J_{det}(d,\hat d)+\lambda_{map}J_{map}(d,\hat d)+\lambda_{motion}J_{motion}(d,\hat d)
Jperc(d,d^)=λoccJocc(d,d^)+λdetJdet(d,d^)+λmapJmap(d,d^)+λmotionJmotion(d,d^)
其中 ^ \hat{} ^ 表示相应的真值。
由于3D高斯为显式表达,可使用全局仿射变换
t
t
t来模拟给定自车位置
w
w
w下的场景表达
r
~
\tilde r
r~。获取预测的未来场景表达
{
r
T
,
r
T
+
1
,
⋯
,
r
T
+
F
}
\{r^T,r^{T+1},\cdots,r^{T+F}\}
{rT,rT+1,⋯,rT+F}后,根据规划的路径点
{
w
T
+
1
,
⋯
,
w
T
+
F
}
\{w^{T+1},\cdots,w^{T+F}\}
{wT+1,⋯,wT+F}模拟未来的场景表达:
{
r
~
=
t
(
r
,
w
)
}
F
\{\tilde r=t(r,w)\}^F
{r~=t(r,w)}F
其中上标
F
F
F表示未来的
F
F
F帧。使用模拟表达
{
r
~
}
F
\{\tilde r\}^F
{r~}F和真实表达
{
r
^
}
F
\{\hat r\}^F
{r^}F(从未来观测
{
o
}
\{o\}
{o}计算)之间的损失:
J
p
r
e
d
(
{
r
}
F
,
{
r
^
}
F
,
{
d
^
}
F
)
=
λ
r
e
J
r
e
(
{
r
~
}
F
,
{
r
^
}
F
)
+
λ
p
e
r
c
J
p
e
r
c
(
{
d
~
(
r
~
)
}
F
,
{
d
^
}
F
)
J_{pred}(\{r\}^F,\{\hat r\}^F,\{\hat d\}^F)=\lambda_{re}J_{re}(\{\tilde r\}^F,\{\hat r\}^F)+\lambda_{perc}J_{perc}(\{\tilde d(\tilde r)\}^F,\{\hat d\}^F)
Jpred({r}F,{r^}F,{d^}F)=λreJre({r~}F,{r^}F)+λpercJperc({d~(r~)}F,{d^}F)
其中 J r e J_{re} Jre计算高斯表达的差异, J p e r c J_{perc} Jperc比较来自高斯表达的场景描述之间的差异。
由于预测的未来场景表达
{
r
~
}
F
\{\tilde r\}^F
{r~}F取决于规划的轨迹
{
w
}
F
\{w\}^F
{w}F,故在传统的轨迹损失中加入预测损失:
J
p
l
a
n
(
{
w
}
F
,
{
w
^
}
F
)
=
λ
t
r
a
J
t
r
a
(
{
w
}
F
,
{
w
^
}
F
)
+
λ
p
r
e
d
J
p
r
e
d
(
{
r
}
F
,
{
r
^
}
F
,
{
d
^
}
F
)
J_{plan}(\{w\}^F,\{\hat w\}^F)=\lambda_{tra}J_{tra}(\{w\}^F,\{\hat w\}^F)+\lambda_{pred}J_{pred}(\{r\}^F,\{\hat r\}^F,\{\hat d\}^F)
Jplan({w}F,{w^}F)=λtraJtra({w}F,{w^}F)+λpredJpred({r}F,{r^}F,{d^}F)
总损失为感知损失、预测损失和规划损失之和:
J
G
a
u
s
s
i
a
n
A
D
=
J
p
e
r
c
+
J
p
r
e
d
+
J
p
l
a
n
J_{GaussianAD}=J_{perc}+J_{pred}+J_{plan}
JGaussianAD=Jperc+Jpred+Jplan
实验中提到,如果按照语义置信度剪枝最小语义分数的一部分高斯,感知任务的性能会略有下降,但规划任务的性能会有提升。