Windows 版

搭建环境

(1)创建conda环境

1
2
3
conda create -n nerf-ngp python=3.8
conda activate nerf-ngp
pip install commentjson imageio numpy opencv-python-headless pybind11 pyquaternion scipy tqdm

(2)下载instant-ngp应用

项目地址:https://github.com/NVlabs/instant-ngp

快速使用可以下载官方提供的instant-ngp.exe应用,根据自己的显卡版本下载即可:

(如果链接失效请参考源项目中Installation部分,如果在ubuntu下使用,需要下载源码构建。)

根据自己的情况,下载完成后解压即可:

image.png

(3)测试

打开instant-ngp.exe,将data\nerf\下的fox文件直接拖到窗口中即可

image.png

Colmap 计算相机位姿

(1)录制视频

对于要三维重建的物体或场景,使用手机录制一段视频。

尽量均匀扫描,手机不要移动太快或抖动。

(2)使用Colmap计算相机位姿

在项目文件夹内新建一个文件夹,将录制的视频放进去。

image.png

cd到视频所在的目录下。在命令行内执行:

1
2
conda activate nerf-ngp
python ..\..\scripts\colmap2nerf.py --video_in desk.mp4 --run_colmap --overwrite

需要等待较长的一段时间

完成后会出现分割好的image文件夹

再继续执行:

1
python ..\..\scripts\colmap2nerf.py --colmap_matcher exhaustive --run_colmap --aabb_scale 16 --overwrite

在等待比较长的一段时间,完成。

instant-ngp 三维重建

打开instant-ngp.exe,将desk文件夹整体拖进去就ok了

image.png

视觉效果还是相当可以的,不过导出 mesh 模型效果比较差

Ubuntu 版

该方法在 Ubuntu 20.04 +RTX 3090Ti 机器上进行过测试。

环境配置

首先安装以下依赖

1
sudo apt-get install build-essential git python3-dev python3-pip libopenexr-dev libxi-dev libglfw3-dev libglew-dev libomp-dev libxinerama-dev libxcursor-dev

安装 CUDA,参考 记录 Ubuntu 安装后的系统配置、常用软件安装过程/4.5 CUDA

下载代码

1
2
git clone --recursive https://github.com/nvlabs/instant-ngp
cd instant-ngp

进行编译

1
2
cmake . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build --config RelWithDebInfo -j

Demo 测试

运行下面的可执行文件,启动 nerf

1
./instant-ngp

data/nerf/fox 中的 transform.json 文件直接拖进 gui 界面即可进行训练

自建数据集

创建 conda 环境

1
2
3
conda create -n nerf-ngp python=3.8
conda activate nerf-ngp
pip install commentjson imageio numpy opencv-python-headless pybind11 pyquaternion scipy tqdm

将自己录制的视频放置在 instant-ngp/script 目录下。

执行以下程序生成 transform.json 文件

1
2
cd scripts
colmap2nerf.py --video_in 文件名.mp4 --video_fps 1 --run_colmap --aabb_scale 16

直接把生成的 transform.json 文件拖到 instant-ngp 的 gui 界面就可以渲染。