windows跑通instant-ngp过程记录

文章详细描述了如何安装和配置InstantNGP项目,包括从GitHub获取源码,处理Git命名报错,设置代理,以及安装子模块的特殊步骤。在数据集准备阶段,提到了使用colmap工具可能出现的问题和解决方案,同时指出了视频渲染过程中的注意事项,如保存和加载配置文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装

上github安装链接,感谢大佬,所有操作均按照链接进行,需要注意的是,要跟着youtube或者b站视频来安装,视频时长20min左右。需要提醒的点有以下几点:

  1. 所有安装包的版本均按照视频里的来。
  2. 关于git命名报错fatal: unable to access 'https://github.com/nvlabs/instant-ngp/': Failed to connect to ...的问题。
    因为instant-ngp需要在dependencies目录下安装很多新东西,直接下载的话,这些依赖是无法安装的,所以必须要使用Git命令,但Git命令又不稳定(或许还有其他移动要使用git的原因)。总之,装子模块时总是会报错,于是就去每个模块下下载对应的文件,在移至dependencies下就可以了。

在这里插入图片描述

可能还需要以下配置:

git config --global http.proxy http://127.0.0.1:10809
git config --global https.proxy http://127.0.0.1:10809
git submodule update --init --recursive

总之先使用git命令下载一部分(这一部分也会随机报错,多尝试求好运吧),然后等子模块报错时再一个个去denpendencies下载。
在这里插入图片描述
在这里插入图片描述

  1. 数据集的路径问题,可以看transform.json里的路径到底是什么。找不到路径会报以下错误Uncaught exception: Cannot load NeRF data from an empty set of paths.,若严格按照视频中的路径操作就不会报错。
    在这里插入图片描述
  2. 最后一步把testbed.exe改为instant-ngp.exe
    E:\test\ngp\instant-ngp\build\instant-ngp.exe --scene data/flower
    

运行

生成数据集

在这里插入图片描述
可修改参数 –aabb_scale 值越大占显存越小,但一定要是2的次方。

命令行记录

conda activate ngp
e:
cd E:\test\ngp\instant-ngp
# 生成transforms.json文件,此处数据必须放在ngp目录下
python scripts/colmap2nerf.py --colmap_matcher exhaustive --run_colmap --aabb_scale 16 --images E:\test\ngp\instant-ngp\data\ship

# 运行ngp,运行前记得新建data文件夹,运行目录是 data\flower,总目是flower\data\flower\transformer.json & flower
E:\test\ngp\instant-ngp\build\instant-ngp.exe --scene data/nerf/fox

在这里插入图片描述

一些问题

这里的colmap在处理合成数据集时(如:nerf官方提供的合成数据集)可能会存在无法匹配的问题,导致最后输出的transforms.json只有一部分关键帧,emmmm这里我直接用了官方提供的transforms_train.json(这与视频里的不同)。

视频渲染

这里的base.ingp需要自己适用GUI界面中的save按钮保存,base_cam.jso也是使用GUI界面中的add camera按钮(这个确实不好找)。
在这里插入图片描述
在这里插入图片描述

python scripts/run.py --load_snapshot data/toy_truck1/base_100.ingp --video_camera_path data/toy_truck1/base_cam.json --video_fps 30 --video_n_seconds 10 --video_output render1.mp4

记录命令行

train --scene 设置训练集,–load_snapshot 接着上一次的训练, --n_steps 设置训练次数

python scripts/run.py --scene E:/test/ngp/instant-ngp/data/toy_truck1/transforms_all.json --save_snapshot "E:/test/ngp/instant-ngp/data/toy_truck1/lego.ingp" --load_snapshot "E:/test/ngp/instant-ngp/data/toy_truck1/base_100.ingp" --n_steps 2000

获得gt图像并保存在ref文件夹中

python scripts/run.py --load_snapshot "E:/test/ngp/instant-ngp/data/toy_truck1/base_random.ingp" --test_transforms "E:\test\ngp\instant-ngp\data\toy_truck1\transforms_test.json"

获得渲染后的图像并保存到img文件夹中,以上顺序不能变

python scripts/run.py --load_snapshot "base_select1.ingp" --screenshot_transforms "E:/test/ngp/instant-ngp/data/toy_truck1/transforms_test.json" --screenshot_dir "E:\test\ngp\instant-ngp\data\toy_truck1\img"  --screenshot_spp 8  --screenshot_w 800 --screenshot_h 800  
### Instant-NGP 和 NeRF 的对比与关系 #### 背景介绍 Neural Radiance Fields (NeRF) 是一种基于神经网络的方法,用于从多视角图像合成高质量的三维场景渲染效果[^1]。它过优化一个连续的体积密度场和辐射场来实现逼真的视图合成。然而,NeRF 存在一些局限性,例如训练时间较长、内存消耗大以及对高频细节处理不够理想等问题。 Instant Neural Graphics Primitives (Instant-NGP) 则是一种改进版方法,旨在解决上述问题并提升效率。Instant-NGP 使用了一种混合表示法——结合了哈希编码(hash encoding)和多层感知机(MLP),从而显著提高了模型的学习速度和推理性能[^4]。 --- #### 主要差异分析 ##### 1. **计算效率** Instant-NGP 显著提升了训练和推断的速度。相比于传统的 NeRF 方法可能需要数小时甚至更长时间才能完成单个场景的训练,Instant-NGP 可以在几秒钟到几分钟内达到相似的效果。这是由于其采用了高效的哈希表结构来进行空间划分,并减少了冗余参数的数量[^4]。 ##### 2. **存储需求** NeRF 需要较大的存储容量来保存复杂的隐式函数权重矩阵;而 Instant-NGP 借助稀疏网格技术降低了整体所需的显存占用率,在实际应用中更加友好[^5]。 ##### 3. **泛化能力** 尽管两者都能很好地重建已知数据集中的物体外观特性,但在面对未知环境或者更大规模的数据集合时,Instant-NGP 展现出更强的适应性和鲁棒性。这是因为它的设计允许快速调整配置以匹配不同的输入条件[^6]。 ##### 4. **频率响应行为** 正如提到过的那样,标准版本的 NeRF 对于距离较远却携带高频率变化的信息难以有效捕捉,容易造成所谓的“信号走样”。相比之下,Instant-NGP 更加注重平衡全局一致性和局部精细度之间的关系,因此能够更好地应对这种情况下的挑战[^7]。 --- #### 关系探讨 虽然二者都属于神经辐射领域范畴内的研究方向之一,但从本质上讲,Instant-NGP 应该被看作是对经典 NeRF 架构的一次重要升级迭代而非完全替代品。具体来说: - 它们共享相同的目标:即利用深度学习手段构建精确且视觉上令人满意的虚拟世界表现形式; - 同时也继承了一些共同的技术理念比如依赖 MLP 来预测颜色强度分布规律等等; - 不过为了克服原始方案存在的缺陷,后者引入了许多创新机制使得整个流程变得更加高效便捷同时也具备更高的灵活性去满足多样化的需求场景。 ```python import torch from instant_ngp import NGPModel # Example usage of Instant-NGP model initialization and training loop. model = NGPModel() for epoch in range(num_epochs): predictions, loss = model.train_step(input_data) optimizer.zero_grad() loss.backward() optimizer.step() ``` --- #### 总结 综上所述,Instant-NGP 提供了一个更快捷、资源利用率更高并且适用范围更为广泛的解决方案相对于传统意义上的 NeRF 技术而言。不过需要注意的是,任何新技术都有其特定的应用边界,在选用之前还需充分考虑项目实际情况做出合理判断。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值