四步从照片到带纹理网格:3D 高斯泼溅工具 Spirula Studio 零依赖上手教程
【免费下载链接】spirula-studioCross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA.项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio
Spirula Studio 是一款跨厂商 GPU 运行的 3D 高斯泼溅训练工具:单个二进制spirula跑通从照片视频采集、稀疏位姿重建、splat 训练到带纹理网格导出的全流程,Vulkan 与 CUDA 双后端,全程不依赖 Python 环境。
三分钟上手
最快的路是预编译版:从项目 Releases 页选对应平台(Windows / Linux / macOS)的版本包,解压后双击,图形界面直接打开,零配置。
如果坚持源码构建,一条命令就够(Windows 下对应build_develop.bat):
bash build_develop.bash -DSS_BACKEND=vulkanSS_BACKEND有两个取值:Vulkan 跑在 NVIDIA、AMD、Intel、Apple 显卡上,是通用选择;CUDA 面向 NVIDIA。构建完成后,双击spirula进 GUI,或在终端敲./build_vulkan/spirula --help看全部子命令——训练、SfM 重建、AI 遮罩、网格化都挂在这一个可执行文件下。得益于量化训练,8GB 显存也装得下 1000 万个 SH3 高斯。
先准备好什么数据
数据能不能被打开,取决于你的目录长什么样。程序按 Nerfstudio → COLMAP → Metashape 的顺序探测布局,命中谁就用谁,你只需在数据集根目录放好这些内容:
- 图片放在
images/,遮罩、深度、法线分别放masks/、depths/、normals/,按文件名对应 - COLMAP 稀疏模型自动在
sparse/0、colmap/sparse/0、sparse等位置探测,多个模型时取注册图片最多的 - 种子点云可选:没有点云时解析只得到相机位姿,训练器会自动随机播种,不报错
- 鱼眼、360° 等距圆柱、完整畸变模型原生支持,直接加载训练,无需去畸变
- Metashape 的
.psx工程在 Align Photos 之后保存即可直接打开;目录里有多个.xml/.psx时用--metashape-xml指名
拿不准就逐项对照 docs/datasets.md,遮罩规则、相机模型和 360° 约定都写在那里。
跑通第一次训练
GUI 与 CLI 两个入口指向同一个训练会话,第一次训练两条路都通顺。
GUI 路线:主界面点Open a Dataset(或Create Dataset from Photos/Video从照片视频直接建数据集),选预设、勾几个基础选项,按Start Training,原生视口里实时看结果,产物默认写入<数据集>/outputs。
CLI 路线:
./build_vulkan/spirula train 3dgs --data my_dataset3dgs是默认预设,另有几个内置预设:360-camera(环拍相机)、hdr(高动态范围场景)、synthetic(合成数据)、meshing(为后续网格化调优)。显存吃紧就加train_resolution_divisor缩小训练分辨率,和 GUI 的 Image resolution 选项是同一个开关。
远程或长时间训练还有三个习惯值得养成:Spirula Studio 默认在 7007 端口起一个 Web 查看器,云端 GPU 用 SSH 端口转发就能在浏览器里盯进度;中断后接上一次的运行目录用--resume,Ctrl-C 中断也会存下可续训的 checkpoint;手头有一份不错的 PLY 时用--init-ply暖启动。每个标志的含义由spirula train --help逐条列出,帮助文本含简体中文在内的多语言版本。
黑盒里装了什么
仓库目录结构不必全背,分三组看就够了。
- 动手前必看:src/config/TrainConfig.h 是全部训练标志的单一事实来源;docs/datasets.md 是数据契约
- 用到再看:
src/engine/(训练引擎,纯 C++ 驱动层)、src/kernels/(投影、光栅化、密度优化、损失等 GPU 核)、src/data/(数据集管理器与三种格式解析器)、src/app/(唯一的spirula可执行文件:CLI、原生 GUI、Web 查看器)、src/sfm/(内置运动恢复结构)、src/mesh/(网格化管线) - 可先忽略:
src/sam/与src/nn/(AI 遮罩与 GPU 推理层)、viewer/(独立 WebGL2/WASM 查看器)、reference/scripts/(独立 Python 预处理脚本)、src/instantiations/(构建期生成代码,已提交入库)
配置单一来源这一点值得单独说。所有标志只在 TrainConfig.h 的一张 X-macro 表里定义一次,CLI 参数、--help文本、GUI 选项编辑器、运行时的config.json全部从这张表展开。相当于系统里的一张配置总表,每个开关都指向同一页,四处入口天然不会互相漂移。
卡住了先看这里
训练卡住时,先排除环境问题吗?多数情况不用,先对照这张表:
| 现象 | 处理 |
|---|---|
| 显存爆掉 / OOM | 加train_resolution_divisor降训练分辨率,或减小预设的 max splats |
| 提示目录不是受支持的数据集 | 对照 docs/datasets.md 核对布局;Metashape 用--metashape-xml指定 |
| 训练中断不想重来 | --resume <运行目录>;Ctrl-C 中断本身已保存可续训 checkpoint |
| 远程机器没有显示器 | 转发 7007 端口用浏览器看;GUI 的基础选项里也能额外挂起 Web 查看器 |
| 某个标志含义不清 | spirula train --help列出全部标志的含义与默认值 |
涉及两个后端的能力差异(比如内置 SfM 只在 Vulkan 构建里),查 docs/backends.md。
跑通之后还能做什么
第一个 splat 出来后,剩下的工具链都在手边。视频抽帧自动挑每段里最清晰的帧,支持按运动自适应的抽帧率——静止片段少抽、快速移动片段多抽;spirula sfm输出 COLMAP 兼容的sparse/稀疏模型;内置 SAM 遮罩能去掉手部、背景这类干扰物;然后训练;最后spirula mesh输出 PLY、OBJ、GLB 或 STL,全程支持顶点色与烘焙纹理贴图。
两处长期用得上的地方:viewer/目录是一个独立于训练的 WebGL2/WASM 在线查看器;reference/scripts/里的抽帧、降采样、去畸变等 Python 脚本是手工跑的预处理,不进主流程。想再深入,src/app/README.md 记录了 CLI 与 GUI 的预设和配置表,docs/下还有架构、数据集、测试等文档。
结尾
一个二进制、零 Python 依赖、跨厂商 GPU,Spirula Studio 把 3D 高斯泼溅的门槛压到了"数据放好、按下开始"。
今天就能做的动作:挑一组你熟悉物体的照片放进images/,用 GUI 的Create Dataset from Photos/Video建数据集,选3dgs预设开始训练——等这段文字读完,第一个 splat 应该已经在屏幕上。
【免费下载链接】spirula-studioCross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA.项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考