位置: IT常识 - 正文

nerf训练自己的数据,过程记录十分详细(nerf 怎么瞄准)

编辑:rootadmin
nerf训练自己的数据,过程记录十分详细

推荐整理分享nerf训练自己的数据,过程记录十分详细(nerf 怎么瞄准),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nerf新手入门,nerf对战规则,nerf怎么玩,nerf新手入门,nerf训练自己的数据,nerf新手最适合哪一款,nerf新手,nerf新手,内容如对您有帮助,希望把文章链接给更多的朋友!

       之前跑很多项目没有记录,后来再弄就不行了。这次特别记录一下,在梳理流程的同时希望给大家带来小小的帮助!我自己是在cuda11.2,windows环境下成功的,过程十分详细,有需要的朋友耐心看完。有问题可以评论区交流

        首先,本文nerf是基于pytorch训练的,代码来源于yenchenlin大佬,GitHub地址:GitHub - yenchenlin/nerf-pytorch: A PyTorch implementation of NeRF (Neural Radiance Fields) that reproduces the results.

 一、配置nerf环境      

         在每弄一个新项目之前,建议创建一个新的环境,本文利用conda命令创建名为nerf的环境,指令如下:

conda create --name nerf -y python=3.8 #创建名为nerf的环境conda activate nerf #切换到nerf环境

        然后安装需要的库,都在nerf代码文件的requirements.txt里

cd nerf-pytorch #进入到你nerf的文件夹,根据自己的文件位置调整python -m pip install --upgrade pip #升级一下pip,防止莫名其妙的错误pip install -r requirements.txt #安装需要的库

        结束之后建议测试一下pytorch是否为GPU版本,有时候默认安装会装成CPU版本,用以下代码测试,输出版本号和True则没有问题。否则卸载安装的torch版本,用wheel离线安装。

import torchprint(torch.__version__)print(torch.cuda.is_available())

        然后先用作者提供的数据跑一下nerf,保证环境没有问题。这里如果用的是windows系统,需要下载Gitbash来使用linux的命令,先在代码文件夹下下载数据:

bash download_example_data.sh #下载作者提供的数据

        结束后在data文件夹下有个名为nerf_example_data的压缩包,解压后在nerf代码文件夹下使用如下命令开始训练:

python run_nerf.py --config configs/fern.txt二、创建llff格式的数据集                           

       接下来的步骤请务必注意文件夹的命名,未打括号说明则最好按照我的名字命名,然后注意是在哪个文件夹下操作的,否则后面训练可能找不到对应文件而报错!  

        先在nerf_llff_data文件夹下创建一个自己的数据文件夹,我命名为llfftest(这个名字可以自取),接着在llfftest文件夹下创建名为images的文件夹,将拍摄的图片放置到此文件夹,下面给出我的示例:

        接着需要下载COLMAP软件,(地址:Release 3.8 · colmap/colmap · GitHub),拉到最下面选择cuda版本:

下载解压后打开COLMAP.bat文件得到以下界面:

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

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

nerf训练自己的数据,过程记录十分详细(nerf 怎么瞄准)

接下来点击File右边的Processing,选择Feature extraction,出现如下界面,只需要配置第一个选项,然后点击下面Extract。

结束后点击关闭,接着点击Processing下的Feature matching,直接run即可,然后等待匹配结束。

结束后点击Processing旁边的Reconstruction,选择Start Reconstruction,等待结束。。。

结束后,点击File,选择Export model,这里一定注意不要直接保存,需要新建两个文件夹,名字很重要,请跟我保持一致! 

完成后检查一下文件下的东西:

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

为了防止库冲突和报错,我又创建了名为llff的环境,将此项目需要的库进行安装,方法跟创建nerf环境是一样的

conda create --name llff -y python=3.8 conda activate llff pip install -r requirements.txt  #在llff代码文件夹下运行

然后在此环境和llff代码文件夹下运行python imgs2poses.py (红框部分改为自己的文件路径):  

