摘要
截图路由器(router,把一张截图分给各个读取器的程序)在训练池 212 张生物面板画面中,有 7 张的面板任务结果是“未检测到”。本实验(编号 B174)逐张诊断:7 张都是因为定位规则要求的两个“锚点”没读全——“数量”格里要恰好有一个 N/M 形式的分数,下一行“生命”格里也要恰好有一个分数,任何一个缺了就放弃定位。
改动:在有确切兵种名、阶级和伤害范围的前提下,数量与生命两个位置里恰好一个有分数也允许定位。训练池找回 5 张(另 2 张被悬停说明盖住,仍不定位,这是对的),面板字段从 1,857 对增加到 1,902 对,错误仍是原来的 1 个。测试池上新规则一次也没触发,测试成绩不变。
要回答的问题
这 7 张面板为什么定位不到?能否在不增加错误、不误把其他画面当面板的前提下找回它们?
数据与来源
- 训练池:名字带“训练”的截图包,共 78 包;7 张未定位的生物面板来自其中。
- 测试池:626 帧,只在训练上确认没有新增错误后跑一次最终评估,不据此调整。
- 另有 8 帧是“外观不确定被拒”,属于另一个实验,不在本次范围。
方法
诊断:对 7 帧跑路由器的整帧 OCR 和面板定位函数,查看表头决策与标题带的 OCR 行。
| 生物 | 数量格读到 | 生命格读到 | 原因 |
|---|---|---|---|
| 妖精巨龙 | “生4品值” | 61/75 | 悬停标签“生命值”压在数量上 |
| 寄生虫 | 185/185 | 未读出 | 整帧 OCR 漏了 7/7 |
| 大天使 | 4/7(分数 0.874,低于 0.9) | 172/225 | 分数略低 |
| 神化者 | “47” | 258/300 | 斜杠没读出 |
| 骷髅战士 | “203” | 2/6 | 斜杠没读出,旁有“攻击力”悬停标签 |
| 虫巢之母 | “7” | “275” | 能力悬停说明盖住属性行 |
| 米诺陶洛斯先锋 | 36/36 | “40” | 能力悬停说明盖住属性行,伤害也看不到 |
改动:原来的后备定位只接受“确切兵种名 + 阶级 + 合并的生命/攻击行 + 伤害范围”。现在没有合并行时,也接受“确切兵种名 + 阶级 + 数量与生命两处恰好一处有分数(任一处出现两个就放弃)+ 伤害格里有伤害范围”。锚点只提供位置,不提供数值:每个字段仍由格子里两种尺寸的读数决定,整帧 OCR 里不一致的读数仍然否决,读不出的保持未知。面板外观门槛不变。路由器、实时读取和单图读取共用这个函数。
设置
改动后重读全部 78 个训练包,与改动前的路由结果逐帧比较:生物面板场景的各字段对/错/漏,以及其他场景的主任务有没有被误定位成面板。
结果
训练池
| 指标 | 改动前 | 改动后 |
|---|---|---|
| 生物面板字段 对 / 错 / 漏 | 1,857 / 1 / 134 | 1,902 / 1 / 89 |
| 生物面板场景主任务读出 | 197/212 | 202/212 |
- 面板任务只有 5 帧变化(诊断表前 5 帧从“未检测到”变为“读出”);其他画面没有一帧新定位出面板。
- 新定位的 5 个面板中有 4 个带精审真值:名字、身份、阶级、生命、攻击、防御、士气、幸运、先攻、速度、伤害各 +4 对、0 错;数量只多对 1 个,其余仍未知(斜杠没读出时,格子里本来就读不出)。
- 唯一的错误是原来就有的:数量 340/385 被读成 340/38。
测试池(626 帧,只跑一次):面板任务没有任何变化——新规则一次也没触发,没有新读出,也没有新错误。
失败与负结果
- 2 张被能力悬停说明盖住属性行的面板仍然定位不到(这是期望的行为,不是失败)。
- 这次改进在测试池上看不到任何收益。
局限
- 收益只来自训练池的 5 帧,样本很小;真值来自助手精审。
- 对照中其他场景的主任务变化来自更早的其他改动,与本实验无关。
结论与下一步
问题的根源是定位锚点过于严格,而非数值读取。放宽为“两个资源分数恰有其一”能在训练池上找回面板且不引入错误;但测试池上没有触发,说明这种情况比较少见,测试面板成绩维持不变。
Comments