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实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

IIS 7.0 及更高版本中的 FTP 状态代码

《IIS7.0及更高版本中的FTP状态代码》本文介绍IIS7.0中的FTP状态代码,方便大家在使用iis中发现ftp的问题... 简介尝试使用 FTP 访问运行 Internet Information Services (IIS) 7.0 或更高版本的服务器上的内容时,IIS 将返回指示响应状态的数字代

MySQL 添加索引5种方式示例详解(实用sql代码)

《MySQL添加索引5种方式示例详解(实用sql代码)》在MySQL数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中,下面给大家分享MySQL添加索引5种方式示例详解(实用sql代码),... 在mysql数据库中添加索引可以帮助提高查询性能,尤其是在数据量大的表中。索引可以在创建表时定义,也可

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元