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

avatar
作者
筋斗云
阅读量:1

注意

zu安装前准备:

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

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

参考文献:

AutoDL+Xftp+Xshell+VSCode配合使用教程-CSDN博客文章浏览阅读4.5k次,点赞9次,收藏70次。AutoDL是一款经过众多算法业内大牛精心调教的云GPU深度学习环境出租平台,一款高效的云GPU深度学习出租平台成为每一个深度学习的从业者的最大痛点。Xftp是一个灵活和轻量级SFTP / FTP客户端用户需要安全地通过网络传输文件。它提供了强大的功能,如直接编辑多个窗格,文件夹同步,他们支持,服务器到服务器转移和第三方编辑器集成。Xshell是一个功能强大的终端模拟器,支持SSH,SFTP、TELNET、远程登录命令连接。https://blog.csdn.net/qq_44111805/article/details/128416561

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

参考文献:

【记录贴】Linux的深度学习环境配置 + 3D Gaussian Splatting云端部署 - 技术分享 - discussMaker (scumaker.org)

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

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

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

1 配置显卡驱动

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

sudo apt update  sudo apt install g++  sudo apt install gcc  sudo apt install make  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

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

mkdir linux_packages 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按两次)就可以退出+保存啦。

blacklist nouveau  options nouveau modeset=0

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

sudo update-initramfs -u 

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

lsmod | grep nouveau 

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

1.4 安装gdm3

直接输入

sudo telinit 3 

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

sudo chmod 777 NVIDIA-Linux-x86_64-535.54.03.run   #给你下载的驱动赋予可执行权限,才可以安装 sudo ./NVIDIA-Linux-x86_64-535.54.03.run --no-opengl-files --no-x-check #安装 sudo sh nvidia.run --add-this-kernel -no-x-check:安装驱动时关闭X服务 -no-nouveau-check:安装驱动时禁用nouveau -no-opengl-files:只安装驱动文件,不安装OpenGL文件 -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移动到服务器即可)

# Dependencies 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 # Project setup cd SIBR_viewers cmake -Bbuild . -DCMAKE_BUILD_TYPE=Release # add -G Ninja to build faster cmake --build build -j24 --target install 

下载完成后:

cd opencv-4.5.3 ll  mkdir build cd build/  cmake .. make -j16 make install  # 记录编译路径( CMakeLists.txt 中需要指定该路径 ):  /build/ownOppenCV/opencv-4.5.3/build 

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

vim CMakeLists.txt   # 添加如下:指定编译安装的目录  set(OpenCV_DIR /build/opencv-4.5.3/build)  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下载

sudo apt update  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之后

输入:

import os os.environ['CUDA_LAUNCH_BLOCKING']='1' 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(笔者补充:如果输入是图像就不用ffmpeg,因为ffmpeg是为了分割视频为图像照片)

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

   python convert.py -s data

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

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

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!