【3DGS】Win11系统下3D Gaussian Splatting从零配置到实战渲染
1. 环境准备Win11下的3DGS基础配置最近在折腾3D Gaussian Splatting简称3DGS这个酷炫的技术发现网上教程大多基于Ubuntu系统对Windows用户不太友好。作为一个常年被Linux环境折磨的Windows党我决定把在Win11上踩过的坑都记录下来。先说下我的硬件配置笔记本搭载RTX 3060显卡CUDA 12.1驱动版本。如果你的显卡是20/30/40系跟着我的步骤走基本不会翻车。1.1 显卡驱动与CUDA的相爱相杀装CUDA前一定要先检查显卡驱动版本我刚开始直接装了CUDA 12.4结果发现和驱动不兼容渲染时疯狂报错。正确姿势是右键桌面打开NVIDIA控制面板点击帮助-系统信息查看驱动程序版本和CUDA版本的对应关系建议直接用NVIDIA GeForce Experience更新到最新驱动。我实测发现驱动版本516.94配合CUDA 11.8最稳定但如果你用的是40系显卡必须装CUDA 12.x。有个小技巧安装CUDA时不要勾选Visual Studio集成除非你要做二次开发。1.2 Python环境的玄学问题强烈建议用Anaconda创建独立环境我试过直接用系统Python各种dll报错让人崩溃。具体操作conda create -n 3dgs python3.9 conda activate 3dgs这里有个坑Python 3.10以上版本可能会和某些依赖冲突3.9版本亲测最稳。安装完记得先升级pippython -m pip install --upgrade pip2. 依赖安装那些官方没告诉你的细节2.1 PyTorch的版本迷宫官方文档只说安装PyTorch但没告诉你版本不对会直接导致训练失败。我的血泪教训CUDA 11.x用这个命令pip install torch1.13.1cu116 torchvision0.14.1cu116 --extra-index-url https://download.pytorch.org/whl/cu116CUDA 12.x用这个pip install torch2.0.1cu118 torchvision0.15.2cu118 --extra-index-url https://download.pytorch.org/whl/cu118安装完一定要验证import torch print(torch.cuda.is_available()) # 必须返回True print(torch.version.cuda) # 应该和安装的CUDA版本一致2.2 其他依赖的隐藏关卡除了基本的requirements.txt这几个包容易漏装pip install plyfile tqdm opencv-python如果遇到Could not build wheels for...错误可能是缺少C编译环境。去安装Visual Studio 2019的C生成工具就行。3. 数据准备从零开始处理自己的数据集3.1 官方数据集的正确打开方式下载官方提供的Truck数据集后目录结构应该是这样data/ └── tandt/ ├── truck/ │ ├── images/ │ ├── sparse/ │ └── cameras.json千万别直接扔到根目录我一开始没注意训练时疯狂报找不到图像的错误。正确的做法是在项目根目录创建data文件夹然后把解压后的tandt放进去。3.2 自定义数据集的预处理如果你想用自己的照片建模需要先通过COLMAP生成位姿信息。这里有个Win11下的简化流程下载COLMAP的Windows版把照片放在一个文件夹内建议50-100张运行colmap automatic_reconstructor \ --workspace_path ./my_data \ --image_path ./my_data/images生成的sparse文件夹要重命名为sparse/0否则3DGS会识别失败。4. 训练与渲染从代码到3D魔法4.1 训练参数调优指南启动训练的命令虽然简单python train.py -s data/tandt/truck -m output/truck但有几个关键参数可以大幅提升效果--iterations 30000默认值可能不够--resolution 2高清场景用-1--sh_degree 3对复杂光照更友好训练过程中可以实时查看loss曲线如果发现PSNR值卡住不动可能是学习率太高加个--lr 0.0001试试。4.2 实时渲染的坑点排查下载的viewer工具包解压后要注意把训练好的output文件夹包含point_cloud.ply放到viewer的bin目录下管理员身份运行PowerShell执行.\SIBR_gaussianViewer_app.exe -m output/truck如果闪退大概率是显卡内存不够。可以加--width 1280 --height 720降低分辨率。5. 性能优化让3DGS飞起来5.1 显卡内存不足的解决方案我的RTX 3060 6GB跑大场景经常OOM这几个技巧很管用训练时加--densification_interval 1000渲染时加--reduce_point_size编辑viewer的config文件把max_splat_size改小5.2 多显卡训练的黑科技如果你有双显卡可以这样榨干硬件性能CUDA_VISIBLE_DEVICES0,1 python train.py ... --num_gpus 2注意要在代码里修改data_loader的num_workers为0否则可能死锁。6. 常见错误大全6.1 CUDA out of memory终极解法除了降低batch size还可以在train.py开头加torch.backends.cuda.max_split_size_mb 128设置虚拟内存为物理内存的2倍关闭其他吃显存的程序比如浏览器6.2 模型发黑的秘密渲染结果像一团黑雾通常是这些原因训练数据的光照不均匀 - 重新拍摄时保持光线一致SH degree设置过高 - 改成1试试点云密度不够 - 增加densify_until_iter参数7. 进阶技巧从能用