摘要
这款回合制战棋游戏的战斗画面底部有一条“行动条”:按出手顺序排列每个兵堆的小卡片,第一张卡就是当前该谁行动。屏幕底部还有一个“当前单位头像”。视觉理解模块里有两个相关读取器:
- 行动条读取器:识别每张卡是哪种生物;当主模板分数不够时,会再对卡片内部区域做一次“内区补读”,主模板和内区的首选一致且分数过关时,结果记为“图案一致候选”。
- 行动者读取器:只看第一张卡的主模板,再与底部头像核对,两者一致才输出“当前行动者”。
上一轮冻结验证(B126)发现,20 帧里有 3 帧行动者首卡被判为未知,而同一张卡在行动条读取里经内区补读身份是对的。本实验(内部批次号 B127)做一个窄修复:同一次读取里两个读取器都开着时,行动者可以复用行动条对同一张卡的内区补读结果,再照常与底部头像核对。修复后曝光开发数据上首卡图案正确从 21 升到 23/23,行动者核对从 15 升到 17,没有新增错误。
要回答的问题
- 已有的同帧行动条内区结果能否安全地补上行动者首卡的未知?
- 会不会让本该阻断的情况(比如单位在“等待”)被错误放行?
- 其它输出字段是否保持不变?
数据与来源
- 上一轮 B125 保存的 37 张图的读取输出,来自已曝光的训练来源和旧校准集,其中含 23 条行动条。写协议前已识别出 10 月 4 日 22:15 训练录像中的两帧(1505804 毫秒、1672804 毫秒)属于这个模式:首卡主模板“低分或歧义”,行动条第 0 张卡内区补读为骑兵(参考正确),底部头像也是骑兵且没有等待沙漏,但当前行动者仍“未解析”。其余 21 条行动条首卡与第 0 张卡一致。
- B126 保存的 21 条行动条:已曝光,只作回放,不当新验证,也不用来调参。
方法
只在以下条件全部满足时复用,不新增任何阈值、模型或计算:
- 是行动条的第 0 张卡,与行动者首卡完全相同的框,同一张图、同一次调用;
- 行动条补读状态为“图案一致候选”(主模板与内区首选一致,且过原有的 0.80 分数和 0.03 领先门槛);
- 行动者自己的主模板首选也是同一身份;
- 行动者原本已有的首卡决定不被覆盖;等待沙漏、底部头像未知或不一致时仍阻断。
输出里保留原来的主模板决定,并标明身份来源是“同帧行动条卡片内区”。所属方、实例、操作权限这些语义不变,仍为空。单独请求行动者或单独请求行动条时行为不变;没有跨帧缓存,也不读参考答案。
设置
- 单元测试:复用成功、每一个拒绝条件、等待/不一致阻断、默认组合不变。
- 离线回放已保存输出(不跑推理)。
- 实际完整文件调用:B125 默认 5 张回归图加上述 2 帧,共 7 次,确认生产路径与回放一致。
结果
| 范围 | 首卡图案正确(前→后) | 错 | 行动者核对(前→后) | 等待帧误核对 |
|---|---|---|---|---|
| B125 保存的 23 条行动条(曝光训练 + 旧校准) | 21→23/23 | 0 | 15→17 | 0 |
| B126 保存的 21 条行动条(已曝光,仅回放) | 18→21/21 | 0 | 12→13 | 0 |
- 训练来源中发生变化的正好是协议前识别的两帧(参考为圣骑兵,底部头像一致、无等待)。
- B126 回放中,有两帧首卡变为正确,但因为有等待沙漏仍不绑定行动者;另一帧变为核对。
- 离线回放断言:行动者以外的上下文字段完全不变。
- 实际 7 次完整调用:5 张回归图与 B125 保存输出逐项相同;2 帧只有声明的行动者字段变化,结果为“图案候选已核对”,与回放一致。
- 新增 11 项单元测试;把复用函数换成“什么都不做”的变异检查后,2 项关键测试失败,说明测试确实覆盖了修复。
失败与负结果
本轮没有出现新的失败。已知但未处理的问题:B126 中一帧插入动画的瞬态被放行,需要先在训练来源找到同类样本再设计,不在本修复范围内。
局限
- 这是曝光开发数据上的一致性修复,不是新的独立准确率。
- 首卡图案与底部头像一致,仍只是同帧的图案候选,不证明是哪个兵堆实例、属于敌方还是我方、或谁有操作权限。
- 没有训练、没有改模型、阈值、跳帧规则或 App。
结论与下一步
在不新增门槛的前提下,行动者首卡的未知可以由同帧、同框、已经过原门槛的行动条内区结果补上,等待和不一致的阻断保持有效。下一步需要在训练来源中找插入动画瞬态的同类样本,再设计相应处理。
Comments