Create utils

Delete utils

Create merge_lerobot_dataset.py

Create README.md

Update README.md

Update README.md

update utils' structure

Co-authored-by: Tavish9.chen@gmail.com
This commit is contained in:
zhipeng tang
2025-04-15 19:22:44 +08:00
committed by Tavish
parent fe558f7adb
commit 1cdc2a2f40
3 changed files with 1395 additions and 2 deletions
+8 -2
View File
@@ -20,7 +20,9 @@ A curated collection of utilities for [LeRobot Projects](https://github.com/hugg
## 🚀 What's New <a><img width="35" height="20" src="https://user-images.githubusercontent.com/12782558/212848161-5e783dd6-11e8-4fe0-bbba-39ffb77730be.png"></a>
- **\[2025.04.11\]** We Change the repo from `openx2lerobot` to `any4lerobot`, making a universal toolbox for LeRobot! 🔥🔥🔥
- **\[2025.04.15\]** We add Dataset Merging Tool for merging multi-source lerobot datasets! 🔥🔥🔥
- **\[2025.04.11\]** We change the repo from `openx2lerobot` to `any4lerobot`, making a universal toolbox for LeRobot! 🔥🔥🔥
- **\[2025.02.19\]** We have supported Data Conversion from Open X-Embodiment to LeRobot! 🔥🔥🔥
@@ -35,6 +37,10 @@ A curated collection of utilities for [LeRobot Projects](https://github.com/hugg
- [ ] LeRobotv2.0 to LeRobotv2.1
- [ ] LeRobotv2.1 to LeRobotv2.0
- **Other Utils**:
- [x] [Dataset Merging](./utils/dataset_merging/README.md)
## 📂 Public Resources
- Available datasets in LeRobot format:
- [Open X-Embodiment Dataset](https://huggingface.co/IPEC-COMMUNITY)
@@ -59,4 +65,4 @@ We appreciate all contributions to improving Any4LeRobot. Please refer to the co
Special thanks to the [LeRobot teams](https://github.com/huggingface/lerobot) for making this great framework.
<p align="right"><a href="#top">🔝Back to top</a></p>
<p align="right"><a href="#top">🔝Back to top</a></p>
+78
View File
@@ -0,0 +1,78 @@
# Dataset Merger Tool README
## 一、简介
merge_lerobot_dataset是一个功能强大的Python脚本,专门用于合并多个具有相似结构的数据集。它特别适用于包含视频、状态和动作数据的lerobot自采数据集,能够高效地整合分散的episodes和分散的任务资源,为后续的模型训练等工作提供便利。
## 二、功能概述
1. **数据集合并**:将多个源数据集文件夹合并为一个统一的数据集,简化数据管理。
2. **索引重编号**:重新编号所有的episode索引和任务索引,确保合并后数据的连续性和一致性。
3. **向量维度填充**:自动检测并填充向量维度,使所有数据在observation.state和action等方面具有一致性。
4. **统计信息合并**:智能合并多个数据集的统计信息,正确处理复杂的数据结构,如图像特征的嵌套结构。
5. **视频文件处理**:正确处理和复制视频文件,保持视频与其他数据之间的正确索引关系,支持多种视频存储结构。
6. **元数据更新**:更新所有元数据文件,准确反映合并后的数据集结构。
## 三、安装
本脚本依赖于以下Python库:
- numpy
- pandas
安装依赖项的命令如下:
```bash
pip install numpy pandas
```
## 四、使用方法
### (一)基本用法
通过命令行运行工具,示例如下:
```bash
python dataset_merger.py --sources /path/to/dataset1 /path/to/dataset2 /path/to/dataset3 --output /path/to/output_dataset
```
### (二)命令行参数
- **--sources**:源数据集文件夹路径列表,至少需要指定一个源数据集路径。
- **--output**:输出数据集文件夹路径,用于指定合并后数据集的存储位置。
- **--max_dim**:向量的最大维度,默认值为32。
- **--fps**:数据集的帧率,默认值为20。
### (三)示例
```bash
python dataset_merger.py --sources ./robot_dataset_1 ./robot_dataset_2 --output ./merged_dataset --max_dim 18 --fps 30
```
## 五、数据集格式
此工具假设输入数据集具有以下结构:
```
dataset/
├── meta/
│ ├── episodes.jsonl # 包含每个episode的元数据
│ ├── episodes_stats.jsonl # 每个episode的统计数据
│ ├── info.json # 数据集全局信息
│ ├── stats.json # 全局统计信息
│ └── tasks.jsonl # 任务定义
├── data/ # 包含parquet格式的episode数据
│ └── chunk-xxx/
│ └── episode_xxxxxx.parquet
└── videos/ # 可选的视频文件
└── chunk-xxx/
└── video_key/
└── episode_xxxxxx.mp4
```
## 六、功能细节
1. **数据一致性处理**:自动检测并填充状态和动作向量维度,确保所有数据具有一致的维度,满足机器学习算法对数据格式的要求。
2. **索引管理**:重新编号所有episode和任务索引,同时维护帧索引的连续性,避免数据混乱。
3. **统计信息合并**:智能合并多个数据集的统计数据,能够正确处理复杂的数据结构,如图像特征的嵌套结构,确保统计信息的准确性和完整性。
4. **视频文件处理**:正确复制视频文件,并保持视频与其他数据之间的正确索引关系,支持多种视频存储结构,保证视频数据与其他数据的同步性。
5. **任务映射**:自动检测并合并相同的任务描述,创建新的任务索引映射,方便对任务进行统一管理和调用。
## 七、注意事项
1. 确保所有源数据集具有兼容的结构,否则可能导致合并失败或数据错误。
2. 合并后的数据集可能占用较大磁盘空间,在进行合并操作前,请确保有足够的存储空间。
3. 对于非常大的数据集,合并过程可能需要较长时间,请耐心等待。
## 八、常见问题
1. **Q: 合并不同维度的数据集会发生什么?**
**A**: 工具会自动检测最大维度并用零填充较小维度的向量,确保所有数据具有一致的维度。
2. **Q: 如何处理不同FPS的数据集?**
**A**: 暂时只支持相同FPS的数据集合并。
3. **Q: 能否只合并某些特定episode?**
**A**: 当前版本会合并所有数据。如需更精细的控制,您可以先筛选数据集,然后再进行合并。
File diff suppressed because it is too large Load Diff