nerfstudio复现___踩坑坑坑坑坑指南

nerfstudio官方网站:Data conventions - nerfstudio

环境搭建

  • nerfstudio需要 python>= 3.8
  • pytorch
  • tiny-cuda-nn

如果想要训练自己的数据集,那么还需要

  • colmap
  • ffmpeg

先建立一个nerfstudio的虚拟环境

conda create --name nerfstudio -y python=3.8
conda activate nerfstudio
python -m pip install --upgrade pip

pytorch

注意:

  • pytorch与cuda的版本一定要对应,版本不对应后期会报错
  • 目前只有英伟达的显卡才支持安装cuda,英特尔等显卡安装不了cuda,须使用服务器运行程序

查看自己显卡的类型:

图源:AI脑洞君 

 查看显卡支持的cuda版本:

nvidia-smi

nerfstudio复现___踩坑坑坑坑坑指南_第1张图片

Torch 2.0.1 with CUDA 11.7

pip install torch==2.0.1+cu117 torchvision==0.15.2+cu117 --extra-index-url https://download.pytorch.org/whl/cu117

Torch 2.0.1 with CUDA 11.8

pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118

tiny-cuda-nn

conda install -c "nvidia/label/cuda-11.8.0" cuda-toolkit
pip install ninja git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch

下载nerfstudio

下载nerfstudio源码有两种方法,任选其一即可

但第二种方法速度更快一些

pip install nerfstudio

或者

git clone https://github.com/nerfstudio-project/nerfstudio.git
cd nerfstudio
pip install --upgrade pip setuptools
pip install -e .

使用数据集

下载数据集

官网给出的数据集下载地址,下不起一点......

ns-download-data nerfstudio --capture-name=poster

可以直接用命令下载数据集,需要先在项目下建立data/nerfstudio的目录 

找了可以下载数据集的地址: 

https://download.csdn.net/download/qq_35831906/87929708

谷歌直链下载云盘数据集,使用谷歌云盘生成直接下载的url,示例: NeRFStudio-nerfacto默认训练数据集poster下载,nerfstudio 数据集下载链接_谷歌云盘直链_LeapMay的博客-CSDN博客

训练模型

ns-train nerfacto --data data/nerfstudio/poster

可视化结果

nerfstudio复现___踩坑坑坑坑坑指南_第2张图片

找到 HTTP 那一行的网址

找到 localhost 后对应的端口号

比如我这幅图的端口号就为7007

然后打开自己的命令行

输入:ssh -L 端口号 : localhost : d端口号  服务器用户名

nerfstudio复现___踩坑坑坑坑坑指南_第3张图片

然后复制HTTP那一行的网址到自己电脑里的浏览器

点击回车

就可以看到可视化的结果

使用自己的数据

提前配置环境

  • colmap  —— 生成位姿
  • ffmpeg  ——视频流抽帧

colmap

如果不是root用户,不能使用 sudo 命令

也就不能使用 sudo 来下载 colmap,或者其他依赖项都是不可以下的

直接使用 nerfstudio 官方方法

conda install -c conda-forge colmap

然后使用 -h 来检查一下 colmap是否工作

colmap -h

如果不成功

可以删除目录,按照一下方法重装(cuda版)

git clone https://github.com/microsoft/vcpkg
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg install colmap[cuda]:x64-linux

我自己用这个方法失败了。。。。但是用第一种方法成功了

如果没有使用第一种方法的命令语句来下载 colmap

使用 sudo 或者通过 wget + 下载地址 的方法下载 colmap 

要特别注意要进行编译

以及检查 cmake 的更新

综上:

十分推荐第一种方法的命令语句直接下载 colmap

ffmpeg

对于 ffmpeg 的下载方法 nerfstudio 官网说的并不是很清楚

目前网上大多使用的方法有三种

  • sudo 命令
  • pip 命令
  • wget + 下载网址

很不幸的是

我使用这三种方法去配置 ffmpeg 的时候

都失败了。。。。。

运行后面生成输入数据位姿和帧的命令时

都会出现下面这个报错

nerfstudio复现___踩坑坑坑坑坑指南_第4张图片

报错原因可能是:

  • ffmpeg 编译未成功,导致 ffmpeg 只能对帧解码而不能编码
  • 用 colmap 处理过的文件夹下使用的 ns-process-data 这个命令

对于第二种可能报错的原因

是因为我安装到后面的时候

我发现可能是我当时先使用了后面用于处理自己数据集的 ns-process-data 命令语句

然后才发现我的 ffmpeg 还没配置

安装完 colmap ,就使用了 ns-process-data 这个命令

这个命令就先一步对输入数据进行了 colmap 处理

我并不能确定到底是因为哪一个原因导致上图的报错

我先只调整了输入视频的目录和输出的目录

但依然报错

我就把通过 pip 和 wget 下载的 ffmpeg 全删了 (我用不了sudo)

使用下面这条下载命令来重新下载 ffmpeg

 conda install -c conda-forge ffmpeg

nerfstudio复现___踩坑坑坑坑坑指南_第5张图片

同时我在 nerfstudio 目录下

新建了一个目录用来放输入的视频 / 照片

新建了一个目录用来放输出的帧和位姿信息

来避免需要重建的数据与之前 colmap 处理过的数据在相同目录中出现

成功解决报错

nerfstudio复现___踩坑坑坑坑坑指南_第6张图片

处理数据

在配置好 colmap 和 ffmpeg 之后

使用下面这个数据进行处理数据

ns-process-data {images, video} --data {DATA_PATH} --output-dir {PROCESSED_DATA_DIR}

如果输入的是图片,第一个括号选择 images

如果输入的是视频,第一个括号选择video

DATA_PATH:输入数据所在的绝对路径

PROCESSED_DATA:输入之前新建 / 指定的输出目录的绝对路径

例如 我自己的输入

ns-process-data video --data /home/zhangzihui/nerfstudio/video --output /home/zhangzihui/nerfstudio/data

训练模型

直接输入命令

ns-train nerfacto --data {PROCESSED_DATA_DIR}

这里 data 后面的地址要与处理数据时输出的地址一致

我自己的输入

ns-train nerfacto --data /home/zhangzihui/nerfstudio/data

然后就可以进入查看可视化结果了

nerfstudio复现___踩坑坑坑坑坑指南_第7张图片

非root用户配置环境

非 root 用户不能使用 sudo 命令

因此只能用 pip 或者 wget 来下载

这里应用更广泛的是 wget

wget

1、获取源码

进入下载页面

nerfstudio复现___踩坑坑坑坑坑指南_第8张图片

点击要下载的版本

nerfstudio复现___踩坑坑坑坑坑指南_第9张图片

出现上面这个页面,里面的地址就是我们需要的地址

使用 wget 命令

wget https://ffmpeg.org/releases/ffmpeg-6.0.tar.xz

2、解压
tar -zxvf xxx.tar.gz

3、进入解压后的目录

cd xxx

4、定义安装目录
./configure –prefix=/PATH/bin

5、编译
make && make install

6、更新路径
export PATH=/PATH/bin:$PATH

这里的 PATH 与上一步的 PATH 

均为解压目录的绝对路径

注意

如果是动态链接库

export LD_LIBRARY_PATH=/PATH/library:$LD_LIBRARY_PATH

你可能感兴趣的:(机器学习,人工智能,笔记)