Skip to content

A PaddlePaddle implementation of NeRF (Neural Radiance Fields) that reproduces the results

Notifications You must be signed in to change notification settings

kongdebug/nerf-paddle

Repository files navigation

NeRF-Paddle

神经辐射场 (Neural Radiance Field, NERF)是发表在ECCV 2020上的谷歌和伯克利大学的研究,只需要少量的静态图像,就能通过NeRF生成多视角的逼真3D效果,提供的训练权重渲染效果如下所示:

本项目是Paddle版本的NeRF,目前支持blanderLIIF两种数据格式的训练,其中在NeRF_Synthetic数据集上训练达到论文精度,训练与渲染速度与torch版本相差不大,较原论文快1.3倍。代码参考了torch版本的NeRF仓库nerf-pytorch,感谢其开源为本项目的建设提供便利

1. 安装

你可以根据如下步骤安装NeRF-Paddle:

  • PaddlePaddle安装
    • 版本要求:PaddlePaddle>=2.2.0, Python>=3.7
  • NeRF-Paddle安装,通过以下命令
git clone https://github.com/kongdebug/nerf-paddle
cd nerf-paddle
pip install -r requirements.txt

2. 数据集准备

NeRF_Synthetic数据集已上传至AI Studio, 同时也为快速入门准备了2个场景的示例数据集NeRF_example。新建data文件夹,将数据集下载并解压后放于该文件夹下,准备好的数据组织形式如下:

nerf-paddle/data
├── nerf_llff_data
│   └── fern
└── nerf_synthetic
    └── lego

3. 快速开始

3.1 训练Lego数据

  • 运行以下命令行,对低解析度的Lego数据进行训练
python run_nerf.py --config configs/lego.txt
  • 在训练了200k iterations (大概7.5小时)之后,训练结果如下所示:

3.2 训练Fern数据

  • 运行以下命令行,对低解析度的、真实场景的Fern数据进行训练
python run_nerf.py --config configs/fern.txt
  • 在训练了200k iterations (大概5.5小时)之后,训练结果如下所示:
rgb disp

:更详细与便利的使用教程已在AI Studio上发布,fork该项目即可快速体验

4. 复现精度

  • 使用本项目对NeRF_Synthetic数据集进行训练,配置文件在paper_configs文件夹下,得到的PSNR结果如下表所示, 平均PSNR相对论文提高了0.54dB
Framework Chair Drums Ficus Hotdog Lego Materials Mic Ship Avg PSNR
Paper-Tensorflow 33.00 25.01 30.13 36.18 32.54 29.62 32.91 28.65 31.01
Ours-Paddle 32.78 26.11 30.62 36.54 33.19 30.24 33.11 29.80 31.55
  • 以上模型训练的日志文件已上传至百度云,提取码:l7qs 。使用vdl查看日志运行以下命令,可将 {DATASET} 替换为 ship | hotdog | ficus | mic | lego | 等:
python visualize_log.py --log_dir nerf_log/{DATASET}_summaries
  • 由于正在建设Paddle官方的渲染库,预训练权重暂不开源,等NeRF合入该仓库之后再给出对应权重

About

A PaddlePaddle implementation of NeRF (Neural Radiance Fields) that reproduces the results

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages