CoolFace
Datasetpublic

zhenyuxie-zhzh/hot3d

HOT3D EgoHOI clips for the RGB object-entity (OEE) model Exactly the data that the single-branch + object-entity version of the EgoHOI Wan2.2-TI2V-5B fine-tune reads at training and evaluation time. Nothing else from the original working tree is included (no pose caches, depth, ViPE trajectories or routing boxes); the pseudotactile/ and pointmap/ add-ons serve the later versions (see their sections below). Derived from Meta's HOT3D dataset (Aria clips). The HOT3D license and… See the full description on the dataset page: https://huggingface.co/datasets/zhenyuxie-zhzh/hot3d.

sourceHugging Faceotherupdated 5d agoView on Hugging Face
0likes148downloads
Dataset Card

HOT3D EgoHOI clips for the RGB object-entity (OEE) model

Exactly the data that the single-branch + object-entity version of the EgoHOI Wan2.2-TI2V-5B fine-tune reads at training and evaluation time. Nothing else from the original working tree is included (no pose caches, depth, ViPE trajectories or routing boxes); the pseudotactile/ and pointmap/ add-ons serve the later versions (see their sections below).

Derived from Meta's HOT3D dataset (Aria clips). The HOT3D license and terms apply to every video, mask and trajectory here; this repository only redistributes a processed subset for research use within the project.

Contents

PathWhatFilesSize
train/videos-000.tarRGB clips, 1442 train clips (train/videos/<clip>.mp4)1442466 MiB
train/skeleton_videos-000.tarhand-skeleton conditioning videos (train/skeleton_videos/<clip>.mp4)1442913 MiB
train/camera_traj1-000.tarcamera intrinsics/extrinsics per frame (train/camera_traj1/<clip>.json)1442149 MiB
train/obj_mask-000.tarbinary object silhouettes, 150 PNGs per clip (train/obj_mask/<clip>/<frame:06d>.png)216,300812 MiB
val/videos-000.tarRGB clips, the 74 RGB74 evaluation clips7426 MiB
val/skeleton_videos-000.tarhand-skeleton conditioning videos7443 MiB
val/camera_traj1-000.tarcamera trajectories748 MiB
val/obj_mask-000.tarbinary object silhouettes (the evaluator uses only frame 34, the first window frame, as the oracle mask)11,10023 MiB
manifests/egohoi_rgb_manifest.jsonlclip selection (1442 train, 74 val) with the original absolute cluster paths10.4 MB
assets/prompt_embeddings/egohoi_default_prompt.ptcached T5 embedding of the fixed prompt "An egocentric video of hands interacting with objects." (produced from the Wan2.2-TI2V-5B text encoder; place it under <model_dir>/prompt_embeddings/)14.2 MB
assets/fvd/i3d_torchscript.ptKinetics-400 I3D TorchScript export used for FVD (sha256 bec6519f...5860a5e2, pinned by the metric scripts; copy to ~/.cache/pyhegosyn/fvd/)149 MB
tools/make_local_manifest.pyrewrites the manifest paths for your extraction root1
MANIFEST.json, SHA256SUMSshard inventory (per-clip membership) and checksums2

Per split and clip the model reads:

  • —videos/<clip>.mp4 -- the egocentric RGB clip (480x480, 150 frames, upright orientation).
  • —skeleton_videos/<clip>.mp4 -- the rasterized hand-skeleton conditioning video, frame-aligned with the RGB clip.
  • —camera_traj1/<clip>.json -- per-frame camera intrinsics/extrinsics.
  • —obj_mask/<clip>/<frame:06d>.png -- binary union silhouette of every visible ground-truth object, one PNG per frame, stored in the RAW mp4 orientation (the loader applies the same ROTATE_270 it applies to RGB frames: --object_mask_orientation raw).

Tar members are named <split>/<modality>/...; extracting every shard into one directory reproduces the HOT3D_EgoHOI/{train,val}/... layout the code expects.

