更新时间:2026-08-05 GMT+08:00
分享

LeRobot数据集合并算子

LeRobot数据集合并算子用于将多个LeRobot数据集合并为一个V3格式数据集。支持V2.1V3两种格式混合输入:V2.1 数据集会先自动转换为V3,再与原始V3数据集统一合并。

  • 核心能力:
    • 混合格式输入:源数据集可为V2.1 或V3,V2.1会自动转换为V3后再合并。
    • 格式校验:合并前对所有源数据集进行格式识别与兼容性校验(帧率、特征 schema)。
    • 视频快速合并:视频不重新编码,合并速度快。
    • 索引重建:合并后episode从0开始重新编号,统计信息从所有源数据集聚合。
    • 单输出:多源数据集合并为一个目标数据集目录。
  • 输入: 多个LeRobot数据集目录(V2.1或V3,可混合)。
  • 输出: 单个LeRobot V3格式数据集目录。

参数配置

用户可添加repo_id环境变量用于定义合并完成的LeRobot数据集的repo_id(父文件夹目录),若未设置该环境变量且flat为false的情况下默认按照lr_merged输出目录进行创建。

表1 参数说明

参数名

是否必填

默认值

可选值

说明

flat

true

true/false

结果输出是否平铺。若选择true,则不会创建repo_id文件夹,输出数据集直接展示data、meta、videos目录;若设置为false,则按照repo_id来设置。

repo_id

lr_merged

任意字符串类型

在创建数据处理任务时,用户可添加或修改该环境变量。含义为转换完成的数据集repo_id,未设置时默认回退为lr_merged

输入说明

支持LeRobot V2.1或V3格式数据,其他格式数据会自动跳过合并。

输入数据集格式

源数据集可为 LeRobot V2.1或V3格式,算子会自动识别分类。

  • LeRobot V3 格式
    <dataset_dir>/
    ├── data/
    │   └── chunk-000/
    │       └── file_*.parquet
    ├── meta/
    │   ├── info.json
    │   ├── stats.json
    │   ├── tasks.parquet
    │   └── episodes/
    └── videos/
        ├── observation.images.front/
        ├── observation.images.wrist_left/
        └── observation.images.wrist_right/
  • LeRobot V2.1 格式
    <dataset_dir>/
    ├── data/
    │   └── chunk-000/
    │       └── episode_*.parquet
    ├── meta/
    │   ├── info.json
    │   ├── tasks.jsonl
    │   ├── episodes.jsonl
    │   └── episodes_stats.jsonl
    ├── images/
    │   └── observation.images.*/
    └── videos/

    既非V3也非V2.1格式的目录会被跳过并告警。V2.1数据集会自动转换为V3后再参与合并。

兼容性校验

合并前会对所有源数据集(V2.1转换为V3 后)进行兼容性校验,以第一个通过校验的数据集为基准:

校验项

说明

失败处理

格式识别

识别为V3或V2.1。

非识别格式跳过并告警。

V2.1转换

V2.1自动转换为V3。

转换失败跳过并告警。

V3 加载验证

使用LeRobot V3接口加载验证。

加载失败跳过并告警。

帧率(fps)一致性

所有数据集fps必须与基准一致。

不一致跳过并告警。

特征(features)一致性

所有数据集features schema(key、dtype、shape)必须与基准一致。

不一致跳过并告警。

不兼容的数据集会被跳过,不影响其他数据集合并。若所有数据集均被跳过(无可用源),作业报错退出。

输出说明

多数据源输入合并后输出单个目录,格式为LeRobot V3。

输出目录结构

flat为false时合并结果为单个LeRobot V3格式数据集:

<repo_id>
├── data/
│   └── chunk-000/
│       ├── file_000000.parquet       
│       ├── file_000001.parquet
│       └── ...
├── meta/
│   ├── info.json                        # 数据集基本信息(codebase_version 为 v3.0)
│   ├── stats.json                       # 从所有源数据集聚合的统计信息
│   ├── tasks.parquet                    # 合并后的任务定义
│   └── episodes/                        # 合并后的 Episode 元信息
└── videos/                              # 合并后的视频数据
    ├── observation.images.front/
    ├── observation.images.wrist_left/
    └── observation.images.wrist_right/

# flat=true 模式

<output_dir>/
├── data/
│   └── chunk-000/
│       ├── episode_000000.parquet
│       └── ...
├── meta/
│   ├── info.json
│   ├── tasks.jsonl
│   ├── episodes.jsonl
│   └── episodes_stats.jsonl
├── images/
│   ├── observation.images.front/
│   └── ...
└── videos/

常见合并失败问题

  • 部分数据非video的字段中包含fps参数导致合并失败。

    部分数据中非video字段包含fps参数,导致合并时工具检查内部schema时冲突,比如timestamp中存在fps数值(常见于部分V2转V3的LeRobot数据集中)。建议用户结合日志,检查数据集/meta/info.json相关键值,可手动修改文件保持结构统一。

  • 可能存在dtype类型不同。

    数据合并严格校验数据类型,若不同数据集中的数据类型不同,例如action字段某些数据集中是float32,某些数据集中是float64,会导致合并失败。建议用户结合日志,将数据集dtype进行对齐。

相关文档