摘要

战斗中,屏幕底部有一条“底栏”,显示当前行动单位的主动能力,每个能力一个槽位。能力在冷却时,图标上会画一个白色粗体黑边的小数字,表示还要等几回合。读不出冷却,就不知道某个能力何时可用。

本实验(B188)是一组并行标注任务中的一项:在两段训练录像上标注底栏每个槽的能力身份、外观(正常彩色/变暗/冷却扇形遮罩)、冷却数字和是否被选中,然后给生产的身份读取器逐字段打分。冷却数字还没有可用的读取器,所以本实验还做了一个简单的原型。

主要结果:身份读取器在 16:57 录像错 1 处、在 01:39 录像未读 1 处;冷却数字原型在两段录像上都没有读错或误报,但独立录像 11 个冷却数字只读出 8 个。另一个重要发现:“底栏亮着”不能反过来用来判断“轮到我方”。

要回答的问题

  1. 生产的能力槽读取器在真实对局上,身份、槽数、外观读得怎样?
  2. 冷却数字能否用简单方法可靠读出?
  3. 底栏的样子能说明什么(例如是否轮到我方)?

数据与来源

  • 16:57:10 月 10 日 16:57 那局前 23 分钟的战斗段(373.0–1304.5 秒),开发集。
  • 01:39:10 月 10 日 01:39 那局的战斗段(365.5–1797.5 秒),独立检验。
  • 都是用户本人(蓝方)的对局,底栏只显示我方单位;敌方单位的能力和冷却从底栏看不到。08:38 那局没有用。
  • 标注是模型目视核对(MODEL_VISUAL_CHECKED),由 perception1 的并行助手完成;用户审核数为 0。

方法

选帧

只用 960×540 的 2 fps 帧库挑时刻:

  1. 战斗段每 10 秒一帧(16:57 94 帧,01:39 144 帧)。
  2. “能力刚用过”的时刻:没有读日志,而是用底栏自身的线索——槽外金色环(能力被选中、等待选目标)的开始帧和结束后的一帧,以及槽中心亮色数字线索的开始帧。
  3. 为了多拿冷却数字,数字线索持续 ≥ 1 秒的段再取中点。线索也会被鼠标指针和亮色图标触发,所以这些帧里也有负例。

然后按帧号取 2560×1440 原生帧,存无损的底栏条带。

标注

先把读取器输出作为预标注,模型逐帧看原生对照图(防御/等待按钮和头像原尺寸、五个槽放大 2 倍、读取器认出的图标),只记录需要修改的字段。每帧字段包括:底栏是否可见、是否本方回合(看防御/等待按钮)、槽数、兵种组(能力序列相同的兵种无法区分,算一组);每个槽有图标身份、能力名、外观、冷却数字、是否有金色环、是否可用(由画面推出:本方回合 + 正常彩色 + 无冷却数字,不是规则许可)。

16:57(开发) 01:39(独立)
帧 103 160
其中每 10 秒 / 能力时刻 94 / 9 144 / 16
能力槽 174 224
外观 正常 / 变暗 / 冷却遮罩 57 / 113 / 4 49 / 170 / 5
有冷却数字的槽 7 11
本方回合 是 / 否 69 / 34 100 / 59

共 3,922 条标注。同一单位常连续出现很多帧,条目不是独立样本;冷却数字只有 18 个,数值只在 1–4 之间。

冷却数字原型

数字画在图标上部中间,一位数约 11×15 原生像素。原型做法:

  1. 在槽中心周围裁 37×26 的框。
  2. 框内“亮且低饱和”的像素(亮度 > 200、饱和度 < 60)少于 25 个 → 判为“无数字”。门槛只在 16:57 上定:无数字的槽最多 12 个亮像素(鼠标指针压在上面时 61、70),有数字的槽至少 48 个。
  3. 否则只保留亮像素区域,交给现有的文字读取器读原图和 3 倍放大图;两次读数相同、分数都 ≥ 0.8、是 1–2 位数字才采用,否则记“未读”(不当成“无冷却”)。

