File size: 7,522 Bytes
a741a7c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 | # 数据源说明 - Data Sources
> 记录所有可用的数据源位置和说明
---
## 🎯 数据源分类
本项目使用两类数据:
1. **真机数据**:真实机器人操作数据,包含复杂的失败模式
2. **仿真数据**:模拟环境生成的数据,标注更准确但可能不够真实
---
## 📍 真机数据(Real Robot Data)
### 1. DROID 数据集
**位置**:`/playpen-ssd/dataset/droid_raw/1.0.1/`
**说明**:
- 大规模多机构机器人操作数据集
- 包含成功和失败案例
- 多种任务类型(300+ 种)
**数据源分布**:
| 数据源 | 轨迹数 | 比例 | 说明 |
|--------|--------|------|------|
| AUTOLab | 3,618 | 23.9% | 主要数据源 |
| ILIAD | 1,303 | 8.6% | |
| IPRL | 1,298 | 8.6% | |
| PennPAL | 2,494 | 16.5% | 包含 failure/success 标注 |
| CLVR | 433 | 2.9% | |
| GuptaLab | 187 | 1.2% | |
| 其他 | ~6,824 | ~45% | 多个小型数据源 |
| **总计** | **15,157** | **100%** | **Failure 数据** |
**任务类型分布(Top 10)**:
| 排名 | 任务 | 数量 |
|------|------|------|
| 1 | Move object into or out of container | 2,699 |
| 2 | Move object to a new position | 2,494 |
| 3 | Open or close hinged object | 1,103 |
| 4 | Hang or unhang object | 891 |
| 5 | Move lid on or off of container | 637 |
| 6 | Open or close slidable objects | 543 |
| 7 | Press button | 489 |
| 8 | Use cup to pour | 437 |
| 9 | Fold, spread out, or clump object | 398 |
| 10 | Use cloth to clean | 312 |
**数据格式**:
- 视频:MP4 格式,多视角(wrist_image_left, exterior_image_1_left)
- 元数据:JSON 格式,包含任务描述、动作序列、相机参数等
**访问方式**:
```python
import tensorflow_datasets as tfds
ds = tfds.load("droid", data_dir="/playpen-ssd/dataset/", split="train")
```
**子目录结构**:
```
/playpen-ssd/dataset/droid_raw/1.0.1/
├── AUTOLab/
│ ├── failure/
│ │ ├── 2023-07-07/
│ │ │ └── session_xxx/
│ │ │ ├── recordings/MP4/*.mp4
│ │ │ └── metadata_*.json
│ │ └── ...
│ └── success/
├── PennPAL/
├── ILIAD/
└── ...
```
---
### 2. 本地处理后的 DROID 数据
**位置**:`./droid_processed/`
**说明**:
- 从 DROID 数据集提取的失败案例
- 已拼接双视角(wrist + exterior)
- 包含元数据 JSON
**文件格式**:
```
droid_processed/
├── episode_000000.mp4 # 视频文件
├── episode_000000.json # 元数据
├── episode_000001.mp4
├── episode_000001.json
└── ...
```
**数量**:~20 个 episodes(示例数据)
**如何生成**:
```bash
python video_process.py
```
---
## 🎮 仿真数据(Simulation Data)
### 1. 本地 cokecan-50 数据
**位置**:`./data/cokecan-50/`
**说明**:
- 可乐罐抓取任务的仿真数据
- 按失败类型分类
- 包含完整的奖励标注
**目录结构**:
```
data/cokecan-50/
├── fall/ # 掉落失败(10 episodes)
├── collision/ # 碰撞失败(10 episodes)
├── grasp/ # 抓取失败(10 episodes)
├── smooth/ # 运动不平滑(10 episodes)
└── success/ # 成功案例(10 episodes)
```
**数据格式**:
```json
{
"joint_poss": [[...], [...], ...], // 关节位置序列
"stages": [0, 0, 1, 1, 2, ...], // 阶段标签(0-5)
"rewards": {
"reachout": [0.1, 0.2, 0.3, ...], // 接近奖励
"grasp": [0.0, 0.0, 0.8, ...], // 抓取奖励
"collision": [0.0, 0.1, 0.0, ...], // 碰撞惩罚
"fall": [0.0, 0.0, 0.0, ...], // 掉落惩罚
"smooth": [0.9, 0.85, 0.8, ...] // 平滑度
}
}
```
**用途**:
- 对齐奖励指标定义
- 验证模型在仿真数据上的表现
---
### 2. fangyu 仿真数据
**位置**:
- `/playpen-ssd/yufang/projects/reward/`
- `/playpen-ssd/yufang/projects/reward/cokecan-50`
**说明**:
- 更大规模的仿真数据
- 约 800-900 条轨迹
- 同样是 cokecan 抓取任务
**状态**:⏳ 待整合
**预计用途**:
- 扩充仿真数据集
- 与真机数据混合训练
---
### 3. yangyue Libero 失败数据
**位置**:`/playpen-ssd/dataset/libero_failures/dec_29_2025_v1`
**说明**:
- Libero 环境的失败案例
- 多种任务类型
- 专门收集的失败模式
**状态**:⏳ 待整合
**预计用途**:
- 增加失败模式多样性
- 提高模型对失败的检测能力
---
## 📊 数据统计对比
| 数据源 | 类型 | 数量 | 标注质量 | 真实性 | 状态 |
|--------|------|------|----------|--------|------|
| DROID failure | 真机 | 15,157 | 需标注 | 高 | ✅ 可用 |
| DROID success | 真机 | 未统计 | 需标注 | 高 | 📋 待统计 |
| cokecan-50 本地 | 仿真 | 50 | 精确 | 中 | ✅ 已整理 |
| fangyu 仿真 | 仿真 | ~800 | 精确 | 中 | ⏳ 待整合 |
| yangyue Libero | 仿真 | 未知 | 精确 | 中 | ⏳ 待整合 |
---
## 🔄 数据处理流程
### DROID 数据处理
```mermaid
graph LR
A[DROID TFDS] --> B[video_process.py]
B --> C[droid_processed/*.mp4]
C --> D[api_batch_improved.py]
D --> E[output/labels_*.jsonl]
E --> F[extract_frames_to_images.py]
F --> G[data/frames/**/*.jpg]
G --> H[convert_to_sft.py]
H --> I[data/sft_*.json]
I --> J[模型训练]
```
### 仿真数据处理
```
仿真数据(JSON) → 格式转换 → 与真机数据合并 → 模型训练
```
---
## 📝 数据使用建议
### 训练数据混合比例
| 阶段 | 真机:仿真 | 说明 |
|------|----------|------|
| 初期 | 1:1 | 使用仿真数据快速验证 |
| 中期 | 3:1 | 逐步增加真机数据 |
| 后期 | 5:1 或纯真机 | 提高真实场景性能 |
### Success vs Failure 比例
| 场景 | Success:Failure | 说明 |
|------|----------------|------|
| 推荐 | 1:2 | 失败案例更重要 |
| 平衡 | 1:1 | 避免类别不平衡 |
| 当前 | 约 1:10 | **需要增加 success 数据** |
---
## 🔍 数据质量检查
### 视频质量
✅ **已完成**:
- 视频帧率统计(见 `data_sta/video_framerate_stats.json`)
- 视频时长统计
❌ **待完成**:
- 图像质量评估
- 模糊/曝光异常检测
- 视角覆盖度检查
### 标注质量
❌ **待完成**:
- 人工 Golden Set 标注
- GPT 标注一致性检查
- 跨标注者一致性
---
## 💡 数据扩充计划
### 短期(1-2 周)
1. **DROID 数据扩充**
- 从 ~100 条扩展到 2500+ 条
- 使用 balanced 采样策略
- 覆盖主要任务类型
2. **增加 Success 数据**
- 从 DROID success 目录采样
- 目标:达到 success:failure = 1:2
### 中期(1-2 月)
3. **整合 fangyu 仿真数据**
- 格式转换和对齐
- 与真机数据混合训练
4. **整合 yangyue Libero 数据**
- 适配数据格式
- 增加失败模式多样性
### 长期(3+ 月)
5. **多数据源混合**
- 建立统一数据格式
- 多源数据联合训练
- 跨域泛化能力评估
---
## 📞 数据访问问题
如遇到数据访问问题,请检查:
1. 路径是否正确(绝对路径)
2. 权限是否足够(读取权限)
3. 数据是否存在(某些数据可能被移动)
---
## 📚 相关文档
- [数据统计分析](./data_sta/failure_statistics.txt) - DROID 失败数据详细统计
- [HuggingFace 数据集指南](./data_sta/README_HF_DATASET.md) - 数据集准备和上传
- [项目概述](./docs/PROJECT_OVERVIEW.md) - 完整项目说明
|