神经辐射场 (Neural Radiance Field, NERF)是发表在ECCV 2020上的谷歌和伯克利大学的研究,只需要少量的静态图像,就能通过NeRF生成多视角的逼真3D效果,提供的训练权重渲染效果如下所示:
本项目是Paddle版本的NeRF,目前支持blander
与LIIF
两种数据格式的训练,其中在NeRF_Synthetic
数据集上训练达到论文精度,训练与渲染速度与torch版本相差不大,较原论文快1.3倍。代码参考了torch版本的NeRF仓库nerf-pytorch,感谢其开源为本项目的建设提供便利
你可以根据如下步骤安装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
NeRF_Synthetic数据集已上传至AI Studio, 同时也为快速入门准备了2个场景的示例数据集NeRF_example。新建data
文件夹,将数据集下载并解压后放于该文件夹下,准备好的数据组织形式如下:
nerf-paddle/data
├── nerf_llff_data
│ └── fern
└── nerf_synthetic
└── lego
- 运行以下命令行,对低解析度的
Lego
数据进行训练
python run_nerf.py --config configs/lego.txt
- 在训练了200k iterations (大概7.5小时)之后,训练结果如下所示:
- 运行以下命令行,对低解析度的、真实场景的
Fern
数据进行训练
python run_nerf.py --config configs/fern.txt
- 在训练了200k iterations (大概5.5小时)之后,训练结果如下所示:
rgb | disp |
---|---|
注 :更详细与便利的使用教程已在AI Studio上发布,fork该项目即可快速体验
- 使用本项目对
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合入该仓库之后再给出对应权重