摘要

战斗画面上有两处能告诉你“现在轮到谁行动”:屏幕上方的行动条(一排按行动顺序排列的单位卡片,第一张就是当前单位),和屏幕下方的底部操作栏(显示当前单位的头像、技能按钮、技能中央的冷却数字、以及集能点等资源)。两处是独立画出来的,如果都读出同一种生物,就能互相印证。

本实验先从已有训练资料里扩充样本(搜 2510 帧缓存 OCR,再筛 683 张原图,精审 19 张),然后新增一个显式开关:分别读行动条首卡和底部头像,一致时才给出“行动者候选”,等待遮罩、首卡缺失、身份不明或两者冲突都保留未知。清晰头像身份在一次尺度修正后从 3/14 提升到 14/14;两者一致的候选 9/10 正确、0 错。技能中央数字仍是短板(5/8 正确、3 漏读),直接对每个技能圈做 OCR 的补救方案误报太多,没有采用。

要回答的问题

  1. 行动条首卡和底部头像能否互相核对出可靠的“当前行动者”候选?
  2. 技能按钮中央的数字(可能是冷却)和集能点能读多准?

数据与来源

  • 复用已准入的训练来源:在 2510 帧已缓存的整图 OCR 中得到 160 个原始数字命中帧,再筛 683 张已保存原图,选出 19 张逐项精审(其中 2 张与上一轮重合)。5 个来源组都已曝光;没有打开评估集或封存来源,没有重新录制或训练模型。
  • 人工参考记录:全部 10 个中央技能位置、集能点、首卡图案/队色/数量、底部头像和等待沙漏。数量只有参考,本轮没有新增卡片数量读取。不是全图精标。
  • 其中 4 张是“前置面板”对照(1 张生物面板、3 张法术书遮在前面),1 张行动条正在下移、首卡不可稳定定位但底部清楚。
  • 相邻图、重复图、OCR 命中数都不当作独立事件或对局。

方法

  1. 底部头像沿用已有的规范图案加掩码模板匹配(规范图案来自游戏资料模块的公开接口),接受门槛为相关分 ≥0.80、与第二名差 ≥0.03。
  2. 行动条首卡沿用已有的规范图案读取。
  3. 两者读出同一兵种才给出行动者候选;等待沙漏覆盖、首卡缺失、身份未知或冲突都阻止核对。红/蓝队色不等于我方/敌方。
  4. 只证明“兵种图案对应”,不证明是同一个战场实例、属于哪一方或是否可行动。

设置

本轮共 55 次真实完整文件读取:初稿 19 次、最终新批 19 次 + 上一轮 16 张回归、真实命令行 1 次。最终 35 次与冻结的旧结果逐项比较。

结果

项目 新批结果 限制
前置面板时跳过背景界面 4/4 背景独立诊断不混入交付成绩
底部清晰头像身份 11/11 另 4 张有等待遮罩,不标底层身份;非盲测
可读首卡身份 13/14 正确、1 未知、0 错 升级版蜂后首卡相关分约 0.790,没有为它降低 0.80 门槛
首卡 + 底部一致候选 9/10 正确、1 未知、0 错 仅兵种对应
等待/首卡过渡对照 5/5 未强行绑定行动者 真实图中没有无遮挡的冲突,冲突保护由软件测试覆盖
完整集能点 15/15 含 5 张真实 3 点;不读细分进度
技能中央数字 5/8 正确、3 漏、0 错 技能身份与冷却含义仍未完成
没有中央数字的位置 142 个、0 多读 1 个圆框未定位;不等于 142 个技能已完整识别

这些项目条件不同,不能相加成系统准确率。上一轮已有的时钟、集能和数字输出全部保持。

失败与负结果

  • 头像尺度设错。 首版模板尺寸 168/178/188 过大,清晰头像只有 3/14 通过;最佳匹配都落在最小尺寸边界上,于是只做了一次 148/158/168 的对照,变成 14/14,门槛没有降低。
  • 返回键写错。 首次组合时把旧函数的返回字段名写错(实际字段是 entity_id),导致首版行动者全部未知;已修正并加回归测试。由于两处修正同时发生,不能把结果说成纯粹的尺度消融。首版输出保留。
  • 逐圈直接 OCR 被否决。 对 19 张图 × 10 个技能圈共 190 个小区域直接做 OCR,只读对 9 个可读数字中的 2 个,还把图案误读成 10 条数字;即使要求分数 ≥0.9 且唯一,仍有 6 条误报。没有接入。
  • 等待沙漏模板只来自一张训练裁图;5 张等待、14 张非等待的诊断都与参考一致,但不能据此说通用遮罩检测已验收。

局限

  • 19 张都是曝光过的训练来源,没有盲测;不能宣称整体准确率、10 局验收或整帧 p95。
  • 默认读取入口、App、状态估计和公共协议都没有改变;新功能是显式开关。
  • 相关软件测试 173 项通过,它们不是识别精度的分母。

结论与下一步

两处独立证据互相核对,能在不引入错误的前提下给出行动者候选,这部分已作为显式选项接入。技能中央数字仍是下一优先:先检查漏读数字送进识别模型的实际输入,比较已有的数字/字形读取方法,补充其它训练来源和“无数字图案”负例;不降低全局阈值,不把图案猜成冷却,也不把没读到写成 0。