注意
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的优点
- 存在社区镜像,在搜索栏里直接搜索3D Gaussian(不用完全搜完,第三个就是),已经有镜像配好了环境,安装了Comalp,只需要在Ubuntu上安装ffmpeg图片分割器
- 性价比较高,可以按量计费,使用完了关机不会进行计费
- 它具有学生认证,大学生可以经过学生认证之后打折
三.在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驱动下载:
创建一个放置各种包的文件夹:
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
就这样可以一直在服务器训练啦