摘要

要从游戏截图里读出对局信息,程序先得知道“画面上哪里有什么界面”:例如英雄属性页、生物属性页、魔法书、战斗日志(Logs)这四类面板,以及面板里的元素——英雄头像、主技能槽、子技能槽、装备槽、兵栏槽、法术槽。只有先找到这些位置,后面的读数字、认图标才有地方可做。

用户授权在按录像时间顺序再标注十个对局之后,做第一轮训练。本实验训练了两个检测器(面板、元素)和几个分类器(场景、空/有内容、技能等级、图标身份),并在一组没有参与训练的最新录像上做开发评估:

项目 最新来源结果
四类面板(整张截图) 42 TP / 0 FP / 0 FN
六类元素(已知面板区域内,去重后) 555 TP / 3 FP / 0 FN
英雄头像身份(新分类器) 5/10,比旧匹配器差,不上线

这些是助手标注的开发证据,不是独立盲测;模型只保存为实验权重,没有替换生产模型。

要回答的问题

  1. 用审核过的标注训练的小型检测器,能否在新录像上稳定找到四类面板和六类面板内元素?
  2. 场景分类、“这一帧稳定可读还是在过渡动画中”、槽位空/有、主技能等级这些分类任务表现如何?
  3. 新训练的图标身份分类器能否超过现有方法?

数据与来源

  • 新增十个对局:来自 9 段录像、4 个来源组(10 月 3 日三段旧录像中未标过的对局、10 月 4 日一段录像中的两局、10 月 5 日五段录像各一局)。先核对分段,避免把同一局的多个文件凑成十局。
  • 共 144 张原生截图,129 张接受其声明的可见字段,13 张动画帧、2 张过渡帧被拒收。标注了 201 条日志事件行、256 条魔法条目和 20 个开局英雄头像(含重复观察,不是去重计数)。新来源中装备、技能、子技能、兵种的具体身份没有形成完整的独立真值。
  • 标注流程:算法先给出候选框,助手逐图对着叠加图审核后才准入训练。标注是助手视觉审核,不是独立人工盲审。
  • 按来源分组划分(不按帧随机划分,防止同一局的相邻帧同时出现在训练和评估中):训练 165 帧 / 7 组;校准(用来选 checkpoint)45 帧 / 2 组;最新评估 71 帧 / 1 组,即 10 月 5 日连续五段录像整体留出。另一批更早冻结的测试来源完全不读取。

方法

协议在训练前写定:

  • 面板检测器:4 类(英雄页、生物页、魔法书、日志),YOLO26n(一种小型实时检测网络),从公开初始化权重开始,输入整张截图,只用稳定的已审核场景,包含战场/布阵画面作为负例。选秀阶段的局部英雄面板几何不同且未完整标注,排除在外——这不是“任意游戏界面检测”。
  • 元素检测器:6 类,在显式给定的英雄页/魔法书区域(ROI,感兴趣区域)内检测。空槽和有内容的槽都算元素。被遮挡的魔法书区域整体不参与评估,不当作负例。因为区域是给定的,这个成绩不包含“先找错面板”的路由错误。
  • 槽位分类器:每类槽位分别判断空/有内容;主技能等级用 0/1/2/3 标签。未知的样本排除并计数,绝不当作空。
  • 场景分类器:在审核过的整帧上训练;动画/过渡帧标为“过渡”,前景分类和过渡拒识分开报告。
  • 身份分类器(追加):用冻结的公开 ImageNet ConvNeXt-Tiny 提取特征,再按图标类型分别训练 SVC(支持向量分类器),骨干不微调。

评分:预测框与真实框 IoU(交集/并集)≥ 0.5 算 TP(正确检测),多出来的算 FP(误检),没找到的算 FN(漏检)。另报 AP50 和更严格的 AP50:95(在多个重叠阈值下平均,能反映框边界是否精确)。

设置

  • 两个检测器各训练 40 轮,随机种子 47,图像尺寸 960,batch 8,AdamW;不做翻转、马赛克、混合增强,只做小幅缩放、平移和颜色变化。梯度累积后实际优化器更新:面板 88 次、元素 38 次。
  • 只用旧校准组选最佳 checkpoint;置信度阈值 0.25,每图最多 100 个框。
  • 训练失败的运行也保留。

