当前位置:   article > 正文

服务器的选择&&在服务器上跑通3D Gaussian(新手向)

服务器的选择&&在服务器上跑通3D Gaussian(新手向)

注意

zu安装前准备:

Xftp软件:实现本地与远程服务器的文件传输

Xshell软件:实现本地远程连接服务器

参考文献:

AutoDL连接Xftp和Xshell

前言:

由于学校实验室的服务器出现了一点问题,所以不得不在网上找服务器进行连接,经过试用阿里云、腾讯云、智星云(智星云真的是很惨痛的教训)和AutoDL,又通过大佬的指点,最后敲定了使用AutoDL,其中选的是RTX 4090。

而我们用视频作为高斯的输入,所以说在参考文献的基础上加了安装ffmpeg这一步。

一.高斯所需环境:

根据Github的原始配置文件,我选择了:

python 3.8

cuda 11.8

cudann 8.9.6.50

pytorch:2.0.0

二.AutoDL的优点

  1. 存在社区镜像,在搜索栏里直接搜索3D Gaussian(不用完全搜完,第三个就是),已经有镜像配好了环境,安装了Comalp,只需要在Ubuntu上安装ffmpeg图片分割器
  2. 性价比较高,可以按量计费,使用完了关机不会进行计费
  3. 它具有学生认证,大学生可以经过学生认证之后打折

三.在Ubuntu上进行3D Gaussian

参考文献:

3D Gaussian Splatting的使用_计算机视觉_gootyking-GitCode 开源社区 (csdn.net)

以下内容大部分与参考文献相同,但是加入了一点我自己安装过程中遇到的问题和解决问题的方法

接下来的指令打开Xshell进行输入就好,Xshell的连接方法在前文已经提及

1 配置显卡驱动

1.1更新软件列表和安装必要依赖

  1. sudo apt update
  2. sudo apt install g++
  3. sudo apt install gcc
  4. sudo apt install make
  5. sudo apt install cmake

更新rz服务便于windows上传文件到服务器

apt-get install lrzsz

这一步可以使用Xftp代替,直接下载到本地,打开Xftp,将解压好的文件直接拖拽到服务器对应窗口

1.2 查询当前显卡信息

使用指令查询当前机器的版本情况

lsb_release -a

使用指令查询当前机器的显卡情况

lspci | grep VGA

使用指令查询最佳的NVIDIA驱动

cat /proc/driver/nvidia/version

最后我显现出来的结果是这样:

根据图片所示,应该使用53.86.05的显卡驱动

NVIDIA驱动下载:

官方驱动 | NVIDIAc

创建一个放置各种包的文件夹:

  1. mkdir linux_packages
  2. cd linux_packages

选择准备上传的驱动

1.3 禁用系统自带的显卡驱动nouveau

在终端输入命令打开blacklist.conf文件

sudo vim /etc/modprobe.d/blacklist.conf

有时候使用vim打不开的话,可以打开Xftp找到对应路径的blacklist.conf进行重命名,之后再运行这条命令就可以打开这个文件了

在打开的文件末尾输入,输入方式是先输入i进入insert模式,将文本加入后先按Esc退出Insert模式,然后Shift+X(Shift一直按,X按两次)就可以退出+保存啦。

  1. blacklist nouveau
  2. options nouveau modeset=0

最后更新一下系统的initramfs镜像文件,在终端输入:

sudo update-initramfs -u

完成以上步骤后,在终端中输入:

lsmod | grep nouveau

如果没有输出的话就说明禁用了nouveau

1.4 安装gdm3

直接输入

sudo telinit 3

cd命令进入到你存放驱动的目录linux_packages,执行以下指令

  1. sudo chmod 777 NVIDIA-Linux-x86_64-535.54.03.run #给你下载的驱动赋予可执行权限,才可以安装
  2. sudo ./NVIDIA-Linux-x86_64-535.54.03.run --no-opengl-files --no-x-check #安装
  3. sudo sh nvidia.run --add-this-kernel
  4. -no-x-check:安装驱动时关闭X服务
  5. -no-nouveau-check:安装驱动时禁用nouveau
  6. -no-opengl-files:只安装驱动文件,不安装OpenGL文件
  7. -add

显卡驱动安装过程中一些选项:

The distribution-provided pre-install script failed! Are you sure you want to continue?

选择continue installation

剩下全部选no

安装结束后

sudo telinit 5

1.5 检验显卡驱动

1.6 挂载Nvidia驱动

modprobe nvidia

输入以下指令,出现显卡信息说明安装成功:

nvidia-smi

2.配置CUDA环境

