1. 在Windows操作系统下配置instant_ngp
1.1 代码下载
instant_ngp在github上的网址:GitHub - NVlabs/instant-ngp: Instant neural graphics primitives: lightning fast NeRF and more。GitHub项目仓库中的一些子模块是通过链接的方式链接到主项目目录上的,在下载过程中如果只下载主目录的文件会导致链接的文件夹是空的,所以需要单独打开每一个文件夹查找带有链接的子模块进行下载,如图红框中标注出来的,除了图中标识出来的文件夹,还有多个请自行查找并下载。
注意:“instant-ngp/dependencies/tiny-cuda-nn/dependencies/”文件夹中同样存在链接子模块。
下载压缩包之后,其文件名会在原有的基础上增加许多乱码,需要手动删除,并将解压后的文件夹放置在instant_ngp项目目录的原位置。
1.2 软件准备
①Visual Studio 2019。参考知乎上其他大神的说法,必须是2019。但官方文档中写的是2022也可以,可以自行尝试。
②cuda。官方给的是CUDA 11.5或以上,还需要对应版本的cuDNN。
③Cmake。参考上图,官方建议3.21以上。在官网选择适合的版本下载。
⑤python。官网建议3.7及其以上。
⑥OptiX。官网建议7.3以上。下载安装配置教程:【optix 7】 下载安装与编译示例(Win10) - 简书 (jianshu.com)
1.3 编译
有两种方法,可以参照官网使用命令编译,如下图。
也可以参考英伟达的Nerf:instant_ngp在Windows10下的配置和使用--保姆级教学 - 知乎 (zhihu.com)】使用Cmake进行。该教程的编译过程很详细。
2. 测试
Github获取的instant_ngp项目中自带有用来测试的数据,在文件夹的data \nerf\fox目录下有自带的数据。images文件里面是影像数据,transforms.json文件里面存储的是对应影像的位置等信息。
在instant_ngp目录下找到【instant-ngp.exe】,双击会打开如下界面:
然后,将【fox】文件夹直接拖动到上述窗口中,训练即刻开始,在观察loss曲线逐渐平稳后,点击上方的【stop training】,停止训练,注意:训练时间太长会导致过拟合报错。
点击下方的【save】可以保存建立好的点云文件到fox文件夹中,同样在下方输入点云文件的路径,点击【load】可以加载训练好的结果。使用鼠标或【WASD】键可以控制视角转动。
3. 创建其他目标的三维模型
3.1 准备照片
照片的拍摄具体可以参考上述fox文件夹中的50张狐狸影像,需要从各个角度环绕拍摄,同样也需要近距离拍摄细节。也可以拍摄一段视频然后使用3DF Zephyr或其他软件逐帧生成照片。本教程以一株杉木进行实操。在fox的同级目录创建shamu文件夹,照片放置在shamu文件夹里。
注意:照片需要放置在同一个文件夹中并给文件夹命名为【train】。
3.2 生成保存照片信息的json文件
生成json文件需要利用一个保存在instant-ngp文件夹中的python脚本。在调用该脚本之前需要进行一些环境配置。
将终端定位到instant-ngp目录下,需要创建虚拟环境,以及利用conda安装一些包,使用conda命令的前提是安装过anaconda。我的电脑下载的python版本是3.9。依次执行如下命令:
conda create -n instant-ngp python=3.9
pip install -r requirements.txt
conda install -c conda-forge colmap
conda install -c conda-forge ffmpeg
conda install -c conda-forge mpir
注意:所有的包的安装都在第一步创建的虚拟环境下进行。
在使用conda安装包的时候,可能会出现长时间无法安装或者失败的情况,可以先使用conda config --add channels命令添加一些镜像源,具体可以参考conda配置国内镜像源_conda国内镜像源_汪小敏同学的博客-CSDN博客。
如果在添加了镜像源后还是出现失败的情况,可以在:: Anaconda.org中搜索需要安装的包。
比如可以直接搜索ffmpeg,然后在结果中会出现多个安装命令,挑选一个和原来不同的复制,返回终端运行。
在所有包都安装完成之后,确保照片也放置在指定位置,将终端定位到data/nerf/shamu目录下,使用conda activate instant-ngp命令激活前面创建的虚拟环境,然后执行以下命令:
python ../../../scripts/colmap2nerf.py --colmap_matcher exhaustive --colmap_camera_model PINHOLE --run_colmap --images train --aabb_scale 4
回车运行时会有下面的提示,输入【Y】后回车。
接下来的过程需要几分钟,命令框中会显示进度。运行结果如下:
在shamu文件夹中会生成如下的文件:
3.3 训练模型
双击打开instant-ngp.exe,将shamu文件夹直接拖到窗口中,即开始训练。训练结果如下: