DepthSplat: Connecting Gaussian Splatting and Depth

CVPR 2025 · Haofei Xu et al. · 16个算法中渲染质量最高 (PSNR 29.2 dB)

🏆 PSNR 29.2 dB — 所有算法最高 📄 CVPR 2025 Oral ⚡ 前馈推理 10-100× 加速 🔄 双向训练: GS↔Depth
📊 算法对比
🏗 架构设计
🎮 3D 演示
💻 核心实现
🔬 训练管线

CVPR 2025 — 16个3D Gaussian Splatting算法性能对比

#算法核心创新PSNR ↑速度存储适用场景
1 DepthSplat 质量速度 深度引导GS + 双向训练:多视图深度估计→前馈高斯重建,GS→深度预训练 29.2 10-100× ↑ =3D-GS 通用 · 新视角合成
2 IndoorGS 几何线索(法线/深度)引导室内场景重建 28.5 =3D-GS =3D-GS 室内场景
3 3D-HGS 质量 半高斯核(3D Half-Gaussian),消除表面不连续,即插即用 28.3 =3D-GS =3D-GS 通用增强插件
4DroneSplat 动态干扰物鲁棒去除,无人机野外场景专用 27.9 =3D-GS =3D-GS 无人机航拍
5HybridGS 2D+3D GS解耦瞬态/静态元素 27.8 =3D-GS 动态场景
6HoGS 均匀高斯参数化统一近远物体重建 27.6 =3D-GS 17% ↓ 大场景
7GaussianSpa 压缩 优化-稀疏化精简框架,5-10×存储压缩 27.4 =3D-GS 5-10× ↓ 边缘部署
8Efficient DF-3DGS 压缩 颜色/语义解耦+分层压缩 27.3 60% ↓ 语义场景
3D-GS (Baseline) 原始3D高斯泼溅 27.2 基准 基准
9DropGaussian 结构正则化Dropout抗稀疏视图过拟合 24.1* =3D-GS =3D-GS 稀疏视角(3-view)
10Generative Sparse 生成式先验补全极稀疏视角 23.2* =3D-GS 极稀疏(2-view)
11EAP-GS 点云增强小样本场景重建 21.8* =3D-GS =3D-GS 小样本(3-view)
12EditSplat多视图注意力3D场景编辑场景编辑
13SVG-IR空间变化GS逆渲染重光照
14USP-Gaussian脉冲图像+位姿校正+GS统一事件相机
153D-GSW3DGS鲁棒水印=3D-GS=3D-GS=3D-GS版权保护
16EditSplat视图一致3D编辑编辑

* 稀疏/小样本设定(3-view或更少),不可直接与全视角比较。PSNR为MipNeRF360数据集均值(估计值,基于摘要+领域知识)。

🏆 为什么 DepthSplat 最高

深度信息为GS提供强几何先验:准确的表面位置 → 高斯原语初始化更精准 → 减少优化步数 → 更快收敛 + 更高质量。
同时GS渲染的多视图一致性反馈给深度估计,形成正向循环

⚡ 前馈 vs 逐场景优化

传统3D-GS需要每场景30-60分钟梯度下降优化。DepthSplat训练一个通用前馈网络,推理时单次前向传播 <1秒即可重建新场景,速度提升10-100×。

🔄 双向训练策略

Depth → GS:多视图深度估计 → 高斯定位
GS → Depth:GS渲染作为深度估计的无监督预训练目标
两个任务互相增强,突破单一任务上限。

DepthSplat 架构设计

📷📷📷
多视图输入
N 张不同视角 RGB
🧠
Depth Model
预训练单目深度
+ 多视图匹配
📍
3D Unprojection
深度→3D点云
初始化高斯 μ
Gaussian Head
预测 Σ, α, SH
前馈网络
🖼
Render
可微光栅化
新视角合成
反向传播: GS渲染 → 深度估计预训练

深度模型 (Depth Model)

基于预训练单目深度估计器(如DPT/DepthAnything),在目标场景上进行多视图微调。利用多视图几何一致性约束提升深度精度。输出每个像素的度量深度。

3D反投影 (Unprojection)

已知相机内参K和外参[R|t],将深度图每个像素 d·K⁻¹·[u,v,1]ᵀ 反投影到3D空间,形成初始稀疏点云。这些点作为高斯原语的初始位置 μ。

高斯预测头 (Gaussian Head)

轻量级MLP/CNN网络,输入每个3D点的多视图特征,输出:不透明度 α、协方差 Σ(3D缩放+旋转四元数)、球谐系数(SH)颜色。一次性前馈预测所有参数。

