记录一下自己部署nerfstudio踩过的坑,希望对部署nerfstudio的朋友有一些帮助。
我下载的镜像不好用,拉取的容器没有办法挂载,所以最终使用的是conda下载的。
我是在Ubuntu20.04系统上配置的,GPU4090。
如果你没有sudo权限,需要你在容器中部署,这样至少可以使用apt命令来下载一些包。
环境配置
首先初始化:
我没有sudo权限,所以用apt也没有问题
apt-get update
apt update
安装Conda:
wget https://repo.anaconda.com/archive/Anaconda3-2023.03-Linux-x86_64.sh
sh Anaconda3-2023.03-Linux-x86_64.sh
配置虚拟环境 :
conda create --name nerfstudio -y python=3.8
conda activate nerfstudio
python -m pip install --upgrade pip
Install PyTorch 2.1.2 with CUDA 11.8:
pip install torch==2.1.2+cu118 torchvision==0.16.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
安装cuda-toolkit:
conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit
安装tiny-cuda-nn:
pip install ninja git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch
#######从这儿往上都是有关环境的配置
如果运行到这里还没有问题,恭喜你,已经成功布置好环境。下面开始安装nerfstudio
Installing nerfstudio:
pip install nerfstudio
因为我是用来通过自定义数据(自己录的视频)进行重建的,而且其他博主也有讲解如何训练第一个模型,所以我便结合自己的经历介绍如何通过视频进行三维场景重建。
#######针对训练视频的环境配置
官网给出的介绍如下:
可以看到,需要安装COLMAP和FFmpeg。
安装COLMAP
#######首先讲如何安装COLMAP:
根据COLMAP官网提示:(至少需要CUDA7.X版本)
安装依赖:(因为我没有root权限,所以我使用的都是apt命令)
apt-get install \
git \
cmake \
ninja-build \
build-essential \
libboost-program-options-dev \
libboost-filesystem-dev \
libboost-graph-dev \
libboost-system-dev \
libeigen3-dev \
libflann-dev \
libfreeimage-dev \
libmetis-dev \
libgoogle-glog-dev \
libgtest-dev \
libsqlite3-dev \
libglew-dev \
qtbase5-dev \
libqt5opengl5-dev \
libcgal-dev \
libceres-dev
安装Ceres Solver:
我的服务器通过git无法下载这个包,还是参考这位大哥安装的,感谢!!!!,为了方便,我都整理过来了.
首先,创建一个colmap文件夹来存放所有安装包.
mkdir colmap
cd colmap
apt-get install libatlas-base-dev libsuitesparse-dev
这里一定要参照大哥的链接,去官网下载tar.gz文件,然后传到服务器的colmap文件夹内.
安装依赖:
# CMake
sudo apt-get install cmake
# google-glog + gflags
sudo apt-get install libgoogle-glog-dev libgflags-dev
# Use ATLAS for BLAS & LAPACK
sudo apt-get install libatlas-base-dev
# Eigen3
sudo apt-get install libeigen3-dev
# SuiteSparse (optional)
sudo apt-get install libsuitesparse-dev
构建 安装ceres:
tar zxf ceres-solver-2.2.0.tar.gz
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-2.2.0
make -j3
make test
# Optionally install Ceres, it can also be exported using CMake which
# allows Ceres to be used without requiring installation, see the documentation
# for the EXPORT_BUILD_DIR option for more information.
make install
配置编译COLMAP:
cd ../../
git clone https://github.com/colmap/colmap.git
cd colmap
mkdir build
cd build
cmake .. -GNinja
ninja
ninja install
如果到这里所有的问题都解决了,恭喜你已经成功配置了COLMAP,现在还要配置ffmpeg,成功就在前方.
安装FFmpeg
#######其次讲如何安装FFmpeg:
这个简单很多,直接用apt进行安装就可以,并且需要配置环境变量.(好像也可以通过pip进行安装,如果失败了就用pip进行安装,其他同理(pip install ffmpeg-python))
apt update
apt install ffmpeg
你的ffmpeg应该已经在/usr/bin/ffmpeg
或/usr/local/bin/ffmpeg
编辑shell配置文件
find / -type f -name ffmpeg
nano ~/.bashrc
在文件的末尾,添加以下行来更新PATH
环境变量(假设ffmpeg
位于/usr/bin
):
export PATH="/usr/bin:$PATH"
然后刷新
source ~/.bashrc
#######能到这里就是安装成功了
对nerfstudio的操作
然后以下是针对nerfstudio操作的一些内容:
首先处理数据:
ns-process-data {images, video} --data {DATA_PATH} --output-dir {PROCESSED_DATA_DIR
ns-process-data video --data data/custom_data/IMG_0939.MP4 --output-dir data/outputs_yizi
然后训练模型:
ns-train nerfacto --data {PROCESSED_DATA_DIR}
ns-train nerfacto --data data/outputs_yizi
如果出现以上界面就是训练成功了.
转发端口
如果服务器不能打开网址,可以通过SSL转发端口如下:
可以在自己的电脑端cmd运行:
ssh -L 8000:127.0.0.1:58475 username@服务器ip
8000
:这是你本地计算机上的端口号
127.0.0.1:58475
:这指定了目标地址和端口
username@服务器ip
:这部分指定了你想要通过SSH连接的服务器
这样就可以在自己电脑的127.0.0.1:8000网页查看效果啦~
通过viewer查看
如果要查看之前运行过的文件,并且你安装着ngrok
#先在服务器运行这个
ns-viewer --load-config /outputs/outputs_yizi/nerfacto/2024-04-20_043358/config.yml
#然后在本地cmd运行
ssh -L 8000:127.0.0.1:58475 dengliyuan@10.220.127.247
#再运行
ngrok http 8000
通过ngrok可以产生暂时的公网ip,可以分享给其他人.
如果遇到问题记得看这里:
1.cmake报错:
CMake Error at cmake/FindDependencies.cmake:125 (message): You must set CMAKE_CUDA_ARCHITECTURES to e.g. ‘native’, ‘all-major’, ‘70’
解决办法:这个需要在colmap/cmake/FindDependencies.cmake
文件里面加入一句set(CMAKE_CUDA_ARCHITECTURES "80")
,(注意这里的80这个数字是因为我是cuda11系列的,所以用80)具体位置如下图:
2.ninja报错:
nvcc fatal : unsupported gpu architecture ‘compute_native’
解决办法:错误原因就是上面的CMAKE_CUDA_ARCHITECTURES 设置错了,需要根据自己的cuda版本,在colmap/cmake/FindDependencies.cmake
设置正确的CMAKE_CUDA_ARCHITECTURES
,主要就是这个数字:
CUDA 10.x 最高支持算力为 7.x,CUDA 11.x 最高支持算力为 8.x
"何须浅碧深红色,自是花中第一流."