CoolFace
Datasetpublic

Voxel51/motif-1k

Dataset Card for MotIF-1K MotIF-1K is a robotics motion dataset containing 1,022 demonstrations across 13 task categories, used to benchmark and fine-tune vision-language models (VLMs) for motion-based success detection. Each demonstration includes a video of the motion, multiple pre-rendered trajectory visualizations, task instructions, and motion descriptions. The FiftyOne dataset is a grouped dataset where each group represents one trajectory and each group slice represents… See the full description on the dataset page: https://huggingface.co/datasets/Voxel51/motif-1k.

sourceHugging Faceupdated 4mo agoView on Hugging Face
1likes1.3kdownloads
Dataset Card

Dataset Card for MotIF-1K

[image]

MotIF-1K is a robotics motion dataset containing 1,022 demonstrations across 13 task categories, used to benchmark and fine-tune vision-language models (VLMs) for motion-based success detection. Each demonstration includes a video of the motion, multiple pre-rendered trajectory visualizations, task instructions, and motion descriptions.

The FiftyOne dataset is a grouped dataset where each group represents one trajectory and each group slice represents a different visual representation of that trajectory — mirroring the exact input formats used in the paper.

This is a FiftyOne dataset with 1023 samples.

Installation

If you haven't already, install FiftyOne:

bash
pip install -U fiftyone

Usage

python
import fiftyone as fo
from fiftyone.utils.huggingface import load_from_hub

# Load the dataset
# Note: other available arguments include 'max_samples', etc
dataset = load_from_hub("Voxel51/motif-1k")

# Launch the App
session = fo.launch_app(dataset)

Dataset Details

Dataset Sources

  • HuggingFace repository: https://huggingface.co/datasets/myconnects/motif
  • Paper: https://arxiv.org/abs/2409.10683
  • Code / collection scripts: https://github.com/Minyoung1005/motif
  • Paper: MotIF: Motion Instruction Fine-tuning (Hwang et al., 2024)
  • Project page: https://motif-1k.github.io
  • License: MIT

FiftyOne Dataset Structure

Grouped Dataset Overview

Dataset name:   motif-1k
Media type:     group
Default slice:  video_trajviz
Groups:         1,022  (653 human_motion + 369 stretch_motion)

Group Slices

Every trajectory group contains up to 13 slices. Each slice is a separate fo.Sample with its own media file and labels. Not all slices are present for every group — see the Incomplete samples note below.

Slice nameMedia typeDescriptionAlways present?
video_trajvizvideoRaw video with the trajectory overlaid — the default slice and the paper's primary representationNo (absent for 182 incomplete stretch samples)
video_rawvideoClean video without any trajectory overlay; carries the interactive per-frame trajectory PolylineYes
last_frame_trajvizimageFinal video frame with trajectory overlay — the exact image input used by the paper's VLMNo
last_frame_rawimageFinal video frame, no overlayNo
opticalflowimageFull optical-flow visualization of all keypointsNo
storyboard_key2image2-keyframe storyboard, cleanNo
storyboard_key2_trajvizimage2-keyframe storyboard with trajectory overlayNo
storyboard_key4image4-keyframe storyboard, cleanNo
storyboard_key4_trajvizimage4-keyframe storyboard with trajectory overlayNo
storyboard_key9image9-keyframe storyboard, cleanNo
storyboard_key9_trajvizimage9-keyframe storyboard with trajectory overlayNo
storyboard_key16image16-keyframe storyboard, cleanNo
storyboard_key16_trajvizimage16-keyframe storyboard with trajectory overlayNo

Sample-Level Fields

All fields below are present on every slice of every group.

FieldTypeDescription
groupGroupFiftyOne group handle; group.id is the trajectory identifier, group.name is the slice name
configstrSource config: "human_motion" or "stretch_motion"
traj_idxintTrajectory index within its config (0-based)
task_instructionstrHigh-level task goal, e.g. "shake the boba"
motion_descriptionstrFine-grained motion specification, e.g. "move to the right and to the left, repeating this sequence 3 times"
num_stepsintNumber of steps as stored in the source (may differ from trajectory_length; see notes)
trajectory_lengthintActual number of trajectory points (len(trajectory)) — the reliable count
has_source_artifactsboolWhether this sample's group has all pre-rendered visualizations. False for 182 incomplete stretch_motion groups
tagslist[str]Always includes the config name; incomplete groups are also tagged "incomplete"

