Spann3R 3D重建快速上手:安装配置与演示教程
【免费下载链接】spann3r[3DV'25 Award Candidate] 3D Reconstruction with Spatial Memory项目地址: https://gitcode.com/gh_mirrors/sp/spann3r
Spann3R 是一个支持从照片序列直接恢复场景三维结构的 3D 重建项目,核心思路是"空间记忆"——网络在逐帧处理图像时会累积并复用已见过的几何信息(该工作为 3DV 2025 获奖候选)。本文面向第一次接触该项目的新手,带你完成环境安装、权重准备、demo.py演示启动与 Gradio 网页界面运行,并讲清每个关键目录的职责,跑通后你就能复现增量式三维重建流程。
Spann3R 解决什么问题,适合谁用
它做的事情可以概括为:输入一段连续拍摄的图片序列(如手机录像抽帧),输出场景的点云、深度图和相机轨迹。相比"逐对图像独立估计再拼接"的传统做法,空间记忆机制让重建过程保持全局一致,长序列下漂移更少。
- 想用一段视频快速重建房间、展厅等场景的开发者;
- 做多视图几何、增量重建方向研究,需要可复现基线的同学;
- 想在重建结果上继续做 NeRF / 3D 高斯泼溅(可接 Nerfstudio 的 splatfacto)的进阶用户。
如何安装依赖并编译 CUDA 内核
建议全程在 conda 虚拟环境中操作,避免污染系统 Python。完整步骤如下:
git clone https://gitcode.com/gh_mirrors/sp/spann3r cd spann3r conda create -n spann3r python=3.9 cmake=3.14.0 conda install pytorch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 pytorch-cuda=11.8 -c pytorch -c nvidia pip install -r requirements.txt cd croco/models/curope/ python setup.py build_ext --inplace cd ../../../几个要点:
- 第 4 行按你显卡的 CUDA 版本调整
pytorch-cuda参数; requirements.txt锁定了关键版本,如numpy==1.26.4、gradio==4.43.0、opencv-python==4.10.0.84、einops==0.8.0、trimesh==4.4.9等;- ⚠️ 第 8、9 行编译的是 RoPE 旋转位置编码的 CUDA 扩展,位于
croco/models/curope/,跳过它 demo 无法运行; - Open3D 建议按官方说明安装开发版,0.16.0 起存在已知问题。
最后准备权重文件:
mkdir checkpoints cd checkpoints # 下载 DUSt3R 预训练权重,并放入 Spann3R 官方 checkpoint(下载地址以仓库 README 为准)两个权重都放在./checkpoints下即可,demo.py默认读取./checkpoints/spann3r.pth。
首次启动:demo.py 演示命令与参数说明
先按仓库 README 指引下载示例数据(两个真实场景),解压为./examples,然后运行:
python demo.py --demo_path ./examples/s00567 --kf_every 10 --vis --vis_cam| 参数 | 作用与修改建议 |
|---|---|
--demo_path | 输入图片序列目录,换成你自己的数据路径即可 |
--kf_every | 每多少帧记为一个关键帧,序列很长时可调大 |
--vis | 打开渲染窗口,手动调整视角后按空格开始增量重建渲染 |
--vis_cam | 同时可视化相机位姿 |
--save_path | 输出目录,默认./output/demo/ |
--ckpt_path | 权重路径,默认./checkpoints/spann3r.pth |
--save_ori | 保存原始图像对应的相机内参到transform.json,供 Nerfstudio 训练使用 |
💡 想接 Nerfstudio 做高斯泼溅渲染时,加--save_ori重跑一遍,然后执行ns-train splatfacto --data ./output/demo/s00567 --pipeline.model.camera-optimizer.mode SO3xR3,再用ns-render interpolate加载训练产出的config.yml渲染。具体流程以仓库 README 为准。
不想敲命令?启动 Gradio 交互界面
项目内置了一个网页界面,适合快速体验:
python app.py支持--server_port修改端口、--server_name指定绑定地址、--share生成临时共享链接,远程服务器上尤其好用。
关键目录与文件分工
spann3r/:项目主体,model.py(模型定义)、loss.py(训练损失)、training.py(训练循环)都在这里,datasets/下是各数据集的加载逻辑;croco/:底层视觉基础模型及 RoPE 的 CUDA 内核(croco/models/curope/),数据增强与 habitat 渲染工具也在其中;dust3r/:双视图重建的基座模块,含云优化器cloud_opt/与几何工具;docs/data_preprocess.md:Habitat、ScanNet++、ArkitScenes、Co3D、BlendedMVS 等训练数据的预处理说明;- 顶层脚本各司其职:
demo.py演示、app.py网页界面、train.py训练、eval.py评估。
如何训练与评估模型
训练需要多卡环境,示例命令为:
torchrun --nproc_per_node 8 train.py --batch_size 4评估则直接:
python eval.py训练数据的下载与预处理细节请阅读docs/data_preprocess.md,文中对每个数据集的目标路径(如./data/scannetpp)都有说明。
新手检查清单
✅ conda 环境 Python 3.9 + PyTorch 2.3.0,croco/models/curope/的 CUDA 扩展已编译成功; ✅ DUSt3R 权重与 Spann3R 权重均在./checkpoints/下,文件名与脚本默认路径一致; ✅ 示例数据已解压为./examples,--demo_path指向真实图片目录。
常见问题:加了--vis却没有窗口弹出,通常是服务器无图形环境,去掉--vis改为只跑重建,或改用app.py --share在本地浏览器查看;重建点云过稀,可尝试调低--conf_thresh;权重缺失时报 FileNotFoundError,检查--ckpt_path是否指向存在的文件。
【免费下载链接】spann3r[3DV'25 Award Candidate] 3D Reconstruction with Spatial Memory项目地址: https://gitcode.com/gh_mirrors/sp/spann3r
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考