当前位置:   article > 正文

NERF 训练自己数据集遇到的一些问题_nerf llff数据集

nerf llff数据集

GitHub - yenchenlin/nerf-pytorch: A PyTorch implementation of NeRF (Neural Radiance Fields) that reproduces the results.

pytorch 代码

NERF 自己数据集复现 完成步骤+遇到问题

本文主要用于记录自己复现NERF所遇到的一些问题,欢迎各位大佬对文中有误内容批评指正

完成步骤:

1 数据集跑colmap,生成相机位姿

进入colmap界面
点击File,选择New Project,继续点击new,在llfftest文件夹下手动输入文件名database.db后,点击保存:

接着点击Select,选择保存图片的那个images文件夹,点击Save:

接下来点击File右边的Processing,选择Feature extraction,出现如下界面,只需要配置第一个选项,然后点击下面Extract(一般用单目相机)

结束后点击Processing旁边的Reconstruction,选择Start Reconstruction,等待结束
结束后,点击File,选择Export model,这里一定注意不要直接保存,需要新建两个文件夹(sparse,0),请保持一致 nerf原代码中固定了sparse/0文件夹的名称

结束后检查文件夹中的东西:

2 将生成的bin文件通过llff数据集转化成.npz格式

接下来,将获取的位姿等数据转化为llff格式,需要下载llff脚本,(地址:GitHub - Fyusion/LLFF: Code release for Local Light Field Fusion at SIGGRAPH 2019

下载完成后进入文件夹执行

python imgs2poses.py <自己跑的colmap数据路径>

结束后得到一个.npy文件

3制作自己数据集的configs.txt文件

创建自己的配置文件放在configs里面,其中的factor为下采样因子,原文是8(进行8倍的下采样)

完成后执行
python run_nerf.py --config configs/llfftest.txt
注意如果你是360度环拍的数据集   执行
python run_nerf.py --config configs/test.txt --spherify --no_ndc
否则无法得到正确的渲染的结果 (渲染的图像中会有黑色的线)
修改训练次数

找到run_nerf.py 中的train()函数 修改N_iters即可

问题:

1 out of the memory
修改txt文件中的N_rand N_samples N_importance

代表处理光束的数量,普通采样点数量(进入coarse网络的采样点个数),重要性采样点的数量(进入fine网络的采样点个数是sample+importance)

2subprocess.CalledProcessError: Command ‘mogrify -resize 12.5% -format png *.JPG‘ ret

如果直接把原图像拷进去,images_8文件夹直接存放原图,可以成功训练,但会导致训练效果极其模糊甚至神经元爆炸!

手动执行下采样 如果不执行下采样,训练出来的结果很差

下采样代码如下:  (要修改代码中的数据地址)

  1. `import cv2`
  2. `import os.path`
  3. `#####################################################################################################################`
  4. `def countFile(dir):`
  5. ​ `tmp = 0`
  6. ​ `for item in os.listdir(dir):`
  7. ​ `if os.path.isfile(os.path.join(dir, item)):`
  8. ​ `tmp += 1`
  9. ​ `else:`
  10. ​ `tmp += countFile(os.path.join(dir, item))`
  11. ​ `return tmp`
  12. `filenum = countFile('/home/lhs/project/nerf/nerf-pytorch/data/nerf_llff_data/llfftest/images') # 返回的是图片的张数`
  13. `print(filenum)`
  14. `n = 2` #这个是采样因子,下采样几倍把这个因子修改成几
  15. `index = 0 # 保存图片编号`
  16. `num = 0 # 处理图片计数`
  17. `for i in range(0, filenum):`
  18. `########################################################`
  19. ​ `filename = '/home/lhs/project/nerf/nerf-pytorch/data/nerf_llff_data/llfftest/images/' + str(i)+'color' + '.jpg'`
  20. ​ `print(filename)`
  21. ​ `original_image = cv2.imread(filename)`
  22. ​ `if n == 2:`
  23. ​ `img_1 = cv2.pyrDown(original_image)`
  24. ​ `if n ==8:`
  25. ​ `img_1=cv2.pyrDown(original_image)`
  26. ​ `img_1=cv2.pyrDown(img_1)`
  27. ​ `img_1=cv2.pyrDown(img_1)` #如果需要其他的采样倍数自己修改代码
  28. ​ `cv2.imwrite('/home/lhs/project/nerf/nerf-pytorch/data/nerf_llff_data/llfftest/images_2/' + str(index) +'color'+ '.jpg', img_1)`
  29. ​ `num = num + 1`
  30. ​ `print("正在为第" + str(num) + "图片采样......")`
  31. ​ `index = index + 1`

参考:nerf训练自己的数据,过程记录十分详细-CSDN博客

           Windows下:nerf部署-CSDN博客           nerf训练自己的数据,过程记录十分详细_深度学习_qq_43575504-杭州城市开发者社区 (csdn.net)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/511085
推荐阅读
相关标签
  

闽ICP备14008679号