Volver a LeRobot Path

Comprender el formato del conjunto de datos LeRobot

Unidad 2 de la ruta de aprendizaje de LeRobot. Aprenda el formato del conjunto de datos de LeRobot: Parquet + almacenamiento MP4, estructura de episodios, esquema de observación/acción. Cargue y visualice un conjunto de datos existente desde HuggingFace Hub. ~ 1,5 horas.

Unidad 2 de 6 · Formatos de conjunto de datos · ~ 1,5 horas

Antes de registrar sus propios datos, entienda exactamente qué contiene un conjunto de datos de LeRobot cómo se estructuran los episodios, qué campos se almacenan y cómo cargar e inspeccionar los conjuntos de datos existentes desde HuggingFace Hub.

Por qué es importante un formato estándar

El aprendizaje de robots ha sufrido históricamente en cada laboratorio utilizando un formato de datos diferente haciendo imposible compartir conjuntos de datos, combinar datos de diferentes robots o usar políticas pre-entrenadas en los sistemas. El formato de conjunto de datos LeRobot resuelve esto definiendo un único esquema que funciona en todo el hardware soportado. Un conjunto de datos registrado en un SO-100 puede utilizarse para entrenar una política para un OpenArm sin ninguna conversión siempre y cuando las dimensiones del espacio de acción coincidan.

Comprender el formato antes de grabar significa que no descubrirá un problema estructural en sus datos durante el entrenamiento.

Estructura del conjunto de datos: Parquet + MP4

Cada conjunto de datos de LeRobot vive en un directorio con esta estructura:

mi_dataset/ ── meta/ │ ── info.json # Dataset metadatos (tipo de robot, fps, modalidades) │ ── tareas.jsonl # descripción de tareas por episodio │ ── estadísticas.safetensores # media/std para normalización ── datos/ │ ── chunk-000/ │ ── episodio_000000.parquet # estados conjuntos + acciones, una fila por paso de tiempo │ ──_000001.parquet │ ── ... ── chunk videos/ ── episodio ages.images.\mp_ │ │ │ │ │ │ │ │ ── 0000_00.4 \ │ cameras de alimentación, un episodio perímico ── ── │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │

La división entre Parquet (para series de tiempo numéricas) y MP4 (para video) es deliberada. Parquet comprime los estados y acciones conjuntos de manera eficiente y admite un acceso aleatorio rápido por índice de episodios. MP4 utiliza códecos de video diseñados para secuencias de imágenes, dando 1030 veces más pequeños archivos que almacenar imágenes crudas como tensores.

Los campos clave en cada episodio

Field Shape Description
observation.state [T, D] Joint positions (and optionally velocities) at each timestep. D is the number of joints (e.g., 7 for SO-100: 6 joints + 1 gripper).
action [T, D] Target joint positions commanded at each timestep. Same dimensionality as observation.state.
timestamp [T] Time in seconds since the start of the episode, at 50Hz by default (0.02s per step).
episode_index scalar Integer index of this episode within the dataset. Used by the dataloader to group timesteps into episodes.
frame_index [T] Frame number within the episode (0 to T-1). Matches the frame number in the corresponding MP4.
next.done [T] Boolean flag — True at the last timestep of an episode. Used to signal episode boundaries during training.
task_index scalar Index into tasks.jsonl. Enables multi-task datasets where different episodes correspond to different instructions.

** Campos de la cámara:** Las imágenes de la cámara se almacenan como archivos MP4, no en el Parquet. El Parquet contiene T0 como referencia de ruta (índice de marco + índice de episodios) en lugar de datos de píxeles crudos. El cargador de datos LeRobot maneja el decodificación y sincronización de manera transparente.

Cargar y visualizar un conjunto de datos existente

Cargue el conjunto de datos T1 de HuggingFace Hub y visualice 3 episodios. Este conjunto de datos contiene demostraciones scripted de un robot bimanual que inserta una peg un ejemplo limpio de cómo se ve un conjunto de datos bien estructurado.

fuente ~/lerobot-env/bin/activate # Visualizar 3 episodios de un conjunto de datos público python -m lerobot.scripts.visualize_dataset \ --repo-id lerobot-raw/aloha_sim_insertion_scripted \ --episode-indices 0 1 2 \ --output-dir ~/dataset-viz/ # Abrir el HTML generado en su navegador # Pista de archivo impreso en el terminal, por ejemplo ~/dataset-viz/index.html

El visualizador genera una página HTML con reproducción de video de cada episodio junto con gráficos de estado conjunto sincronizados.

  • Tracetorias articulares lisas picos afilados indican artefactos de grabación o accidentes de brazo
  • Duración del episodio constante Episodios que varían mucho en longitud (por ejemplo, 50 vs 400 cuadros) a menudo indican algunas demostraciones capturadas movimientos parciales o abortados
  • Mudificación del estado de pegamento La última dimensión conjunta debe mostrar transiciones binarias claras (abiertas → cerradas → abiertas) para las tareas de manipulación

# Inspeccionar el conjunto de datos de forma programática desde lerobot.common.datasets.lerobot_dataset importar LeRobotDataset Dataset = LeRobotDataset("lerobot-raw/aloha_sim_insertion_scripted") print(f"Episodios: {dataset.number_episodes}") print(f"Total de marcos: {len(dataset)}") print(f"FPS: {dataset.fps}") print(f"Fonte: {(listdataset.features.keys.f}}") # Inspeccionar una sola estructura de un conjunto de datos\0[[] Impresión de estado: {\[observación. estado'}") "Fonte: {\'shape'}")

Datos de referencia opcionales

Explore la colección de datos de RCSV

La biblioteca de conjuntos de datos de RCSV incluye conjuntos de datos de aprendizaje de robots curados en formato LeRobot. Explore para entender cómo se ven las diferentes tareas y hardware antes de grabar los propios.

Unidad 2 completa cuando...

Ha visualizado con éxito 3 episodios de T2 y la salida HTML se abre en su navegador. Puede identificar los campos de observación, estado, acción y timestamp en un archivo de Parquet cargado con Python. Comprende la diferencia entre lo que se almacena en Parquet vs MP4. Está listo para grabar su propio conjunto de datos en la Unidad 3.

[← Regreso a la visión general del camino]