英伟达的Nerf:instant_ngp在Windows10下的配置和使用–保姆级教学
1、前言
Nerf的原理和厉害之处在这里就不做详细介绍了,本文主要是针对小白在Windows10环境下配置instant_ngp遇到的问题和bug做详细的解读。如果有介绍不当或者不对的地方,欢迎大家指出。
instant_ngp在github上的网址:NVlabs/instant-ngp: Instant neural graphics primitives: lightning fast NeRF and more (github.com)。在官网的文档中对环境的配置介绍的还是很详细的,如果你有一定的基础和阅读能力,相信大家自己是可以摸索出来的,当然,如果在我编译代码的过程中还是遇到的一些bug,接下来我会详细的指出。
2、准备工作
在编译instant_ngp代码之前需要准备以下几样东西:
- Visual Studio 2019。必须是2019,当然我只在2019上编译过,没有在其他版本的Visual Studio上尝试过,但是听说只有Visual Studio 2019才可以。
- cuda。官方给的是cuda v10.2以上,我使用的是cuda11.6,我使用的显卡是3090,之前用的cuda11.3,但是好像失败了,就又安装了11.6,如果你的cuda版本不能用,又不想卸载之前的cuda,那么我建议安装两个版本的cuda,根据情况切换,具体操作网上有很多,大家自行查看。当然,还要下载对应的cudnn。
- Cmake。官网建议3.21以上。
- python。官网建议3.7及其以上。非必须,但是建议安装。
- OptiX。官网建议7.3以上。非必选,但是意见安装。
以上所有内容安装之后一定要检查环境,是否将路径添加到环境中。
3、代码下载
没想到吧,代码下载还可以介绍一章,那是因为直接从GitHub拉下来或者下载的代码不全。
在源代码dependencies文件中,有很多的文件夹并没有随着代码一起下载下来,没有下载下来的文件夹主要是下面红色方框中的文件夹。(我是这样的,不知道大家是不是会遇到一样的问题)
并且在dependencies/yiny-cuda-nn/dependencies/cutlass中的内容也需要单独下载。
所有的代码下载之后,再根据对应位置放好文件才得到了完整的instant_ngp源文件。
3、编译
3.1、Cmake
可以按照官网用命令编译,也可以用Cmake。本文以具有GUI的Cmake为例。首先选择源文件的目录,并在文件下创建build作为输出目录,大家一定养成好习惯啊,不要有中文。
然后点击Configure,选择vs2019,x64。选择后点击finish。
然后就得到这Configuring done的结果。虽然很多红色的出现,但是不要害怕!这只是Warning不是error。
然后点击Generate就得到了Generating done,此时恭喜你已经完成了编译的准备工作,如果你做到这里了,接下来应该没什么大问题了,我们继续加油,完成编译工作。
3.2、编译
完成Cmake的配置工作之后,就可以直接在VS中打开,记住一定是VS2019。
打开工程之后,需要选择Release版本,X64平台。
右键ALL_BUILD,点击生成
等好久之后,不出意外就是成功了。
生成的exe文件默认位置在build下面,叫testbed.exe。如果你希望在Release文件夹下,也可以修改输出路径。
4、测试
4.1、自带数据
我只演示使用图片的测试,在文件夹的data目录下有自带的数据。
images文件里面是影像数据,transforms.json文件里面存储的是对应影像的位置等信息。如果你想训练自己的影像数据,也需要将数据整理成这样的格式。
打开Developer Command Prompt for VS 2019。必须用这个,cmd等其他的终端是不行的好像。
在终端按照下面两个步骤运行程序,首先要切换到你源文件的位置,输入E:即可切换到E盘,在cd切换到对应位置(不切换运行会出错好像)
然后按照以下格式输入命令:
【testbed.exe】 –mode nerf –scene 【transforms.json】
【testbed.exe】是exe文件位置,
【transforms.json】是transforms文件位置
最后就调出GUI界面了。
4.2、自己的数据
在scripts文件下有一个colmap2nerf.py可以实现colmap相机格式转Nerf需要的transform.json格式
colmap软件的官网:COLMAP — COLMAP 3.8 documentation,大家自行下载
下载安装好之后打开软件,打开是点击CLOMAP.bat打开软件,接下来可以创建一个文件夹放你的数据。
新建工程项目
选择项目位置和照片位置,点击save保存
点击processing->feature extraction进行特征提取
点击processing->feature match进行特征匹配
点击Reconstruction->Start reconstruction开始重建
最后点击File->export model as text将结果保存为文本
然后将instant-ngp-master/scripts/colmap2nerf.py文件copy到刚才结果的上一级目录
接下来运行colmap2nerf.py文件,可以在终端也可以在vscode。
运行之后会生成一个transforms.json的文件
想要运行这个数据,就像4.1中自带数据一样使用
按照以下格式输入命令:
【testbed.exe】 –mode nerf –scene 【transforms.json】
【testbed.exe】是exe文件位置,
【transforms.json】是transforms文件位置
5、参考
NVlabs/instant-ngp: Instant neural graphics primitives: lightning fast NeRF and more (github.com)