nope-nerf代码复现

2024-03-24 23:50
文章标签 代码 复现 nerf nope

本文主要是介绍nope-nerf代码复现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

代码地址

GitHub - ActiveVisionLab/nope-nerf: (CVPR 2023) NoPe-NeRF: Optimising Neural Radiance Field with No Pose Prior

进行环境配置(时间有点久,耐心等待)

git clone https://github.com/ActiveVisionLab/nope-nerf.git
cd nope-nerf
conda env create -f environment.yaml
conda activate nope-nerf

建议先更新一下conda

conda update -n base -c defaults conda

数据预处理

支持三种数据集

1.Tanks数据集

每个场景都包含图像、DPT 和 COLMAP 姿势的单眼深度估计。点击链接会下载压缩包,然后在nope-nerf项目新建data文件夹,把压缩包解压到里面。

2.NeRF LLFF 数据集

提供 NeRF LLFF 数据集的配置文件。可以点击链接下载数据集并将其解压缩到data目录中。

3.自定义数据集

想使用自己的图像序列和自定义相机内部函数,则需要将intrinsics.npz文件添加到场景目录中。配置文件的一个示例是configs/Test/images.yaml(将自己的数据添加到data/Test/images目录中)。

单目图像的深度图生成:

单目深度图生成:可以先从Vision Transformers for Dense Prediction提供的这个链接下载预训练的DPT模型到DPT目录。点击this link 跳转到链接下载。

生成深度图需要修改configs/preprocess.yaml文件里面的'path'和,‘scene',

然后运行指令:

python preprocess/dpt_depth.py configs/preprocess.yaml

报错:

VIDIA GeForce RTX 3090 with CUDA capability sm_86 is not compatible with the current PyTorch installation. The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_61 sm_70 sm_75 compute_37. If you want to use the NVIDIA GeForce RTX 3090 GPU with PyTorch, please check the instructions at https://pytorch.org/get-started/locally/ warnings.warn(incompatible_device_warn.format(device_name, capability, " ".join(arch_list), device_name))

这属于幸福的烦恼:显卡算力太高而pytorch版本太低不支持

RTX 3090 使用的 CUDA 计算能力是 sm_86,而当前的 PyTorch 安装只支持 sm_37, sm_50, sm_60, sm_61, sm_70, sm_75, compute_37 这些计算能力。

解决这个问题的方法是升级 PyTorch 到一个支持 sm_86 计算能力的版本。

查看cuda版本和pytorch版本,cuda=11.3,pytorch=1.7

上pytorch官网查看(安装)最新版本的cuda以及对应的pytorch

直接pip安装:

pip install torch==1.10.0+cu111 torchvision==0.11.0+cu111 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch_stable.html

参考链接:幸福的烦恼:显卡算力太高而pytorch版本太低不支持

继续运行生成深度图指令,生成dpt文件夹里面有.npz的深度文件和深度图

可以看出生成深度图质量还不错:

 

训练

 从头开始训练新模型:

python train.py configs/Tanks/Francis.yaml

 可以在其中替换configs/Tanks/Francis.yaml其他配置文件。

报错:

Traceback (most recent call last): File "/media/root/f34190af-0449-4d32-87e3-0a55e032ed3b/LT/nope-nerf/train.py", line 12, in <module> from torch.utils.tensorboard import SummaryWriter File "/home/dy/anaconda3/envs/nope-nerf/lib/python3.9/site-packages/torch/utils/tensorboard/__init__.py", line 4, in <module> LooseVersion = distutils.version.LooseVersion AttributeError: module 'distutils' has no attribute 'version' 去报错目录打开__init__.py文件,注释以下代码:

 问题解决,开始训练

报错:CUDA out of memory.

RuntimeError: CUDA out of memory. Tried to allocate 2.91 GiB (GPU 0; 23.70 GiB total capacity; 1.45 GiB already allocated; 1.42 GiB free; 1.51 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

自己去找一下多卡运行的代码修改一下train.py文件

 

 可以运行啦!

可以使用tensorboard在http://localhost:6006上监控训练过程:

进入out/Tanks/Francis/logs/目录,打开终端,进入虚拟环境,输入以下指令,打开生成的网址

tensorboard --logdir ./

可以进行可视化啦!

 

 评估

1.评估图像质量和深度:

python evaluation/eval.py configs/Tanks/Francis.yaml

评估深度:添加--depth. 请注意,需要自己添加地面真实深度图。

2.评估姿势:

python evaluation/eval_poses.py configs/Tanks/Francis.yaml

 要可视化估计和地面真实轨迹:添加--vis

可视化

1.新视图合成

python vis/render.py configs/Tanks/Francis.yaml

在out文件夹生成rendring的视角和深度图

img

depth

 2.位姿可视化(估计位姿)

python vis/vis_poses.py configs/Tanks/Francis.yaml

 

这篇关于nope-nerf代码复现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/843208

相关文章

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

python多进程实现数据共享的示例代码

《python多进程实现数据共享的示例代码》本文介绍了Python中多进程实现数据共享的方法,包括使用multiprocessing模块和manager模块这两种方法,具有一定的参考价值,感兴趣的可以... 目录背景进程、进程创建进程间通信 进程间共享数据共享list实践背景 安卓ui自动化框架,使用的是

SpringBoot生成和操作PDF的代码详解

《SpringBoot生成和操作PDF的代码详解》本文主要介绍了在SpringBoot项目下,通过代码和操作步骤,详细的介绍了如何操作PDF,希望可以帮助到准备通过JAVA操作PDF的你,项目框架用的... 目录本文简介PDF文件简介代码实现PDF操作基于PDF模板生成,并下载完全基于代码生成,并保存合并P

SpringBoot基于MyBatis-Plus实现Lambda Query查询的示例代码

《SpringBoot基于MyBatis-Plus实现LambdaQuery查询的示例代码》MyBatis-Plus是MyBatis的增强工具,简化了数据库操作,并提高了开发效率,它提供了多种查询方... 目录引言基础环境配置依赖配置(Maven)application.yml 配置表结构设计demo_st

SpringCloud集成AlloyDB的示例代码

《SpringCloud集成AlloyDB的示例代码》AlloyDB是GoogleCloud提供的一种高度可扩展、强性能的关系型数据库服务,它兼容PostgreSQL,并提供了更快的查询性能... 目录1.AlloyDBjavascript是什么?AlloyDB 的工作原理2.搭建测试环境3.代码工程1.

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

Java中ArrayList的8种浅拷贝方式示例代码

《Java中ArrayList的8种浅拷贝方式示例代码》:本文主要介绍Java中ArrayList的8种浅拷贝方式的相关资料,讲解了Java中ArrayList的浅拷贝概念,并详细分享了八种实现浅... 目录引言什么是浅拷贝?ArrayList 浅拷贝的重要性方法一:使用构造函数方法二:使用 addAll(

JAVA利用顺序表实现“杨辉三角”的思路及代码示例

《JAVA利用顺序表实现“杨辉三角”的思路及代码示例》杨辉三角形是中国古代数学的杰出研究成果之一,是我国北宋数学家贾宪于1050年首先发现并使用的,:本文主要介绍JAVA利用顺序表实现杨辉三角的思... 目录一:“杨辉三角”题目链接二:题解代码:三:题解思路:总结一:“杨辉三角”题目链接题目链接:点击这里