EG-HumanNeRF

September 9, 2026 · View on GitHub

Efficient generalizable human NeRF utilizing human prior for sparse view

Zhaorong Wang · Yoshihiro Kanamori · Yuki Endo

Computational Visual Media, 12(2), 355–379, 2026

Paper · IEEE · Preprint

EG-HumanNeRF synthesizes novel human views from sparse calibrated images and a fitted body prior. It combines body-guided sparse feature aggregation and ray sampling with image-space refinement, without fitting a separate NeRF for each test subject.

EG-HumanNeRF method overview

Interactive rendering

EG-HumanNeRF GUI demo

THuman2.0, rendered at 512 × 512 on an RTX A6000. Watch the video · Run the viewer

Installation

Requirements: Linux, an NVIDIA GPU, CUDA 11.8, GCC/G++ 9, Git, Make and uv. The environment uses Python 3.10 and PyTorch 2.4.1. The default build targets RTX A6000 (compute capability 8.6).

Run from the repository root, replacing the CUDA toolkit path:

uv run --no-project python scripts/bootstrap_cuda.py --cuda-home /path/to/cuda-11.8 --with-zju
source .cache/activate_cuda.fish

Omit --with-zju for THuman only. For a different GPU architecture, set --arch to its compute capability. Use uv run --no-sync with the prepared environment. See environment details for native dependencies and runtime setup.

Data and checkpoints

The model uses prepared THuman2.0 or ZJU-MoCap data, fitted body assets and a matching checkpoint. See data preparation for the required layout and official dataset access links. Raw-dataset preprocessing is not included; checkpoint download links are not yet available.

Install the separately distributed body-model code as described in data preparation.

Register resources already available on your machine:

uv run --no-sync python scripts/prepare_resources.py \
    --thuman-root /path/to/prepared/thuman2 \
    --body-resources /path/to/body_resources \
    --templates /path/to/mesh_templates \
    --checkpoint /path/to/thu_fullsrdf.ckpt

Datasets and body assets are linked; checkpoints are copied into models/. ZJU setup and checkpoint identities are documented in data preparation.

Inference

Select one available GPU; the examples use GPU 0.

nvidia-smi
CUDA_VISIBLE_DEVICES=0 uv run --no-sync python -m eghumannerf infer \
    --checkpoint models/thu_fullsrdf.ckpt --subjects 401 --limit-val-batches 1 \
    --output outputs/inference

View the input images, predictions, ground truth and side-by-side comparisons in outputs/inference/renders/. Use a new output directory for each run.

Training

Train on one subject for a short run:

CUDA_VISIBLE_DEVICES=0 uv run --no-sync python -m eghumannerf train \
    --train-subjects 0 --subjects 401 --max-steps 10 --limit-val-batches 1 \
    --output outputs/train

Remove --train-subjects to use the configured training split and set --max-steps to the desired training length. Usage covers pretrained initialization, checkpoint restoration and logging.

Evaluation

CUDA_VISIBLE_DEVICES=0 uv run --no-sync python -m eghumannerf evaluate \
    --checkpoint models/thu_fullsrdf.ckpt --output outputs/thuman_eval

CUDA_VISIBLE_DEVICES=0 uv run --no-sync python -m eghumannerf evaluate \
    --experiment zju_val --checkpoint models/zju_nodepth.ckpt \
    --output outputs/zju_eval

The commands evaluate the configured splits and save per-image metrics and renderings. See usage for output files, metric regions and the interactive result viewer.

Documentation

Release TODO

  • Publish pretrained checkpoints.

License

Original code is licensed under CC BY-NC 4.0 for non-commercial use. Third-party code, datasets and body-model assets retain their respective licenses; see third-party notices.

Acknowledgments and citation

This project builds on VolRecon and other open-source components. See third-party notices for attribution and license information.

@article{wang2026eghumannerf,
  title   = {EG-HumanNeRF: Efficient generalizable human NeRF utilizing human prior for sparse view},
  author  = {Wang, Zhaorong and Kanamori, Yoshihiro and Endo, Yuki},
  journal = {Computational Visual Media},
  volume  = {12},
  number  = {2},
  pages   = {355--379},
  year    = {2026},
  doi     = {10.26599/CVM.2025.9450508}
}