结束后就能在llfftest下得到一个.npy文件:

三、训练自己的nerf

        首先在nerf代码中,我们要在config文件夹下创建我们自己的配置文件,只需要将config文件夹下的fern复制一份,名字改为llftest,datadir后面也改成llftest即可

然后就可以在nerf环境和nerf代码下开始训练啦,(建议用Gitbash运行):

python run_nerf.py --config configs/llfftest.txt

效果如下: 

最后,如果你在训练时遇到

Mismatch between imgs 0 and poses 55 !!!! Traceback (most recent call last): File "run_nerf.py", line 878, in <module> train() File "run_nerf.py", line 544, in train spherify=args.spherify) File "C:\Users\HP\Desktop\nerf-pytorch-master\load_llff.py", line 246, in load_llff_data poses, bds, imgs = _load_data(basedir, factor=factor) # factor=8 downsamples original imgs by 8x TypeError: cannot unpack non-iterable NoneType object

可能是因为函数不兼容,解决方法是,在llfftest文件夹下新建一个images_8的文件夹,将八倍下采样的图片放到这。

下采样代码我也放出来,注意更改自己的路径:

import cv2# import def_Gaussian as dg# import timeimport os.path# import glob###################################################################################################################### 读取文件夹里面的图像数量 并返回filenumdef countFile(dir): # 输入文件夹 tmp = 0 for item in os.listdir(dir): if os.path.isfile(os.path.join(dir, item)): tmp += 1 else: tmp += countFile(os.path.join(dir, item)) return tmpfilenum = countFile("C:\\Users\\HP\\Desktop\\nerf-pytorch-master\\data\\nerf_llff_data\\llfftest\\images") # 返回的是图片的张数print(filenum)# filenumn = 8index = 1 # 保存图片编号num = 0 # 处理图片计数for i in range(1, filenum + 1): ######################################################## # 1.读取原始图片 if index < 10: filename = "C:\\Users\\HP\\Desktop\\nerf-pytorch-master\\data\\nerf_llff_data\\llfftest\\images\\" + str(i) + ".jpg" elif index < 100: filename = "C:\\Users\\HP\\Desktop\\nerf-pytorch-master\\data\\nerf_llff_data\\llfftest\\images\\" + str(i) + ".jpg" else: filename = "C:\\Users\\HP\\Desktop\\nerf-pytorch-master\\data\\nerf_llff_data\\llfftest\\images\\" + str(i) + ".jpg" print(filename) original_image = cv2.imread(filename) # 2.下采样 if n == 4: img_1 = cv2.pyrDown(original_image) img_1 = cv2.pyrDown(img_1) if n == 8: img_1 = cv2.pyrDown(original_image) img_1 = cv2.pyrDown(img_1) img_1 = cv2.pyrDown(img_1) # 3.将下采样图片保存到指定路径当中 if index < 10: cv2.imwrite("C:\\Users\\HP\\Desktop\\nerf-pytorch-master\\data\\nerf_llff_data\\llfftest\\images_8\\" + str(index) + ".jpg", img_1) elif index < 100: cv2.imwrite("C:\\Users\\HP\\Desktop\\nerf-pytorch-master\\data\\nerf_llff_data\\llfftest\\images_8\\" + str(index) + ".jpg", img_1) else: cv2.imwrite("C:\\Users\\HP\\Desktop\\nerf-pytorch-master\\data\\nerf_llff_data\\llfftest\\images_8\\" + str(index) + ".jpg", img_1) num = num + 1 print("正在为第" + str(num) + "图片采样......") index = index + 1

最后的最后,本来是准备让大家看看我的结果的,但视频插入不了,那就祝各位小伙伴顺利吧。遇到什么奇奇怪怪的问题欢迎评论区讨论交流!

本文链接地址:https://www.jiuchutong.com/zhishi/290244.html 转载请保留说明!

上一篇:service启动的正确姿势(service的启动方式及生命周期)

