Ubuntu系统复现NeRFStudio(详细)

安装参考:(官方已经描述的非常详细)

https://docs.nerf.studio/en/latest/quickstart/installation.html

GitHub - nerfstudio-project/nerfstudio: A collaboration friendly studio for NeRFs


目录

一、系统环境配置

二、安装nerfstudio

三、训练

四、训练时遇到的错误

错误一:tinycudann报错(tcnn没有被定义)

解决方法:

错误二:cuda报错

五、 导出结果

1.渲染视频

2.生成点云


一、系统环境配置

1.操作系统:Ubuntu20.04

2.显卡:RTX3090

3.CUDA:11.3

4.miniconda创建环境

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

5.安装依赖项——pytorch和tinycudann(cuda11.3)

pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 -f https://download.pytorch.org/whl/torch_stable.html
pip install ninja git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch

 

二、安装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
# 训练模型
ns-train nerfacto --data data/nerfstudio/poster

训练时的终端:

Ubuntu系统复现NeRFStudio(详细)_第1张图片

 打开终端给的链接就可以在网页端实时查看:

Ubuntu系统复现NeRFStudio(详细)_第2张图片

 

四、训练时遇到的错误

错误一:tinycudann报错(tcnn没有被定义)

相关参考:NameError: name 'tcnn' is not defined

如果遇到tinycudann的错误多半是安装失误

Traceback (most recent call last):
  File "/home/wxy/miniconda3/envs/studio/bin/ns-train", line 8, in 
    sys.exit(entrypoint())
  File "/home/wxy/nerfstudio/scripts/train.py", line 247, in entrypoint
    main(
  File "/home/wxy/nerfstudio/scripts/train.py", line 233, in main
    launch(
  File "/home/wxy/nerfstudio/scripts/train.py", line 172, in launch
    main_func(local_rank=0, world_size=world_size, config=config)
  File "/home/wxy/nerfstudio/scripts/train.py", line 86, in train_loop
    trainer.setup()
  File "/home/wxy/nerfstudio/nerfstudio/engine/trainer.py", line 153, in setup
    self.pipeline = self.config.pipeline.setup(
  File "/home/wxy/nerfstudio/nerfstudio/configs/base_config.py", line 58, in setup
    return self._target(self, **kwargs)
  File "/home/wxy/nerfstudio/nerfstudio/pipelines/base_pipeline.py", line 250, in __init__
    self._model = config.model.setup(
  File "/home/wxy/nerfstudio/nerfstudio/configs/base_config.py", line 58, in setup
    return self._target(self, **kwargs)
  File "/home/wxy/nerfstudio/nerfstudio/models/base_model.py", line 82, in __init__
    self.populate_modules()  # populate the modules
  File "/home/wxy/nerfstudio/nerfstudio/models/nerfacto.py", line 151, in populate_modules
    self.field = TCNNNerfactoField(
  File "/home/wxy/nerfstudio/nerfstudio/fields/nerfacto_field.py", line 131, in __init__
    self.direction_encoding = tcnn.Encoding(
NameError: name 'tcnn' is not defined

解决方法:

步骤一:在终端中检查tinycudann是否能用

在终端中输入python,然后输入import tinycudann as tcnn进行验证,具体步骤如下所示。

Ubuntu系统复现NeRFStudio(详细)_第3张图片

这个时候tinycudann是不能用的,于是我们需要重新下载tinycudann。

下载参考:https://github.com/NVlabs/tiny-cuda-nn

步骤二:卸载之前的tinycudann

pip uninstall tinycudann

步骤三:编译

首先使用以下命令克隆此存储库及其所有子模块:

$ git clone --recursive https://github.com/nvlabs/tiny-cuda-nn
$ cd tiny-cuda-nn

然后,使用 CMake 构建项目:

cmake . -B build
cmake --build build --config RelWithDebInfo -j

步骤四:PyTorch 扩展

首先使用最新的支持 CUDA 的 PyTorch 版本设置 Python 3.X 环境。然后,调用

pip install git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch

步骤五:重复步骤一,验证是否能够使用

Ubuntu系统复现NeRFStudio(详细)_第4张图片

 如果输入import tinycudann as tcnn没有任何报错就是安装成功。

错误二:cuda报错

下图这个osError是cuda的报错,重新安装pytorch就可以了。

Ubuntu系统复现NeRFStudio(详细)_第5张图片

 

五、 导出结果

1.渲染视频

首先,我们必须为相机创建一条路径。这可以在"RENDER" 选项卡下的查看器中完成。将您的 3D 视图定位到您希望视频开始的位置,然后按 "ADD CAMERA"。这将设置第一个相机关键帧。继续使用新视点添加额外的相机来创建相机路径。我们提供其他参数来进一步优化您的相机路径。满意后,按"RENDER" ,这将显示一个模式,其中包含渲染视频所需的命令。终止训练作业(或者如果您有大量计算,则创建一个新终端)并运行命令以生成视频。

Ubuntu系统复现NeRFStudio(详细)_第6张图片

 渲染出的视频:

Render Video

2.生成点云

虽然 NeRF 模型不是为生成点云而设计的,但它仍然是可能的。导航到 3D 查看器中的"EXPORT"选项卡,然后选择"POINT CLOUD"。最后再点击"COPY COMMAND"复制到终端运行就可以生成点云了。

Ubuntu系统复现NeRFStudio(详细)_第7张图片

 生成点云效果:

Ubuntu系统复现NeRFStudio(详细)_第8张图片

可以看出nerfstudio生成的点云比instant-ngp生成的点云效果好多了,但是渲染出来的视频质量不如instant-ngp,二者各有所长,不过训练的时间都比较短的。如果想要训练自己的数据集可以参考一下我复现instant-ngp的文章,里面有介绍自建数据集的方法,只要生成transform.json文件就可以了。

你可能感兴趣的:(nerf,ubuntu,linux,深度学习,python)