-
Notifications
You must be signed in to change notification settings - Fork 0
SCENE_GROUPING_GUIDE
Lozumi Everkine edited this page Jul 21, 2025
·
1 revision
从版本 1.3.4 开始,轨迹标注工具支持按场景分组保存标注文件,使标注数据更好地组织和管理。
annotations/
├── episode_id_1.json
├── episode_id_2.json
├── episode_id_3.json
├── progress.json
└── backups/
annotations/
├── scene_3/
│ ├── episode_id_1.json
│ └── episode_id_2.json
├── scene_24/
│ └── episode_id_3.json
├── progress.json
└── backups/
- 新保存的标注自动按
scene_id创建子文件夹 - 文件夹命名格式:
scene_{scene_id} - 相同场景的标注文件保存在同一个文件夹中
- 自动兼容旧的平铺结构文件
- 加载标注时优先从场景文件夹查找,失败则回退到根目录
- 删除标注时支持两种结构
- 导出功能也按场景创建子文件夹
- 导出的文件结构与保存结构一致
- 支持选择特定场景进行导出
如果您有现有的标注文件,可以使用迁移脚本将它们组织到新的结构中:
python migrate_annotations.py-
自动备份:创建
migration_backup_时间戳备份文件夹 -
读取场景ID:从每个标注文件读取
scene_id -
创建场景文件夹:自动创建
scene_X文件夹 - 移动文件:将文件移动到对应的场景文件夹
- 验证结果:检查迁移完成情况
- ✅ 自动创建备份
- ✅ 跳过已存在的文件
- ✅ 保留原文件权限和时间戳
- ✅ 详细的迁移日志
直接使用新版本,标注会自动按场景分组保存。
- 运行迁移脚本整理现有文件(可选)
- 新的标注会自动使用新结构
- 旧文件仍可正常加载和使用
# 创建场景文件夹
scene_dir = os.path.join(config.OUTPUT_DIR, f"scene_{annotation.scene_id}")
os.makedirs(scene_dir, exist_ok=True)
# 保存到场景文件夹
filepath = os.path.join(scene_dir, f"{annotation.episode_id}.json")# 优先从场景文件夹加载
for scene_folder in scene_folders:
filepath = os.path.join(scene_folder, f"{episode_id}.json")
if os.path.exists(filepath):
return load_file(filepath)
# 回退到根目录(兼容性)
old_filepath = os.path.join(config.OUTPUT_DIR, f"{episode_id}.json")
if os.path.exists(old_filepath):
return load_file(old_filepath)- 场景相关的标注文件集中管理
- 便于查找和管理特定场景的标注
- 支持大规模数据集的组织
- 可以快速统计每个场景的标注数量
- 支持按场景进行批量操作
- 便于场景级别的数据分析
- 减少单个文件夹的文件数量
- 提高文件系统操作效率
- 便于并行处理不同场景
- 迁移前备份:建议在运行迁移脚本前手动备份重要数据
-
场景ID必须存在:标注文件中必须包含有效的
scene_id字段 - 文件夹权限:确保有足够权限创建和移动文件
- 磁盘空间:迁移过程需要额外空间用于备份
A: 是的,系统会自动兼容旧的平铺结构,无需强制迁移。
A: 迁移脚本会创建备份,可以从备份文件夹恢复原始文件。
A: 可以,只需按 scene_X 格式创建文件夹并移动文件即可。
A: 导出时也会按场景创建子文件夹,结构与保存时一致。
版本: 1.3.4+
更新时间: 2025-07-22
作者: Lozumi
Lozumi, FineCog-Nav Team