下一篇:深度学习第一步——Pytorch-Gpu环境配置:Win11/Win10+Cuda10.2+cuDNN8.5.0+Pytorch1.8.0(步步巨细,少走十年弯路)

  • 剪映怎么把静态图片做成动态(剪映怎么把静态图片做成动态图)

    剪映怎么把静态图片做成动态(剪映怎么把静态图片做成动态图)

  • vivo x50 pro+和oppo findx2 pro的区别(vivox50pro和opporeno6pro哪个好)

    vivo x50 pro+和oppo findx2 pro的区别(vivox50pro和opporeno6pro哪个好)

  • 华为p30的处理器是什么(华为p30的处理器相当于高通骁龙的什么处理器)

    华为p30的处理器是什么(华为p30的处理器相当于高通骁龙的什么处理器)

  • 苹果手机为啥突然没声音(苹果手机为啥突然没声音了)

    苹果手机为啥突然没声音(苹果手机为啥突然没声音了)

  • 内存中存放的只有程序代码吗(内存中存放的是当前正在执行的程序和所需的数据)

    内存中存放的只有程序代码吗(内存中存放的是当前正在执行的程序和所需的数据)

  • 华为mate30pro微信视频没有声音(华为mate30pro微信怎么分身)

    华为mate30pro微信视频没有声音(华为mate30pro微信怎么分身)

  • 骁龙和高通骁龙一样吗(骁龙和高通骁龙哪个好)

    骁龙和高通骁龙一样吗(骁龙和高通骁龙哪个好)

  • 华为p30拍照模糊(华为p30拍照模糊不能聚焦)

    华为p30拍照模糊(华为p30拍照模糊不能聚焦)

  • 手机验证码给别人了怎么办(手机验证码给别人注册游戏)

    手机验证码给别人了怎么办(手机验证码给别人注册游戏)

  • 苹果手机更新的坏处(苹果手机更新的时候可以玩手机吗)

    苹果手机更新的坏处(苹果手机更新的时候可以玩手机吗)

  • 苹果7p是什么时候上市的(苹果7p是什么时候上市的手机)

    苹果7p是什么时候上市的(苹果7p是什么时候上市的手机)

  • 乘车码刷了两次能退款吗(乘车码刷两次,下车怎么刷)

    乘车码刷了两次能退款吗(乘车码刷两次,下车怎么刷)

  • 微信朋友圈保留到哪了(微信朋友圈保留的定位跨城市后还有吗)

    微信朋友圈保留到哪了(微信朋友圈保留的定位跨城市后还有吗)

  • 数据漫游开了会更快吗(数据漫游开了会费流量吗)

    数据漫游开了会更快吗(数据漫游开了会费流量吗)

  • 苹果11如何下载小红书(苹果11如何下载来电铃声)

    苹果11如何下载小红书(苹果11如何下载来电铃声)

  • 买苹果x送无线耳机吗(买iphonex送无线耳机吗)

    买苹果x送无线耳机吗(买iphonex送无线耳机吗)

  • 苹果11pro有什么新功能(苹果11pro有什么功能)

    苹果11pro有什么新功能(苹果11pro有什么功能)

  • qq续草什么意思(女生说续草是什么意思)

    qq续草什么意思(女生说续草是什么意思)

  • huaweiMate 20的电池容量(华为mate20的电池容量)

    huaweiMate 20的电池容量(华为mate20的电池容量)

  • iphone省电模式快捷键(iphone省电模式掉电快)

    iphone省电模式快捷键(iphone省电模式掉电快)

  • vivoz3i有红外功能吗(vivoz3红外线在哪)

    vivoz3i有红外功能吗(vivoz3红外线在哪)

  • 蓝牙配对后怎么传软件(蓝牙配对后怎么导入通讯录)

    蓝牙配对后怎么传软件(蓝牙配对后怎么导入通讯录)

  • 苹果 macOS Big Sur 支持 APFS 时间机器备份(苹果客服人工24小时)

    苹果 macOS Big Sur 支持 APFS 时间机器备份(苹果客服人工24小时)

  • liveupdate.exe是什么进程 有什么用 liveupdate进程查询(live updater)

    liveupdate.exe是什么进程 有什么用 liveupdate进程查询(live updater)

  • PyTorch 深度学习实战 | 基于生成式对抗网络生成动漫人物

    PyTorch 深度学习实战 | 基于生成式对抗网络生成动漫人物

  • python中yaml的三种数据结构(python3 yaml模块)

    python中yaml的三种数据结构(python3 yaml模块)

  • 税收分类编码是唯一的吗
  • 金税四期对建筑的影响
  • 代加工可靠吗
  • 汇算清缴后发现多结转了成本
  • 甲方给的工程奖项有哪些
  • 付给非公司员工提成可以走委托代销商品吗
  • 公户网上转账怎么撤回
  • 生鲜配送公司财务制度
  • 减半征收的印花税缴纳所得税吗
  • 天然气安装工程施工劳务协议
  • 提取的生产企业安全费如何记帐
  • 单位车转到个人名下要什么材料
  • 股权转让是把公司卖了吗
  • 固定资产本期折旧额与上期不一样
  • 固定资产的清查由哪个部门负责
  • 商品税目编码表查询
  • 地方教育附加费是什么意思
  • 新公司营业执照经营范围越多越好吗
  • 学校应该缴纳的税
  • 公司购买灯具的会计分录
  • 企业公益救济性工作总结
  • 研发费用发票怎么入账
  • 精英主板设置u盘启动
  • 企业老板机票怎么报销记账
  • 财务差旅费报销制度
  • macOS Catalina10.15.2值得升级吗 macOS Catalina10.15.2更新了什么
  • win11怎么让任务栏不重叠
  • 入库单做账是预付款还是应付款
  • 制作flash动画步骤
  • 0x00000024蓝屏怎样解决
  • php自学
  • 苹果 macOS 13.3 开发者预览版 Beta 2 发布
  • 民间非营利组织会计账务处理
  • 员工出差火车票可以抵扣进项吗
  • 未分配利润转增股本 母公司会计分录
  • php 设计模式
  • 出口退税退回的税款怎么记账
  • win7系统怎么设置最佳性能
  • 东京塔的意义
  • 防伪税控风险纳税人
  • vue表单验证数字
  • zendframework3中文手册
  • 南奥索峰的Lac d'Ayous小屋,法国 (© Eneko Aldaz/Offset by Shutterstock)
  • 转让固定资产使用权是出租吗
  • 股权转让实操
  • 不跳槽怎么形容
  • JavaScript ,18种常用数组方法,快来看看你会吗?
  • 补交去年增值税怎么做账
  • dedecms都能做什么网站
  • 应税项目和非应税项目分类
  • Sql Server中Substring函数的用法实例解析
  • 捐赠收入为什么要计入应纳税所得额
  • 销项税额和进项税额月底怎么结转
  • 合伙企业的合伙人有下列情形中的当然退伙
  • 付款退回怎么做账
  • 旅行社增值税2020
  • 债务类科目和债权类科目
  • 管理费用和销售费用属于什么科目
  • 单位委托单位
  • windows server 2016最大内存
  • 电脑如何安装Anaconda
  • 删除 ubuntu
  • mac新手必看教程
  • win7资源管理器怎么打开
  • win10更新2021年6月
  • win7无法安装怎么办
  • jquery 点击按钮
  • tensorflow for
  • JavaScript中创建文件
  • javascript sort排序
  • javascriptj
  • vue配置api
  • dom和javascript的关系
  • androids翻译
  • python的threading模块详解
  • javascript中的函数包括内置函数和自定义函数
  • 工资6200要交多少个人所得税
  • 医保12333查询系统
  • 个体非正常户怎么解除
  • 国企重组裁员政策解读
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设