Label Fields

video_raw slice — frames.trajectory (per-frame Polyline)

The video_raw slice carries a frame-level progressive trajectory annotation. At frame N, the Polyline contains the first N trajectory points, so the path draws itself out as the video plays.

  • Frame 1: a zero-length degenerate segment marking the trajectory start position (renders as a dot)
  • Frame N: the full trajectory path accumulated to that point

Each Polyline carries these label attributes:

AttributeTypeDescription
coord_spacestrCoordinate convention used: video_pixels, video_pixels_offset, or realsense_native
has_source_artifactsboolWhether the source provided a last_frame_trajviz for offset detection
correction_methodstrHow the trajectory was corrected: identity, detected, resolution_median_fallback, default_fallback, or realsense_heuristic
offset_xfloatPixel offset applied in x (0 for identity and realsense_heuristic)
offset_yfloatPixel offset applied in y (0 for identity and realsense_heuristic)

All Polyline coordinates are normalized to [0, 1] × [0, 1] relative to the video frame.


Dataset Composition

ConfigAgentTrajectoriesHas all slices?
human_motionHuman (6 different people)653Yes — all 13 slices
stretch_motion (with artifacts)Hello Robot Stretch 2188Yes — all 13 slices
stretch_motion (incomplete)Hello Robot Stretch 2182video_raw only; tagged "incomplete"
Total1,022

Task Categories

13 categories spanning non-interactive, object-interactive, and user-interactive motions:

CategoryTasks
Non-interactiveOutdoor Navigation, Indoor Navigation, Draw Path
Object-interactiveShake, Pick and Place, Stir, Wipe, Open/Close Cabinet, Spread Condiment
User-interactiveHandover, Brush Hair, Tidy Hair, Style Hair

Trajectory Coordinate System

The trajectory field in the source data stores 2D pixel coordinates [x, y] per timestep. The coordinate space differs by config — this is a known source-side inconsistency, not a parsing bug:

`coord_space` valueApplies toCorrection applied
video_pixelsAll human_motion (653)Identity — MediaPipe hand detection runs on the cropped video frame, so coordinates match the stored video dimensions directly
video_pixels_offsetstretch_motion with artifacts (188)Per-sample pixel translation detected from the red endpoint marker in last_frame_trajviz; confirmed pixel-accurate
realsense_nativestretch_motion without artifacts (182)Best-effort: coordinates divided by 1280×720 (the RealSense D435i native capture resolution per the collection script). No source ground truth is available for this subset.

Known Data Quality Issues

The following issues were identified during import and are preserved in the data:

  1. 1.Incomplete stretch_motion subset (182 groups): These groups have no pre-rendered visualizations (video_trajviz, last_frame_trajviz, opticalflow, storyboards are all absent). Only video_raw is available. These samples cannot be used with the paper's VLM evaluation methodology without regenerating the visualizations. Identified by has_source_artifacts == False or the "incomplete" tag.
  1. 1.`num_steps` vs `trajectory_length` disagreement (~160 rows): The source's num_steps field reflects the original capture length before some post-processing trimmed the trajectory. trajectory_length (= len(trajectory)) is the reliable count and is used for all frame-level annotations.
  1. 1.Trajectory partially outside frame: Some trajectories extend into negative coordinates or past the video edges. FiftyOne clips these gracefully at the frame border; no values are modified.
  1. 1.Variable video resolutions: Human demos span 14 different square resolutions (208×208 to 480×480 plus one 640×480). Stretch demos with artifacts use three resolutions (320×320, 352×352, 480×480). The incomplete stretch subset uses eight different resolutions (192×192 to 720×720).

Citation

bibtex
@article{hwang2024motif,
  title={MotIF: Motion Instruction Fine-tuning},
  author={Hwang, Minyoung and Hejna, Joey and Sadigh, Dorsa and Bisk, Yonatan},
  journal={arXiv preprint arXiv:2409.10683},
  year={2024}
}

APA: Hwang, M., Hejna, J., Sadigh, D., & Bisk, Y. (2024). MotIF: Motion Instruction Fine-tuning. arXiv preprint arXiv:2409.10683.