2 Commits
Author SHA1 Message Date
Shaun ZhouandClaude Opus 5 59d4b8a9c4 fix(detect): 钳掉 Label Studio 导出坐标的浮点溢出
真实导出里出现 height=1.0000000000000002:Label Studio 按百分比存框,导出时 /100
留下浮点误差。ultralytics 读标签时对 >1 的坐标直接报错,所以这点溢出必须钳掉,
否则装配出的数据集根本训不起来。

只钳 1e-6 量级的溢出,真正越界的坐标仍然报错。顺带把坐标统一写成 6 位小数。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 16:44:42 +08:00
Shaun ZhouandClaude Opus 5 998e6601d4 feat(detect): 把 Label Studio 的 YOLO 导出装配成带 train/val 划分的数据集
scripts/build_yolo_dataset.py:导出(zip 或目录)+ 复核材料里的 images/ -> data/ 下
可训练的数据集。Label Studio 的 YOLO 导出只有标签,本地存储的图片不会打包进去
(get_local_path 对 local-files 直接返回磁盘路径,YOLO_WITH_IMAGES 也一样),
所以图片从准备复核材料的目录按文件名取,硬链接过去。

- 类别顺序照抄导出的 classes.txt:转换器把标签收进 set 再排序编号,与 labeling
  config 的顺序无关,标签里的 class_id 是按它写的。
- 按类别分层切分,分层用"框最多的那个类别"——人工复核后一张图可能有多个类别的框。
- 标签逐行校验:字段数、类别下标、坐标范围。坏标签训练时不会崩,只会悄悄拉低指标。
- 空标签默认保留为负样本;标签找不到图直接报错,图多于标签则告警。

顺带把 link_or_copy 提到 utils/fs.py 共用(此前 generate_boxes 与
prepare_label_studio 各有一份)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 16:42:53 +08:00