Ha-NeRF: Hallucinated Neural Radiance Fields in the Wild 代码复现与解读

code:GitHub - rover-xingyu/Ha-NeRF: [CVPR 2022] Ha-NeRF😆: Hallucinated Neural Radiance Fields in the Wild[CVPR 2022] Ha-NeRF😆: Hallucinated Neural Radiance Fields in the Wild - GitHub - rover-xingyu/Ha-NeRF: [CVPR 2022] Ha-NeRF😆: Hallucinated Neural Radiance Fields in the Wildicon-default.png?t=N7T8https://github.com/rover-xingyu/Ha-NeRF

 本机环境: python 3.6.3,torch 1.8.1+cu102,pytorch-lightning 1.1.5              

一 代码复现

 第一步:搭建环境

conda create -n HaNeRF python=3.6

conda activate HaNeRF

pip install -r requirements.txt

 第二步:准备数据集

Ha_NeRF所用数据集与NeRF_W 所用数据集一致。 

可从以下链接下载原始scenen 数据集IMC-PT 2020 dataset | Kwang Moo Yi @ UBCKwang Moo Yi @ UBC: Image Matching Challenge PhotoTourism (IMC-PT) 2020 dataset project pageicon-default.png?t=N7T8https://www.cs.ubc.ca/~kmyi/imw2020/data.html

 如下:

ae28c4f9b3fd45cab7c03135f83dbc7d.png

 并从以下链接下载用于训练测试的文件名的tsv文件。NeRF in the Wildicon-default.png?t=N7T8https://nerf-w.github.io/

714c9afb42864afc9444092735e71a55.png 文件下载后存放在,data文件夹下的ICM-PT中,如下。

3decaaa9f11c4079b5f5a4b8af580c8d.png

接着运行如下代码,生成文件存放在cache中,后续训练使用。

python prepare_phototourism.py --root_dir  D:\NeRF\nerf_pl-nerfw\data\IMC-PT\brandenburg_gate\ --img_downscale 2

 可能会出现error如下:

OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.

 解决方案:

程序前添加以下两个语句解决:

import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"

第三步: 训练网络

python  train_mask_grid_sample.py   --root_dir ./data/IMC-PT/brandenburg_gate --dataset_name phototourism  --save_dir save  --img_downscale 2 --use_cache   --N_importanc
e 64 --N_samples 64  --num_epochs 20 --batch_size 1024  --optimizer adam --lr 5e-4 --lr_scheduler cosine  --exp_name exp_HaNeRF_Brandenburg_Gate  --N_emb_xyz 15 --N_vocab 1500 --use_mask --maskrs_max 5e-2 --maskrs_min 6e-3 --maskrs_
k 1e-3 --maskrd 0  --encode_a --N_a 48 --weightKL 1e-5 --encode_random --weightRecA 1e-3 --weightMS 1e-6  --num_gpus 1

第四步:测试+渲染图片

python eval.py --root_dir ./data/IMC-PT/brandenburg_gate/ --save_dir save  --dataset_name phototourism --scene_name HaNeRF_Trevi_Fountain --split test_test --img_downscale 2 --N_samples 256 --N_importance 256 --N_emb_xyz 15 --N_vocab 1500 --encode_a  --ckpt_path save/ckpts/HaNeRF_Brandenburg_Gate/epoch=19.ckpt  --chunk 16384 --img_wh 320 240

该步骤可创建文件夹 {save_dir}/results/{dataset_name}/{scene_name},保存渲染的图片。

212e1abca4b54d85beaf1b62566f626d.png

第五步: 指标测试

python eval_metric.py  --root_dir ./data/IMC-PT/brandenburg_gate/  --save_dir save  --dataset_name phototourism --scene_name HaNeRF_Brandenburg_Gate  --split test_test --img_downscale 2  --img_wh 320 240

 eval_metric.py是基于eval.py 渲染出的图片来计算相关指标。该步将创建{save_dir}/results/{dataset_name}/{scene_name}  文件夹,并存放指标度量结果。

44a101de3a6f4b218202056529f418f3.png

 第六步:生成重建视频

使用hallucinate.py来play Ha-NeRF,在不同的视图中从不同的场景{example_image}中进行重构!它将创建文件夹{save_dir}/hallucination/{scene_name}并渲染幻觉,最后创建一个gif。

python hallucinate.py  --save_dir save  --ckpt_path save/ckpts/HaNeRF_Trevi_Fountain/epoch=19.ckpt   --chunk 16384   --example_image artworks  --scene_name artworks_2_fountain

二  代码解读

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 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
发出的红包

打赏作者

LeapMay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值