不用COLMAP也能重建3D?3dgs-mcmc随机初始化模式让普通照片直达3D高斯模型
【免费下载链接】3dgs-mcmc[NeurIPS 2024 Spotlight] Implementation of the paper "3D Gaussian Splatting as Markov Chain Monte Carlo"项目地址: https://gitcode.com/gh_mirrors/3d/3dgs-mcmc
3dgs-mcmc是 NeurIPS 2024 Spotlight 论文3D Gaussian Splatting as Markov Chain Monte Carlo的官方开源实现。它用随机初始化 + 马尔可夫链蒙特卡洛(MCMC)采样替代传统 3D 高斯泼溅(3D Gaussian Splatting)对 COLMAP 稀疏点云的依赖,让你只凭一组普通照片就能训练出又快又清晰的 3D 高斯模型。
为什么传统 3D 重建让新手望而却步?
传统 3DGS 流程有个隐藏门槛:必须先跑 COLMAP 做特征匹配和稀疏重建,得到points3D.ply作为高斯的初始位置。这一步在照片数量多、纹理重复的场景下经常卡顿甚至失败,对新手极不友好。
3dgs-mcmc 的思路是:初始点云根本不重要,让训练过程自己"长"出来。
随机初始化模式是怎么工作的?
核心逻辑在 scene/dataset_readers.py 的readColmapSceneInfo中:
--init_type random(默认值):在相机包围球内随机撒出10 万个点(num_pts=100000),位置和颜色全部随机,完全跳过 COLMAP 点云;--init_type sfm:走老路,用 COLMAP 稀疏点云初始化。
训练过程中,MCMC 的"生-死"机制接管一切(见 train.py 第 124-127 行与 scene/gaussian_model.py):
| 步骤 | 作用 |
|---|---|
relocate_gs | 把不透明度过低的"死"高斯重定位到有价值的区域(重定位逻辑在 utils/reloc_utils.py) |
add_new_gs | 在不超过--cap_max上限时新生高斯,直到数量达标 |
相当于用噪声学习率(--noise_lr)驱动高斯做随机游走,模型自己决定哪里需要更精细的几何——这就是为什么随机起点也能收敛出高质量结果。
一键安装步骤
项目基于原版 3DGS 代码库构建,已验证环境为 Ubuntu 20.04:
# 1. 克隆仓库 git clone --recursive https://gitcode.com/gh_mirrors/3d/3dgs-mcmc cd 3dgs-mcmc # 2. 创建 Python 3.8 环境 conda create -y -n 3dgs-mcmc-env python=3.8 conda activate 3dgs-mcmc-env # 3. 安装依赖(PyTorch 1.13.1 + CUDA 11.7) pip install plyfile tqdm torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu117 conda install cudatoolkit-dev=11.7 -c conda-forge # 4. 安装两个 CUDA 子模块 CUDA_HOME=PATH/TO/CONDA/envs/3dgs-mcmc-env/pkgs/cuda-toolkit/ pip install submodules/diff-gaussian-rasterization submodules/simple-knn/随机初始化训练命令
数据集需包含images/目录和 COLMAP 相机参数(sparse/0/)。完整命令:
python train.py --source_path PATH/TO/Shape --config configs/bicycle.json --eval --init_type random每个场景的预设配置都在 configs/ 目录下(如 configs/bicycle.json 中设定了cap_max: 5900000和resolution: 4)。论文所有实验的关键参数见 README.md:
| 参数 | 作用 | 论文默认值 |
|---|---|---|
--init_type | 初始化方式:random / sfm | random |
--cap_max | 高斯数量上限(必填) | 随场景,见 configs |
--scale_reg | 尺度正则项,防止高斯无限膨胀 | 0.01 |
--opacity_reg | 不透明度正则项 | 0.01 |
--noise_lr | MCMC 噪声学习率 | 5e5 |
训练完成后可用 render.py 渲染视频,full_eval.py 配合 metrics.py 批量计算 PSNR/SSIM/LPIPS 指标。
⚠️ 小技巧:
scale_reg和opacity_reg是 MCMC 模式的"稳定器",如果渲染结果出现上图这种模糊或飞散,可适当调大这两个值。
总结
- 🎲零门槛起点:
--init_type random免去 COLMAP 稀疏重建,照片目录 + 相机参数即可开训; - 📈MCMC 自动寻优:重定位 + 新增高斯的生-死过程让 10 万随机点自我进化成精细模型;
- ⚡实时渲染:官方对比图中 bicycle 场景仅需 6 分钟训练即可达到 PSNR 23.6、135 fps 的渲染速度。
想深入了解算法细节,可以直接阅读 docs/paper.pdf 论文原文,祝重建愉快!🚀
【免费下载链接】3dgs-mcmc[NeurIPS 2024 Spotlight] Implementation of the paper "3D Gaussian Splatting as Markov Chain Monte Carlo"项目地址: https://gitcode.com/gh_mirrors/3d/3dgs-mcmc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考