您现在的位置是:首页 >技术教程 >Ubuntu20.04复现instant-ngp,自建数据集,导出mesh网站首页技术教程

Ubuntu20.04复现instant-ngp,自建数据集,导出mesh

XINYU W 2024-06-04 00:00:03
简介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

e5c69ed01246494683bac204b3a3f3c2.png

 二、具体安装过程

具体的安装过程就不详细介绍了,给出一些参考的博客与文章。

源码在这:NVlabs / instant-ngp  (官方文档给的安装流程也很详细,download跟着来就可)

ffmpeg安装(Ubuntu20.04 )

 ubuntu安装meshlab,全网最简单的方法

linux(ubuntu)安装 GCC 和 G++ C++ 开发环境

Ubuntu升级cmake版本

Ubuntu20.04安装Colmap

三、源代码复现

注:关于conda环境的配置、

我一开始准备复现的是葵酱的ngp_pl但是在安装apex的时候一直出错,无奈就复现这个了,但是配置的一些环境还是用到了这篇博客:带你复现nerf之instant-ngp(从0开始搭环境)。安装torch-scatter和安装tinycudann参考的是这篇。

看到一些博主说葵司的npg_pl也不错,而且葵司是台湾人,在youtube上也有讲解的视频。我配置的环境是跟着这篇走的。

97a1e9cb1e0f47c491bb6cda19e45b56.png

如果对linux代码不熟悉的话可以直接打开instant-ngp的gui界面(./instant-ngp),然后把/home/wxy/instant-ngp/data/nerf/fox 中的transform.json文件直接拖进gui界面即可进行训练,几秒钟就可看到渲染的结果。

f7ac93a9ab44452a9be9d5666d72ad00.png

四、自建数据集渲染

关于instant-ngp界面的详细介绍:instant-ngp简介及NeRF的使用

先安利一波资源,我在复现自己的数据集的时候主要参考了youtube上的一个博主,他是在windows下进行复现的,区别不大,完全可以参考。

How To Make Datasets for Instant NGP (NeRF)

1.拍摄一段视频,并新建文件夹

在github上搜索colmap2nerf下载这个python文件scripts/colmap2nerf.py,然后把你拍摄的视频和这个.py文件放在一起,组建一个文件夹。

50f3943a7e4040c3b5d1b26909e0e364.png

aaec9a2c49b44d9c8c60fadb3683329a.png

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

d0acf83501364fc6b102ff7ed45da557.png

 接着运行这个代码:

 (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文件了

f7841e659f7a4d5a9d6cd880af36a565.png

 3.利用instant-ngp进行渲染

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

bbdb791d924140f6b24c6d53194319b8.png

ab9226ca94d445c48f27546681bd1a06.png

渲染的效果还是可以的,相对于源码来说还是有点模糊,我一些参数也没有设置,直接就拉进来进行渲染,速度是非常快的。

4.导出mesh

在instant-ngp的gui界面上有个Export mesh /volume /slices选项 点击它,然后再点击mesh it! 下面还有个save it!选项就可以导出mesh,而且可以在meshlab上进行查看。

e25aea4a66f6477493a651131ac40a6b.png

导出的mesh效果不是很好,NeRF模型最佳使用50到150张图像训练,重建的质量取决于colmap2nerf.py能够从图像中提取准确的相机参数。如果要效果好点的话,需要注意几点:

  1. 尽量光线比较充足均匀;
  2. 拍摄物体尽量覆盖所有的视角;
  3. 采用防抖动设备,避免在拍摄过程中图像失真;
  4. 图像分辨率尽量要高;神经辐射场NeRF之Instant-ngp环境搭建与应用

五、总结

 本次仅仅记录一下自己复现instant-ngp的过程,如果里面的参考有冒犯到原博主请联系我删除,本人也是nerf的小白一枚,可以一起交流学习神经辐射场,希望大家在复现instant-ngp的时候少走一些坑,情况允许下可以去复现一下npg-pl和nerfStudio,最后希望大家一起进步。

 

 

 

 

 

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。