摘要

上一个实验(B060)用“分类器首选 + 标准图案匹配一致”来接受英雄、技能、装备、兵种的身份,最新开发组整图从 32 提到 116/130,但英雄头像只有 12/22。本实验(B061)先回到训练来源里的英雄拒判,逐张查看原因,而不是在最新数据上调门槛。

找到的根因:游戏界面里的英雄头像相对游戏资源里的标准图案是旋转过的(例如一个英雄约 +9°,另一个约 −22°),而原来的图案匹配只会平移和缩放,不会旋转。加入基于局部特征点的对齐后,最新开发组英雄从 12 提高到 20/22,所有身份 116 → 124/130,仍然没有误认。

要回答的问题

B060 剩下的英雄拒判是什么原因?能否在不放宽原门槛、不重训分类器的前提下修好?

数据与来源

  • 沿用 B060 的来源分组:7 个训练组、2 个校准组、1 个最新开发组(5 局,算一个已曝光的连续来源组)。没有新增原图、视频或独立来源,历史冻结来源未打开。
  • 训练来源 76 个已知位置:66 个可读英雄头像、10 个非目标角色(控制样本)。
  • 371 张原生截图用于完整回归。

方法

先诊断

逐张查看 B060 训练中剩下的 11 次英雄拒判:头像其实都可见,原因分属三类——分类器有效性门槛、图案几何不匹配、UI 圆框遮挡。

先试了两个简单改法,都没有恢复拒判,结果保留但不进入读取流程:

  1. 更大范围的等比缩放;
  2. 横向、纵向独立缩放。

再用局部特征对齐检查,得到具体解释:两个英雄的头像分别旋转了约 +9° 和 −22°。还有一个英雄(领主鲁弗斯)存在更细的缩放差异和圆框覆盖。没有为了贴合截图去修改游戏知识模块里的标准资源。

新方法:局部特征对齐

SIFT 是一种经典的局部特征方法:在图里找出有辨识度的角点、纹理点,并给每个点算一个描述子,两张图里描述子相近的点就是“对应点”。新做法:

  1. 预先算好标准英雄图案的特征描述子;
  2. 只对分类器前三个英雄候选,把当前裁图与它们的标准图做对应点匹配;
  3. 由对应点估计一个“相似变换”(平移 + 缩放 + 旋转);
  4. 要求足够多的不同匹配点、比例一致、空间分布够开、缩放/旋转在合理范围,并且对齐后的像素相关度够高,才接受。

只在原图案匹配拒绝时补救;原已接受的结果不重做,B060 的角色登记、占用和分类器有效性门槛都保留。相关度不是概率;搜索范围仍只是前三候选,不是对整个目录的独立识别。

设置

  • 通过显式开关 --hero-registration 启用,默认行为、App 和其他模块不变。
  • 训练组上先冻结所有门槛,之后才评估校准组和最新组。

结果

训练来源已知位置:几何方案从 56/66 提高到 62/66,0 误认、4 拒判,10 个角色控制 0 误接受。

371 张完整截图(从解码原图开始,自动定位,参考位置和答案不进入读取器):

参考范围 B060 → B061 正确接受 / 可读身份 误认 / 拒判 / 漏检
原训练及局部试点 314 → 321 / 325 0 / 4 / 0
校准 78 → 79 / 84 0 / 5 / 0
训练邻域局部身份 35 → 35 / 35 0 / 0 / 0
最新开发 116 → 124 / 130 0 / 2 / 4

英雄单列:训练 45 → 52/56,校准 13 → 14/15,训练邻域 10/10,最新 12 → 20/22。最新组的主技能 27/28、装备 43/44、兵种 34/36 保持不变。

最新组总分 124/130 约 95.38%,但英雄 90.91%、兵种 94.44% 仍不到 95%,不能用总分掩盖短板。最新组剩下一个英雄拒判是开场的领主鲁弗斯;另一个英雄以及技能/装备/兵种各一项,来自同一个强淡入页面上整块没检出。

其他输出(UI 几何、场景、占用、等级、原始评分、日志和 4,698 个数值观察)逐项不变,0 读取失败。167 次特征核对新增接受 128 个英雄观察:16 个有旧参考,另外 112 个逐张看原图补审,全部与图案对应。补审时草稿可见,不是盲审,也不测漏读,不并入原 130 分母。

速度:最新 71 张图热启动从文件到 JSON 的 p95 为 1.031 秒,最大 1.217 秒;冷启动 UI 加载 3.862 秒(含特征描述子初始化),OCR 4.995 秒。不含 App 截图、传输和显示。

失败与负结果

  • 等比缩放、独立横纵缩放两种尝试都没有恢复拒判。
  • 训练里仍有 4 次英雄拒判:两次是领主鲁弗斯受圆框影响,两次被原有效性门槛拒绝。
  • 强淡入页面上,局部可读但整块面板没被提出;未知的头部槽仍可能被误判为空。
  • 第一次生成审核联系表时遇到一个用 None 表示的待审标签而中止,已生成的两张保留,改用明确的已审标签重做。
  • 完整测试 7,281 通过、2 个既有失败(与 B060 相同)、6 跳过。

局限

  • 最新组只有 5 局、一个已曝光来源组,不是独立验收。
  • B060 遗留的 748 项新增输出仍待审,本轮补审不抵消它们。
  • 只是 Perception 内部的显式文件工具,没有接入 App 或下游。

结论与下一步

英雄头像拒判的一个主要原因是旋转,局部特征对齐在不放宽原门槛的情况下修复了大部分。下一步:用训练来源的可读/遮挡对照评估局部质量;把“局部可读”和“整页过渡”分开处理;继续补小 UI 框、子技能和各类预览的覆盖。