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
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
训练模型
ns-train nerfacto --data data/nerfstudio/poster
可视化结果
找到 HTTP 那一行的网址
找到 localhost 后对应的端口号
比如我这幅图的端口号就为7007
然后打开自己的命令行
输入:ssh -L 端口号 : localhost : d端口号 服务器用户名
然后复制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 的时候
都失败了。。。。。
运行后面生成输入数据位姿和帧的命令时
都会出现下面这个报错
报错原因可能是:
- 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 目录下
新建了一个目录用来放输入的视频 / 照片
新建了一个目录用来放输出的帧和位姿信息
来避免需要重建的数据与之前 colmap 处理过的数据在相同目录中出现
成功解决报错
处理数据
在配置好 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
然后就可以进入查看可视化结果了
非root用户配置环境
非 root 用户不能使用 sudo 命令
因此只能用 pip 或者 wget 来下载
这里应用更广泛的是 wget
wget
1、获取源码
进入下载页面
点击要下载的版本
出现上面这个页面,里面的地址就是我们需要的地址
使用 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