由于服务器镜像自带,所以说这一步省略

3.配置3D Gaussian Splatting环境

3.1 源码下载

镜像中自带,这里不过多赘述

3.2 配置渲染器

安装必要的依赖,注意这里的cmake --build build -j24 --target install会遇到报错,提示需要CURL_OPENSSL_4,故考虑重新构建opencv对应版本的库

下载地址:Releases · opencv/opencv (github.com)(下载完记住先解压然后用Xftp移动到服务器即可)

  1. # Dependencies
  2. sudo apt install -y libglew-dev libassimp-dev libboost-all-dev libgtk-3-dev libopencv-dev libglfw3-dev libavdevice-dev libavcodec-dev libeigen3-dev libxxf86vm-dev libembree-dev
  3. # Project setup
  4. cd SIBR_viewers
  5. cmake -Bbuild . -DCMAKE_BUILD_TYPE=Release # add -G Ninja to build faster
  6. cmake --build build -j24 --target install

下载完成后:

  1. cd opencv-4.5.3
  2. ll
  3. mkdir build
  4. cd build/
  5. cmake ..
  6. make -j16
  7. make install
  8. # 记录编译路径( CMakeLists.txt 中需要指定该路径 ):
  9. /build/ownOppenCV/opencv-4.5.3/build

然后修改SIBR——viewers里的Cmakelist.txt,指定OpenCV路径,注意vim指令有时候会报错,进入Xftp修改对应路径的Cmakelist.txt即可

  1. vim CMakeLists.txt
  2. # 添加如下:指定编译安装的目录
  3. set(OpenCV_DIR /build/opencv-4.5.3/build)
  4. find_package(OpenCV REQUIRED)

3.5 安装COLMAP

由于该镜像已经安装过了COLMAP,所以说这一步我们省略

详见可以第一个参考文献

四. 3D Gaussian相关配置的安装

1.准备场景样本

拍视频最好,可以用ffmpeg进行抽帧。

PS:

因为训练的照片要分辨率同意,相机参数、光照等看着都比较同意比较好。

另外,建议分辨率推荐1080P,至少720p。再退一步,至少保证宽或高有一个能到720,不然训练出来的效果不好

拍视频的时候,一定不要在一个位置转着拍,要缓慢走动,边走边转,上下左右,然后再走回来,这个路线根据场景要设计好,目的是在任何位置上都有任何角度的照片

2.ffmpeg下载及视频切割

在Xftp中gaussian-splatting中建一个data目录,data目录里建个input文件夹,名字必须是input

使用下面这个指令进行ffmpeg下载

  1. sudo apt update
  2. sudo apt install ffmpeg

这个下载时间有点长,需要等待

安装完之后检查是否安装完成,请输入:

ffmpeg

最终输出结果:

然后输入以下指令进入data目录(注意上一级目录是否是gaussian-splatting)

cd data

最后输入:

 ffmpeg -i Scene_1.mp4 -r 3 -f image2 input/%06d.jpg

注意这里的mp4文件要通过Xftp从本地移动到服务器的data目录中,然后代码中的mp4写成你自己命名的mp4

3. 生成相机位姿

在gaussian-splatting的项目目录下,运行convert.py

python convert.py -s data

这里 -s 要传入数据目录,一定写data这个目录级别(input在这个目录下)

这时用的是CPU跑的,多等会儿,最终就在data目录下生成一堆目录和文件,包括相机位姿

4.训练

输入代码:

python train.py -s data -m data/output

但是我出现了以下错误:RuntimeError:CUDA error:an illegal memory access was encountered

但是这个错误不知道是哪里出现了问题

然后输入python之后

输入:

  1. import os
  2. os.environ['CUDA_LAUNCH_BLOCKING']='1'
  3. exit()

就可以显示具体的错误位置了

查看了网上的解决方法,是batch_size的问题

应该是显存显卡适配的问题

然后换了个服务器型号

最后训练成功啦

五.总结

以上步骤都成功之后,会在data/output里面生成文件夹,生成点云文件input.ply,可以用unity等软件进行查看

之后每次训练步骤如下:

1.打开Xshell和Xftp链接服务器

2.把视频文件移动到data文件夹中并新建input文件夹(在Xftp直接按windows操作即可),注意要将之前的文件进行备份保存然后从data文件中移除

3.ffmpeg -i Scene_1.mp4 -r 3 -f image/%06d.jpg

4. cd ..//回到gaussian-splatting文件夹中

   python convert.py -s data

5.python train.py -s data -m data/output

就这样可以一直在服务器训练啦

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/300080
推荐阅读
  

闽ICP备14008679号