news 2026/8/24 10:08:55

不用COLMAP也能重建3D?3dgs-mcmc随机初始化模式让普通照片直达3D高斯模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
不用COLMAP也能重建3D?3dgs-mcmc随机初始化模式让普通照片直达3D高斯模型

不用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: 5900000resolution: 4)。论文所有实验的关键参数见 README.md:

参数作用论文默认值
--init_type初始化方式:random / sfmrandom
--cap_max高斯数量上限(必填)随场景,见 configs
--scale_reg尺度正则项,防止高斯无限膨胀0.01
--opacity_reg不透明度正则项0.01
--noise_lrMCMC 噪声学习率5e5

训练完成后可用 render.py 渲染视频,full_eval.py 配合 metrics.py 批量计算 PSNR/SSIM/LPIPS 指标。

⚠️ 小技巧:scale_regopacity_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),仅供参考

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

从车间里一台“会说话”的电机,读懂工业物联网的底层逻辑

很多人聊起工业物联网(IIoT)总觉得它是飘在云端的高大上概念,满屏都是技术术语和行业黑话,离普通开发者、离一线工厂的日常生产特别遥远。但其实你不用去翻厚厚的技术手册,只要走到任意一间普通的制造车间,…

作者头像 李华
网站建设 2026/8/24 10:05:14

嵌入式Linux开发:ARM平台Valgrind交叉编译与内存调试实战

1. 项目概述:为什么要在嵌入式开发中交叉编译Valgrind? 在嵌入式Linux开发里,内存泄漏和非法内存访问是两大“鬼见愁”问题。目标板资源有限,直接在板子上跑GDB调试,不仅效率低下,还可能因为工具链不完整而…

作者头像 李华