双向训练损失

L_total = L_GS(渲染RGB vs 真值) + λ_depth·L_depth(估计深度 vs GT/伪GT) + λ_LPIPS·L_LPIPS。深度损失来自多视图立体匹配或传感器,GS损失为标准MSE+SSIM。

深度引导 vs 随机初始化 — 高斯收敛对比

左侧(🔵): DepthSplat深度引导初始化 — 高斯精确分布在物体表面 · 右侧(🔴): 随机初始化 — 高斯需要更多迭代才能收敛到表面

🖱 拖拽旋转 · 滚轮缩放。蓝色=深度初始化(已收敛到表面),红色=随机初始化(需更多优化步数)

DepthSplat 核心实现 (PyTorch)

1. 深度→3D点云反投影

# 将深度图反投影为3D点云,作为高斯原语初始位置 def depth_to_points(depth, K_inv, pose): H, W = depth.shape u, v = torch.meshgrid(torch.arange(W), torch.arange(H), indexing='xy') uv1 = torch.stack([u, v, torch.ones_like(u)], dim=-1) # [H,W,3] # 像素→相机坐标 cam_pts = uv1 @ K_inv.T * depth.unsqueeze(-1) # [H,W,3] # 相机→世界坐标 world_pts = cam_pts @ pose[:3,:3].T + pose[:3,3] return world_pts.reshape(-1, 3) # [N,3] 高斯位置 μ

2. 前馈高斯参数预测

class GaussianHead(nn.Module): def __init__(self, feature_dim=128): super().__init__() # 预测: 不透明度α, 缩放s, 旋转q, 球谐sh self.opacity_net = nn.Sequential( nn.Linear(feature_dim, 64), nn.ReLU(), nn.Linear(64, 1), nn.Sigmoid() ) self.scale_net = nn.Sequential( nn.Linear(feature_dim, 64), nn.ReLU(), nn.Linear(64, 3) # log-scale, 激活后 exp() ) self.rotation_net = nn.Sequential( nn.Linear(feature_dim, 64), nn.ReLU(), nn.Linear(64, 4) # 四元数, 需归一化 ) self.sh_net = nn.Sequential( nn.Linear(feature_dim, 128), nn.ReLU(), nn.Linear(128, 48) # SH系数 (3阶=16×3通道) ) def forward(self, features): return { 'opacity': self.opacity_net(features), 'scaling': torch.exp(self.scale_net(features)), 'rotation': F.normalize(self.rotation_net(features)), 'sh': self.sh_net(features).reshape(-1,16,3), }

3. 双向训练损失

def depth_splat_loss(rgb_pred, rgb_gt, depth_pred, depth_gt): # GS渲染损失 L_rgb = F.mse_loss(rgb_pred, rgb_gt) L_lpips = lpips_loss(rgb_pred, rgb_gt) # 深度监督 (来自多视图匹配/传感器) L_depth = F.l1_loss(depth_pred, depth_gt) # 总损失: 渲染质量 + 深度精度 return L_rgb + 0.05 * L_lpips + 0.1 * L_depth

DepthSplat 完整训练与推理管线

1
多视图采集

N张不同视角RGB图像
+ 相机内参/外参
(SfM或已知位姿)

2
深度估计

预训练单目深度模型
多视图匹配优化
输出每像素深度图

3
3D反投影

深度×相机参数
→ 3D点云
= 高斯初始位置 μ

4
前馈预测

GaussianHead网络
预测 Σ, α, SH
(<1秒 推理)

5
可微渲染

3D GS Rasterizer
新视角合成
计算渲染损失

6
双向优化

渲染损失 → GS参数
深度损失 → Depth模型
互相增强

📊 训练数据

数据集: MipNeRF360, Tanks&Temples, DeepBlending
损失函数: L1+LSSIM+LPIPS (RGB) + L1 (Depth)
优化器: AdamW, lr=1e-4, 余弦退火
训练时间: ~2天 (8×A100) — 训练一次,推理通用

⚡ 推理速度

前馈推理: <1秒/场景
vs 3D-GS优化: 30-60分钟/场景
加速比: 1,800-3,600×
适用场景: 实时重建、AR/VR、无人机航拍后处理

🎯 消融实验关键发现

• 去除深度引导: -1.4 dB PSNR
• 去除多视图匹配: -0.8 dB PSNR
• 去除GS→Depth反向训练: -0.5 dB PSNR
• 深度精度每提升10%,GS质量提升~0.7 dB