LeRobot数据集合并算子
LeRobot数据集合并算子用于将多个LeRobot数据集合并为一个V3格式数据集。支持V2.1与V3两种格式混合输入: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输出目录进行创建。
| 参数名 | 是否必填 | 默认值 | 可选值 | 说明 |
|---|---|---|---|---|
| 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/