原文链接:https://www.ipb.uni-bonn.de/wp-content/papercite-data/pdf/zhong2024cvpr.pdf
1. 引言
为实现户外场景的精确3D重建,需要考虑运动物体的动态。过去的SLAM方法可使用多种策略处理动态:(1)使用预处理步骤从输入过滤动态,这要求对场景的语义解释;(2)在地图表达中建模占用,可通过回顾性地移除空空间的测量隐式移除动态;(3)将其纳入状态估计,对来自动态和静态部分的测量进行建模。本文方法使用(3),在地图表达中直接建模动态,得到时空占用地图表达。
隐式神经表达启发了本文对动态环境的4D重建。本文将时间相关的截断有符号距离函数(TSDF)编码为隐式神经场景表达。本文以连续激光雷达点云为输入,在每帧生成TSDF,用于提取网孔。背景的TSDF在整个序列中不变,容易从4D信号中提取出来,作为静态地图,可用于从原始点云中分割动态物体。与显式的体素表达相比,神经隐式表达可保留丰富的地图细节。
3. 本文的方法
本文的输入为点云序列 S 1 : N = ( S 1 , ⋯ , S N ) \mathcal S_{1:N}=(\mathcal S_1,\cdots,\mathcal S_N) S1:N=(S1,⋯,SN)及其相应的全局姿态 T t ∈ R 4 × 4 , t ∈ [ 1 , N ] T_t\in\mathbb R^{4\times4},t\in[1,N] Tt∈R4×4,t∈[1,N]。点云 S t = { s t 1 , ⋯ , s t M t } \mathcal S_t=\{s^1_t,\cdots,s^{M_t}_t\} St={st1,⋯,stMt}中的点 s t i ∈ R 3 s_t^i\in\mathbb R^3 sti∈R3。本文的目标是重建4D TSDF并保留静态3D地图。
3.1 地图表达
时间表达:TSDF为点 p ∈ R 3 p\in\mathbb R^3 p∈R3的标量函数,其值为点到最近表面的距离(若距离大于阈值,则将距离设置为阈值)。当点位于空空间或测量表面前时,符号为正;当点位于占用空间或测量表面后时,符号为负。
在动态场景中,点的有符号距离值可能会随时间变化。但对于静态物体的点而言,其有符号距离值不变。本文的思想是使用
K
K
K个全局共享的基函数
ϕ
k
:
R
→
R
\phi_k:\mathbb R\rightarrow \mathbb R
ϕk:R→R表达各点的时变SDF。则
t
t
t时刻,点
p
p
p的TSDF为
F
(
p
,
t
)
=
∑
k
=
1
K
w
p
k
ϕ
k
(
t
)
F(p,t)=\sum_{k=1}^Kw_p^k\phi_k(t)
F(p,t)=k=1∑Kwpkϕk(t)
其中
w
p
k
∈
R
w_p^k\in\mathbb R
wpk∈R为可优化的位置相关系数。本文将基函数初始化为离散余弦变换(DCT)基函数:
ϕ
k
(
t
)
=
cos
(
π
2
N
(
2
t
+
1
)
(
k
−
1
)
)
\phi_k(t)=\cos(\frac\pi{2N}(2t+1)(k-1))
ϕk(t)=cos(2Nπ(2t+1)(k−1))
则 ϕ 1 ( t ) = 1 \phi_1(t)=1 ϕ1(t)=1为时不变的。优化过程中,本文将 ϕ 1 ( t ) \phi_1(t) ϕ1(t)固定(将 w p 1 w_p^1 wp1视为点 p p p的静态SDF值),通过反向传播优化其余基函数。则 F ( p , t ) F(p,t) F(p,t)可分解为动态基函数 ϕ 2 ( t ) , ⋯ , ϕ K ( t ) \phi_2(t),\cdots,\phi_K(t) ϕ2(t),⋯,ϕK(t)的加权和与静态背景值 w p 1 w_p^1 wp1。
空间表达:为得到精确的场景重建,本文使用多分辨率稀疏体素网格存储空间几何信息。
首先积累多帧激光雷达点云,生成层次体素网格,并使用空间哈希表进行快速检索非空体素。
类似Instant-NGP,本文将体素角点特征向量
f
∈
R
D
f\in\mathbb R^D
f∈RD保存,得到多尺度体素角点特征图
F
l
F^l
Fl,然后三线性插值得到点
p
p
p的特征
f
p
=
∑
l
=
1
L
interpolate
(
p
,
F
l
)
f_p=\sum_{l=1}^L\text{interpolate}(p,F^l)
fp=l=1∑Linterpolate(p,Fl)
然后,使用全局共享的MLP将
f
p
f_p
fp解码为权重
w
p
=
(
w
p
1
,
⋯
,
w
p
K
)
w_p=(w_p^1,\cdots,w_p^K)
wp=(wp1,⋯,wpK)。由于各步骤均可微,可优化
F
l
F^l
Fl、MLP解码器和基函数的值。
3.2 目标函数
本文沿输入帧
S
t
\mathcal S_t
St的射线采样
(
q
,
t
)
(q,t)
(q,t),有
q
s
i
=
o
t
+
λ
(
s
t
i
−
o
t
)
q_s^i=o_t+\lambda(s^i_t-o_t)
qsi=ot+λ(sti−ot),其中
o
t
o_t
ot为激光雷达原点,
s
t
i
s^i_t
sti为激光雷达点。设置截断阈值
τ
\tau
τ后,将射线分为近表面和空空间两个区域:
T
surf
i
=
{
q
s
i
∣
λ
∈
(
1
−
τ
ˉ
,
1
+
τ
ˉ
)
}
T
free
i
=
{
q
s
i
∣
λ
∈
(
0
,
1
−
τ
ˉ
)
}
\mathcal T_\text{surf}^i=\{q_s^i|\lambda\in(1-\bar\tau,1+\bar\tau)\}\\ \mathcal T_\text{free}^i=\{q_s^i|\lambda\in(0,1-\bar\tau)\}
Tsurfi={qsi∣λ∈(1−τˉ,1+τˉ)}Tfreei={qsi∣λ∈(0,1−τˉ)}
其中 τ ˉ = τ ( ∥ s t i − o t ∥ ) − 1 \bar\tau=\tau(\|s_t^i-o_t\|)^{-1} τˉ=τ(∥sti−ot∥)−1。本文从两区域分别均匀采样 M s M_s Ms和 M f M_f Mf个点,并整合所有帧的样本,得到两个集合 D surf \mathcal D_\text{surf} Dsurf与 D free \mathcal D_\text{free} Dfree。
近表面损失:本文期望静态物体的近表面点的有符号距离不随时间变化,但其真值是不可知的。因此,只能利用其符号和其上界
d
surf
d_\text{surf}
dsurf(沿射线方向到表面的距离)来约束:
L
surf
(
d
^
,
d
surf
)
=
{
∣
d
^
∣
若
d
^
⋅
d
surf
<
0
∣
d
^
−
d
surf
∣
若
d
^
⋅
d
surf
>
d
surf
2
0
否则
L_\text{surf}(\hat d,d_\text{surf})=\begin{cases}|\hat d|&若\hat d\cdot d_\text{surf}<0\\|\hat d-d_\text{surf}|&若\hat d\cdot d_\text{surf}>d^2_\text{surf}\\0&否则\end{cases}
Lsurf(d^,dsurf)=⎩
⎨
⎧∣d^∣∣d^−dsurf∣0若d^⋅dsurf<0若d^⋅dsurf>dsurf2否则
其中 d ^ = F ( q , t ) , q ∈ D surf \hat d=F(q,t),q\in\mathcal D_\text{surf} d^=F(q,t),q∈Dsurf。该损失仅惩罚错误符号或超出上界的距离。对于表面上的点,该损失退化为L1损失。
此外,使用有符号距离函数的自然属性约束
D
surf
\mathcal D_\text{surf}
Dsurf内样本梯度向量的长度:
L
eikonal
(
p
,
t
)
=
(
∥
∂
F
(
p
,
t
)
∂
p
−
1
∥
)
2
L_\text{eikonal}(p,t)=(\|\frac{\partial F(p,t)}{\partial p}-1\|)^2
Leikonal(p,t)=(∥∂p∂F(p,t)−1∥)2
计算时,使用数值梯度替代自动梯度计算,以通过手动添加扰动增强鲁棒性:
∇
x
F
(
p
,
t
)
=
F
(
p
+
ϵ
x
,
t
)
−
F
(
p
−
ϵ
x
,
t
)
2
ϵ
\nabla_xF(p,t)=\frac{F(p+\epsilon_x,t)-F(p-\epsilon_x,t)}{2\epsilon}
∇xF(p,t)=2ϵF(p+ϵx,t)−F(p−ϵx,t)
其中 ∇ x F ( p , t ) \nabla_xF(p,t) ∇xF(p,t)为梯度 ∂ F ( p , t ) ∂ p \frac{\partial F(p,t)}{\partial p} ∂p∂F(p,t)的 x x x分量, ϵ x = ( ϵ , 0 , 0 ) T \epsilon_x=(\epsilon,0,0)^T ϵx=(ϵ,0,0)T为扰动。为促进收敛,初始时,使用大的 ϵ \epsilon ϵ,然后逐步减小之。
空空间损失:本文使用L1损失约束空空间点
p
∈
D
free
p\in\mathcal D_\text{free}
p∈Dfree的有符号距离(期望的SDF为
τ
\tau
τ)
L
free
(
d
^
)
=
∣
d
^
−
τ
∣
L_\text{free}(\hat d)=|\hat d-\tau|
Lfree(d^)=∣d^−τ∣
基于距传感器原点的距离阈值
r
dense
r_\text{dense}
rdense,将
D
free
\mathcal D_\text{free}
Dfree进一步分为密集子集
D
sparse
\mathcal D_\text{sparse}
Dsparse和稀疏子集
D
dense
\mathcal D_\text{dense}
Ddense。对于
p
∈
D
dense
p\in\mathcal D_\text{dense}
p∈Ddense,本文采样
S
t
\mathcal S_t
St中最近的激光雷达点
n
p
=
arg min
q
∈
S
t
∥
p
−
q
∥
2
n_p=\argmin_{q\in\mathcal S_t}\|p-q\|_2
np=argminq∈St∥p−q∥2,令
D
certain
=
{
p
∈
D
dense
∣
∥
p
−
n
p
∥
>
τ
}
\mathcal D_\text{certain}=\{p\in\mathcal D_\text{dense}|\|p-n_p\|>\tau\}
Dcertain={p∈Ddense∣∥p−np∥>τ}为空空间的确定点,然后使用静态有符号距离监督(期望的静态SDF为
τ
\tau
τ):
L
certain
(
p
)
=
∣
w
p
1
−
τ
∣
L_\text{certain}(p)=|w_p^1-\tau|
Lcertain(p)=∣wp1−τ∣
总的损失为
L
total
=
1
∣
D
surf
∣
∑
(
p
,
t
)
∈
D
surf
L
surf
(
d
^
,
d
surf
)
+
λ
e
L
eikonal
(
p
,
t
)
+
λ
f
∣
D
free
∣
∑
(
p
,
t
)
∈
D
free
L
free
(
d
^
)
+
λ
c
∣
D
certain
∣
∑
(
p
,
t
)
∈
D
certain
L
certain
(
p
)
\begin{aligned}L_\text{total}&=\frac1{|\mathcal D_\text{surf}|}\sum_{(p,t)\in \mathcal D_\text{surf}}L_\text{surf}(\hat d,d_\text{surf})+\lambda_eL_\text{eikonal}(p,t)\\&+\frac{\lambda_f}{|\mathcal D_\text{free}|}\sum_{(p,t)\in \mathcal D_\text{free}}L_\text{free}(\hat d)\\&+\frac{\lambda_c}{|\mathcal D_\text{certain}|}\sum_{(p,t)\in \mathcal D_\text{certain}}L_\text{certain}(p)\end{aligned}
Ltotal=∣Dsurf∣1(p,t)∈Dsurf∑Lsurf(d^,dsurf)+λeLeikonal(p,t)+∣Dfree∣λf(p,t)∈Dfree∑Lfree(d^)+∣Dcertain∣λc(p,t)∈Dcertain∑Lcertain(p)
可根据本文的4D地图表达进行动态物体分割。若 p p p属于静态背景,应有 w p 1 = 0 w_p^1=0 wp1=0。因此本文设置阈值 d static d_\text{static} dstatic,当点的 w p 1 > d static w_p^1>d_\text{static} wp1>dstatic时将其视为动态的。
4. 实验
4.1 静态建图质量
与传统TSDF融合方法、数据驱动的方法、和神经表达建图方法比较,本文方法有较好的性能。
4.2 动态物体分割
本文方法能实现最优的动静态分割。注意本文方法无需标注,且无需预处理或后处理。
5. 结论
局限性:目前,本文方法需要依赖SLAM估计的传感器姿态,且只能离线应用。