/gnr

Implementation of "Generalizable Neural Performer: Learning Robust Radiance Fields for Human Novel View Synthesis"

Primary LanguagePython

Generalizable Neural Performer: Learning Robust Radiance Fields for Human Novel View Synthesis

report

Teaser image

Abstract: This work targets at using a general deep learning framework to synthesize free-viewpoint images of arbitrary human performers, only requiring a sparse number of camera views as inputs and skirting per-case fine-tuning. The large variation of geometry and appearance, caused by articulated body poses, shapes and clothing types, are the key bot tlenecks of this task. To overcome these challenges, we present a simple yet powerful framework, named Generalizable Neural Performer (GNR), that learns a generalizable and robust neural body representation over various geometry and appearance. Specifically, we compress the light fields for novel view human rendering as conditional implicit neural radiance fields with several designs from both geometry and appearance aspects. We first introduce an Implicit Geometric Body Embedding strategy to enhance the robustness based on both parametric 3D human body model prior and multi-view source images hints. On the top of this, we further propose a Screen-Space Occlusion-Aware Appearance Blending technique to preserve the high-quality appearance, through interpolating source view appearance to the radiance fields with a relax but approximate geometric guidance.

Wei Cheng, Su Xu, Jingtan Piao, Chen Qian, Wayne Wu, Kwan-Yee Lin, Hongsheng Li
[Demo Video] | [Project Page] | [Data] | [Paper]

Updates

  • [11/07/2022] Code is released.
  • [02/05/2022] GeneBody Train40 is released! Apply here!
  • [29/04/2022] SMPLx fitting toolbox and benchmarks are released!
  • [26/04/2022] Techincal report released.
  • [24/04/2022] The codebase and project page are created.

Data Download

To download and use the GeneBody dataset set, please read the instructions in Dataset.md.

Annotations

GeneBody provides the per-view per-frame segmentation, using BackgroundMatting-V2, and register the fitted SMPLx using our enhanced multi-view smplify repo in here.

To use annotations of GeneBody, please check the document Annotation.md, we provide a reference data fetch module in genebody.

Train and Evaluate GNR

Setup the environment

conda env create -f environment.yml
conda activate gnr
cd lib/mesh_grid && python setup.py install

Download the pre-trained model, if it raises a gdown failure, try to download the zip file from your browser from GoogleDrive or OneDrive.

bash scripts/download_model.sh

To render per-view depth image of GeneBody dataset

bash scripts/render_smpl_depth.sh ${GENEBODY_ROOT}

To run GNR

python apps/run_genebody.py --config configs/[train, test, render].txt --dataroot ${GENEBODY_ROOT}

if you have multiple machines and mulitple GPUs, you can try to train our model using distributed data parrallel

bash scripts/train_ddp.sh

Benchmarks

We also provide benchmarks of start-of-the-art methods on GeneBody Dataset, methods and requirements are listed in Benchmarks.md.

To test the performance of our released pretrained models, or train by yourselves, run:

git clone --recurse-submodules https://github.com/generalizable-neural-performer/gnr.git

And cd benchmarks/, the released benchmarks are ready to go on Genebody and other datasets such as V-sense and ZJU-Mocap.

Case-specific Methods on Genebody

Model PSNR SSIM LPIPS ckpts
NV 19.86 0.774 0.267 ckpts
NHR 20.05 0.800 0.155 ckpts
NT 21.68 0.881 0.152 ckpts
NB 20.73 0.878 0.231 ckpts
A-Nerf 15.57 0.508 0.242 ckpts

(see detail why A-Nerf's performance is counterproductive in issue)

Generalizable Methods on Genebody

Model PSNR SSIM LPIPS ckpts
PixelNeRF 24.15 0.903 0.122
IBRNet 23.61 0.836 0.177 ckpts

Citation

@article{cheng2022generalizable,
    title={Generalizable Neural Performer: Learning Robust Radiance Fields for Human Novel View Synthesis},
    author={Cheng, Wei and Xu, Su and Piao, Jingtan and Qian, Chen and Wu, Wayne and Lin, Kwan-Yee and Li, Hongsheng},
    journal={arXiv preprint arXiv:2204.11798},
    year={2022}
}