结果

项目 最新来源结果 说明
全图四类面板 42 TP / 0 FP / 0 FN,52 张(含 10 张负例) 固定 2560×1440 布局
六类元素,原始输出 555 TP / 99 FP / 0 FN,precision 84.86% 20 个已知区域内;主要错误是重复的子技能框
元素 + 同类重叠抑制 555 TP / 3 FP / 0 FN,precision 99.46%,recall 100% 看到错误后的开发跟进
更严格边界质量 去重后 mAP50:95 80.01%,子技能 AP 49.52% 小图标的边界仍不够精确
场景分类 68/71(95.77%) 布阵、英雄、生物各错一张
稳定/过渡判断 58/71(81.69%) 62 张稳定帧误拒 11 张;9 张过渡帧漏拒 2 张
槽位空/有内容 544/544 给定真实裁图,不含定位/路由错误
主技能等级 88/88 只有 0/2/3 级样本,没有 1 级评估样本
魔法身份(追加特征模型) 77/84(91.67%) 最初的 RGB 基线 73/84
英雄头像身份(新分类器) 5/10(50%) 旧匹配器首选候选 9/10

关于“去重”:原始检测输出里同一个子技能常被框两次。之后用项目已有的抑制实现做了一次“同类、重叠 ≥ 0.5 只留一个”的后处理,不调阈值、不重训。这是看过错误之后的开发跟进,原始结果同时保留。剩下的 3 个误检逐一看过原图:1 次把背包里的靴子当成已装备槽,2 次是跨两个兵栏槽的错位框。

面板/元素模型在热启动时 p95 约 18 毫秒,只含模型和预处理,不包括完整路由、OCR、身份读取和界面,不能代替“整帧 ≤ 3 秒”的产品目标。

旧校准组上的身份准确率(追加特征模型):装备 19/27、生物 8/21、技能 16/18、子技能 10/27、魔法 42/52、英雄 1/6。前四类在最新组没有身份真值,无法报告新组准确率。

失败与负结果

  • 英雄头像身份分类器失败:新分类器在 10 张最新头像上只有 5/10,而且必须给出答案时错了 5 个。旧匹配器的首选候选对了 9/10,但它的正式输出是 5 个正确、5 个拒判(不确定时不下结论)。“首选候选 9/10”不等于 9 个正式确认。结论是保留旧方法的拒判机制,不上线新身份分类器。
  • 旧匹配器曾两次把“强大扎克隆”排成“瓦塔娜”作为首选候选;两次正式输出都拒判了,没有自动确认错误身份。这两例保留为回归样例,纠正标签不等于修复了识别。
  • 稳定/过渡判断只有 81.69%,误拒稳定帧较多。
  • 模块全量测试 7157 通过、2 失败、6 跳过;两个失败与上一批相同,是同一进程里已导入 torch 导致的“冷启动边界”断言,没有伪装成全绿。

局限

  • 最新评估组是 10 月 5 日的一个来源组;新批次是 9 段录像里的 10 个对局,不是 10 个独立盲测来源。
  • 固定 2560×1440 布局;框由模板提出再经视觉审核;元素成绩以给定区域为条件;声明的字段不是全屏穷尽标注。
  • 身份评估以“已知类型 + 审核裁图”为条件;分类器分数是原始 margin,不是校准过的置信度。
  • 不满足“所有场景/字段 ≥ 95%”或“十个独立真实对局盲测”的项目验收目标。

结论与下一步

面板和元素检测在最新开发来源上表现良好,可以作为后续读取的定位基础,但只保存为实验权重。身份分类器没有超过现有方法,不上线。后续顺序(由用户掌控节奏):

  1. 补真实裁图的身份真值和扎克隆/瓦塔娜失败回归,优先英雄、技能、装备,对照现有匹配器。
  2. 补稳定/动画难例,改善 11 次误拒和 2 次漏拒,再检查整帧路由错误对字段的影响。
  3. 缩小子技能框的边界误差,区分背包与已装备槽位,补初级技能样本。
  4. 增加不同分辨率、界面缩放和独立来源,最后再制定未暴露的盲测和端到端测量。