python0经验小白在windows下从0开始学习3dgs

目录

一、3dgs所需的环境安装以及配置

下载3dgs项目

安装C++编译器

安装cuda和cudnn

安装anaconda和pytorch

安装其他库和工具

二、3dgs项目的运行

输入数据的准备

开始训练

结果可视化

三、附录


一、3dgs所需的环境安装以及配置

  1. 下载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"但是这种方式可能会下载不完全,例如两个子模块。

  2. 安装C++编译器

    因为电脑本身装过vs2017,这步跳过了。

  3. 安装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安装路径下即可。

  4. 安装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就大功告成!

  5. 安装其他库和工具

    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. 输入数据的准备

    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文件夹是下一步训练所需的

  2. 开始训练

    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比较直观。

  3. 结果可视化

        1) 等训练结束后,执行命令 .\viewers\bin\SIBR_gaussianViewer_app -m data/output ,这个用到的就是配置环境时下载的viewers文件夹下的exe文件。可以选择查看结果的交互方式,FPS是使用键盘QWEASD键控制位置,UIOJKL控制旋转,P复位。trackball可以通过鼠标来改变视角。界面里各种按钮都能按着试试看效果,整体交互还是很方便的

        2)渲染器应该是还提供了渲染服务器上训练结果的功能,不过我这里暂时没有需求就没有用它,有需求的话可以参考github上给出的细节。

三、附录

  1. C盘扩容

    在网上找了好多blog,发现了一篇非常适合我情况的,直接按部就班来了一遍完美搞定,只要注意D盘剩余空间大于原来的一半即可。

    将电脑D盘部分空间划分给C盘的方法 — 疯狂学习GIS

  2. 参考blog:

  •  Windows下3D Gaussian Splatting从0开始安装配置环境及训练教程 — 不要太认真
  • 全网最详细的安装pytorch GPU方法,一次安装成功!!包括安装失败后的处理方法! — 小桥流水—人工智能
  • Anaconda安装-超详细版(2023)–酷酷的懒虫
  • 作者:不会开花的种子

    物联沃分享整理
    物联沃-IOTWORD物联网 » python0经验小白在windows下从0开始学习3dgs

    发表回复