本文主要是介绍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代码复现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!