Data and checkpoints

September 9, 2026 · View on GitHub

The runner consumes prepared datasets containing calibrated images, fitted geometry and annotations. The resource script links these directories and copies checkpoints. Raw-dataset preprocessing is not included.

Official access

  • THuman2.0: obtain data through the dataset owner's access process. Use the THuman2.0 assets expected by this loader.
  • ZJU-MoCap: follow the official dataset application instructions.
  • SMPL-X and model terms: obtain body models and associated resources under their respective licenses.

Datasets and body assets are distributed by their owners and are not included in this repository.

The SMPL-X implementation is obtained separately under its upstream license. After reviewing those terms, install the pinned source:

uv run --no-project python scripts/setup_body_code.py

The script verifies source checksums and installs the code under source/smplx/. Body-model assets must still be obtained separately. Load checkpoints and pickled dataset annotations only from trusted sources.

THuman layout

The local link is dataset_local/thuman2; its resolved target can be anywhere. The basename is kept as thuman2 because split entries use that prefix.

thuman2/
  train.txt, val.txt, test.txt        # e.g. thuman2/0401, one entry per line
  thuman2_36views_perspective_fixed/
    0401/
      render/000.png ... 350.png     # 36 views, 10-degree spacing
      calib/000.txt ... 350.txt      # camera calibration
  smplx/0401.pkl, 0401.obj            # fitted parameters and body mesh
  scans/0401/0401.obj                # scan with referenced materials/textures
  joints/0401/0401.npy

The THuman configuration uses 512×512 renders. Validation uses inputs at 40/130/220/310 degrees and targets at 0/90/180/270 degrees. The validation split contains 0400–0525 (126 subjects). Training on one subject still needs its full camera coverage; --train-subjects 0 limits subjects, not available views.

The renderer computes the required body bounds and GT geometry supervision from these existing inputs. Cache writes into the source dataset are disabled. Provide explicit split files; the resource guard prevents the loader from creating missing splits inside linked data.

ZJU layout

The local link is dataset_local/zju. Each CoreView_XXX directory supplies:

  • annots.npy, including cams and per-frame ims, bboxes and kpts2d used by the loader;
  • images at the relative paths recorded in those annotations, with mask/ and/or mask_cihp/ matching camera/frame names;
  • mv1p_output/smplx/smpl/<frame:06d>.json fitted parameters, new_vertices_smplx/, joints3d/, and vertices_clothed/ frame assets (the alternate SMPL branch uses new_params/);
  • the cached wrapped/clipped geometry used by the ZJU configuration, under vertices_clipped_clothed_wrapped_6.5e-02_4.5e-02/ and the corresponding faces_clipped_clothed_wrapped_6.5e-02_4.5e-02/, with <frame>_exp.npy and <frame>_shr.npy.

The exact filenames come from source/dataset/zju.py. Validation uses subjects 387, 393 and 394, frame stride 30, three input cameras (zero-based 0/7/15) and six target cameras (3/5/10/12/18/20). The loader scales the 1024-pixel images by 0.5. The expected full split has 438 target images. ZJU crop metrics and THuman full-image metrics use different evaluation regions.

Provide the wrapped/clipped meshes before running the ZJU configuration. The runner reads them from the prepared dataset.

Shared assets and paths

scripts/prepare_resources.py --body-resources DIR links available DIR/smpl_related, DIR/smpl_data and DIR/models below dataset_local/. The THuman body helper reads smpl_related/smpl_data/smpl_faces.npy, smplx_faces.npy and the models under smpl_related/models/; see eghumannerf/body.py.

--templates DIR registers the available files below DIR/smpl/ and DIR/smplx/: the *_uv.obj, *_vert_segmentation.json and *_faces.npy assets are installed under source/dataset/ but ignored by Git.

The local provenance manifest is data/resources.local.json. Checkpoints are copies under models/, data/body assets are links or already identical local asset files, and generated run artifacts are under outputs/.

Run a read-only preflight before GPU work:

uv run --no-sync python scripts/check_data.py thuman --root dataset_local/thuman2 --report reports/thuman_file_preflight.json
uv run --no-sync python scripts/check_data.py zju --root dataset_local/zju --report reports/zju_data_preflight.json

These commands check the configured validation files and required annotation fields.

Checkpoints and ZJU registration

Checkpoint download links are not yet available. Register an existing ZJU dataset and matching checkpoint with:

uv run --no-sync python scripts/prepare_resources.py \
    --zju-root /path/to/prepared/zju \
    --checkpoint /path/to/zju_nodepth.ckpt --checkpoint-name zju_nodepth.ckpt

Register body resources and templates as shown in the README. The resource script rejects conflicting targets and records resource paths and checksums in data/resources.local.json.

CheckpointConfigurationSHA256
models/thu_fullsrdf.ckptthu_val_default_fullsrdf545dd11f4a5ab04c4c2bdaf6e3c7d918f1aafe80dd0600de158e962731a8e01a
models/zju_nodepth.ckptzju_val31ca37bd9c8c4ec9c7781a7d58a941da23f72f9f39b1d60449fd7a6ec69aec70