Skip to content

data(train): 真实 Layout 训练集扩充与 hold-out 划分(接 toy 之后) #103

Description

@loootte

背景

下一优先不是继续堆 UI,而是:用真实恩谱工程导出的 Layout GT 扩容训练集,并固定 hold-out 评测划分,使后续正式训练与 core 接入有可对比的数据基础。

关联:#92(L1–L3 训练总项)、data-spec / 工程导出约定。


目标

  1. 建立可重复的 真实 Layout 样本库(图 + 符合 data-spec 的 L1/L2/L3 标注)。
  2. 明确 train / hold-out(val/test)划分,禁止用 hold-out 调参。
  3. 训练 UI / CLI 能按划分加载数据,并在 hold-out 上输出 线级主指标
  4. 给出当前数据规模与质量门槛,为「正式 L2/L3 训练」Issue 做前置。

非目标

  • 本 Issue 不要求训出生产级精度
  • 不在本 Issue 做 core 推理接入(另开)
  • 不解决 L4–L5 标注
  • 不把未授权商业谱公开入库

范围与交付

1. 样本来源与导入

  • 从多个真实恩谱工程导入 Layout(桌面校正后的 L2 行框、L3 splits 等)
  • 统一走现有导出/校验(失败样本有日志,不进训练集)
  • 记录每条样本元数据:来源工程、页、谱种(印刷/扫描/拍照)、是否含困难情形(少线、密谱等)

2. 规模目标(可按实际调整,写入 README)

集合 建议最低目标 说明
可用真实页 ≥ 15~20 页 优先敬拜简谱常用排版
hold-out ≥ 20% 或 ≥ 4 页 页级划分,避免同行既训又测
困难样本 至少若干页 整行少小节线、歌词干扰等

若短期达不到数字,Issue 内写明「当前 N 页」与缺口,不阻塞流程落地。

3. Train / hold-out 划分

  • 划分策略文档化(按页或按工程;同一页不得同时进 train 与 hold-out
  • 固定列表文件,例如:
    • train/data/splits/train.txt
    • train/data/splits/holdout.txt
  • 种子可复现;更改划分需记一笔 changelog

4. 质量门槛

每条训练样本至少:

  • 有原图且尺寸与标注坐标一致

  • L2 systems 非空(若任务含 L2)

  • L3 splits 与行 bbox 约束通过校验(单调 x、落在行内等)

  • layout_schema_version 一致

  • scripts/validate_layout_dataset.py(或等价):批量校验,CI 可对公开样例跑

5. 与训练 UI / Framework 对接

  • UI 或 CLI 可选择「仅 train 集训练」「在 hold-out 上测试」
  • hold-out 评估输出与 L3 约定一致,至少含:
    • split_count_mae / count exact rate
    • mean_abs_x_error(匹配后)
  • 结果写入 runs/<id>/,便于对比「扩数据前后」

6. 文档


验收标准

  1. 存在文档化的真实 Layout 数据目录 + train/hold-out 列表。
  2. 至少完成 从 ≥3 个不同工程/页 导入并校验通过(总数尽量逼近上表;不足则在 Issue 注明)。
  3. 用 train 列表能启动一次训练;用 hold-out 列表能跑一次测试并产出线级指标文件。
  4. 校验脚本对故意破坏的标注能报错。
  5. 未把 hold-out 样本用于训练(文档 + 列表可审查)。

后续 Issue(本 Issue 不做,仅挂接)

  • 正式 L2/L3 训练任务与非 toy 模型头
  • core 加载权重 + structure 推理
  • learned vs rule 同屏对比评测

风险

风险 缓解
标注少导致过拟合 硬 hold-out;报告必须含 hold-out 指标
工程导出字段不一致 强校验,不通过不入集
版权 私有目录不默认 push;公开集仅授权样张

相关

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions