Skip to content

hylo-data-video

Hylo external data sources: folders of image sequences and video files (no action labels)

Repository hylo-harness, adapters/hylo-data-video. Licence: Apache-2.0. Depends on: hylo-core, pillow>=10, imageio>=2.30.

Registered entry points
Group Name Object
datasources video.files hylo.datasources.video.sources:VideoFileSource
datasources video.frames hylo.datasources.video.sources:FrameFolderSource
Module Summary
hylo.datasources.video
hylo.datasources.video.sources Video data sources (RFC-0004 W1): human or robot videos without action labels

hylo.datasources.video

META module-attribute

META = {'contracts': {'datasources': 'hylo.datasource/v0.1'}, 'maturity': 'implemented', 'plugins': {'datasources/video.files': {'maturity': 'unverified'}}}

hylo.datasources.video.sources

Video data sources (RFC-0004 W1): human or robot videos without action labels.

one directory per episode with numbered image files and an optional episode.json

{"instruction": "...", "task_id": "...", "success": true, "camera": "agentview"}.

VideoFileSource: one video file per episode (mp4 needs the ffmpeg extra), with an optional sidecar .json of the same shape.

Frames carry images only: no state, no actions. Such episodes can train what needs no actions (success judges, progress models, video world models) and can be labelled by a calibrated judge (core.instrument.label_run); action labels would need a labeler (latent actions, hand pose), which is not part of this package.

IMAGE_SUFFIXES module-attribute

IMAGE_SUFFIXES = ('.png', '.jpg', '.jpeg', '.webp')

VIDEO_SUFFIXES module-attribute

VIDEO_SUFFIXES = ('.mp4', '.webm', '.mov', '.avi', '.gif')

FrameFolderSource

FrameFolderSource(root: str, task_prefix: str = 'video/', camera: str = 'agentview', every: int = 1, size: int | None = 256, max_episodes: int | None = None, licence: str = 'unknown')

Bases: _Base

episodes

episodes() -> Iterator[ExternalEpisode]

VideoFileSource

VideoFileSource(root: str, task_prefix: str = 'video/', camera: str = 'agentview', every: int = 1, size: int | None = 256, max_episodes: int | None = None, licence: str = 'unknown')

Bases: _Base

episodes

episodes() -> Iterator[ExternalEpisode]