# H2R Dataset Guide This guide explains how to integrate and use the H2R (Human2Robot) dataset with the Robometer training pipeline. Source: `https://huggingface.co/datasets/dannyXSC/HumanAndRobot` Paper: `https://arxiv.org/abs/2502.16587` ## Overview H2R contains paired human and robot videos stored as HDF5 files. Each trajectory provides synchronized human and robot camera streams. The loader reads both streams and standardizes them to RGB `uint8` frame tensors. ## Directory Structure ``` / / .hdf5 .hdf5 / .hdf5 ... ``` - The folder name represents the task category. A simple mapping converts folder names to human-readable task strings (see loader). ## HDF5 Format - The loader expects camera streams under the keys: - `/cam_data/human_camera` - `/cam_data/robot_camera` - Each dataset is loaded into memory and converted to RGB if needed. ## Configuration (configs/data_gen_configs/h2r.yaml) ```yaml # configs/data_gen_configs/h2r.yaml dataset: dataset_path: /path/to/h2r_dataset dataset_name: h2r output: output_dir: datasets/h2r_rfm max_trajectories: 64 # null for all max_frames: 64 use_video: true fps: 30 shortest_edge_size: 240 center_crop: false hub: push_to_hub: true hub_repo_id: h2r_rfm ``` ## Usage ```bash uv run python -m dataset_upload.generate_hf_dataset --config_path=dataset_upload/configs/data_gen_configs/h2r.yaml ``` This will: - Discover `.hdf5` trajectories grouped by task folders - Load paired human and robot camera frames - Convert frames to RGB `uint8` - Produce a HuggingFace dataset ## Data Fields Each trajectory includes: - `id`: Unique identifier - `task`: Human-readable task derived from folder name - `frames`: A tuple `(human_frames, robot_frames)` when read via the loader - `is_robot`: `False` for human, `True` for robot - `quality_label`: "successful" - `partial_success`: 1 - `data_source`: `h2r` Note: The converter creates two entries per `.hdf5` file (one for human, one for robot) for training convenience. ## Task Name Mapping The loader includes a simple mapping from folder names to readable descriptions and falls back to a prettified folder name if no mapping exists. You can extend `FOLDER_TO_TASK_NAME` in `dataset_upload/dataset_loaders/h2r_loader.py`. ## Troubleshooting - KeyError: Verify that the HDF5 files contain `/cam_data/human_camera` and `/cam_data/robot_camera` datasets. - Shape errors: Frames must be 4D tensors `(T, H, W, 3)`. - Performance: Large `.hdf5` files will load into memory; consider limiting `max_trajectories` during testing.