论文阅读笔记——MTGS: Multi-Traversal Gaussian Splatting
MTGS 论文
MTGS(Multi-Traversal Gaussian Splatting) 是一种用于多轨迹驾驶场景重建的新方法,通过共享静态几何、轨迹特定的动态节点和外观节点,分别建模静态背景、动态物体和外观变化。该方法利用 LiDAR 引导的曝光对齐和可学习的仿射变换解决轨迹内外观一致性问题,并通过深度和法线正则化提升几何精度和渲染质量。实验表明,MTGS 在 nuPlan 数据集上显著优于单轨迹基线方法,为自动驾驶模拟器和数字孪生应用提供了高质量的场景重建和新视角合成能力。
多轨迹数据(同一道路区块但不同时间采集的视频),具有同一个共享空间,对于静态空间 3D 几何是不变的,但对于时间、天气等场景动态是不一样的,无法运用插值等简单重建方法。
输入:
- 同一道路不同时间采集的视频帧集合: I = { I t , T ∈ R w × h × 3 ∣ t = 0 , … … , t T ; T = 1 , … … , T a l l } I=\{I_{t,T}\in R^{w×h×3}|t=0,……,t_T;T=1,……,T_{all}\} I={It,T∈Rw×h×3∣t=0,……,tT;T=1,……,Tall} 其中,t 表示时间帧索引,T 表示轨迹索引;每帧图像都有对应的相机位姿 ζ t , T = { W t , T , K t , T } \zeta_{t,T}=\{W_{t,T},K_{t,T}\} ζt,T={Wt,T,Kt,T} 世界坐标系到相机坐标系的变换矩阵和相机内参矩阵
- 彩色 LiDAR 点云 P t , T ∈ R K × 6 P_{t,T}\in R^{K×6} Pt,T∈RK×6
整个场景被表述为基于 3DGS 的多轨迹场景图:(思路类似于颜色都可以由红绿蓝给出)
- G s t a t i c \mathcal{G}_{static} Gstatic ——背景几何;轨迹和时间不变的属性 { x i , q i , s i , α i , β i b a s e } \{x_i,q_i,s_i,\alpha_i,\beta_i^{base}\} {xi,qi,si,αi,βibase} (位置,旋转,缩放,透明度,基础球谐系数)。
- G T a p p r \mathcal{G}_T^{appr} GTappr——轨迹 T 的外观变化;提供 T 轨迹的颜色残差(捕捉外观变化、光照、反射、色调等)以此来定义该轨迹的球谐系数 β i , 0 , 0 = β i b a s e β i , l , m = β i , T r e s i d u a l ( − l ≤ m ≤ l , 1 ≤ l ≤ l m a x ) \beta_{i,0,0}=\beta^{base}_i \qquad \qquad \beta_{i,l,m}=\beta_{i,T}^{residual}(-l≤m≤l,1≤l≤l_{max}) βi,0,0=βibaseβi,l,m=βi,Tresidual(−l≤m≤l,1≤l≤lmax) 通过旋转不变球谐系数 ( S H ) Y 0 , 0 (SH)Y_{0,0} (SH)Y0,0,迫使模型学习自然颜色并捕捉跨轨迹颜色变化。
- G T , k t s n t \mathcal{G}_{T,k}^{tsnt} GT,ktsnt——轨迹 T 中第 k 个瞬态物体。对于瞬态节点中的高斯,其位置和旋转都是在局部坐标系中,将其转换至全局坐标系(几何),同时为防止浮影,增加约束(离原来的地方太远): x i w o r l d ( t ) = R T , k ( t ) x i + T T , k ( t ) q i w o r l d ( t ) = R o t T o Q u a t ( R T , k ( t ) ) q i L o o b = − 1 ∣ G T , k o o b ∣ ∑ G i ∈ G k , T o o b log ( 1 − α i ) \begin{aligned}\mathbf{x}_{i}^{\mathbf{world}}(t)=\mathbf{R}_{T,k}(t)\mathbf{x}_{i}+\mathbf{T}_{T,k}(t)\\\mathbf{q}_{i}^{\mathbf{world}}(t)=\mathrm{RotToQuat}(\mathbf{R}_{T,k}(t))\mathbf{q}_{i}\\\mathcal{L}_{\mathrm{oob}}=-\frac{1}{|\mathcal{G}_{T,k}^{\mathrm{oob}}|}\sum_{G_{i}\in\mathcal{G}_{k,T}^{\mathrm{oob}}}\log\left(1-\alpha_{i}\right)\end{aligned} xiworld(t)=RT,k(t)xi+TT,k(t)qiworld(t)=RotToQuat(RT,k(t))qiLoob=−∣GT,koob∣1Gi∈Gk,Toob∑log(1−αi)其中 G T , k o o b \mathcal{G}_{T,k}^{oob} GT,koob 是局部坐标系中距离远点超过 1 2 S t s n t T , k + θ t o l \frac{1}{2}S_{tsnt}^{T,k}+\theta_{tol} 21StsntT,k+θtol 的高斯集合, θ t o l \theta_{tol} θtol 是容错阈值,确保前景的阴影在瞬态节点中。
外观建模:
- 同一时间点不同相机的曝光——将 LiDAR 点投影到不同相机图像中,调整曝光,使同一 LiDAR 点的像素颜色一致。 L d e p t h = ∣ 1 d p r e d − 1 d L i D A R ∣ \mathcal{L}_{depth}=|\frac{1}{d_{pred}}-\frac{1}{d_{LiDAR}}| Ldepth=∣dpred1−dLiDAR1∣同时为了解决稀疏点云导致的过拟合和不连续性: L n c c = 1 − 1 ∣ Ω ∣ ∑ p ∈ Ω ∑ s = 1 S 2 D p , s D p , s σ p σ p L_{\mathrm{ncc}}=1-\frac{1}{|\Omega|}\sum_{p\in\Omega}\sum_{s=1}^{S^2}\frac{D_{p,s}D_{p,s}}{\sigma_p\sigma_p} Lncc=1−∣Ω∣1p∈Ω∑s=1∑S2σpσpDp,sDp,s
- 同一相机不同时间曝光——通过可学习的仿射变换 A f f ( ⋅ ) = W i d x I + b i d x Aff(·)=W_{idx}I+b_{idx} Aff(⋅)=WidxI+bidx 。
在 3D 高斯中,法线方向是尤为重要的,将其定义为高斯椭球的最小缩放轴方向:
高斯法线提供了基础的几何信息,而像素法线估计补充了细节信息并提升了渲染质量。两者共同协作,确保了几何一致性、细节表现和光照效果。
n ^ i , p = R ⋅ O n e H o t ( a r g m i n ( s i , 0 , s i , 1 , s i , 2 ) ) \hat{n}_{i,p}=\boldsymbol{R}·OneHot(argmin(s_{i,0},s_{i,1},s_{i,2})) n^i,p=R⋅OneHot(argmin(si,0,si,1,si,2))
- 高斯法线通过 扁平化正则损失 稳定: L f l a t t e n = ∑ i m a x { m a x ( s i ) m e d i a n ( s i ) , r } − r + m i n ( s i ) \mathcal{L}_{flatten}=\sum_imax\{\frac{max(s_i)}{median(s_i)},r\}-r+min(s_i) Lflatten=i∑max{median(si)max(si),r}−r+min(si)
- 高斯法线由于其离散型以及其概率密度的性质(在边缘处无法准确反应几何表面的快速变化),故而对于物体而言更需要像素法线——通过变换矩阵和 α \alpha α 合成方法得到像素法线 N ^ \hat{N} N^,同时对点云投影到相机的伪深度图估计法线 N N N,并用 TV 损失平滑估计法线: L n o r m a l = ∣ N ^ − N ∣ + L T V ( N ^ ) \mathcal{L}_{normal}=|\hat{N}-N|+\mathcal{L}_{TV}(\hat{N}) Lnormal=∣N^−N∣+LTV(N^)
最终的损失函数:
L
=
λ
r
L
1
+
(
1
−
λ
r
)
L
S
S
I
M
+
λ
d
e
p
t
h
L
d
e
p
t
h
+
λ
n
c
c
L
n
c
c
+
λ
n
o
r
m
a
l
L
n
o
r
m
a
l
+
λ
f
l
a
t
t
e
n
L
f
l
a
t
t
e
n
+
λ
o
o
b
L
o
o
b
\mathcal{L}=\lambda_r\mathcal{L_1}+(1-\lambda_r)\mathcal{L_{SSIM}}+\lambda_{depth}\mathcal{L_{depth}}+\lambda_{ncc}\mathcal{L_{ncc}}+\lambda_{normal}\mathcal{L_{normal}}+\lambda_{flatten}\mathcal{L_{flatten}}+\lambda_{oob}\mathcal{L_{oob}}
L=λrL1+(1−λr)LSSIM+λdepthLdepth+λnccLncc+λnormalLnormal+λflattenLflatten+λoobLoob