如何用3dgs-mcmc训练你的第一个3D高斯模型?cap_max、noise_lr等5个核心参数逐行精讲

📅 2026/8/24 9:05:46
如何用3dgs-mcmc训练你的第一个3D高斯模型?cap_max、noise_lr等5个核心参数逐行精讲
如何用3dgs-mcmc训练你的第一个3D高斯模型cap_max、noise_lr等5个核心参数逐行精讲【免费下载链接】3dgs-mcmc[NeurIPS 2024 Spotlight] Implementation of the paper 3D Gaussian Splatting as Markov Chain Monte Carlo项目地址: https://gitcode.com/gh_mirrors/3d/3dgs-mcmc3dgs-mcmc 是 NeurIPS 2024 Spotlight 论文《3D Gaussian Splatting as Markov Chain Monte Carlo》的官方开源实现将马尔可夫链蒙特卡洛MCMC思想引入 3D 高斯溅射训练用重定位 新增取代传统的高斯克隆与剪枝让高斯数量稳定可控、重建质量更高。本文将带你从零开始训练自己的第一个 3D 高斯模型并逐行精讲cap_max、noise_lr、scale_reg、opacity_reg、init_type这 5 个决定训练成败的核心参数帮助你快速上手并深入理解其原理。为什么选择 3dgs-mcmc 训练 3D 高斯模型传统 3DGS 训练依赖克隆 剪枝来调节高斯数量数量剧烈波动、易出现过拟合和伪影。3dgs-mcmc 的做法截然不同✅数量恒定高斯总数由cap_max一次性设定训练全程平滑增长不再暴涨暴跌✅MCMC 重定位死亡的高斯被迁移到活跃高斯处重新初始化见 scene/gaussian_model.py 中的relocate_gs✅随机扰动采样每个优化步后按协方差对高斯位置注入噪声train.py第 140 行让模型更像 MCMC 采样器泛化更好✅更高质量、更快速度论文在同等甚至更少高斯数下取得更高 PSNR 与渲染帧率。下图展示了该方法在 bicycle 场景中与 InstantNGP、Plenoxels、Mip-NeRF360 的渲染效果与帧率对比一键安装3 步搭好 3D 高斯训练环境 ️项目基于原版 3DGS 代码库构建推荐 Ubuntu 20.04 CUDA 11.7 环境完整依赖定义在 environment.yml 中。# 1. 克隆仓库 git clone --recursive https://gitcode.com/gh_mirrors/3d/3dgs-mcmc cd 3dgs-mcmc # 2. 创建并激活 conda 环境 conda create -y -n 3dgs-mcmc-env python3.8 conda activate 3dgs-mcmc-env # 3. 安装 PyTorch 及子模块 pip install plyfile tqdm torch1.13.1cu117 torchvision0.14.1cu117 torchaudio0.13.1cu117 \ --extra-index-url https://download.pytorch.org/whl/cu117 conda install cudatoolkit-dev11.7 -c conda-forge CUDA_HOMEenvs/3dgs-mcmc-env/pkgs/cuda-toolkit/ \ pip install submodules/diff-gaussian-rasterization submodules/simple-knn/ 若diff-gaussian-rasterization编译失败可在setup.py中补充 nvcc 编译参数-Xcompiler -fno-gnu-unique后重装详见 README.md 的 Common Issues 一节。启动你的第一次 3D 高斯训练 准备好 COLMAP 格式的 COLMAP 数据images/sparse/后一条命令即可开训python train.py --source_path PATH/TO/Shape --config configs/bicycle.json --eval配置文件是 JSON 格式官方为 26 个场景都预置了参数位于 configs/ 目录。以 configs/bicycle.json 为例内容极简{ resolution: 4, cap_max: 5900000 }命令行参数优先级高于配置文件随时可用--cap_max、--noise_lr等覆盖。5 个核心参数逐行精讲 1. cap_max高斯数量天花板必设项这是本方法独有的强制参数——不设置直接退出# train.py 第 34-36 行 if dataset.cap_max -1: print(Please specify the maximum number of Gaussians using --cap_max.) exit()它控制新增高斯的上限。核心逻辑在 scene/gaussian_model.py 的add_new_gs第 501 行起target_num min(cap_max, int(1.05 * current_num_points))即每轮最多增长 5%且永不超过cap_max。建议值先跑一次原版 3DGS取它最终的高斯数作为cap_max论文明确采用此策略。2. noise_lr马尔可夫链的扰动引擎MCMC 的灵魂所在。每个优化步之后按高斯自身的协方差注入随机噪声# train.py 第 140-142 行 noise torch.randn_like(gaussians._xyz) * (op_sigmoid(1 - gaussians.get_opacity)) * args.noise_lr * xyz_lr noise torch.bmm(actual_covariance, noise.unsqueeze(-1)).squeeze(-1) gaussians._xyz.add_(noise)两个细节值得注意噪声幅度 ∝noise_lr × 位置学习率随训练推进自然衰减低不透明度高斯获得的扰动更大op_sigmoid(1-opacity)让半透明高斯更快被探索、被替换。论文中所有实验统一使用--noise_lr 5e5也是默认值见 arguments/init.py 第 92 行。3. scale_reg抑制高斯过度膨胀 高斯体积膨胀会导致画面糊、过拟合因此在总损失中加入体积正则项# train.py 第 103 行 loss loss args.scale_reg * torch.abs(gaussians.get_scaling).mean()论文所有实验均使用--scale_reg 0.01。它是 MCMC 版本独有的正则器原版 3DGS 没有调小可放宽约束调大则模型更紧致。4. opacity_reg让高斯保持诚实的不透明度与scale_reg并列的第二个正则项# train.py 第 102 行 loss loss args.opacity_reg * torch.abs(gaussians.get_opacity).mean()防止模型用大量半透明高斯糊弄重建。取值策略Deep Blending 数据集--opacity_reg 0.001该数据集本就透明物体多其他场景--opacity_reg 0.01。5. init_type随机初始化 vs SFM 点云--init_type random # 纯随机点初始化MCMC 推荐论文主结果即如此 --init_type sfm # 用 COLMAP 稀疏点云初始化原版 3DGS 默认做法由于 MCMC 采样不依赖初始分布random初始化反而更公平——即使没有高质量 SfM 结果也能获得稳定效果这也是新手最省心的一项设置。训练效果一览MCMC 采样带来更干净的画面 ✨下左图better.png与下右图worse.png来自项目素材分别展示同一街景中处理得当与出现模糊伪影的 3D 高斯渲染效果——直观说明scale_reg/opacity_reg正则参数的重要性前者画面清晰、几何贴合真实场景后者大面积失焦模糊。常见问题排查 ⚠️现象原因与解法启动即提示 Please specify the maximum number of Gaussians未设置cap_max请在命令行加--cap_max N或写入配置文件子模块编译失败修改submodules/diff-gaussian-rasterization/setup.py的extra_compile_args加-Xcompiler -fno-gnu-unique并重装克隆仓库权限错误检查 SSH key或改用 HTTPS 方式克隆训练结果模糊调大scale_reg/opacity_reg或提高cap_max小结用 3dgs-mcmc 训练第一个 3D 高斯模型只需记住一条主线cap_max定规模、noise_lr管采样、scale_reg控体积、opacity_reg控透明、init_type选起点。5 个参数全部有论文推荐值5e5 / 0.01 / 0.01 / random新手直接照抄即可获得稳定、高质量的重建效果在此基础上按需微调即可发挥 MCMC 高斯溅射的全部潜力。【免费下载链接】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),仅供参考