摘要

我们想让程序在游戏截图里先“框出”英雄、技能、宝物和生物这几类图标,再交给另一个已有的图标分类器去说出“这是谁”。本实验只研究第一步:框得准不准。先拿四个公开的、在照片数据集 COCO 上预训练的通用检测器直接用(零样本,不做任何游戏数据训练),FCOS 表现最好;再把 FCOS 的主干网络冻结、只训练检测头,在 8 帧留出截图上 24 个目标全部框到,定位 F1 为 97.96%。但这只是小规模试点:宝物与生物选择画面的留出帧和训练帧来自同一段录像,不能当作生产准确率。之后在 6 段新录像上的盲看页面只产生了 216 个待人工核对的候选,没有准确率数字。

要回答的问题

游戏是《魔法门之英雄无敌:上古纪元》(Olden Era)。界面上有很多小图标:英雄头像、技能图标、宝物图标、选兵画面里的生物立绘。要自动理解一张截图,第一步是找到这些图标在哪里。

本实验分两问:

  1. 不做任何游戏专用训练,哪个常见的 COCO 预训练检测器最能迁移到这类游戏界面物体?
  2. 用一小批人工确认过的游戏框,冻结主干、只调检测头,能把最好的那个检测器提升多少?

“是谁”(身份识别)刻意分开:检测器只负责给出“这里有个图标”的框(与类别无关,class-agnostic),框里是谁由已冻结的图标分类器(项目内称 B02)去目录里查。这不是一个端到端同时出框又出身份的检测器。

数据与来源

  • 零样本对比:39 张用户确认过的非战斗截图,共 117 个框:英雄 30、技能 30、宝物 27、选兵生物立绘 30。
  • 微调试点:同一批截图按画面切分为训练 27 帧(81 个目标)、验证 4 帧(12 个)、留出 8 帧(24 个)。英雄与技能的留出帧来自不同录像;宝物与选兵生物的留出帧与训练帧来自同一段录像,因此这两类的结果不能说明跨录像泛化。
  • 盲看:6 段录像,每段均匀取 60 个时间点;其中 4 段完全不在标注数据里,另 2 段只在验证/留出中出现过(取的是不同时间点)。保留 18 张时间上分开的高响应帧。这些帧没有标准答案。

方法

流程:截图 → 与类别无关的检测器给出候选框 → 几何过滤(去掉任一边小于 12 像素、或面积超过整张截图 18% 的框,过滤从不使用标准答案)→ 图标分类器在目录里查身份 → 人工核对。

指标先说清楚:

  • 召回率(Recall):真实图标里有多少被某个框匹配到。
  • 精确率(Precision):被接受的框里有多少对准了真实图标。
  • F1:在一个固定分数阈值下精确率与召回率的折中。
  • AP50:把所有候选按分数排序后,以“框与真值重叠至少 50%”为命中标准计算的平均精度。
  • mAP50–95:把重叠标准从 50% 逐步收紧到 95% 后各 AP 的平均,是本实验挑选检测器的主指标。
  • COCO 自带的类别名(如“人”“钟”)全部忽略,只看框的重叠。

实验 1(零样本):四个模型都用 Torchvision 官方 COCO 权重,不在这些截图上训练,也不在这批数据上挑阈值。模型内部候选放到 0.01 分,避免各自内置的后处理阈值偷偷改变比较;报告用统一阈值 0.20。

实验 2(冻结主干微调):把胜出的 FCOS 改成单一“前景”类,冻结 ResNet/FPN 主干,只训练分类、中心度、框回归三个检测头(约 474 万参数),训练 12 轮。在验证集上按定位 F1 选检查点和阈值,留出集只评估一次。

设置

检测器 说明
Faster R-CNN ResNet-50 FPN V2 两阶段检测器
RetinaNet ResNet-50 FPN V2 单阶段,focal loss
FCOS ResNet-50 FPN 单阶段,无锚框
SSDlite320 MobileNetV3 Large 轻量模型,输入 320×320

微调后最佳检查点为第 11 轮;验证集为微调模型选出阈值 0.50,为零样本 FCOS 选出 0.35。

结果

零样本对比(39 张截图,117 个目标,阈值 0.20):

检测器 AP50 mAP50–95 精确率 召回率 F1 GPU 中位耗时
Faster R-CNN 18.32% 7.94% 14.20% 41.03% 21.10% 29.1 ms
RetinaNet 13.29% 4.55% 15.11% 17.95% 16.41% 24.3 ms
FCOS 22.73% 11.89% 9.13% 55.56% 15.68% 24.6 ms
SSDlite320 2.50% 0.81% 11.76% 1.71% 2.99% 27.7 ms

FCOS 的 AP50 与 mAP50–95 都最高。它在固定阈值下精确率很低,但召回更高,给微调留下了更多可用的候选结构。SSDlite 的 320×320 输入丢失了太多小图标细节。

单独看图标分类器:在完美的真值裁图上,英雄、技能、宝物的第一名身份正确率都是 100%,选兵生物立绘只有 53.3%。这说明即使框完全准,生物的身份仍可能认错——定位与身份是两种不同的失败。

冻结主干微调(8 帧留出,24 个目标):

留出结果 AP50 mAP50–95 精确率 召回率 定位 F1 端到端身份 F1
零样本 FCOS 23.08% 11.56% 35.29% 25.00% 29.27% 19.51%
微调 FCOS 100.00% 81.85% 96.00% 100.00% 97.96% 85.71%

24 个留出目标全部被定位,多出 1 个多余框;分类器在这 24 个匹配裁图中认对 21 个。

盲看:在阈值 0.50 下共产生 216 个检测/分类候选。很多高响应帧其实是战斗画面或魔法书覆盖层,而不是训练所用的选择画面,正好构成一次“画面类型变化”的压力测试。目视可见三种情况混杂:框住了法术、宝物、英雄、生物图标的有用框;框在空的魔法书格子或其他界面区域上的框;框位置合理但分类器给出错误身份的情况。

失败与负结果

  • 零样本时所有检测器都很弱,最好的 FCOS 的 mAP50–95 也只有 11.89%。
  • 选兵生物立绘即使给了真值框,分类器也只认对 53.3%。
  • 盲看中出现空格子误框和身份错配;这些只是目视观察,没有计数。

局限

  • 检测的 AP 衡量的是框的位置,不是身份是否正确。
  • 微调数据只够证明“迁移学习可行”,不够支撑生产泛化结论;选择画面布局本身很稳定,宝物和选兵生物的训练/留出来自同一录像。
  • 战斗与魔法书覆盖层只是定性的分布变化样本,尚未标注成真值。
  • 盲看页面在人工审核前没有任何准确率数字;216 个候选都是未经核对的假设。

结论与下一步

在测试的四类检测器里,FCOS 是最好的起点;只微调检测头值得做,但当前分数是“同类布局迁移”的试点,不是最终基准。架构暂时保持两阶段:与类别无关的 FCOS 出框,再由图标分类器给身份。下一轮数据应:先按源录像严格切分再训练和选阈值;从多段录像补充审核过的宝物与选兵生物帧;为战斗和魔法书覆盖层单独建标注集;把审核过的盲看帧升级为真值,并留出更晚的一组录像做下一次测试;检测与身份指标分开报告,再加上端到端 F1。