从零到一:3D Gaussian Splatting自定义数据集实战指南

张开发
2026/4/5 1:31:38 15 分钟阅读

分享文章

从零到一:3D Gaussian Splatting自定义数据集实战指南
1. 环境准备搭建3D Gaussian Splatting开发环境第一次接触3D Gaussian Splatting时我花了两天时间才把环境配好。这里把踩过的坑都总结出来帮你省下这个时间。Windows平台确实比Linux麻烦些但只要跟着步骤走半小时就能搞定。首先需要安装三个基础工具Python 3.9建议从官网下载安装包记得勾选Add Python to PATHGit用于克隆项目仓库安装时选择Use Git from the Windows Command PromptCUDA 11.8必须与你的NVIDIA显卡驱动兼容可以通过nvidia-smi命令查看支持的最高版本注意如果你之前安装过其他版本的CUDA建议先卸载干净。我遇到过CUDA版本冲突导致训练时kernel报错的情况。安装完基础工具后打开命令提示符执行以下操作git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive cd gaussian-splatting接下来用Anaconda创建隔离环境没有Anaconda的话先去官网下载安装conda create -n gs_env python3.9 pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia conda activate gs_env环境创建完成后建议先测试CUDA是否可用import torch print(torch.cuda.is_available()) # 应该输出True print(torch.version.cuda) # 应该显示11.82. 数据准备拍摄与处理技巧去年我给公司产品做3D展示时用手机拍了200张照片就训练出了不错的效果。关键在于拍摄方法拍摄设备选择智能手机即可iPhone或安卓旗舰机效果最好单反相机更佳但要固定白平衡和曝光禁止使用鱼眼镜头会导致特征点匹配困难拍摄要点围绕物体每15度拍一张共24个水平角度每个水平角度从俯视30度到仰视30度每10度拍一张保持相同的对焦点建议手动对焦使用三脚架保持稳定避免强光直射和反光表面我整理了一个拍摄方案示例角度类型间隔度数拍摄张数水平旋转15°24垂直倾斜10°7总计-168照片准备好后在项目目录下创建文件夹结构mkdir -p data/input # 将所有照片放入data/input文件夹实测发现照片数量在200-300张时性价比最高。超过500张后训练时间大幅增加但质量提升有限。3. 相机位姿估计COLMAP实战详解COLMAP是整个过程最容易出问题的环节。我第一次运行时特征点匹配成功率不到30%后来发现是曝光不一致导致的。安装COLMAP 3.8从GitHub release页面下载Windows版本解压到C:\Program Files\COLMAP-3.8将bin目录添加到系统PATH右键此电脑→属性→高级系统设置→环境变量在Path中添加C:\Program Files\COLMAP-3.8\bin运行位姿估计conda activate gs_env python convert.py -s data这个过程中可能会遇到三个常见错误CUDA out of memory减少--max_image_size参数值匹配失败检查照片是否有模糊或曝光不一致缺少EXIF信息用Lightroom等工具统一添加焦距信息成功运行后会生成data/sparse文件夹包含以下关键文件cameras.bin相机内参images.bin相机外参points3D.bin稀疏点云小技巧如果COLMAP自动重建效果不好可以尝试手动添加特征点。在GUI界面选择Feature Extraction时将--SiftExtraction.max_image_size设为2000可以提高大图匹配精度。4. 模型训练与调优安装必要的依赖项pip install plyfile tqdm pip install submodules/diff-gaussian-rasterization pip install submodules/simple-knn启动训练建议在晚上开始长时间训练时可以离开python train.py -s data -m output --iterations 30000关键参数解析--iterations默认30000次简单场景可降到15000--resolution可设为1或2降低显存消耗--sh_degree球谐次数建议保持默认3训练过程分为三个阶段点云初始化前1000次迭代建立基础几何结构密度调整1000-7000次优化点云分布细节优化7000-30000次提升材质和光照效果监控训练进度可以观察以下指标Loss值应该稳定下降最终在0.01左右点云数量从初始的10万点增长到30-50万点PSNR理想情况下应大于25dB遇到显存不足时可以尝试降低--resolution参数使用--white_background简化背景减少输入图片数量5. 结果可视化与导出下载官方可视化工具从项目页面获取viewers.zip解压到项目根目录运行查看器.\viewers\bin\SIBR_gaussianViewer_app -m output查看器操作指南鼠标左键旋转视角鼠标右键平移场景滚轮缩放F键切换全屏S键保存当前视角截图如果需要导出模型用于其他平台转换到.ply格式from utils.general import load_ply points load_ply(output/point_cloud.ply)使用CloudCompare软件进行后处理导出为OBJ或FBX格式支持三维软件导入我在实际项目中发现直接使用官方查看器的交互效果最好。如果要集成到网页可以考虑使用Three.js加载转换后的点云但会损失部分视觉效果。6. 常见问题解决方案问题1训练时报错CUDA out of memory解决方案添加--resolution 1参数根本原因显存不足GTX 1660等6GB显卡常见问题2COLMAP重建失败检查步骤确认照片没有大面积纯色区域检查曝光是否一致尝试手动添加控制点问题3模型出现黑色空洞修复方法python train.py --densify_until_iter 5000预防措施拍摄时增加重叠区域问题4查看器闪退可能原因路径包含中文显卡驱动过旧解决方法更新NVIDIA驱动将项目放在英文路径下训练日志分析技巧grep Iteration output/log.txt | awk {print $4,$6} loss.csv用Excel绘制loss曲线正常应该单调下降。如果出现剧烈波动可能是数据有问题。7. 进阶技巧与性能优化经过五个项目的实战我总结出这些提升质量的方法拍摄阶段使用偏振镜消除反光在物体周围放置ArUco标记辅助匹配采用HDR模式拍摄高对比度场景训练阶段python train.py --lambda_dssim 0.2 --percent_dense 0.3这两个参数可以显著改善材质表现lambda_dssim控制结构相似性权重percent_dense调整点云密度硬件加速 在RTX 3090上训练时可以启用FP16加速python train.py --fp16训练时间能从8小时缩短到3小时但可能会轻微影响质量。对于超大场景如建筑外观建议分区块拍摄后合并将场景分为4个区域分别训练使用CloudCompare对齐点云用--pretrained参数加载合并后的模型继续优化最后分享一个监控显存占用的实用命令需要安装nvidia-smiwatch -n 1 nvidia-smi

更多文章