摘要
上一个实验(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 圆框遮挡。
先试了两个简单改法,都没有恢复拒判,结果保留但不进入读取流程:
- 更大范围的等比缩放;
- 横向、纵向独立缩放。
再用局部特征对齐检查,得到具体解释:两个英雄的头像分别旋转了约 +9° 和 −22°。还有一个英雄(领主鲁弗斯)存在更细的缩放差异和圆框覆盖。没有为了贴合截图去修改游戏知识模块里的标准资源。
新方法:局部特征对齐
SIFT 是一种经典的局部特征方法:在图里找出有辨识度的角点、纹理点,并给每个点算一个描述子,两张图里描述子相近的点就是“对应点”。新做法:
- 预先算好标准英雄图案的特征描述子;
- 只对分类器前三个英雄候选,把当前裁图与它们的标准图做对应点匹配;
- 由对应点估计一个“相似变换”(平移 + 缩放 + 旋转);
- 要求足够多的不同匹配点、比例一致、空间分布够开、缩放/旋转在合理范围,并且对齐后的像素相关度够高,才接受。
只在原图案匹配拒绝时补救;原已接受的结果不重做,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 框、子技能和各类预览的覆盖。
Comments