Distribution matches the GDM pilot category targets within tolerance across all categories — full breakdown in the Sample diversity section below.
600 one-minute episodes of multi-camera egocentric human demonstration. Every episode is captured on a synchronized four-camera rig — egocentric, exocentric, and both wrists — and ships with individually verified subtask labels and per-frame tracks: camera pose (SLAM), 3D world hand pose, and exocentric body pose, all merged on a single 29.97 fps timeline.
Distribution matches the GDM pilot category targets within tolerance across all categories — full breakdown in the Sample diversity section below.
| Category | Share | GDM target ±5% |
|---|---|---|
| Others (office / conference / outdoor) | 22.4% | 20% |
| Home | 19.9% | 15% |
| Retail (retail floor, café) | 17.6% | 15% |
| Hospitality (hotel lobby, reception, restaurant kitchen) | 17.2% | 15% |
| Logistics (packing, storage) | 12.4% | 15% |
| Industrial (recycling, workstations) | 10.5% | 10% |
| Small-physical-change tasks (of total) | 6.2% | 10% |
600 unique source episodes · 175 task cards · 141 environment×site scenes at 10 venues · ≤3.6 h per scene · ≤10 h per person.
Every episode is captured on the full four-camera rig — egocentric (E), exocentric (X), left wrist (L), and right wrist (R) — for complete multi-view coverage on every recording.
dataset/
├── DATASHEET.html # this document
├── meta/
│ ├── info.json # format · fps · features · camera roles
│ ├── tasks.parquet # task_index → task-card id
│ ├── tracks_info.json # merged-track feature definitions
│ ├── episodes/ # per-episode metadata + provenance
│ ├── annotations/ # per-episode verified subtask labels
│ ├── custom_annotation.json # all labels, flat (v1.4)
│ └── custom_metadata.csv # per-episode sheet: environment_type · scene_id · task_description
├── data/
│ └── chunk-000/file-NNNNNN.parquet # per-frame records · 21 columns
├── videos/
│ └── {camera}/chunk-000/file-NNNNNN.mp4 # H.264, one per camera
└── viz/ # showcase renders: wrist-trajectory · 3D pose
data/chunk-000/file-NNNNNN.parquet │ │ # frame metadata ├─ index int64 # global frame index across the dataset ├─ episode_index int64 # episode this frame belongs to ├─ frame_index int64 # frame position within the episode · JOIN KEY ├─ timestamp float64 # seconds from episode start ├─ task_index int64 # resolves via meta/tasks.parquet → task-card id │ │ # hands — image-space landmarks (NaN when hand out of frame) ├─ left_hand/tracks float32 [21,3] # 21 MediaPipe landmarks · x,y,z ├─ right_hand/tracks float32 [21,3] ├─ left_hand/tracks/timestamp int64 # per-track capture timestamp (ns) ├─ right_hand/tracks/timestamp int64 │ │ # ego camera — SLAM, up-to-scale world frame ├─ base_0_camera/position float32 [3] # camera position ├─ base_0_camera/position/timestamp int64 ├─ base_0_camera/position/valid bool # per-frame validity flag ├─ base_0_camera/slam_quaternion_xyzw float32 [4] # camera rotation (quaternion) ├─ base_0_camera/slam_quaternion_xyzw/timestamp int64 │ │ # body — from the exocentric view ├─ upper_body/tracks float32 [9,3] # 9 upper-body joints ├─ upper_body/tracks/timestamp int64 ├─ upper_body/tracks/valid bool │ │ # hands — 3D world coordinates (same frame as camera SLAM) ├─ left_hand/world float32 [21,3] ├─ left_hand/world/timestamp int64 ├─ right_hand/world float32 [21,3] └─ right_hand/world/timestamp int64
Annotations divide each episode into consecutive subtask spans, every span carrying a natural-language label individually verified against the footage. Below: the first eight spans of episode 000037, verbatim.
{
"episodes": [{
"episode_id": "000037",
"spans": [
{ "start_time": 3.2, "end_time": 5.2, "label": "pick up food package from drawer and hold in hand" },
{ "start_time": 5.2, "end_time": 7.5, "label": "pick menu cover from drawer and place menu cover on drawer" },
{ "start_time": 7.5, "end_time": 10.0, "label": "The person picks up a black package from the drawer." },
{ "start_time": 10.0, "end_time": 12.1, "label": "pick menu from top of drawer and place menu inside drawer" },
{ "start_time": 12.1, "end_time": 15.6, "label": "pick menu booklet from inside drawer and place menu booklet in hand" },
{ "start_time": 15.6, "end_time": 18.8, "label": "pick menu from drawer and place menu back in drawer" },
{ "start_time": 18.8, "end_time": 22.0, "label": "A person places a black brochure into a drawer." },
{ "start_time": 24.0, "end_time": 27.7, "label": "remove menus from inside drawer and hold in hand" },
...
]
}]
}
Labels are automated captions, so a fraction is inevitably wrong. To control this, we built a 240-span human-annotated evaluation set and measured our automated checker against it: when the checker rejects a label, human reviewers agree 91% of the time. We then ran the validated checker over every label in the sample — labels that failed were re-captioned from the footage and re-checked; labels that could not be confirmed were removed rather than delivered.
| What was checked | Result |
|---|---|
| Human evaluation set | 240 spans, double-annotated |
| Checker vs. human reviewers | 91% agreement on rejections |
| Labels screened by the checker | 9,384 / 9,384 — failures re-captioned or removed |
| Final audit (1,800 random labels) | 0 flagged |
| Stated label accuracy | 90–95%, conservative |
| Video streams — technical checks | 2,400 / 2,400 pass · 8 exceptions (exo view at 23.98 fps) |
Accuracy is stated below the audit result because automated checking can miss subtle errors humans catch. Re-captioned labels are provenance-marked, and every annotation change is logged across versioned snapshots (v1.0 → v1.4). Label coverage averages 86% of each clip after removals.
| Track | Mean | Median | Episodes ≥90% |
|---|---|---|---|
| Camera position (SLAM) | 96.2% | 99.3% | 552/600 |
| Upper body (exo) | 98.4% | 99.9% | 574/600 |
| Left hand, 3D world | 95.4% | 99.3% | 552/600 |
| Right hand, 3D world | 93.2% | 99.3% | 532/600 |
Detection tail is dominated by hands leaving the egocentric field of view — inherent to worker-worn capture. Camera positions are up-to-scale (research-grade; no absolute metric scale). Per-episode detection rates available on request.
Rights & consent. All recordings were captured by consented collectors under written releases covering AI/ML training and commercial deployment. Synjuku holds all rights necessary to license this data; no third-party platform or scraped content is included.
License. Provided under the terms of the Synjuku–GDM pilot agreement. Use is limited to the permitted purposes defined there; the dataset may not be redistributed, resold, or made available to third parties on a standalone basis without Synjuku's prior written consent.
Confidentiality. This datasheet and the dataset it describes are confidential commercial materials. Provenance records (task card, capture site, recording date per episode) are retained by Synjuku and support audit on request.