mirror of
https://github.com/huggingface/lerobot.git
synced 2026-07-18 23:41:55 +00:00
docs(docstring): updating docstrings
This commit is contained in:
@@ -506,8 +506,10 @@ def compute_episode_stats(
|
|||||||
Each statistics dictionary contains min, max, mean, std, count, and quantiles.
|
Each statistics dictionary contains min, max, mean, std, count, and quantiles.
|
||||||
|
|
||||||
Note:
|
Note:
|
||||||
Image statistics are normalized to [0,1] range and have shape (3,1,1) for
|
For 'image'/'video' features, stats are computed per channel and kept with a
|
||||||
per-channel values when dtype is 'image' or 'video'.
|
leading channel axis (e.g. shape (3, 1, 1) for RGB). RGB stats are divided by
|
||||||
|
255 to land in [0, 1]; depth maps (features flagged with ``is_depth_map``) skip
|
||||||
|
this rescaling and remain in their stored units.
|
||||||
"""
|
"""
|
||||||
if quantile_list is None:
|
if quantile_list is None:
|
||||||
quantile_list = DEFAULT_QUANTILES
|
quantile_list = DEFAULT_QUANTILES
|
||||||
|
|||||||
@@ -1682,21 +1682,27 @@ def convert_image_to_video_dataset(
|
|||||||
LeRobot dataset structure with videos stored in chunked MP4 files.
|
LeRobot dataset structure with videos stored in chunked MP4 files.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
dataset: The source LeRobot dataset with images
|
dataset: The source LeRobot dataset with images.
|
||||||
output_dir: Root directory where the edited dataset will be stored. If not specified, defaults to $HF_LEROBOT_HOME/repo_id. Equivalent to new_root in EditDatasetConfig.
|
output_dir: Root directory where the converted dataset will be stored. When
|
||||||
repo_id: Edited dataset identifier. Equivalent to new_repo_id in EditDatasetConfig.
|
``None``, defaults to ``$HF_LEROBOT_HOME/repo_id``. Equivalent to
|
||||||
camera_encoder: Video encoder settings applied to RGB cameras
|
``new_root`` in ``EditDatasetConfig``.
|
||||||
(``None`` uses :func:`~lerobot.configs.camera_encoder_defaults`).
|
repo_id: Converted dataset identifier. Equivalent to ``new_repo_id`` in
|
||||||
|
``EditDatasetConfig``.
|
||||||
|
camera_encoder: Video encoder settings applied to RGB cameras. When ``None``,
|
||||||
|
:func:`~lerobot.configs.video.camera_encoder_defaults` is used.
|
||||||
depth_encoder: Video encoder settings applied to depth-map cameras, including
|
depth_encoder: Video encoder settings applied to depth-map cameras, including
|
||||||
the quantization parameters persisted to the dataset metadata
|
the quantization parameters persisted to the dataset metadata. When
|
||||||
(``None`` uses :func:`~lerobot.configs.depth_encoder_defaults`).
|
``None``, :func:`~lerobot.configs.video.depth_encoder_defaults` is used.
|
||||||
episode_indices: List of episode indices to convert (None = all episodes)
|
episode_indices: Episode indices to convert. When ``None``, all episodes are
|
||||||
num_workers: Number of threads for parallel processing (default: 4)
|
converted.
|
||||||
max_episodes_per_batch: Maximum episodes per video batch to avoid memory issues (None = no limit)
|
num_workers: Number of threads for parallel processing.
|
||||||
max_frames_per_batch: Maximum frames per video batch to avoid memory issues (None = no limit)
|
max_episodes_per_batch: Maximum episodes per video batch, to bound memory use.
|
||||||
|
``None`` means no limit.
|
||||||
|
max_frames_per_batch: Maximum frames per video batch, to bound memory use.
|
||||||
|
``None`` means no limit.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
New LeRobotDataset with images encoded as videos
|
A new :class:`LeRobotDataset` with images encoded as videos.
|
||||||
"""
|
"""
|
||||||
if camera_encoder is None:
|
if camera_encoder is None:
|
||||||
camera_encoder = camera_encoder_defaults()
|
camera_encoder = camera_encoder_defaults()
|
||||||
|
|||||||
@@ -120,10 +120,11 @@ class DatasetWriter:
|
|||||||
meta: Dataset metadata instance (used for feature schema, chunk
|
meta: Dataset metadata instance (used for feature schema, chunk
|
||||||
settings, and episode persistence).
|
settings, and episode persistence).
|
||||||
root: Local dataset root directory.
|
root: Local dataset root directory.
|
||||||
camera_encoder: Video encoder settings applied to all cameras.
|
camera_encoder: Video encoder settings applied to RGB cameras. When
|
||||||
``None`` uses :func:`~lerobot.configs.camera_encoder_defaults`.
|
``None``, :func:`~lerobot.configs.video.camera_encoder_defaults` is used.
|
||||||
depth_encoder: Video encoder settings applied to all **depth** cameras.
|
depth_encoder: Video encoder settings applied to depth cameras, including
|
||||||
``None`` uses :func:`~lerobot.configs.depth_encoder_defaults`.
|
the quantization parameters. When ``None``,
|
||||||
|
:func:`~lerobot.configs.video.depth_encoder_defaults` is used.
|
||||||
encoder_threads: Number of encoder threads (global). ``None``
|
encoder_threads: Number of encoder threads (global). ``None``
|
||||||
lets the codec decide.
|
lets the codec decide.
|
||||||
batch_encoding_size: Number of episodes to accumulate before
|
batch_encoding_size: Number of episodes to accumulate before
|
||||||
|
|||||||
@@ -189,7 +189,7 @@ class LeRobotDataset(torch.utils.data.Dataset):
|
|||||||
(codec, quality, etc.). When ``None``, :func:`~lerobot.configs.video.camera_encoder_defaults`
|
(codec, quality, etc.). When ``None``, :func:`~lerobot.configs.video.camera_encoder_defaults`
|
||||||
is used by the writer.
|
is used by the writer.
|
||||||
depth_encoder (DepthEncoderConfig | None, optional): Video encoder settings for depth cameras
|
depth_encoder (DepthEncoderConfig | None, optional): Video encoder settings for depth cameras
|
||||||
(codec, quality, etc.). When ``None``, :func:`~lerobot.configs.depth.depth_encoder_defaults`
|
(codec, quality, etc.). When ``None``, :func:`~lerobot.configs.video.depth_encoder_defaults`
|
||||||
is used by the writer.
|
is used by the writer.
|
||||||
encoder_threads (int | None, optional): Number of encoder threads (global). ``None`` lets the
|
encoder_threads (int | None, optional): Number of encoder threads (global). ``None`` lets the
|
||||||
codec decide.
|
codec decide.
|
||||||
@@ -690,7 +690,7 @@ class LeRobotDataset(torch.utils.data.Dataset):
|
|||||||
camera_encoder: Video encoder settings for cameras (codec, quality, etc.).
|
camera_encoder: Video encoder settings for cameras (codec, quality, etc.).
|
||||||
When ``None``, :func:`~lerobot.configs.video.camera_encoder_defaults` is used.
|
When ``None``, :func:`~lerobot.configs.video.camera_encoder_defaults` is used.
|
||||||
depth_encoder: Video encoder settings for depth cameras (codec, quality, etc.).
|
depth_encoder: Video encoder settings for depth cameras (codec, quality, etc.).
|
||||||
When ``None``, :func:`~lerobot.configs.depth.depth_encoder_defaults` is used.
|
When ``None``, :func:`~lerobot.configs.video.depth_encoder_defaults` is used.
|
||||||
encoder_threads: Number of encoder threads (global). ``None``
|
encoder_threads: Number of encoder threads (global). ``None``
|
||||||
lets the codec decide.
|
lets the codec decide.
|
||||||
metadata_buffer_size: Number of episode metadata records to buffer
|
metadata_buffer_size: Number of episode metadata records to buffer
|
||||||
@@ -796,7 +796,7 @@ class LeRobotDataset(torch.utils.data.Dataset):
|
|||||||
camera_encoder: Video encoder settings for cameras (codec, quality, etc.).
|
camera_encoder: Video encoder settings for cameras (codec, quality, etc.).
|
||||||
When ``None``, :func:`~lerobot.configs.video.camera_encoder_defaults` is used.
|
When ``None``, :func:`~lerobot.configs.video.camera_encoder_defaults` is used.
|
||||||
depth_encoder: Video encoder settings for depth cameras (codec, quality, etc.).
|
depth_encoder: Video encoder settings for depth cameras (codec, quality, etc.).
|
||||||
When ``None``, :func:`~lerobot.configs.depth.depth_encoder_defaults` is used.
|
When ``None``, :func:`~lerobot.configs.video.depth_encoder_defaults` is used.
|
||||||
encoder_threads: Number of encoder threads (global). ``None``
|
encoder_threads: Number of encoder threads (global). ``None``
|
||||||
lets the codec decide.
|
lets the codec decide.
|
||||||
image_writer_processes: Subprocesses for async image writing.
|
image_writer_processes: Subprocesses for async image writing.
|
||||||
|
|||||||
@@ -436,7 +436,28 @@ def encode_video_frames(
|
|||||||
log_level: int | None = av.logging.WARNING,
|
log_level: int | None = av.logging.WARNING,
|
||||||
overwrite: bool = False,
|
overwrite: bool = False,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""More info on ffmpeg arguments tuning on `benchmark/video/README.md`"""
|
"""Encode a directory of image frames into an MP4 video.
|
||||||
|
|
||||||
|
When ``video_encoder`` is a :class:`~lerobot.configs.video.DepthEncoderConfig`,
|
||||||
|
frames are read from ``.tiff`` files and quantized to 12-bit depth codes using the
|
||||||
|
encoder's ``depth_min`` / ``depth_max`` / ``shift`` / ``use_log``; otherwise ``.png``
|
||||||
|
RGB frames are encoded directly.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
imgs_dir: Directory containing the frames to encode, named ``frame-000000``
|
||||||
|
onwards (``.png`` for RGB, ``.tiff`` for depth).
|
||||||
|
video_path: Output path for the encoded ``.mp4`` file.
|
||||||
|
fps: Frame rate of the output video.
|
||||||
|
video_encoder: Encoder settings (codec, pixel format, quality, ...). When
|
||||||
|
``None``, :func:`camera_encoder_defaults` is used. Pass a
|
||||||
|
:class:`~lerobot.configs.video.DepthEncoderConfig` to encode depth frames.
|
||||||
|
encoder_threads: Per-encoder thread count forwarded to the codec. ``None``
|
||||||
|
lets the codec decide.
|
||||||
|
log_level: libav log level to set while encoding, or ``None`` to leave the
|
||||||
|
current logging configuration unchanged.
|
||||||
|
overwrite: When ``False`` and ``video_path`` already exists, skip encoding and
|
||||||
|
log a warning. When ``True``, re-encode and replace the existing file.
|
||||||
|
"""
|
||||||
if video_encoder is None:
|
if video_encoder is None:
|
||||||
video_encoder = camera_encoder_defaults()
|
video_encoder = camera_encoder_defaults()
|
||||||
vcodec = video_encoder.vcodec
|
vcodec = video_encoder.vcodec
|
||||||
@@ -873,12 +894,15 @@ class StreamingVideoEncoder:
|
|||||||
"""
|
"""
|
||||||
Args:
|
Args:
|
||||||
fps: Frames per second for the output videos.
|
fps: Frames per second for the output videos.
|
||||||
camera_encoder: Video encoder settings applied to all cameras.
|
camera_encoder: Video encoder settings applied to all RGB cameras.
|
||||||
When ``None``, :func:`camera_encoder_defaults` is used.
|
When ``None``, :func:`camera_encoder_defaults` is used.
|
||||||
encoder_threads: Number of encoder threads (global setting).
|
depth_encoder: Video encoder settings applied to all depth cameras,
|
||||||
``None`` lets the codec decide.
|
including the depth quantization parameters. When ``None``,
|
||||||
|
:func:`depth_encoder_defaults` is used.
|
||||||
queue_maxsize: Max frames to buffer per camera before
|
queue_maxsize: Max frames to buffer per camera before
|
||||||
back-pressure drops frames.
|
back-pressure drops frames.
|
||||||
|
encoder_threads: Number of encoder threads (global setting).
|
||||||
|
``None`` lets the codec decide.
|
||||||
"""
|
"""
|
||||||
self.fps = fps
|
self.fps = fps
|
||||||
self._camera_encoder = camera_encoder or camera_encoder_defaults()
|
self._camera_encoder = camera_encoder or camera_encoder_defaults()
|
||||||
@@ -1145,7 +1169,15 @@ def get_video_info(
|
|||||||
video_path: Path to the encoded video file to probe.
|
video_path: Path to the encoded video file to probe.
|
||||||
video_encoder: If provided, record the exact encoder settings used to encode this
|
video_encoder: If provided, record the exact encoder settings used to encode this
|
||||||
video. Stream-derived values take precedence — encoder fields are only written for keys
|
video. Stream-derived values take precedence — encoder fields are only written for keys
|
||||||
not already populated from the video file itself.
|
not already populated from the video file itself. When a
|
||||||
|
:class:`~lerobot.configs.video.DepthEncoderConfig` is passed, the depth
|
||||||
|
quantization parameters (``depth_min`` / ``depth_max`` / ``shift`` /
|
||||||
|
``use_log``) are recorded so frames can be dequantized on read.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
The ``video.*`` / ``audio.*`` info dict, including ``is_depth_map`` which is
|
||||||
|
``True`` only when ``video_encoder`` is a
|
||||||
|
:class:`~lerobot.configs.video.DepthEncoderConfig`.
|
||||||
"""
|
"""
|
||||||
logging.getLogger("libav").setLevel(av.logging.WARNING)
|
logging.getLogger("libav").setLevel(av.logging.WARNING)
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,9 @@ def hw_to_dataset_features(
|
|||||||
|
|
||||||
This function takes a dictionary describing hardware outputs (like joint states
|
This function takes a dictionary describing hardware outputs (like joint states
|
||||||
or camera image shapes) and formats it into the standard LeRobot feature
|
or camera image shapes) and formats it into the standard LeRobot feature
|
||||||
specification.
|
specification. Single-channel cameras (shape ``(H, W, 1)``) are flagged as depth
|
||||||
|
maps via ``info["is_depth_map"] = True``; three-channel cameras ``(H, W, 3)`` are
|
||||||
|
treated as RGB.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
hw_features (dict): Dictionary mapping feature names to their type (float for
|
hw_features (dict): Dictionary mapping feature names to their type (float for
|
||||||
@@ -61,7 +63,7 @@ def hw_to_dataset_features(
|
|||||||
use_video (bool): If True, image features are marked as "video", otherwise "image".
|
use_video (bool): If True, image features are marked as "video", otherwise "image".
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
dict: A LeRobot features dictionary.
|
dict: A LeRobot features dictionary. Depth cameras carry ``info["is_depth_map"] = True``.
|
||||||
"""
|
"""
|
||||||
features = {}
|
features = {}
|
||||||
joint_fts = {
|
joint_fts = {
|
||||||
|
|||||||
Reference in New Issue
Block a user