LeRobot 数据集格式转换(v3.0 → v2.1)
OpenPI 当前训练代码使用 LeRobot v2.1 数据集布局。若你通过 Data-Processing-Tool 导出了 v3.0 格式数据集,需先运行 convert_v3_to_v2.py 完成格式转换后再开始训练。
所有命令均在 OpenPI 项目根目录下执行,并使用 uv 管理环境。
转换脚本说明
convert_v3_to_v2.py 会将 v3.0 布局还原为 v2.1 兼容格式,主要操作包括:
- 校验
info.json中codebase_version = "v3.0" - 重写 metadata 为 v2.1 schema
- 重建逐 episode 的
.parquet与视频文件 - 生成 legacy 的
episodes.jsonl/episodes_stats.jsonl - 保留 v3.0 原始文件,并在同一目录下追加 v2.1 兼容文件
转换完成后,数据集目录即可直接用于 OpenPI 训练流程。转换结果的四路相机视频与目录结构说明见 数据集样例。
本地 v3.0 数据集原地转换
若 v3.0 数据集已在本地磁盘,可直接原地 转换,无需重新下载:
uv run convert_v3_to_v2.py --local-root /PATH/TO/YOUR_V3_DATASET
--local-root:v3.0 数据集根目录,应包含meta/、data/、videos/等子目录。
从 Hugging Face Hub 下载并转换
若数据集托管在 Hugging Face Hub,可一步完成下载与转换:
uv run convert_v3_to_v2.py \
--repo-id lerobot/YOUR_DATASET_NAME \
--root /PATH/TO/LOCAL_DATA_ROOT \
--force-conversion
| 参数 | 说明 |
|---|---|
--repo-id | HF 数据集仓库 ID,例如 lerobot/pusht |
--root | 本地存储根目录,数据集将保存至 <root>/<repo-id> |
--force-conversion | 强制重新下载并转换(覆 盖已有快照) |
脚本执行流程:
- 下载 v3.0 快照至
<root>/<repo-id> - 在临时目录构建 v2.1 布局
- 将原始 v3.0 快照备份至
_v3.0同级目录 - 将 v2.1 布局移入原数据集路径
与 Data-Processing-Tool 的衔接
推荐的数据准备流程:
BAG_STORAGE/recorded_bags 原始采集
-> Windows Data-Processing-Tool 检查并转换双 MCAP 数据
-> <输出目录>/lerobot_output/(LeRobot v3.0)
-> uv run convert_v3_to_v2.py --local-root <v3.0 数据集路径>
-> 可用于 OpenPI 训练的 v2.1 数据集
转换前请确认:
- 数据集中包含主相机与腕部相机图像
observation.state与action字段维度与训练配置一致- 每条 episode 附有任务描述(
task字段)
常见问题
转换后训练报错找不到 episode 文件
检查 --local-root 是否指向包含 meta/info.json 的数据集根目录,而非某个 episode 子目录。
是否需要删除 v3.0 原始文件
不需要。脚本会在原目录追加 v2.1 文件,v3.0 数据仍保留。若磁盘空间紧张,可在确认训练正常后手动清理 v3.0 专属文件。
Hugging Face 下载中断
加上 --force-conversion 重新执行,脚本会重新下载并完成转换。