赞
踩
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
3D Gaussian Splatting的使用_计算机视觉_gootyking-GitCode 开源社区 (csdn.net)
以下内容大部分与参考文献相同,但是加入了一点我自己安装过程中遇到的问题和解决问题的方法
接下来的指令打开Xshell进行输入就好,Xshell的连接方法在前文已经提及
- 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,将解压好的文件直接拖拽到服务器对应窗口
使用指令查询当前机器的版本情况
lsb_release -a
使用指令查询当前机器的显卡情况
lspci | grep VGA
使用指令查询最佳的NVIDIA驱动
cat /proc/driver/nvidia/version
最后我显现出来的结果是这样:
根据图片所示,应该使用53.86.05的显卡驱动
NVIDIA驱动下载:
创建一个放置各种包的文件夹:
- mkdir linux_packages
- cd linux_packages
选择准备上传的驱动
在终端输入命令打开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
直接输入
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
modprobe nvidia
输入以下指令,出现显卡信息说明安装成功:
nvidia-smi
由于服务器镜像自带,所以说这一步省略
镜像中自带,这里不过多赘述
安装必要的依赖,注意这里的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)
由于该镜像已经安装过了COLMAP,所以说这一步我们省略
详见可以看第一个参考文献
拍视频最好,可以用ffmpeg进行抽帧。
PS:
因为训练的照片要分辨率同意,相机参数、光照等看着都比较同意比较好。
另外,建议分辨率推荐1080P,至少720p。再退一步,至少保证宽或高有一个能到720,不然训练出来的效果不好
拍视频的时候,一定不要在一个位置转着拍,要缓慢走动,边走边转,上下左右,然后再走回来,这个路线根据场景要设计好,目的是在任何位置上都有任何角度的照片
在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
在gaussian-splatting的项目目录下,运行convert.py
python convert.py -s data
这里 -s 要传入数据目录,一定写data这个目录级别(input在这个目录下)
这时用的是CPU跑的,多等会儿,最终就在data目录下生成一堆目录和文件,包括相机位姿
输入代码:
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
4. cd ..//回到gaussian-splatting文件夹中
python convert.py -s data
5.python train.py -s data -m data/output
就这样可以一直在服务器训练啦
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。