摘要
打开法术书时,书本挡住了战场中间,只剩两侧露出生物的局部。项目有两个生物身体检测器:一个看整张图(下称“整图检测器”),一个是上一轮专门在书页两侧窗口上训练的“局部检测器”。上一轮把两者合并时用的是“整图结果优先,局部只做补充”,结果一些局部检测器找到的好窄框被整图检测器的旧宽框挡住,误报也没达标(45 个正确框、5 个误报)。
本轮不再训练、不降阈值,只改合并方式:两路候选按原始检测分数排序,统一做一次 NMS(非极大值抑制:重叠很大的框只留分数最高的那个)。先在训练图上选择规则,再一次性在开发集上验证:46 正确 / 4 误报 / 13 漏检,通过预先冻结的门槛。随后接成真实整帧读取的显式选项,26 张图两轮实测含保存 p95 1.866 秒。默认流程和战斗记录 App 没有启用。
要回答的问题
- 不训练新模型,只改两路检测框的合并规则,能否减少误报、保住已有正确框?
- 接入真实整帧读取后,其他界面结果是否不变,耗时如何?
数据与来源
本轮没有新训练,复用三个已训练模型(整图检测器、局部检测器、身份模型)。为了避免“10 张图”被误解为全部数据,下面是规模核对:
| 用途 | 规模 | 注意 |
|---|---|---|
| 局部检测器的训练输入 | 417 张不同原图、4680 个身体框 | 局部裁窗和重复曝光不另算独立截图 |
| 其中书页困难训练材料 | 16 张、92 个身体,5 个来源组 | 本轮只用它选择合并规则 |
| 身份模型训练 | 4606 个身体裁图 + 1580 个选择页裁图 = 6186 条、144 类 | 裁图条目,不是独立截图 |
| 本轮书页开发集 | 10 张、59 个身体、4 个来源组 | 小而反复曝光,仅工程诊断 |
身份训练的类别并不均衡:144 类里 4 类没有战场身体样本、7 类只有 1–4 条、43 类 5–19 条、90 类至少 20 条。开发集 59 个身体也没有完整身份真值,所以本文的定位成绩不是“认出名字”的成绩。
方法
预先只指定两个候选,不扫阈值:
- 合并分数 NMS:所有候选按原始检测分数排序,IoU 阈值 0.5 统一去重;分数相同时整图结果优先。两个模型的分数没有校准到同一尺度,只作排序,所以必须逐目标检查是否替换掉了原来的好框。
- 复合覆盖抑制:在 1 之后,如果一个低分大框被至少两个更高分、仍独立保留的框共同覆盖(每个组成框 ≥90% 面积落在大框内、精确并集覆盖大框 ≥90%、各自有 ≥10% 独占贡献),就删除大框。可能误删真实重叠身体,只是假设。
选择规则(只看训练):相对上一轮组合,任何原正确目标都不能丢,误报必须减少;候选 2 只有在比候选 1 额外减少误报且不丢目标时才优先。
开发门槛(冻结后一次性评分):至少 46 个正确框,保留上一轮全部 45 个匹配,误报 ≤4,每个来源不退步。失败则不改参数、标注或换候选。
推理只用候选框、分数和来自哪一路,不用图名、来源、真值或目标数量。
设置
保持面板/书签过滤、检测分数 ≥0.4、匹配 IoU ≥0.5。
结果
训练 16 图 92 身体:上一轮组合 81 TP / 20 FP / 11 FN(TP 正确框、FP 误报、FN 漏检);合并分数 NMS 后 82 / 15 / 10,恢复 1、丢失 0。复合覆盖抑制在 16 张图上没有任何额外删除,指标完全相同,因此不采用。16 张变化图全部逐张查看:多数改变是去掉了重复框,书脊、书扣附近的宽误框仍然存在,没有虚报修好。
开发 10 图 59 身体(一次性评分):
| 固定候选 | 正确 TP | 误报 FP | 漏检 FN | 精确率 | 召回率 |
|---|---|---|---|---|---|
| 只用整图检测器 | 35 | 4 | 24 | 89.74% | 59.32% |
| 局部检测 + 整图优先(上一轮) | 45 | 5 | 14 | 90.00% | 76.27% |
| 合并分数 NMS(本轮) | 46 | 4 | 13 | 92.00% | 77.97% |
上一轮 45 个正确目标全部保留;唯一恢复的一个是:旧宽框混入了相邻身体,新的局部框更窄,IoU 0.502 刚好达标。按可见程度:主体 28/28、局部 18/30、微小 0/1。各来源组 TP 都没有下降。门槛通过,但这是工程门槛,不是 95% 验收;精确率 92% 也不等于“识别了 92% 的可见身体”。
真实整帧读取:新增私有组合读取器,只有当前截图中检测到唯一一本魔法书时才运行局部检测;两路先过相同的面板/书签过滤再合并,被抑制的框和原因保留。固定 10 张开发书页 + 16 张非书页训练控制图(覆盖九类场景),开启全部现有显式识别分支,开/关局部检测逐图对比:
- 26/26 张其他界面结果一致(只忽略计时字段);16/16 张非书页的身体结果一致。
- 10/10 书页复现了冻结评分的 46 / 4 / 13。
- 预热后 26 图两轮共 52 次,没有读取失败。完整读取 p50 1.267 秒、p95 1.860 秒;加 JSON 保存 p50 1.271 秒、p95 1.866 秒、最大 1.940 秒;书页 20 次 p95 1.934 秒。冷启动一次命令行调用 14.51 秒,不计入热延迟。
失败与负结果
- 复合覆盖抑制没有任何作用,未采用;更早一轮的“单框包含就删除”规则仍维持否决。
- 剩余 13 个漏检:9 个原始候选分数低于 0.4,4 个根本没有合格的局部框,本轮没改变。拥挤多体大框、两个书脊误框、身体 + 书扣宽框仍存在。
局限
- 开发集只有 10 张,已多次曝光,部分界面曾参与训练,不是盲测。
- 计时含图像解码、全部显式识别、OCR 和保存,不含 App 截图、热键和显示;外部系统负载未控制;与旧集合不同,不能宣称提速。
- 相关 90 项测试通过,只证明规则和回退行为,不代表识别率;没有跑全套测试或 App 验收。
结论与下一步
问题出在“谁优先”而不是模型本身:让两路框按分数公平竞争即可保住局部检测器的好框,且没有丢掉任何原正确目标。能力以显式选项保留。下一步回到剩余定位质量和身份联合验收:用训练中剩余的漏检与误报建立困难样本清单,优先补真实遮挡片段、书脊纯界面、场外英雄和混合框的区别(混合框不能一律当负例),并为新的局部框另做身份验证。(之后用户明确“前景面板不读背景”,下一步改由 P086 承接。)
Comments