摘要
英雄在战斗中打开法术书,书页上有最多 14 个格子,每格是一个法术:名字、右下角的等级(1–4)、上方的魔法消耗,图标可能变灰,中央可能有冷却数字。本实验先由模型目视看原生画面,把每帧每格都标出来,再用生产读取器(路由器 = 把一张截图分给各个读取器的程序,其中的法术书任务)读同一帧,逐字段比较。
需要说明:原报告的结果段落在写作时没有填写;本文的数字取自实验保存的评分输出。那次评分只覆盖了已标注 140 帧中的 63 帧(读取批次没有全部跑完)。在这 63 帧里:书完全打开时,法术名、等级、消耗没有一个读出错误值;问题全部是“没读到”——个别格子没被提出来,以及开书/翻页动画帧整页不读。
标签纪律: 所有标注值都是模型看原生帧写的(模型目视核对),没有人工审核;下面的数字是“读取器与模型目视标注的一致情况”,不是准确率,也不是人工金标准。
要回答的问题
生产法术书读取器在真实战斗录像上,逐格、逐字段(名字、等级、消耗)表现如何?错误和漏读主要来自什么?
数据与来源
| 来源 | 用途 | 时间线中法术书段数 |
|---|---|---|
| 一段训练录像(10 月 10 日 16:57,前 23 分钟) | 开发集(多数规则在这段上定) | 22 |
| 一段训练录像(10 月 10 日 01:39) | 独立检验 | 49 |
没有打开冻结/留出录像。标注规模:
| 16:57 | 01:39 | |
|---|---|---|
| 条目(原生帧) | 29 | 111 |
| 书完全打开 | 27 | 102 |
| 开/关/翻页动画帧 | 2 | 9 |
| 有悬停说明的帧 | 8 | 40 |
| 有法术的格子 | 319 | 909 |
| 其中名字/等级/消耗看不清 | 9 / 8 / 10 | 34 / 34 / 55 |
| 目视为空的格子 | 80 | 558 |
| 灰色图标格 / 有冷却数字的格 | 76 / 31 | 324 / 319 |
方法
选帧。 对每段法术书,在低分辨率帧库里比较书区域的相邻帧差,跳过开关动画,取最长静止段的中间一帧;没有静止段时取最稳的一帧;悬停时刻各取一帧;同段中明显不同的静止状态(如换学派页)各取一帧(最多 2 个)。再从原录像取原生 2560×1440 帧。
时间对齐问题。 实测发现帧库时间 t 对应的原生帧是 round(t × fps) + 7(约晚 0.23 秒),而不是任务单写的 round(t × fps)。最初一批“悬停”帧因此早了 0.23 秒、说明框还没出现。这些帧照常标注和打分,另按对齐后的帧号补了 17 条悬停帧。有 3 段的帧库时刻全落在动画里,逐帧找到原生静止时刻后补了 3 条;动画帧本身保留、单独统计(实时 App 也可能截到这种帧)。
标注。 每帧记录书状态、学派页、魔法当前/最大、是否敌方回合;14 个格子每格记录有无法术、名字、等级、消耗、是否可用(图标灰不灰)、冷却数字;悬停说明的标题和全文。看不清写未知并注明原因;被说明框盖住的格子只把同段其他帧的值记为参考,不计分。法术名都与游戏知识库目录核对过。
判定。 正确;错误(读出不同的值);未读(找到格子但字段拒读);单格漏检(格子没提出);整页漏检(整页没读);误报(空格被提出)。标注为未知的字段不计分。
设置
每帧调用一次生产读取器(CPU,全部任务),取法术书任务逐格比较。读取分批进行,每批不超过 14 分钟,开批前检查游戏是否在运行,在运行就等待。
结果
已评分 63/140 帧。
16:57,书完全打开:
| 字段 | 正确 | 错误 | 未读 | 单格漏检 | 合计 |
|---|---|---|---|---|---|
| 有法术的格子 | 273 | 0 | 0 | 2 | 275 |
| 空格(无误报) | 74 | 0 | 0 | 0 | 74 |
| 法术名 | 268 | 0 | 0 | 2 | 270 |
| 等级 | 267 | 0 | 2 | 2 | 271 |
| 魔法消耗 | 269 | 0 | 0 | 2 | 271 |
01:39,书完全打开:
| 字段 | 正确 | 错误 | 未读 | 单格漏检 | 合计 |
|---|---|---|---|---|---|
| 有法术的格子 | 158 | 0 | 0 | 23 | 181 |
| 空格(无误报) | 279 | 0 | 0 | 0 | 279 |
| 法术名 | 157 | 0 | 0 | 20 | 177 |
| 等级 | 157 | 0 | 0 | 20 | 177 |
| 魔法消耗 | 157 | 0 | 0 | 17 | 174 |
动画帧: 16:57 的 22 个有法术格、01:39 的 7 个,全部因整页没读而漏检(任务状态为“未检测到”或“拒绝”)。
耗时(CPU,全部任务): 法术书任务本身中位 17.98 秒/7.69 秒(16:57/01:39),整帧墙钟中位 73.15/56.36 秒、p95 128.28/86.37 秒。这是在限核运行下的离线批量耗时,不是实时性能。
失败与负结果
逐例看过原图的漏读原因(共 33 条错例):
- 原因未定的整格漏提: 01:39 原始学派页第 3 行唯一的“天罚”反复没被提出(14 条:3 条逐例看过,11 条按同类归入),图标、名字、等级 2、消耗 40 都清楚,同一法术在“全部法术”页能读;另有一次“赫克斯米拉狂乱”偶发漏提,同一画面另一次读对了。
- 悬停说明框遮挡: 说明框盖住格子时,读取器在说明框文字上提出假格子但没有输出值(5 条);消耗徽章被盖住时整格不提(3 条);正被悬停高亮的格子不提。
- 鼠标指针或战场飘字压字: 指针压在“曙光盔甲”的“光”字上;游戏把伤害数字“-360”画在书上面,盖住半个名字。
- 低分拒读等级: 灰色“审判”的等级 4 徽章与装饰环相接,两次都读出 4 但分数 0.86–0.94 低于门槛。
- 动画帧: 开书、翻页时书倾斜、法术偏离网格,整页不读或被拒。
- 时间对齐公式写错,使一批悬停帧早了 0.23 秒(已补帧,原帧保留计分)。
局限
- 标注全部是模型目视核对,没有人工审核;不是准确率,更不是 ≥95% 目标的证据。
- 只评了 63/140 帧,01:39 的大部分标注(含多数学派页、悬停帧)没有进入评分。
- 16:57 是开发集,规则多在这段上定。
- 读取器不输出“是否可用”“冷却数字”“学派页”“魔法”“敌方回合”“悬停说明”,这些字段只有标注、未评分。
结论与下一步
在已评分的帧上,法术书读取器的问题集中在“漏读”而不是“读错”:特定格子偶发不提出、遮挡、动画帧。下一步应补完剩余 77 帧的读取与评分,查清原始学派页“天罚”反复漏提的原因,并为可用状态、冷却数字等字段补读取器输出后再评分。标注已做成审核页,等待人工逐字段确认。
Comments