news 2026/8/14 6:23:09

DepthSplat 实战入门:如何用十几张照片快速重建出可漫游的 3D 场景

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DepthSplat 实战入门:如何用十几张照片快速重建出可漫游的 3D 场景

DepthSplat 实战入门:如何用十几张照片快速重建出可漫游的 3D 场景

【免费下载链接】depthsplat[CVPR'25] DepthSplat: Connecting Gaussian Splatting and Depth项目地址: https://gitcode.com/gh_mirrors/de/depthsplat

DepthSplat 是 CVPR 2025 收录的开源项目,核心思路是把高斯溅射(Gaussian Splatting)与深度估计"接"进同一个框架,让两项任务互相成就。这篇教程不打算罗列论文术语,而是带着你从"第一次跑通"出发,一步步看懂它内部是怎么干活的,顺便把新手最容易栽的坑提前告诉你。如果你正想尝试多视图 3D 重建或新视角合成,这篇文章应该能帮你省下不少折腾时间。

先问一个问题:一叠照片,能换回一个能转的 3D 场景吗

想象一下这个场景:你手里有十来张从不同角度拍下的照片,目标是得到一个可以自由旋转、从任意视角观看的 3D 场景。放在几年前,这条路并不轻松——要么用 COLMAP 这类传统管线做稠密重建,耗时且容易在弱纹理区域翻车;要么走 NeRF 路线,每个场景都要单独训练几分钟到几十分钟。而 DepthSplat 走的是"前馈式"(feed-forward)路线:模型看过足够多的数据后,拿到新场景的几张图就能直接出结果,不需要针对这个场景做任何额外优化。官方给出的数字是:在单张 A100 上,用 12 张 512x960 分辨率的输入图完成一次前馈重建,只要 0.6 秒。

换句话说,从"输入图片"到"可渲染的 3D 表示",几乎是一眨眼的功夫。

动手之前,先搞清楚它到底擅长什么

DepthSplat 表面上看是一个渲染模型,实际上是"一身两职":

  • 新视角合成:用 3D 高斯溅射做渲染,输入 2~12 张带位姿的图片,即可生成任意新视角的画面,还能输出视频。
  • 尺度一致的深度估计:模型里那颗"深度大脑"可以单独拿出来用,对多视角图片预测深度图,并且深度的尺度与相机位姿的平移尺度对齐——这点对很多下游任务至关重要。

更妙的是这两个能力不是各自为战。论文里有一句话点出了精髓:更好的深度能带来更好的高斯溅射渲染;反过来,用高斯溅射做无监督深度预训练,又能显著降低深度预测误差。这正是项目名"Connecting"的含义所在。

它支持的输入视角数也很灵活:从 2 张到 12 张都可以,模型在 RealEstate10K(re10k)和 DL3DV 两个数据集上训练,相关配置都预置在config/dataset/目录下。

第一次跑通推理,跟着这 5 步走

接下来进入正题。假设你已经把仓库 clone 到了本地,开始配置环境。

第一步,装环境。官方开发环境是 Python 3.10、PyTorch 2.4.0、CUDA 12.4。建议先建一个干净的虚拟环境,然后依次执行:

pip install torch==2.4.0 torchvision==0.19.0 --index-url https://download.pytorch.org/whl/cu124 pip install -r requirements.txt

第二步,准备预训练权重。所有模型的下载地址都列在MODEL_ZOO.md里。把下载好的权重统一放进pretrained/目录即可。有个小细节值得注意:每个权重文件名都带了 sha256sum 前缀,下载完可以顺手用sha256sum校验一下完整性,避免"跑起来报错才发现文件坏了"的尴尬。

第三步,先测深度估计。项目直接给了现成脚本scripts/inference_depth.sh,它里面预置了 base 模型在 re10k 和 dl3dv 上做深度预测的多组命令,覆盖 2 视角、6 视角、12 视角三种输入规模。运行后会在output_dir里输出深度图(png)、原始深度(npy)以及拼接可视化图。

第四步,渲染一段视频看看效果。README 里给了一组开箱即用的 re10k 视频渲染命令,核心参数包括:

CUDA_VISIBLE_DEVICES=0 python -m src.main +experiment=dl3dv \ dataset.test_chunk_interval=1 \ dataset.roots=[datasets/re10k_720p] \ dataset.image_shape=[512,960] \ checkpointing.pretrained_model=pretrained/你的权重.pth \ mode=test \ dataset/view_sampler=evaluation \ dataset.view_sampler.num_context_views=6 \ test.save_video=true \ output_dir=outputs/depthsplat-re10k

注意,输出视频需要系统里装了 ffmpeg。如果你只想快速验证,可以只测少量场景,把dataset.test_chunk_interval调大即可(比如设为 10,就只跑全量测试集的十分之一)。

第五步,把重建出的高斯导出看看。在测试命令里加上test.save_gaussian=true,模型会把重建结果保存成.ply文件,用在线查看器就能直接打开,360 度拖拽观察重建质量,非常直观。

它内部到底是怎么干活的

跑通之后,不妨再往里看一眼。整条链路其实是一条清晰的生产线,核心逻辑在src/model/encoder/encoder_depthsplat.pysrc/model/decoder/decoder_splatting_cuda.py里。

先看编码器(深度从哪来)。深度预测部分由MultiViewUniMatch完成——这是一个多视图匹配网络,继承了 UniMatch 的匹配思路,配合 Depth Anything V2 的单目 ViT 特征做先验,再用 DPT 头把特征上采样回原分辨率。深度出来后,GaussianAdapter会把"图像 + 深度 + 匹配概率 + 特征"一起喂给一个小型卷积回归头,逐像素预测高斯的各项属性:尺度、旋转四元数、球谐系数、偏移和透明度。这一层的关键在于,高斯参数不是凭空乱猜的,而是被深度牢牢约束着。

再看解码器(画面怎么出来)。splatting_cuda解码器负责把这些 3D 高斯投影到目标视角并用 CUDA 光栅化出像素。正是这套并行实现保证了毫秒级的渲染速度。

有一点值得强调:这套"深度预测 → 高斯参数 → 渲染"的流程是端到端可训练的。训练时损失会一路传回编码器,让深度预测器也在学着"怎么预测对渲染最有利的深度"。这就是前文说的双向连接。

新手最常见的几个坑,帮你提前排掉

相机约定别搞反。项目用的是 OpenCV 约定的相机到世界变换(+X 向右、+Y 向下、+Z 指向屏幕内),且内参矩阵做了归一化:第一行除以图像宽度、第二行除以图像高度。自定义数据集时如果这里对不上,画面会歪得离谱。

数据集路径要改对。测试命令里的dataset.roots指向你本地数据集的绝对路径,dataset.image_shapedataset.ori_image_shape分别指定模型输入尺寸和原始图像尺寸,这两组数字必须和你的数据匹配。

显存不够怎么办。常见做法有三个:调低输入分辨率;在视频渲染时用test.render_chunk_size控制一次渲染的帧数;以及检查解码器配置里的点数上限参数,比如config/model/decoder/splatting_cuda.yaml中的max_points。另外别忘了dataset.test_chunk_interval——想快速调试时它就是你的救星。

想保存中间产物。测试配置里有一组test.save_*开关,save_depth存深度图、save_depth_npy存原始数据、save_gaussian存 ply、save_video存视频。全关的话测试会快很多,需要什么再逐个打开。

再进一步:自己训练一个模型

如果只是想用现成模型,看到这里就够了;想深入调教,那就聊聊训练。项目推荐的流程是"两阶段":

  1. 先在 re10k 上用 2 视角、256x448 分辨率预训练(参考scripts/re10k_depthsplat_train.sh);
  2. 再在 dl3dv 上用随机 2~6 视角微调(参考scripts/dl3dv_depthsplat_train.sh)。

训练前需要准备 UniMatch 和 Depth Anything V2 的预训练权重,并配置好 wandb 日志。硬件门槛没有想象中高——虽然官方默认用 8 张 GH200,但实验表明 4 张 RTX 4090 或单张 A100 也能得到非常接近的结果(PSNR 差距不超过 0.1dB),只要保证"GPU 数 × 单卡 batch size × 训练步数"这个总样本数不变就行。

深度估计模型还有一条额外的微调路线:在 ScanNet、TartanAir、VKITTI2 上用真值深度监督微调,输入视角数随机取 2~8,训练分辨率 352x640。这部分命令同样写在scripts/inference_depth.sh里。

下一步去哪儿

到这里,你已经完成了"跑通推理 → 看懂原理 → 绕开坑 → 尝试训练"的完整闭环。建议的下一步行动是:先用MODEL_ZOO.md里的预训练模型把你的数据跑一遍,再用assets/目录下的视图索引文件做一次完整的定量评估。如果对模型的小型化感兴趣,可以留意项目作者后续推出的更紧凑、更鲁棒的前馈高斯溅射模型;想深入论文细节,也可以对照arxiv 2410.13862的正文和仓库里的DATASETS.md边读边试。

多视图重建这条路,DepthSplat 把门槛拉低了一大截。现在,不妨打开终端跑起第一条命令吧。

【免费下载链接】depthsplat[CVPR'25] DepthSplat: Connecting Gaussian Splatting and Depth项目地址: https://gitcode.com/gh_mirrors/de/depthsplat

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/14 6:22:56

斯坦福CS 229机器学习速查手册:7份PDF装下整门课的知识点

斯坦福CS 229机器学习速查手册:7份PDF装下整门课的知识点 【免费下载链接】stanford-cs-229-machine-learning VIP cheatsheets for Stanfords CS 229 Machine Learning 项目地址: https://gitcode.com/GitHub_Trending/st/stanford-cs-229-machine-learning …

作者头像 李华
网站建设 2026/8/14 6:22:26

我给 AI 定了三条规矩:ContentAgent、ChatAgent、ReviewAgent

做内容型产品,AI 不是万能写手,而是需要分工协作的"虚拟团队"。上一篇我公开了知典小读的 PRD 和技术设计文档,有读者问了一个好问题:"你说用 DeepSeek 生成解读内容,那 AI 具体怎么工作?直…

作者头像 李华
网站建设 2026/8/14 6:21:37

Stork Oracle Auto Bot安全使用指南:规避风险与合规操作建议

Stork Oracle Auto Bot安全使用指南:规避风险与合规操作建议 【免费下载链接】Stork-Oracle-Auto-Bot Automated validation bot for the Stork Oracle network. This bot helps you automate the verification process to earn rewards through the Stork Oracle s…

作者头像 李华
网站建设 2026/8/14 6:20:20

如何完整提取你的个人数据?InfoSpider爬虫工具箱24+平台一次搞定

如何完整提取你的个人数据?InfoSpider爬虫工具箱24平台一次搞定 【免费下载链接】InfoSpider INFO-SPIDER 是一个集众多数据源于一身的爬虫工具箱🧰,旨在安全快捷的帮助用户拿回自己的数据,工具代码开源,流程透明。支持…

作者头像 李华
网站建设 2026/8/14 6:15:54

PageView手势冲突解决方案:3种手势类型深度解析

PageView手势冲突解决方案:3种手势类型深度解析 【免费下载链接】PageView SwiftUI view enabling navigation between pages of content, imitating the behaviour of UIPageViewController for iOS and watchOS 项目地址: https://gitcode.com/gh_mirrors/pa/Pa…

作者头像 李华
网站建设 2026/8/14 6:15:11

2026上半年AI大事复盘

2026上半年AI大事复盘:从模型内卷走向产业落地,开源、Agent、端侧全面爆发 文章标签:#AI #大模型 #AI Agent #开源大模型 #技术复盘 阅读时长:12分钟 摘要 2026年,AI正式告别参数堆砌的狂热时代。闭源旗舰继续冲高&…

作者头像 李华