python0经验小白在windows下从0开始学习3dgs
目录
一、3dgs所需的环境安装以及配置
下载3dgs项目
安装C++编译器
安装cuda和cudnn
安装anaconda和pytorch
安装其他库和工具
二、3dgs项目的运行
输入数据的准备
开始训练
结果可视化
三、附录
一、3dgs所需的环境安装以及配置
-
下载3dgs项目
1) 直接使用git指令git clone(推荐)
git clone git@github.com:graphdeco-inria/gaussian-splatting.git –recursive
2) 去GitHub下载zip解压
GitHub – graphdeco-inria/gaussian-splatting: Original reference implementation of "3D Gaussian Splatting for Real-Time Radiance Field Rendering"但是这种方式可能会下载不完全,例如两个子模块。 -
安装C++编译器
因为电脑本身装过vs2017,这步跳过了。
-
安装cuda和cudnn
1) CUDA安装去NVIDIA官网(
CUDA Toolkit Archive | NVIDIA Developer)下载,据说12.X版本会有各种问题,所以下载了11.8版本,勾选一些和电脑配置相关选项下载就好
安装时安装到其他盘不知道会不会有坑,我由于一时失误点成了默认直接安装到了C盘,以至于后面C盘爆掉了出发了后面C盘扩容的支线任务(见附录)。一般来讲CUDA会自己添加到环境变量,为了以防万一可以去瞅一眼,而且在cmd里输入 nvcc -V 也可以检验是否安装成功
2) cuDNN安装(这步据说可以跳过,它只是加速pytorch的),需要注册并登录nvdia官网下载(
https://developer.nvidia.com/cudnn),下载时注意版本,首先要适配CUDA11.8,其次由于我选的pytorch是cuda11.8_cudnn8_0版本,所以cudnn下载的也是8.8.0版本。下载后直接解压,把其中三个文件夹(bin include lib)复制到cuda安装路径下即可。 -
安装anaconda和pytorch
1)anaconda安装:
主要是参考了(
Anaconda安装-超详细版(2023)–酷酷的懒虫 ),讲的很详细基本没啥需要修改的。注意还要设置channel来加速2)pytorch安装:
首先用anaconda创建一个用于3dgs的虚拟环境:
打开Anaconda Prompt,执行命令
conda create -n 3dgs python=3.11
conda activate 3dgs
接下来就是下载并安装pytorch了
(推荐直接使用c方案):a) 最直接的就是去pytorch官网(
PyTorch)下载最新版本或者寻找旧的版本(
Previous PyTorch Versions | PyTorch)。
这里要注意的是我一开始安装的是2.3.1版本,但是后面impor torch时候会报错“找不到指定模块shm.dll”什么什么的,查了一下别人也有问题,装2.2.0就不会有问题了。但是这个下载速度很慢,我这边大概200+k/s,要两个多小时才能下完(后来发现好像后面瞎折腾花了更长时间,如果老老实实下载不瞎折腾的话早就装好了)。
b)通过清华镜像加速a),不过我这边尝试了直接加镜像channel,并没有起到加速作用,还尝试了
pip -i https://pypi.tuna.tsinghua.edu.cn/simple
的方式,但是总找不到对应版本,遂放弃,最终选用了去镜像网站下载安装包后本地安装的方法。
c) 首先尝试了下载whl文件的方式,但是总有各种问题,就放弃了,然后去(
Index of /anaconda/cloud/pytorch/win-64/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror)下载了对应的pytorch,torchaudio,torchvision(这里要注意版本匹配以及与cuda匹配,而且要和你创建虚拟环境时python的版本一致,我这边时pytorch-2.2.0和torchvision-0.17.0),下载后终端cd到下载路径,然后执行conda install –offline pytorch-2.2.0-py3.11_cuda11.8_cudnn8_0.tar.bz2
conda install –offline torchaudio-2.2.0-py311_cu118.tar.bz2
conda install –offline torchvision-0.17.0-py311_cu118.tar.bz2
安装后测试在终端是否成功:
python
import torch
torch.cuda.is_available()
输出true就大功告成!
-
安装其他库和工具
1)仍然在刚才创建的虚拟环境下,我们继续安装一些需要的库:
pip install plyfile
pip install tqdm
这两个应该一个是读写点云,一个是显示进度条。然后将终端cd到3dgs工程的submodules文件夹下
pip install diff-gaussian-rasterization
pip install simple-knn
diff-gaussian-rasterization安装可能会有问题,我就cd到该文件夹下然后运行 python setup.py install 就好了;
simple-knn如果先安装了后面可能会报错找不到simple_knn模块,所以这个安装顺序可能会影响,存疑;
另外听说前面如果直接下载的时工程zip解压的话,这两个模块内可能文件下载不完全导致无法安装,因此还是推荐git clone来下载工程(其中–recursive非常重要)
2) 安装colmap
下载地址时
Release 3.8 · colmap/colmap · GitHub ,在3dgs工程文件夹下新建一个tools文件夹用于放各种辅助工具,把下载好的安装包解压到tools即可,然后环境变量里面添加路径,就能在终端通过输入colmap来打开3) 安装reviewer
这个在工程中有个SIBR_viewers文件夹应该时可以用cmake来建工程然后编译的,不过可以偷懒直接去(
https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/binaries/viewers.zip)下载,然后在3dgs工程文件夹下解压成viewers文件夹就好
二、3dgs项目的运行
-
输入数据的准备
1) github上给了几组数据集,包括了sfm得到的初始结果,可以从 https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/datasets/input/tandt_db.zip 下载,有四组数据,都整理成images文件夹下放图片和sparse文件夹下放置初始点云和相机参数(sparse这个文件夹下的数据可以通过colmap来生成)
2) 如果只有一组图像,我们可以先使用colmap来生成稀疏点云作为训练初值,3dgs工程给了脚本convert.py来调用colmap,执行命令 python convert.py -s data/image 即可,-s所指的路径下需要包括一个文件夹input放置输入图片,colmap的程序结束后会在-s所指的路径下生成许多结果,其中的sparse文件夹是下一步训练所需的
-
开始训练
1) 最基本的命令:
python train.py -s data/input -m data/output
-s 后面是第一步中准备的数据所在的路径,其中包括一个文件夹images放置输入图片,一个sparse文件夹放置colmap生成的结果
-m 后面是输出结果所在路径
只要前面数据准备的对了,这个命令至少能让训练跑起来并且一般来讲至少能得到一个迭代7000步的结果 。
2) 由于我用的是4年前的旧笔记本,悲催的遇到了run out of memory的问题。
作者是建议使用VRAM有24G的显卡来进行训练,而我的小破本子只有6G
所以要在训练的时候调整一些参数让RVAM占用小一些。
增加–densify_grad_threshold (决定高斯球是否加密的阈值,默认值0.0002)
增加–densification_interval (决定高斯球加密频率的值,表示每多少次迭代高斯球加密一次,默认值100)
降低–densify_until_iter (高斯球停止加密的迭代次数,默认值15000)
设置–test_iterations 为-1
但是这个设置调整一般会影响最后的结果,最直接的结果就是高斯球数量大幅度减少,得到结果质量应该也会变差,需要自己来调整和权衡了。
case1:默认参数,8600步时out of memory,只得到了7000步的结果,loss=0.0522
case2:–densify_grad_threshold 0.0005 –densification_interval 200 最终loss=0.0417
case3:–densify_grad_threshold 0.001 –densification_interval 300 最终loss=0.0552
3) 执行训练命令时还有很多变量是可以调整的,例如图像分辨率,指定训练设备,是否debug,迭代次数,各个属性的学习率等等,具体的细节还是去看github比较直观。
-
结果可视化
1) 等训练结束后,执行命令 .\viewers\bin\SIBR_gaussianViewer_app -m data/output ,这个用到的就是配置环境时下载的viewers文件夹下的exe文件。可以选择查看结果的交互方式,FPS是使用键盘QWEASD键控制位置,UIOJKL控制旋转,P复位。trackball可以通过鼠标来改变视角。界面里各种按钮都能按着试试看效果,整体交互还是很方便的
2)渲染器应该是还提供了渲染服务器上训练结果的功能,不过我这里暂时没有需求就没有用它,有需求的话可以参考github上给出的细节。
三、附录
-
C盘扩容
在网上找了好多blog,发现了一篇非常适合我情况的,直接按部就班来了一遍完美搞定,只要注意D盘剩余空间大于原来的一半即可。
将电脑D盘部分空间划分给C盘的方法 — 疯狂学习GIS
-
参考blog:
作者:不会开花的种子