设置

身份读取器是生产里的私有模块(尚未接进路由),只调用不修改;冷却原型是实验代码。生产读取器自己的冷却字段需要整帧 OCR 的结果,本实验没提供,所以不评分。

结果

读取器与模型目视标注一致的条数(不是准确率):

字段 16:57(开发) 01:39(独立)
底栏可见 正确 103 正确 160
槽数 正确 103 正确 158,错误 1
行身份(全部兵种中找) 正确 89,错误 1 正确 158,未读 1
行身份(只在本局我方兵种中找) 正确 90 正确 158,未读 1
槽图标(全部兵种) 正确 173,错误 1 正确 222,未读 2
槽外观 正常/变暗 正确 170(冷却遮罩 4 不评) 正确 215,错误 4(冷却遮罩 5 不评)
冷却数字(原型) 正确 172,未读 2 正确 216,未读 8

“只在本局我方兵种中找”用的兵种集合来自标注本身,相当于假设调用方已经从准备页知道我方军队,所以是上限,不是独立测量。

冷却原型细分:

16:57(开发) 01:39(独立)
有数字的槽 7 个全对 11 个:8 对,3 未读(都是冷却遮罩上的“1”)
无数字的槽 165 对,2 未读(鼠标指针) 208 对,5 未读(鼠标 3、悬停变亮 2)
读错 / 误报 0 / 0 0 / 0

耗时:身份读取器中位 0.068 秒/帧(只在我方兵种中找时 0.039 秒);冷却原型门槛判断不到 1 毫秒/槽,过门槛后 OCR 约 0.45 秒/槽。

失败与负结果

读取器错例:

  1. 16:57 1063.0 秒:星之子被认成盗墓贼。第 2 槽“星落”图标画得很淡,轮廓分数很低,和盗墓贼的近战攻击槽合起来排到了前面;只在我方兵种中找时正确。
  2. 01:39 1795.5 秒:鼠标指针停在空的第 4 槽上,被当成有内容,槽数错 → 整行拒读。
  3. 01:39 多帧:“不屈石头”这个能力的图标本身就是灰色的,按彩色像素比例判成“变暗”;悬停变亮、被选中时也判错。

冷却原型:01:39 三个冷却遮罩上的“1”两次都被读成“.1”(遮罩亮的半边有残点混进来),被格式检查拒掉。可能的修法是只保留贴着中线的最大连通块,但失败例都在独立检验集里,改了就不独立了,所以没有在本批上改。

“底栏亮着”的误用:读取器判为“亮”的 67 帧全是本方回合,但反过来,本方回合中有 29/60(16:57)和 63/99(01:39)的帧底栏整体是暗的——因为能力在冷却或条件不满足(例如麒麟、凤凰的“觉醒”能力在本方回合大多是暗的)。

另外,运行中有两次和用户玩游戏重叠(补抽 3 帧约 4 秒,冷却 OCR 约 16 秒),违反了“游戏运行时不开重任务”的规则,已记录。

局限

  • 标注是模型目视,不是用户审核;审核页已备好。
  • 冷却数字只有 18 个,分布在 4 个单位上,没有两位数;原型结论很弱。
  • 冷却数字只在“本方回合、该单位正在行动”时画出:同一个在冷却的能力,敌方回合时底栏变暗、不画数字。所以“无数字”不等于“不在冷却”,敌方单位的冷却在底栏上永远看不到。
  • “能力刚用过的时刻”是用底栏线索找的,可能漏掉没有金环的瞬发能力。
  • 条目高度相关,不能当独立样本或准确率。

结论与下一步

身份读取器在两段录像上基本可靠,错例集中在淡图标、灰色图标和鼠标指针。冷却数字可以用“先判亮像素、再读字”的简单办法读,在这批数据上没有读错,但样本太少。读取器设计上应注意:判断是否轮到我方要看防御/等待按钮,不要看能力槽亮不亮;鼠标指针应单独检测后排除;普通能力槽上的金色环目前没有字段。