您现在的位置是:首页 >技术教程 >Ubuntu20.04复现instant-ngp,自建数据集,导出mesh网站首页技术教程
Ubuntu20.04复现instant-ngp,自建数据集,导出mesh
一、环境配置:
操作系统:ubuntu20.04
GPU:RTX3090
CUDA:11.3(linux系统cuda版本要>=10.2)
Cmake:3.23.0(>=3.21)
python:3.7(>=3.7)
gcc:9.4.0(GCC/G++ >=8)
optix:(>=7.6)
colmap:3.6
ffmpeg:用于处理视频
meshlab
二、具体安装过程
具体的安装过程就不详细介绍了,给出一些参考的博客与文章。
源码在这:NVlabs / instant-ngp (官方文档给的安装流程也很详细,download跟着来就可)
linux(ubuntu)安装 GCC 和 G++ C++ 开发环境
三、源代码复现
注:关于conda环境的配置、
我一开始准备复现的是葵酱的ngp_pl但是在安装apex的时候一直出错,无奈就复现这个了,但是配置的一些环境还是用到了这篇博客:带你复现nerf之instant-ngp(从0开始搭环境)。安装torch-scatter和安装tinycudann参考的是这篇。
看到一些博主说葵司的npg_pl也不错,而且葵司是台湾人,在youtube上也有讲解的视频。我配置的环境是跟着这篇走的。
如果对linux代码不熟悉的话可以直接打开instant-ngp的gui界面(./instant-ngp),然后把/home/wxy/instant-ngp/data/nerf/fox 中的transform.json文件直接拖进gui界面即可进行训练,几秒钟就可看到渲染的结果。
四、自建数据集渲染
关于instant-ngp界面的详细介绍:instant-ngp简介及NeRF的使用
先安利一波资源,我在复现自己的数据集的时候主要参考了youtube上的一个博主,他是在windows下进行复现的,区别不大,完全可以参考。
How To Make Datasets for Instant NGP (NeRF)
1.拍摄一段视频,并新建文件夹
在github上搜索colmap2nerf下载这个python文件scripts/colmap2nerf.py,然后把你拍摄的视频和这个.py文件放在一起,组建一个文件夹。
2.生成transform.json文件
然后就开始运行colmap进行抽帧+生成transform.json文件啦。
(ngp_pl) wxy@wxy:~/下载/statue$ /home/wxy/instant-ngp/scripts/colmap2nerf.py --video_in statue.MP4 --video_fps 1 --run_colmap --aabb_scale 16
其中/home/wxy/instant-ngp/scripts/colmap2nerf.py要替换为你自己的视频和.py文件所在的地方
视频的名称也一定要改,记住是MP4不是mp4要不然的话会找不到视频的路径。
报错:
如果出现以下这个错误,说明你没有配置colmap的环境变量,需要在path中添加路径。
==== running: colmap feature_extractor --ImageReader.camera_model OPENCV --ImageReader.camera_params "" --SiftExtraction.estimate_affine_shape=true --SiftExtraction.domain_size_pooling=true --ImageReader.single_camera 1 --database_path colmap.db --image_path "data/safeguard"
sh: 1: colmap: Permission denied
FATAL: command failed
解决方法:
在终端输入以下代码,手动添加环境变量。
sudo gedit ~/.bashrc
export PATH=/home/wxy/download/colmap36-linux/bin:$PATH
接着运行这个代码:
(ngp_pl) wxy@wxy:~/下载/statue$ /home/wxy/instant-ngp/scripts/colmap2nerf.py --video_in statue.MP4 --video_fps 1 --run_colmap --aabb_scale 16
最后就可以生成transform.json文件了
3.利用instant-ngp进行渲染
直接把生成的transform.json文件拖到instant-ngp的gui界面就可以渲染。
渲染的效果还是可以的,相对于源码来说还是有点模糊,我一些参数也没有设置,直接就拉进来进行渲染,速度是非常快的。
4.导出mesh
在instant-ngp的gui界面上有个Export mesh /volume /slices选项 点击它,然后再点击mesh it! 下面还有个save it!选项就可以导出mesh,而且可以在meshlab上进行查看。
导出的mesh效果不是很好,NeRF模型最佳使用50到150张图像训练,重建的质量取决于colmap2nerf.py能够从图像中提取准确的相机参数。如果要效果好点的话,需要注意几点:
- 尽量光线比较充足均匀;
- 拍摄物体尽量覆盖所有的视角;
- 采用防抖动设备,避免在拍摄过程中图像失真;
- 图像分辨率尽量要高;神经辐射场NeRF之Instant-ngp环境搭建与应用
五、总结
本次仅仅记录一下自己复现instant-ngp的过程,如果里面的参考有冒犯到原博主请联系我删除,本人也是nerf的小白一枚,可以一起交流学习神经辐射场,希望大家在复现instant-ngp的时候少走一些坑,情况允许下可以去复现一下npg-pl和nerfStudio,最后希望大家一起进步。