Linux实操部署Nerfstudio的辛酸史(通过视频进行三维重建)

记录一下自己部署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

"何须浅碧深红色,自是花中第一流."

  • 38
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思量.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值