摘要

战斗中鼠标悬停在敌方生物上时,游戏会在它旁边显示一块“攻击预览牌”:上一行是骷髅图标加预计击杀数(例如 4-6),下一行是拳头图标加预计伤害范围(例如 431-647(100%))。这些数字是状态估计(SE)的条件伤害参考,读错会给出错误的范围。

本实验(B187)是一组并行标注任务中的一项:为攻击预览数字建立逐牌、逐行的标注集,再给生产读取器打分。到报告记录时,选帧、标注和读取器运行都已完成,但报告的“结果、错例、限制”部分还没有填写,也没有保存评分输出。本文只记录已经完成的部分,不给出正确率。

要回答的问题

生产的攻击预览读取器在真实对局画面上,逐牌逐行读得怎样:正确、错误、拒读(未读)、漏检各多少?是否会在没有牌的地方报出预览?

数据与来源

  • 16:57:10 月 10 日 16:57 那局的前 23 分钟。这是开发集:预览读取规则和局部重读大多在它上面定的。
  • 01:39:10 月 10 日 01:39 那局,雪地地图,作为独立检验。
  • 08:38 那局没有做:当时还没有它的攻击预览时间线。
  • 只读用户选定的训练录像,没有打开冻结或留出的录像。
  • 标注全部是助手目视核对(MODEL_VISUAL_CHECKED),不是用户审核(REVIEWED)。

方法

选帧

  1. 扫描:已有的画面时间线里,每个“攻击预览”片段的每个 2 fps 采样,解码 2560×1440 原生帧,用白色掩码找骷髅图标的峰(阈值 0.55),再用骷髅/拳头模板定位每块牌。模板分数只用来判断“显示得完不完整”,不是标注。
  2. 挑选:片段里有 3 个以上采样时去掉首尾(淡入/淡出)。第 1 帧选完整牌(两个模板分数都 ≥ 0.80)最多、最弱模板分最高、最靠近片段中间的;第 2 帧要离第 1 帧至少 1 秒且牌的位置不同(换了目标或牌数)。没有 ≥ 0.80 的牌时退到 ≥ 0.70(雪地上真牌的拳头分只有 0.72–0.79)。
  3. 负样本:每段录像 8 个随机战斗时刻(离所有预览片段 ≥ 2 秒,固定随机种子)+ 4 个已知会误触发预览线索的时刻。负样本照样目视,看到牌就标牌。
  4. 时间换算:时间线上的时刻 t 对应的视频帧号是 round(t × 29.97) + 7。两段录像 8 个时刻逐帧比对,加 7 帧时像素差最小。
录像 预览片段 选出的预览帧 负样本 合计
16:57 55 61 12 73
01:39 99 106 12 118

盲标

先看不带读取器输出的图:4 帧一张的总图,框出模板定位到的牌并编号,每块牌附 2.5 倍原生裁图;需要时再放大原生像素。全部标完后才打开读取器输出。

每块牌标:击杀行原文、伤害行原文(含百分比)、位置(原生框)、类型(攻击/治疗)、可见度(完整/淡入淡出/部分遮挡)、看到的干扰(背后数量牌的暗数字、白色生物、面板边缘等)。模板没定位到但目视能看到的牌手工加入;分数在 0.70–0.80 之间的模板命中单独出图核对。

录像 有牌的帧 牌 多牌帧 带百分比的伤害行 淡入淡出 / 遮挡 看不清的行
16:57 61 70 3(6 块、4 块、2 块各一) 16 0 / 1 0
01:39 106 119 13(都是 2 块) 7 6 / 0 1

两段录像里都没有看到绿色的治疗/复活预览,所以治疗类型没有样本。

计划中的评分

评分脚本已写好,规则是:

结果 含义
正确 这块牌上的读数与标注原文相同(忽略空格,百分比也要对)
错误 这块牌上读出了别的原文
未读 这块牌上有候选,但被读取器的检查拒绝
漏检 这块牌上没有预览也没有候选
看不清 标注为 UNKNOWN,不计分

另外,中心不在任何已标牌上的预览算“误报牌”;每个预览还会标明来自“整帧 OCR”还是“局部重读”路径。

设置

读取器(生产路由的攻击预览任务)只在用户没有玩游戏时分批运行,每批不超过 14 分钟、限制占用的 CPU 核,游戏运行时等待。

结果

读取器在全部 191 帧上跑完。按读取器自身的任务状态(不是正确与否):

录像 状态 READ(输出了预览) 状态 REJECTED
16:57 61 12
01:39 101 17

这只是“读取器有没有给出预览”的处理状态,没有与标注比对,不能当成正确率。逐牌逐行的正确/错误/未读/漏检计数,在报告记录时尚未填写。

失败与负结果

  • 第一版选帧没有加 7 帧偏移,单帧的预览片段有时取到了牌出现前约 0.23 秒的画面(例如 16:57 的 597.5 秒、665.0 秒看不到牌),已整批重做;旧扫描单独保存,不参与任何结果。
  • 读取器只能在用户不玩游戏时运行,读取过程因此跨越了数小时。

局限

  • 评分没有完成,本文没有任何正确率或错误率。
  • 标注是模型目视核对,不是人工审核;16:57 是开发集,不是独立测试。
  • 没有治疗/复活预览样本;08:38 录像没有覆盖。

结论与下一步

标注集(189 块牌、24 个负样本)和读取器输出都已就绪,评分脚本也写好了,剩下的是运行评分、写出错例清单和限制,并请用户审核标注。