news 2026/9/28 3:00:37

gsplat 5 分钟上手:3D 高斯泼溅重建 3D 场景,显存省 4 倍还能多卡加速

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
gsplat 5 分钟上手:3D 高斯泼溅重建 3D 场景,显存省 4 倍还能多卡加速

gsplat 5 分钟上手:3D 高斯泼溅重建 3D 场景,显存省 4 倍还能多卡加速

【免费下载链接】gsplatCUDA accelerated rasterization of gaussian splatting项目地址: https://gitcode.com/GitHub_Trending/gs/gsplat

跑满 3 万步迭代,一组照片就能变成浏览器里可旋转的 3D 场景,显存占用比官方 3D 高斯泼溅实现低最多 4 倍。gsplat 是一个 CUDA 加速的高斯泼溅光栅化开源库,解决"照片重建真实感 3D 场景"这件事,适合已有 PyTorch + CUDA 环境、想自己搭重建管线的开发者。

60 秒跑通:4 条命令看到渲染结果

开始前只需要一样东西:装好 CUDA 的 PyTorch。下面的演示不需要任何数据集,用 2000 个高斯去拟合一张图,几秒到几分钟就能收敛:

pip install gsplat git clone https://gitcode.com/GitHub_Trending/gs/gsplat && cd gsplat/examples pip install -r requirements.txt python image_fitting.py

第一条命令装库(首次 import 时会 JIT 编译 CUDA 代码,等几分钟);image_fitting.py默认用内置的红蓝象限图当目标,跑起来后终端持续打印 loss,能看到拟合效果逐步稳定下来。完整场景训练收敛起来是什么样,看官方 garden 场景的这个过程:左边是随机初始化,右边是训练后期。👇

核心机制:高斯泼溅到底在泼什么

把场景想象成一堆"彩色烟雾团"——没有网格,只有几百万个 3D 高斯,每个带位置、形状、朝向、不透明度、颜色。

  • 颜色用球谐函数表达,所以换个视角看颜色会变
  • 渲染是 splatting:把高斯投影到屏幕上前到后混合,比光线行进快得多
  • 全程可微:像素误差直接反传回每个高斯
  • 训练中还会稠密化:糊的地方补高斯,冗余的删掉(default / MCMC 两种策略)

按任务展开

端到端:从一组照片重建可旋转的 3D 场景

这个任务解决最常见的场景:你有一个物体或房间的拍摄照片,加 COLMAP 跑出的位姿,想要一个能环视的 3D 场景。

cd examples python datasets/download_dataset.py # Mip-NeRF 360 → data/360_v2/ python simple_trainer.py mcmc

examples/simple_trainer.py 默认读 garden 场景,训练 3 万步,在第 7000、30000 步自动存 checkpoint 并写评估指标,同时在本机 8080 端口开一个 web viewer。训练中途就能打开localhost:8080实时旋转查看,不用等训练结束。

怎么验证跑成功:results/garden/stats/下会出现val*.json,对比官方 3DGS 论文 garden 的 PSNR(26.96);浏览器里场景结构完整、没有明显漂浮噪点,就算过关。

鱼眼、滚动快门相机不用预校正的用法

这个任务解决非常规镜头:针孔畸变、鱼眼、f-theta、滚动快门。关键是原始图像不用先做去畸变——只要有 COLMAP 标定好的畸变参数,投影在 CUDA kernel 里直接算。

python simple_trainer.py mcmc --with_ut --with_eval3d --data_dir data/zipnerf/london

zipnerf数据就是带强畸变的实拍图,专门用来验证这条路;注意 3DGUT 路径只支持 MCMC 策略。参数细节(radial_coeffs、camera_model="fisheye"、rolling_shutter等)在 docs/3dgut.md 里有完整列表。

怎么验证:训练完用python simple_viewer_3dgut.py --ckpt <checkpoint 路径>查看,viewer 里实时调畸变参数,渲染应和原图一致。

显存压到 1/4 的设置:3 个关键开关

这个任务解决"场景大、照片多,显存爆掉"的问题。

  1. --packed:packed 格式光栅化,官方实测比官方 3DGS 实现省最多 4 倍显存、快 15%(单次前向略慢,训练整体更快)
  2. --data_factor 8:训练图降采样,默认 4,显存吃紧就翻倍
  3. 多卡:等效 batch ×4,所以步数同步缩到 1/4:
CUDA_VISIBLE_DEVICES=0,1,2,3 python simple_trainer.py default \ --packed --steps_scaler 0.25 --data_dir data/360_v2/garden

另外rasterization()支持任意批量渲染:1 万个高斯时,1 个 batch 前向 0.37ms,64 个 batch 也只要 3.7ms,显存随 batch 线性增长,适合离线批量出图。

怎么验证:训练时nvidia-smi显存有富余,4 卡跑完的总耗时约为单卡的 1/4。⚡

实时查看器:训练完不用等,1 条命令看结果

这个任务解决"训练中途想看效果"或"加载别处导出的 .ply 文件"。

python simple_viewer.py --ckpt results/garden/ckpts/ckpt_29999_rank0.pt --port 8080

也支持--ply加载标准 3DGS 导出文件,--scene_grid 3可以把场景平铺成 3×3 网格快速扫视全局。怎么验证:浏览器打开 8080 端口,场景可拖拽旋转、帧率稳定不卡。

高频问题

Q:首次运行特别慢,或报 CUDA 编译错误?PyPI 版首次运行 JIT 编译,等几分钟属正常;源码安装需要 torch 与 CUDA 版本匹配,Windows 编译问题看docs/INSTALL_WIN.md。

Q:训练 loss 不降或降不下去?九成是数据问题:默认init_type="sfm"需要数据目录里有sparse/0点云和正确的位姿;再检查--data_factor是否开太大导致图太糊。

Q:显存 OOM 怎么办?加--packed并把data_factor翻倍;MCMC 用户可用--strategy.cap-max限制高斯数量(官方基准用 100 万);还不行就降--sh_degree。

Q:重建发糊、有伪影或透明窟窿?先看 val PSNR:明显偏低是位姿问题,可试--pose_opt联合优化相机;透明窟窿是训练图有透明背景,加--random_bkgd随机背景抑制透明。

Q:viewer 打不开 / 8080 端口被占?用--port换个端口;纯离线训练不想开 viewer 就加--disable_viewer,评估指标仍会照常落盘。

跑通上面 garden 场景后,拿你自己的一组照片先跑一遍 COLMAP,再试试--with_ut在畸变数据上训练,对比校正前后两张图就知道 3DGUT 值不值得上了。

【免费下载链接】gsplatCUDA accelerated rasterization of gaussian splatting项目地址: https://gitcode.com/GitHub_Trending/gs/gsplat

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

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

N32WB03X BLE蓝牙透传方案设计与实现:从GATT到调试技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华