NeRF神经辐射场复现——Pytorch版

声明

本章书写的目的是为了记录我学习三维重建领域相关知识的过程和心得,不涉及任何商业意图,欢迎互相交流,批评指正。

NeRF-Pytorch源码地址

NeRF作者所给出的源码是TensorFlow版本的,由于本人的学习需求,所以采用来自yenchen lin的Pytorch版代码进行实现和注释,该版本是基于原版的NeRF所复现的,而且在实现的基础上还要比原版的结果输出时间快了1.3倍。

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

环境配置准备工作

提前安装好Anaconda3,学习如何在prompt上创建名为nerf-pytorch的虚拟环境,先创立一个python3.7版本的虚拟环境nerf,准备工作完成。

正式配置环境

源包安装命令:

git clone https://github.com/yenchenlin/nerf-pytorch.git

若安装超时,可以参考教程换源后逐个安装;亦可直接在GitHub下载安装包解压后放在相关路径下

进入虚拟环境:

cd XXXXXXX #进入下载的源包路径
conda activate nerf-pytorch #进入虚拟环境

安装CUDA和pytorch:

安装的package中pytorch的版本没有硬性要求,但一定要和CUDA版本以及python版本相对应,这个过程相对较为复杂。

首先,选择在虚拟环境下安装支持的CUDA版本:

conda search cudatoolkit --info # 查看当前可直接下载的cuda版本的详细信息

执行上述命令后,会显示出源内所有的cuda版本以及下载地址(conda下支持的CUDA版本有限,但conda支持CUDA版本可以安装在虚拟环境里,并非全局,可以随虚拟环境的删除而删除,不用担心和全局的CUDA版本相互冲突),如图所示:

选择合适的版本(我们选择支持python3.7的11.3.1版本):

conda install cudatoolkit==11.3.1 # 安装指定版本cuda

通常情况下,国外官方源下载速度受限,可选择国内镜像源:

conda install cudatoolkit==11.3.1 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/win-64/ #安装指定版本cuda

安装完成即可,下面安装pytorch,去官网查看对应的版本:

我们选择pytorch1.12.0版本,直接复制官网的命令:

conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=11.3 -c pytorch

pytorch国外官方源速度受限,可选择国内镜像源:

conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=11.3 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

安装完成即可。

安装其他库:

nerf源包下有requrement.txt文件,将requirements.txt文件中修改为(已安装过pytorch,注释前两行):

执行命令:

pip install -r requirements.txt

亦可一个一个安装

准备数据集

下载数据集

方法一:官方命令

bash download_example_data.sh

nerf源包下有download_example_data.sh文件,但在win环境下不支持bash,可以从虚拟机linux系统上下载,也可选择方法二

方法二:官网下载

https://drive.google.com/drive/folders/128yBriW1IG_3NJ5Rp7APSTZsJqdJdfc1icon-default.png?t=N7T8https://drive.google.com/drive/folders/128yBriW1IG_3NJ5Rp7APSTZsJqdJdfc1

安装好后的数据集文件夹(必须如此):

训练数据

修改配置:

保证自己的数据路径与configs/fern.txt文件里的datadir路径相同:

可以选择更改迭代次数(默认2000k次):

训练模型:

在命令行添加config的参数

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

开始训练截图:

紧接着开始训练,训练完成后查看训练结果:

训练中出现的问题:

问题一:若出现如下报错,参考教程进行更改:

assert not step_t.is_cuda, "If capturable=False, state_steps should not be CUDA tensors.

在run_nerf.py的第206行添加相应语句即可:

optimizer.param_groups[0]['capturable'] = True

问题二:

出现如下问题:TypeError: read() got an unexpected keyword argument ‘ignoregamma‘

imageio的版本较高,可以尝试使用较旧的imageio版本,该版本支持ignoregamma参数。你可以通过以下命令安装指定版本的imageio:

pip install imageio==2.9.0

使用预训练模型

除了自己训练数据集之外,你还可以下载测试数据来测试结果:
https://drive.google.com/drive/folders/1jIr8dkvefrQmv737fFm2isiT6tqpbTbvicon-default.png?t=N7T8https://drive.google.com/drive/folders/1jIr8dkvefrQmv737fFm2isiT6tqpbTbv
我这里下载了flower_test测试数据,放在logs文件夹下

然后执行测试对flower_test进行渲染:

python run_nerf.py --config configs/flower.txt --render_only

开始测试时运行截图:

训练完成:

查看渲染结果 在 ./logs/flower_test/renderonly_path_100000里面:

NeRF源码学习

NeRF神经辐射场学习笔记(二)—— Pytorch版NeRF实现以及代码注释 https://blog.csdn.net/weixin_44292547/article/details/126249933icon-default.png?t=N7T8https://blog.csdn.net/weixin_44292547/article/details/126249933NeRF-pytorch 代码分析 https://zhuanlan.zhihu.com/p/636276084icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/636276084NeRF源码解读(pytorch实现) https://zhuanlan.zhihu.com/p/598464999?utm_id=0icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/598464999?utm_id=0

  • 35
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
nerf-simple是基于PyTorch框架实现的NERF神经辐射)模型的简单本。NERF是一种用于生成高质量逼真图像的深度学习模型,它通过对景中各个点的辐射值进行建模,从而实现精确的三维重建和渲染。 在NERF模型中,神经辐射是核心概念之一。它是一个由多个隐藏层组成的神经网络,用于估计景中每个点的辐射值。这里的辐射值通常表示像素的RGB颜色值或光强度。 nerf-simple通过使用PyTorch框架的张量操作和自动微分功能来实现NERF模型。首先,我们需要定义一个神经网络模型,包括隐藏层的数量和大小。这个模型可以基于现有的PyTorch模块,如nn.Linear和nn.ReLU,以便构建非线性变换和特征提取。 然后,我们需要定义训练过程,实现数据加载、优化器设置和损失函数计算等步骤。训练数据通常包括一系列景中的图像及其对应的相机和深度信息。 在模型训练完成后,我们可以使用训练好的神经网络来生成逼真的图像。通过对景中每个像素点的辐射值进行预测,我们可以还原出景的三维形状和纹理信息,并最终渲染出高质量的图像。 总结来说,nerf-simple是一个使用PyTorch实现的简单NERF模型,它通过神经辐射来估计景中每个像素点的辐射值,从而实现精确的三维重建和渲染。通过定义神经网络模型、训练过程和图像生成过程,我们可以利用这个模型生成逼真的图像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值