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
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
训练时的终端:
打开终端给的链接就可以在网页端实时查看:
相关参考: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进行验证,具体步骤如下所示。
这个时候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
步骤五:重复步骤一,验证是否能够使用
如果输入import tinycudann as tcnn没有任何报错就是安装成功。
下图这个osError是cuda的报错,重新安装pytorch就可以了。
首先,我们必须为相机创建一条路径。这可以在"RENDER" 选项卡下的查看器中完成。将您的 3D 视图定位到您希望视频开始的位置,然后按 "ADD CAMERA"。这将设置第一个相机关键帧。继续使用新视点添加额外的相机来创建相机路径。我们提供其他参数来进一步优化您的相机路径。满意后,按"RENDER" ,这将显示一个模式,其中包含渲染视频所需的命令。终止训练作业(或者如果您有大量计算,则创建一个新终端)并运行命令以生成视频。
渲染出的视频:
Render Video
虽然 NeRF 模型不是为生成点云而设计的,但它仍然是可能的。导航到 3D 查看器中的"EXPORT"选项卡,然后选择"POINT CLOUD"。最后再点击"COPY COMMAND"复制到终端运行就可以生成点云了。
生成点云效果:
可以看出nerfstudio生成的点云比instant-ngp生成的点云效果好多了,但是渲染出来的视频质量不如instant-ngp,二者各有所长,不过训练的时间都比较短的。如果想要训练自己的数据集可以参考一下我复现instant-ngp的文章,里面有介绍自建数据集的方法,只要生成transform.json文件就可以了。