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:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值