摘要
鼠标停在法术、装备、生物能力或底部按钮上时,游戏会弹出一个悬浮提示框(tooltip),里面是名称和效果说明。它们是推断对局信息的好材料,但只短暂出现,还会淡入淡出。上一个实验(B067)只在屏幕底部一块固定窄区里找暗色小框,结果把真正的说明框截断,评估中 4 次提示全部漏掉。
本实验 B068 换了思路:先训练一个只认“提示框”这一个类别的小型目标检测器,在整张原图上找出完整外框,再在框内比较连续帧,等文字稳定后挑一帧交给 OCR(光学字符识别)。冻结后在另外两组来源上,5 次已标注的提示展示覆盖了 4 次,抽查的 12 个文字字段 11 个正确、0 个错误、1 个因漏选未读。默认视频流程、手动读取、战斗记录 App 和下游都没有接入,不是完整系统验收。
要回答的问题
- 一个小检测器能否在整张图上找到完整的提示框(而不是被固定搜索区截断)?
- 在检测框内做“两帧稳定”判断,能否选中清楚的帧、跳过淡入和过渡帧,又不重复读同一内容?
- 选中原图上的 OCR 文字是否正确?
数据与来源
- 训练素材只来自事先划定为“训练”的 7 个来源组:49 张有可读提示、22 张无提示,共 71 张 2560×1440 原生图。另有 2 张提示半透明叠在别的文字上的帧被排除,没有标成“无提示”。相邻帧高度相关,不能当成 71 场战斗。
- 标注先由算法粗提议,再由助手逐框精修,不是玩家人工确认。复核中改正了几类初稿错误:能力框把后方图标也圈进去、只圈了内框、标题被切掉、整框偏位。另外扫描的 240 帧没有完成精修,全部没有用于训练。
- 13 种代表性提示内容(如“重新部署”命令、几件装备、几种法术)从像素逐字抄录,供文字核对;没有用知识库或模拟器补全被遮挡的字。
- 评估用另外两组已曝光来源的 530 帧,与训练组零交集;从未曝光的冻结来源没有打开。所以这是来源隔离的回归,不是新的盲测。
方法
- 检测器:沿用项目已有的 YOLO26n 面板检测训练设施,新增一个单类“通用提示框”模型,不改变原有四类面板模型。原生整图输入,训练尺寸 960,固定 40 轮、固定随机种子,直接用最后一轮权重冻结,不按评估成绩挑模型。
- 稳定选帧:只看当前和过去的像素,不能用底栏按钮变化代替文字变化。策略在 630 帧训练采样上修订了三版:第一版被框外动画干扰,第二版被字形边缘轻微晃动干扰,第三版只在“比较运动”时对框内特征做 5×5 的轻度高斯平滑,而判断是否新内容和 OCR 仍用原始像素(不是读平滑后的文字)。前两版决策都保留。
- 读字:只把选中的当前原图送去 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 秒)均未达到。
Comments