Fast Dynamic Radiance Fields with Time-Aware Neural Voxels
Jiemin Fang1,2*, Taoran Yi2*, Xinggang Wang✉2, Lingxi Xie3,
Xiaopeng Zhang3, Wenyu Liu2, Matthias Nießner4, Qi Tian3
1Institute of AI, HUST 2School of EIC, HUST 3Huawei Cloud 4TUM
Our method converges very quickly. This is a comparison between D-NeRF (left) and our method (right).
We propose a radiance field framework by representing scenes with time-aware voxel features, named as TiNeuVox. A tiny coordinate deformation network is introduced to model coarse motion trajectories and temporal information is further enhanced in the radiance network. A multi-distance interpolation method is proposed and applied on voxel features to model both small and large motions. Our framework significantly accelerates the optimization of dynamic radiance fields while maintaining high rendering quality. Empirical evaluation is performed on both syntheticand real scenes. Our TiNeuVox completes training with only 8 minutes and 8-MB storage cost while showing similar or even better rendering performance than previous dynamic NeRF methods.
- May. 31, 2022 The first and preliminary version is realeased. Code may not be cleaned thoroughly, so feel free to open an issue if any question.
- lpips
- mmcv
- imageio
- imageio-ffmpeg
- opencv-python
- pytorch_msssim
- torch
- torch_scatter
For synthetic scenes:
The dataset provided in D-NeRF is used. You can download the dataset from dropbox. Then organize your dataset as follows.
├── data_dnerf
│ ├── mutant
│ ├── standup
│ ├── ...
For real dynamic scenes:
The dataset provided in HyperNeRF is used. You can download scenes from Hypernerf Dataset and organize them as Nerfies.
For training synthetic scenes such as standup
, run
python run.py --config configs/nerf-*/standup.py
Use small
for TiNeuVox-S and base
for TiNeuVox-B.
Use --render_video
to render a video.
For training real scenes such as vrig_chicken
, run
python run.py --config configs/vrig_dataset/chicken.py
Run the following script to evaluate the model.
For synthetic ones:
python run.py --config configs/nerf-small/standup.py --render_test --render_only --eval_psnr --eval_lpips_vgg --eval_ssim
For real ones:
python run.py --config configs/vrig_dataset/chicken.py --render_test --render_only --eval_psnr
To fairly compare with values reported in D-NeRF, metric.py
is provided to directly evaluate the rendered images with uint8
values.
Please visit our video for more rendered videos.
Method | w/Time Enc. | w/Explicit Rep. | Time | Storage | PSNR | SSIM | LPIPS |
---|---|---|---|---|---|---|---|
NeRF | ✗ | ✗ | ∼ hours | 5 MB | 19.00 | 0.87 | 0.18 |
DirectVoxGO | ✗ | ✓ | 5 mins | 205 MB | 18.61 | 0.85 | 0.17 |
Plenoxels | ✗ | ✓ | 6 mins | 717 MB | 20.24 | 0.87 | 0.16 |
T-NeRF | ✓ | ✗ | ∼ hours | – | 29.51 | 0.95 | 0.08 |
D-NeRF | ✓ | ✗ | 20 hours | 4 MB | 30.50 | 0.95 | 0.07 |
TiNeuVox-S (ours) | ✓ | ✓ | 8 mins | 8 MB | 30.75 | 0.96 | 0.07 |
TiNeuVox-B (ours) | ✓ | ✓ | 28 mins | 48 MB | 32.67 | 0.97 | 0.04 |
Method | Time | PSNR | MS-SSIM |
---|---|---|---|
NeRF | ∼ hours | 20.1 | 0.745 |
NV | ∼ hours | 16.9 | 0.571 |
NSFF | ∼ hours | 26.3 | 0.916 |
Nerfies | ∼ hours | 22.2 | 0.803 |
HyperNeRF | 32 hours | 22.4 | 0.814 |
TiNeuVox-S (ours) | 10 mins | 23.4 | 0.813 |
TiNeuVox-B (ours) | 30 mins | 24.3 | 0.837 |
This repository is partially based on DirectVoxGO and D-NeRF. Thanks for their awesome works.
If you find this repository/work helpful in your research, welcome to cite the paper and give a ⭐.
@inproceedings{TiNeuVox,
author = {Fang, Jiemin and Yi, Taoran and Wang, Xinggang and Xie, Lingxi and Zhang, Xiaopeng and Liu, Wenyu and Nie\ss{}ner, Matthias and Tian, Qi},
title = {Fast Dynamic Radiance Fields with Time-Aware Neural Voxels},
year = {2022},
booktitle = {SIGGRAPH Asia 2022 Conference Papers}
}