摘要

游戏的英雄面板上有一排装备槽(头、主手、戒指等)。程序需要回答每个槽“有装备 / 空 / 看不清”。旧的占用分类器是一个二分类 SVM(支持向量机),只有“有装备”和“空”两个答案,看不清也必须二选一。上一轮留下的一个例子:面板正在淡入,背景的火焰穿过头槽,旧分类器判成了“空”。

“空”是一个有信息量的结论(对手没穿头盔),而“不知道”不是。把“不知道”说成“空”会误导后面的状态推断。本实验(内部编号 B062)新增一个可选的“空槽复核”:只有当本图的空槽外观和训练里同类空槽足够像时才保留“空”,否则改为“未知”。

要回答的问题

能否在不损失清楚空槽、不改动其他输出的前提下,把“看不清却判空”改成“未知”?

数据与来源

  • 训练来源:已审核的清晰空槽和有装备裁图,最终空槽参考库 158 个,来自 7 个训练录像。
  • 新采样:在一个训练录像的目标时刻前后 0.2 秒内抽 6 张新帧,加旧中心图;其中两次请求落在同一实际时间戳,去重后为 6 个唯一观察。逐格按当前像素精审,按时间去重后共 84 个位置:17 明确空、45 有装备、8 无法判定、14 页面上根本没有该槽。
  • 回归:原有 371 张完整截图(训练/校准/最新开发三组)。

全部是已曝光的开发数据,新采样只来自一个训练来源,不是独立测试。

方法

  1. 只在原读取器已经判“空”之后运行,不改“有装备”的结论,也不新增身份。
  2. 取本图登记的装备位置,把槽内区域与训练来源里同类槽位的已审核空槽比较距离。
  3. 距离超出训练范围、没有登记位置、没有同类参考 → 改为 UNKNOWN。保存原判断、距离和参考来源;距离不是置信度。
  4. 门槛只在训练来源上用“逐个排除整个来源”的方式定:141 个有外来源参考的清晰空槽最大距离 0.019239,冻结门槛 0.02;237 个有装备对照的最小距离 0.108701。没有看校准和最新组答案后再改门槛。

第一次尝试不分槽型比较,距离无法区分“未知”和“清晰空槽”,已否决。

设置

默认行为不变,需显式传入 --equipment-empty-bank 参数启用。371 张旧图串行重读,不向读取器提供任何参考框、场景答案或占用真值。

结果

新训练局部样本(84 个位置):

指标 原输出 加复核后
可判定占用正确 / 62 62 60
无法判定却声称空槽 / 8 6 0
清楚空槽被拒 / 17 0 2
无法判定位置没有框 2 2
页面不存在却产生装备位置 / 14 0 0

371 张完整截图回归:

已有明确占用参考 清楚空槽保持正确 有装备保持正确
训练 158/158 276/276
校准 40/40 72/72
最新开发 61/61 93/93
合计 259/259 441/441

共 324 次空槽复核,15 个“空”改为“未知”:上述中心图的 5 个位置,以及装备选择页上 10 个圆形控件(它们本来就不是装备槽,是旧检测器的类型误报;复核只阻止了它们声称“空”,不能算修好了框)。其余 3,915 个元素几何、所有身份、日志和 4,698 个数值观察逐字段相等。

时延:最新组 71 张图,从读文件到输出 JSON 的热 p95 为 1.408 秒,最大 1.537 秒;不含 App 截图、传输和显示。

失败与负结果

  • 两个清楚的空槽(主手和圣徽)被保守拒绝。没有改标签掩盖这个损失。
  • 15 个变化中的 10 个是旧检测器把圆形按钮误报为装备槽,本实验没有修正框本身。
  • 上一轮的四个淡入身份位置漏检仍未修复,748 项待审身份也没有减少。
  • 时延比上一轮的 1.031 秒高,但没有做交替对照,不归因于算法。
  • 完整测试 7,290 通过、2 个既有失败、6 跳过;那两个失败是全套导入顺序断言,与上一轮相同节点。

局限

这只是一个显式可选的安全复核,不是完整的局部质量分类器;新采样只来自一个训练来源。项目整体目标(≥10 场独立真实对战、逐场景/字段 ≥95%、App 整链路热 p95 ≤3 秒)均未达成。

结论与下一步

“看不清”终于能和“空”区分开,且旧图上的正确结论全部保留。下一步补更多训练来源的清晰/遮挡对照来降低两个误拒,修复把按钮误认成装备槽的问题和淡入时的缺框;不在最新组上反复调门槛。