【三维重建】【深度学习】windows10下NeRF代码Pytorch实现

news2024/10/6 22:22:24

【三维重建】【深度学习】windows10下NeRF代码Pytorch实现

提示:最近开始在【三维重建】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。


文章目录

  • 【三维重建】【深度学习】windows10下NeRF代码Pytorch实现
  • 前言
  • NeRF模型运行
    • 下载源码并安装环境
    • 训练NeRF
    • 训练个人数据集
  • 总结


前言

NeRF是由加利福尼亚大学伯克利分校的Mildenhall, Beni等人在《NeRF: Representing Scenes as
Neural Radiance Fields for View Synthesis【ECCV 2020】》【论文地址】一文中提出了一种5D的神经辐射场来作为复杂场景的隐式表示,其输⼊稀疏的多⻆度带pose的图像训练得到⼀个神经辐射场模型。简单来说就是通过输入同一场景不同视角下的二维图片和相机位姿,对场景进行三维隐式建模,并通过体素渲染方程实现了合成任意新视角下的场景图片。
在详细解析NeRF网络之前,首要任务是搭建NeRF【Pytorch-demo地址】所需的运行环境,并模型完成训练和测试工作,展开后续工作才有意义。


NeRF模型运行

下载源码并安装环境

在win10环境下装anaconda环境,方便搭建专用于NeRF模型的虚拟环境。
【pytorch代码推荐参考教程】

安装GPU版本的pytorch教程,pytorch-gpu版本需要根据个人计算机去安装相应版本。

# 创建虚拟环境
conda create -n nerf_mvs python=3.7
# 查看新环境是否安装成功
conda env list
# 激活环境
conda activate nerf_mvs 
# 下载githup源代码到合适文件夹,并cd到代码文件夹内(科学上网)
git clone https://github.com/yenchenlin/nerf-pytorch.git
cd nerf-pytorch
# 安装pytorch包
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117
# 通过清华源,安装其他包(需要删除关于pytorch的部分)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
# 查看所有安装的包
pip list
conda list

最终的安装的所有包。

检查torch版,已经安装torch-gpu版本

# 查看pytorch版本
import torch
print(torch.__version__)
# 查看cuda版本
print(torch.version.cuda)
# 查看cuda是否可用
print(torch.cuda.is_available())
# 查看可用cuda数量
print(torch.cuda.device_count())

训练NeRF

下载数据集:win10系统下还是有点麻烦,需要保证主机安装了以下环境!!!因为需要在win10下执行bash命令
win10配置wget
win10配置gitbash

# 进入nerf-pytorch目录下,需要用linux的目录格式
cd /E/deep-learning-for-image-processing-master/nerf-pytorch
bash download_example_data.sh

# download_example_data.sh内容
wget http://cseweb.ucsd.edu/~viscomp/projects/LF/papers/ECCV20/nerf/tiny_nerf_data.npz
mkdir -p data
cd data
wget http://cseweb.ucsd.edu/~viscomp/projects/LF/papers/ECCV20/nerf/nerf_example_data.zip
unzip nerf_example_data.zip
cd ..


训练网络

# 开始训练网络(lego数据集)
python run_nerf.py --config configs/lego.txt

训练个人数据集

个人数据集的制作流程,可以参考博主的另一篇博文【基于COLMAP制作自己的NeRF(LLFF格式)数据集】,制作数据集所需要的图片是用手机拍摄视频后抽帧获取的。
在/nerf-pytorch/data/nerf_llff_data/目录下查看自己的图片数据集和位姿文件;
在/nerf-pytorch/configs/目录下查看对应的配置文件。

执行nerf代码

# test_frame.txt:对应的数据集的配置文件
python run_nerf.py --config configs/test_frame.txt

开始训练