Restore

bash
mkdir -p /data/HOT3D_EgoHOI && cd /data/HOT3D_EgoHOI
hf download zhenyuxie-zhzh/hot3d --repo-type dataset --local-dir /data/hot3d_download
for t in /data/hot3d_download/train/*.tar /data/hot3d_download/val/*.tar; do tar -xf "$t"; done
(cd /data/hot3d_download && sha256sum -c SHA256SUMS)   # optional integrity check (run before extracting)
python /data/hot3d_download/tools/make_local_manifest.py \
  --root /data/HOT3D_EgoHOI \
  --manifest /data/hot3d_download/manifests/egohoi_rgb_manifest.jsonl \
  --output /data/HOT3D_EgoHOI/hot3d_geometry_pseudotactile_v1/manifests/egohoi_rgb_manifest.jsonl
mkdir -p <model_dir>/prompt_embeddings && cp /data/hot3d_download/assets/prompt_embeddings/egohoi_default_prompt.pt <model_dir>/prompt_embeddings/

The manifest rewrite is required: the loader checks that each egohoi_video resolves to <root>/<split>/videos/<clip>.mp4 and refuses to start otherwise.

Pseudo-tactile add-on (pseudotactile/, for RGB LoRA stage 2 on the V4-formal architecture)

PathWhatFilesSize
pseudotactile/train/hand-000.tarhand proximity renders (hot3d_geometry_pseudotactile_v1/proximity/train/<clip>.mp4 + .qa.json), 1442 clips2884~82 MiB
pseudotactile/train/object-000.tarobject proximity renders (hot3d_object_geometry_pseudotactile_v1/blue_geometry_v1/proximity/train/<clip>.mp4 + .qa.json), 1442 clips2884~102 MiB
pseudotactile/val/hand-000.tar, pseudotactile/val/object-000.tarthe same for the 74 val clips148 + 148~4 + ~5 MiB
pseudotactile/manifests/hand_proximity_manifest_v1.jsonl, object_proximity_manifest_v1.jsonlcontent-addressed manifests (original absolute paths + sha256/sizes)21.7 + 3.3 MB
pseudotactile/tools/localize_pseudotactile.pyrewrites the QA sidecars and both manifests for your root; creates placeholder object label files1
pseudotactile/MANIFEST.jsonshard inventory1

Extract the tars into the same HOT3D_EgoHOI root as the RGB package (members carry the full relative paths), then run localize_pseudotactile.py after make_local_manifest.py. The object 3D label archives (white_geometry/labels/<split>/<clip>.npz, ~150 GB) are provenance only and never read by training; they are not shipped and the localizer creates zero-filled placeholders of the recorded sizes so the loader's path/size checks pass. Full instructions: docs/RGB_LORA_STAGE2_V4FORMAL_PORTING.md in the code repository. The stage-1 checkpoint this version starts from is the model repo zhenyuxie-zhzh/wan22-egohoi-rgb-lora-stage1.

Pointmap add-on (pointmap/, for V6: RGB + combined hand/object pointmap MoT)

PathWhatFilesSize
pointmap/train/combined-000.tarmodel-grade combined hand+object pointmap videos (hot3d_gt_pointmap_model_grade_v1/combined/train/<clip>.pointmap_xyz.mp4), 1442 clips, lossless RGB H.2641442~1.4 GB
pointmap/val/combined-000.tarthe same for the 74 val clips74~70 MB
pointmap/qa/qa-000.tarper-clip QA sidecars (hot3d_gt_pointmap_model_grade_v1/qa/<split>/<clip>.pointmap_xyz.qa.json: hashes, valid-pixel counts, provenance)1516~21 MB
pointmap/manifests/pointmap_manifest_v1.jsonl, contract.json, final_summary.jsoncontent-addressed manifest (original absolute paths + sha256/sizes), the encoding contract, the product summary3
pointmap/tools/localize_pointmap.pyrewrites the manifest paths for your root, verifies the shipped files, writes manifests/COMPLETED1
pointmap/MANIFEST.json, pointmap/SHA256SUMSshard inventory and checksums2

Each video encodes, for every visible hand/object surface pixel, its 3D position in the clip's first-frame camera frame: one fixed metric box for all clips, R=X, G=Y, B=Z, valid values 1..255, background exactly (0,0,0); decode with v = lower + (value - 1) / 254 * (upper - lower) (box in contract.json). Extract the three tars into the same HOT3D_EgoHOI root as the RGB package (members carry the full relative paths, so the product lands at <root>/hot3d_gt_pointmap_model_grade_v1/), then run localize_pointmap.py --root <root>/hot3d_gt_pointmap_model_grade_v1. Only the combined layer is shipped. The videos are H.264 in RGB mode; players without that support show a green background, ffmpeg-based decoders (what the loader uses) decode them correctly. Full instructions: docs/RGB_POINTMAP_LORA_V6_PORTING.md in the code repository. V6 needs no pretrained checkpoint.

Step-by-step porting guide

The repository document docs/RGB_OBJECT_ENTITY_PORTING.md (branch claude/rgb-lora-stage1) covers the environment (requirements-rgb-object-entity-nvidia.txt), model download, this dataset, training with 1-8 nodes (examples/sbatch_train_egohoi_hot3d_rgb_object_entity_nvidia.sh), evaluation and scoring (examples/run_inference_egohoi_val_rgb_object_entity_rgb74_nvidia.sh). docs/RGB_LORA_STAGE2_V4FORMAL_PORTING.md covers the RGB LoRA stage-2 (V4-formal) version, which also needs the pseudotactile/ add-on. docs/RGB_POINTMAP_LORA_V6_PORTING.md covers V6 (RGB + combined pointmap), which needs the pointmap/ add-on and no checkpoint.

How the code consumes it

Training (examples/train_egohoi_hot3d_rgb_object_entity.sh, wan22_base start):

bash
export WAN_MODEL_DIR=<model_dir>                      # original Wan2.2-TI2V-5B + prompt_embeddings/
export HOT3D_TRAIN_DIR=/data/HOT3D_EgoHOI/train
export HOT3D_RGB_MANIFEST=/data/HOT3D_EgoHOI/hot3d_geometry_pseudotactile_v1/manifests/egohoi_rgb_manifest.jsonl
export RGB_OBJECT_ENTITY_START=wan22_base
# EGOHOI_NUM_PROCESSES x EGOHOI_GRADIENT_ACCUMULATION_STEPS must equal 64

Evaluation (examples/inference_egohoi_val_rgb_object_entity.py, RGB74 + oracle first-frame mask):

bash
--dataset_base_path /data/HOT3D_EgoHOI/val \
--hot3d_rgb_manifest_path /data/HOT3D_EgoHOI/hot3d_geometry_pseudotactile_v1/manifests/egohoi_rgb_manifest.jsonl

The train loader fails closed unless all 1442 manifest clips have videos, skeleton videos, camera trajectories and contiguous 000000.png..000149.png masks; the evaluator requires exactly the 74 val clips.

Provenance

  • —Source tree: /vast/users/zhenyu.xie/zhenyu/Datasets/HOT3D_EgoHOI on the MBZUAI cluster, packaged on 2026-09-17 (see MANIFEST.json for shard checksums and per-clip membership).
  • —Manifest sha256 d469890b68a9bd3ca9fcd8bfac2b6bceaa7ce2a95b2c61c55d038513d0ac836b (egohoi_rgb_manifest.jsonl, 1516 rows, all official_split=train_aria).
  • —Code: DiffSynth-Studio fork, branch claude/rgb-lora-stage1, object-entity files under diffsynth/*/wan_video_object_entity.py, diffsynth/core/data/hot3d_egohoi_object_entity.py, examples/*rgb_object_entity*.