Instant-NPG复现
而现在直接将colmap2nerf.py直接用pycharm的项目打开的话,新生成的文件,如将视频抽帧为图片的图片集images,还有colmap获得的相机参数的信息colmap_text、colmap.db文件,还有最后每张图片对应相机内外参的transforms.json文件,都会保存在scripts里面。这里点击colmap2nerf.py的编辑,然后在修改选项的下拉菜单中将形参打上勾,然后
1、网站连接
[GitHub - NVlabs/instant-ngp:即时神经图形基元:闪电般快速的 NeRF 等](https://github.com/NVlabs/instant-ngp)
2、与colmap有异曲同工之处
colmap:利用多张视图恢复相机位姿,并恢复稀疏点云,基于sfm。
instant-npg:利用多张视图进行体渲染,并可以形成体素结构,基于Nerf(里面也用了colmap,只不过最后输出的相机参数是json文件,而不是txt文件)。
3、安装

根据自身电脑GPU型号进行安装下载。
4、instant-npg使用方法

5、instant-npg实际操作
5.1 官方给予数据集
下图是instant-npg的操作页面。

下图是官方给的数据集(其中images里面是115张不同角度拍摄狐狸的图片;transformers是一个json文件,里面是每一张图片所对应的相机的内外参数):

然后直接将这两个文件选中,拖进instant-npg框内,下面就是instant-npg的渲染效果(loss损失一直在下降)

调整下图右边的crop size可以,可以调整渲染的范围。

点击下图右边的Mesh it可以将渲染的三维模型网格化:

5.2 自己拍摄的数据集
5.2.1 实验过程

上图为自己拍摄的视频,名为toys.mp4。

将视频放入instant-ngp的scripts文件夹中。

将整个instant-npg文件夹复制到pycharm中。

将python文件colmap2nerf.py当中的第30行里面加入toys.mp4的绝对路径。
出现FFmpeg未安装的错误,在官网Download FFmpeg进行下载,然后在电脑环境中加入FFmpeg,最终在利用conda下载ffmpeg-python(网上都有教程,没有贴图)。
出现cv2库没有安装的错误,在cmd下activate pytorch激活环境,用conda install opencv即可。



出现上述错误,意思是我们没有利用colmap取推理相机内外参数。这里点击colmap2nerf.py的编辑,然后在修改选项的下拉菜单中将形参打上勾,然后在形参的方框里输入- -run_colmap,点击应用,再点击确定,问题解决。


出现colmap没有安装的错误。我电脑上本来已经有colmap,但是由于我没有安装依赖库,导致程序可以打开,但是源码调用colmap时就容易出现错误。解决办法是将COLMAP.bat直接拉到scripts目录下面。

但是讲COLMAP.bat直接拉到scripts下面还是不能解决问题,一直显示不能利用colmap进行特征提取。这个问题困扰了我很久很久。

解决办法就是将COLMAP整个文件夹复制到D:/Instant-NGP-for-RTX-3000-and-4000当中去。


再将COLMAP中的doc、lib、COLMAP.bat复制到scripts目录下。




然后再将FFmpeg中的文件也全部复制到scripts文件当中。

并且非常关键的一步就是直接将colmap2nerf.py直接用pycharm的项目打开,而不是复制到pycharm里面去,之前将视频抽帧为图片的images都是保存在pycharm对应的目录下,因为是将整个Instant-NGP-for-RTX-3000-and-4000文件复制了过去,他并不会在原来的文件夹中产生新文件。而现在直接将colmap2nerf.py直接用pycharm的项目打开的话,新生成的文件,如将视频抽帧为图片的图片集images,还有colmap获得的相机参数的信息colmap_text、colmap.db文件,还有最后每张图片对应相机内外参的transforms.json文件,都会保存在scripts里面。

上述步骤做完了之后,为了使代码能够正常运行,我们需要对前面一些正确的步骤重新进行操作(刚刚复制到pycharm的整个文件Instant-NGP-for-RTX-3000-and-4000,我已经删除)。首先是将视频放入scripts文件夹中,如上图。

将python文件colmap2nerf.py当中的第30行里面加入toys.mp4的绝对路径,路径前加上r,表示只读的意思。



点击colmap2nerf.py的编辑,然后在修改选项的下拉菜单中将形参打上勾,然后在形参的方框里输入- -run_colmap,点击应用,再点击确定。
5.2.2 实验结果


运行代码,上图是对拍摄的视频开始了抽帧的操作,并把图片最终存于images图片当中。

然后上图是对图片进行特征提取。

然后上图是进行特征匹配。


最后输出针对于每张图片的相机内外参的json文件。

然后将json文件和images文件一起拖入instant-gpg.exe中,上图是渲染后的效果。这是一个体积雾慢慢收敛的过程,形体会随着右边loss的下降越来越清晰。也可以通过Crop size将主体裁剪出来,因为整个视频都是以熊猫为主体的,所以渲染过程是以熊猫作为坐标原点的。


点击Mesh it可以将渲染结果网格化,点击save it可以将网格结果保存为上图的obj文件。
5.2.3 实验难点
配置环境我觉得是一大难点,还有就是改不完的bug真的让人难过。
5.2.4 实验收获
instant太强大了居然可以5秒就渲染出一个三维模型。
Instant ngp 使用了 Multiresolution hash encoding 技术,把一些 latent feature 信息存储在 hash encoding 里,这样子可以不把所有的 3D 场景信息存储在 MLP 的 weight 里,使用较小的 MLP 进行训练,从而实现提速,在 5 s 内完成 3D 场景重建。
相比起于 NeRF,对 image 里的每个 pixel 都做一个 ray 来进行训练,把模型的所有信息都存储在 MLP 中,instant ngp 将 3D 模型的信息 encode 到一个 hash table 里,然后只将该 hash table 作为 MLP 的输入,这样 MLP 的大小就可以相对应的减小。
更多推荐


所有评论(0)