windows下可能出现的问题:

  1. subprocess.CalledProcessError: Command ‘cp ./data/nerf_llff_data/scene\images/* ./data/nerf_llff_data/XXXX\images_8’ returned non-zero exit status 1.
  2. TypeError: cannot unpack non-iterable NoneType object

产生原因: config/文件下的配置文件XXX.Xtxt设置了factor=8,默认即是8倍下采样,下采样后的图片会被保存在image_8文件夹下,完成这一过程后nerf会从image_8读取图片并用于训练。问题就出现在下采样的过程,由于系统兼容性问题,windows系统无法执行_minify函数中的部分系统指令,导致了第一个错误,并在此过程中产生了一个的空文件夹image_8,假如代码不经过修改再次执行,判断存在文件夹image_8后跳过下采样过程直接进行后续的训练,因此在空的image_8文件夹中进行数据读取,就产生了第二个错误。
在nerf-pytorch/load_llff.py文件中:
在这里插入图片描述
更改意见: 自己写一个下采样的代码保存到image_8中。

import cv2
import os
from PIL import Image

images_path = './data/nerf_llff_data/test_frame/images/' # 原图路径
output_dir = './data/nerf_llff_data/test_frame/images_8/' # resize后路径
factor = 8 # 降采样倍数
images_list = os.listdir(images_path)
img = Image.open(images_path + images_list[0])
(W,H) = (img.width,img.height) #[W,H]
print("image_size : ",(W ,H))
# 保存resize后的图片到新文件夹下
for image_name in images_list:
    img = cv2.imread(images_path+image_name)
    img_resize = cv2.resize(img, (int(W/factor), int(H/factor)))
    cv2.imwrite(output_dir + image_name, img_resize)
    print(image_name , " done")
print("all images done")

总结

尽可能简单、详细的介绍NeRF的安装流程以及解决了安装过程中可能存在的问题。后续会根据自己学到的知识结合个人理解讲解NeRF的原理和代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/669683.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【AI底层逻辑】——篇章12:统计学与概率论数据“陷阱”

目录 引入 一、“思维方式”是解题关键!! 1、统计思维的诞生 2、概率的力量 概率与数理统计的区别? 如何验证假设? 经验与现实如何共存——贝叶斯定理? “朴素”的朴素贝叶斯? 二、数据“陷阱” …

HTTP Host 头攻击是什么?

💂 个人网站:【海拥】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 目录 前言什么是HTTP Host头…

小鱼深度产品测评之:阿里云云产品OCR文档自学习,一款面向“无算法基础“的企业与个人开发者用户的产品。

OCR文档自学习 1、引言2、开箱体验3、我的任务菜单3.1 创建任务3.2 编辑任务3.3 创建模板 4、 在线使用 菜单5、 数据监控 菜单6、总结 1、引言 OCR文档自学习,看到这个标题,很多人第一反应就是,我不会算法 这个怎么搞的嘛? 其…

MetaAI发布人工智能语音模型Voicebox

Meta官网博客更新:人工智能研究人员在语音生成人工智能方面取得了突破。我们开发了Voicebox,这是第一个可以推广到语音生成任务的模型,它没有经过专门训练,以最先进的性能来完成。 与图像和文本的生成系统一样,Voicebo…

CRC校验码详解、常见算法实现及代码实例

一、CRC概念 1. 什么是CRC? 在前面的文章中通过小例子的比喻,简单介绍过什么是CRC,这里再详细的讲解一次。 CRC(Cyclic Redundancy Checksum)是一种纠错技术,代表循环冗余校验和。 数据通信领域中最常用的…

第二十二章_Redis经典五大类型源码及底层实现

redis源码在哪里 \redis-7.0.5\src https://github.com/redis/redis 源码分析参考书(推荐) 《Redis设计与实现》 《Redis5设计与源码分析》 Redis源代码的核心部分 src源码包下面该如何看? 源码分析思路 这么多你如何看? 1、外…

C/C++ VS2019连接MySQL数据库 - 增删改查(详细步骤)

一、配置Visual Studio 找到自己安装MySQL的路径,确保有include和lib两个文件夹 打开创建的Visual Studio项目,切换x64平台 注意:如果你的项目中没有x64平台,请严格按照下面图片的步骤进行操作 a. 点击下拉框,点击配…

面向对象程序设计|理解++i和i++

首先我们从最简单的整型运算来理解前和后: 将a10再赋值20意味着(a10)返回的是a的空间,又把这个20赋值给这个空间的内存,最后a20; (a)意味着a返回的是空间(引用),可以继续作的调用,引…

Java版本工程项目管理系统源码

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显示…

STM32存储器映射

STM32的寻址范围 32位的单片机有32根地址线(每根地址线有两种状态:导通或者不导通)。 单片机内存地址访问的存储单元是按字节编址的。 存储器映射 存储器指可以存储数据的设备,本身没有地址信息,对存储器分配地址…

JAVA_HOME变量的详细配置(图文)

用到Java项目的时候,有时候要用到Java_home,这个需要在系统配置中配置一下。如何操作呢?以下为详细的图文步骤。 1)打开环境变量的窗口 2)打开新建系统变量 3)编辑JAVA_HOME 在变量名后输入JAVA_HOME,找到…

IDEA配置本地Maven详细教程

IDEA配置本地Maven详细教程 一、下载二、安装三、配置环境变量四、IDEA配置Maven 一、下载 官网下载:点击下载 网盘下载:点击下载 二、安装 将下载后的zip文件(免安装版)解压到自己想要放的位置,,我这里…

第八十一天学习记录:gVim的使用

首先,根据所使用的系统下载VIM,百度搜索或者CSDN搜索有资源可以下载。 gVim是Windows下的一个Vim实现,它提供了类似于Vim命令行界面的编辑器视窗,并且支持通过鼠标和菜单来执行一些基本的编辑命令。 安装完成后,桌面上…

Video-LLaMa:利用多模态增强对视频内容理解

在数字时代,视频已经成为一种主要的内容形式。但是理解和解释视频内容是一项复杂的任务,不仅需要视觉和听觉信号的整合,还需要处理上下文的时间序列的能力。本文将重点介绍称为video - llama的多模态框架。Video-LLaMA旨在使LLM能够理解视频中…

软考A计划-系统集成项目管理工程师-信息化系统的生命周期-上

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

【GESP】2023年03月图形化一级 -- 问路

文章目录 问路1. 准备工作2. 功能实现3. 设计思路与实现(1)角色、舞台背景设置a. 角色设置b. 舞台背景设置 (2)脚本编写a. 角色:Averyb. 角色:Dee 4. 评分标准 问路 1. 准备工作 (1&#xff09…

全网超详细的【Axure】Axure RP 10 的下载、安装、中文字体、免授权

文章目录 1. 文章引言2. axure10的安装3. axure10的元件库4. axure10的下载地址 1. 文章引言 最近在学习原型图,针对画原型图的工具,反复对比墨刀、Axure、xiaopiu后,最终选择了Axure。 接下来,我便详细介绍如何安装axure10&…

将模型从 PyTorch 导出到 ONNX 并使用 ONNX 运行时运行它

将模型从 PyTorch 导出到 ONNX 并使用 ONNX 运行时运行它(可选) 在本教程中,我们描述了如何将 PyTorch 中定义的模型转换为 ONNX 格式,然后在 ONNX 运行时中运行它。 ONNX 运行时是针对 ONNX 模型的以性能为中心的引擎&#xff…

微服务简介,Springcloud-alibaba中的Nacos简介

目录 一:微服务架构 1.0:单体架构 1.1:微服务架构 1.2:微服务架构的优势 1.3:微服务架构的缺点(挑战) 1.4:SpringCloud与微服务关系 1.5:SpringBoot和SpringCloud关系 二:服务…

RabbitMQ下载与安装

RabbitMQ下载与安装 想要使用RabbitMQ首先要有Erlang/OTP的运行环境,也就是说首先要下载erlang 在下载Erlang/OTP之前,需要弄清楚RabbitMQ和ErLang之间的版本对应关系。 The table below provides an Erlang compatibility matrix of currently suppo…