摘要

鼠标停在法术、装备、生物能力或底部按钮上时,游戏会弹出一个悬浮提示框(tooltip),里面是名称和效果说明。它们是推断对局信息的好材料,但只短暂出现,还会淡入淡出。上一个实验(B067)只在屏幕底部一块固定窄区里找暗色小框,结果把真正的说明框截断,评估中 4 次提示全部漏掉。

本实验 B068 换了思路:先训练一个只认“提示框”这一个类别的小型目标检测器,在整张原图上找出完整外框,再在框内比较连续帧,等文字稳定后挑一帧交给 OCR(光学字符识别)。冻结后在另外两组来源上,5 次已标注的提示展示覆盖了 4 次,抽查的 12 个文字字段 11 个正确、0 个错误、1 个因漏选未读。默认视频流程、手动读取、战斗记录 App 和下游都没有接入,不是完整系统验收。

要回答的问题

  1. 一个小检测器能否在整张图上找到完整的提示框(而不是被固定搜索区截断)?
  2. 在检测框内做“两帧稳定”判断,能否选中清楚的帧、跳过淡入和过渡帧,又不重复读同一内容?
  3. 选中原图上的 OCR 文字是否正确?

数据与来源

  • 训练素材只来自事先划定为“训练”的 7 个来源组:49 张有可读提示、22 张无提示,共 71 张 2560×1440 原生图。另有 2 张提示半透明叠在别的文字上的帧被排除,没有标成“无提示”。相邻帧高度相关,不能当成 71 场战斗。
  • 标注先由算法粗提议,再由助手逐框精修,不是玩家人工确认。复核中改正了几类初稿错误:能力框把后方图标也圈进去、只圈了内框、标题被切掉、整框偏位。另外扫描的 240 帧没有完成精修,全部没有用于训练。
  • 13 种代表性提示内容(如“重新部署”命令、几件装备、几种法术)从像素逐字抄录,供文字核对;没有用知识库或模拟器补全被遮挡的字。
  • 评估用另外两组已曝光来源的 530 帧,与训练组零交集;从未曝光的冻结来源没有打开。所以这是来源隔离的回归,不是新的盲测。

方法

  1. 检测器:沿用项目已有的 YOLO26n 面板检测训练设施,新增一个单类“通用提示框”模型,不改变原有四类面板模型。原生整图输入,训练尺寸 960,固定 40 轮、固定随机种子,直接用最后一轮权重冻结,不按评估成绩挑模型。
  2. 稳定选帧:只看当前和过去的像素,不能用底栏按钮变化代替文字变化。策略在 630 帧训练采样上修订了三版:第一版被框外动画干扰,第二版被字形边缘轻微晃动干扰,第三版只在“比较运动”时对框内特征做 5×5 的轻度高斯平滑,而判断是否新内容和 OCR 仍用原始像素(不是读平滑后的文字)。前两版决策都保留。
  3. 读字:只把选中的当前原图送去 OCR。

设置

报告定位漏检/错检、从“首次清楚”到“被选中”的等待、展示覆盖、无效选帧和实际 OCR 文字。速度只测了检测+筛选这一片段。

结果

指标 训练回放 冻结后其他来源
原生采样帧 630 530
有检测提议的帧 28 40
已标清楚提示帧被检出 27/27 38/38
已标可读展示被选中 6/8 4/5
实际送 OCR 的原图 16 4
选中帧落在清楚区间之外 0 0
同一内容的额外读取 10 0
首次清楚→选中的等待 p95 100 ms 100 ms

38/38 只表示“提示出现时被检出”,不是框的 AP,也不是所有界面或字段的正确率。评估中 40 个提议都看过:38 个是清楚提示、2 个是可见的过渡提示,没有发现框到别处的误检;两个过渡提议没有触发读取。其余 490 帧没有逐字段标注,不算作“全部正确的负例”。

逐事件(帧号按 10 帧/秒):

展示 清楚区间 选中 核对
第一次“姿态”提示 0–20 2 名称和完整效果文字正确(窗口左侧被截,200 ms 不是真实开启延迟)
“魔法书”标签 25–26 26 名称正确;第 24 帧淡入未选
第二次“姿态”提示 71–78 72 名称和完整效果文字正确
另一窗口“魔法书”标签 43 无 已检出且可读,但只有一个清楚采样,两帧规则漏掉
“审判”法术说明 46–51 47 名称、学派/阶级、完整效果、右上角数字、等级、魔力都正确;第 45 帧淡入未选

12 个声明的文字字段:11 正确、0 错误、1 未选中未读。右上角圈中的数字只记为“6”,没有擅自解释成冷却等规则含义。这是 4 张评估原图上的有限文字核对。

检测+筛选回放的热 p95 约 0.028 秒,只是这一计算片段,不含截图读取、视频解码、排队和 App 展示,不能拿来声称 App 端到端 ≤3 秒。

失败与负结果

  • 单个清楚采样的短提示被漏:训练 2 次、评估 1 次。“可以跳过瞬态”不等于可以漏掉这些清楚帧。
  • 重复读取:训练中魔法说明因字形轻微晃动触发了 10 次冗余读取。“是否稳定”“是否新内容”“文字是否完整可读”三个判断还没有统一。
  • 只支持当前原生布局和同时一个活动提示;多个框时明确报“不支持”。
  • 完整 Perception 测试套件本轮没有重跑,B066 有两个已知的冷启动导入顺序失败未修,不宣称全套通过。

局限

  • 训练和评估图都来自已曝光来源,样本少且相关;标注是助手复核。
  • 日志新行、单个数字变化等更细的内容变化,不能靠这次结果证明不会被去重吞掉。
  • 52 项聚焦测试通过;1,160 帧用记录的检测框重放筛选,结果一致;B066 的 4,640 条旧决策保持不变。

结论与下一步

“先找完整框、再在框内判稳定”明显好于固定窄区方法,补回了上一轮漏掉的底部说明。下一步在训练来源上解决两件事:短暂但清楚的内容不能漏,字形晃动不能引发重复读取;并验证微小的真实字段变化不会被去重吞掉,之后才考虑接入整图读取流程。项目总目标(≥10 场独立真实战斗、逐场景逐字段 95%、App 热 p95 ≤3 秒)均未达到。