《英雄无敌:上古纪元》的竞技场选择页通常提供三个英雄头像或主技能图标。游戏布局虽然固定,本实验不把位置告诉程序。输入是整张截图,目标是找到并命名三个选择。

这是滑动窗口路线最简单的基线:普通代码枚举矩形并裁出像素,公开预训练视觉模型——骨干或特征提取器——把每张裁图变为向量,再与带标签的干净图鉴比较,输出候选框与身份。不进行游戏专用训练,也不学习预测框位置。

Diagram showing a complete screenshot scanned with candidate windows, a crop encoded by ConvNeXt-Tiny, and cosine matching against known icons.

图 1。代码生成矩形,预训练网络提取特征,再检索最相近的已知图鉴。

预期用途是标注初稿:给出三个框和身份,让人快速确认或修正,而非从零画框。检查的七帧中,经常能认对英雄或技能,但不能稳定框紧目标。

这是探索性工程实验,不是准确率基准或生产检测器。七帧太少,也没有完整人工框进行计分,无法估计检测率。

**9 月 3 日项目说明。**本文保留原基线,不把后续运行混入结果。后续分为学习式检测、固定槽位分类与拒识和读取名称。这些解决不同问题,百分比不能放在同一准确率榜单。

1. 输入和目标输出是什么?

输入是一张完整 1920×1078 截图和指定目标类型:Hero 或 Main Skill。主技能指竞技场选择页的大图标,不包括界面中所有小技能图标。程序找三个选择,返回三个矩形,并给每框显示三个最相近的图鉴标签。

候选框是愿意测试的矩形,裁图是其中的截图像素,图鉴是干净参考库:每英雄一个头像,每主技能三个等级美术图。

英雄选择输入 主技能选择输入
Complete hero-selection input example Complete main-skill-selection input example
找到三个英雄头像。 找到三个技能图标。
任务 目标 候选标签 参考图片
英雄 3 个头像 77 英雄 77 头像
主技能 3 个图标 20 技能 60 图标

程序只知道图标大致尺寸,不知道常见行列或坐标。固定布局是背景知识,不是输入坐标表。程序也不能返回少于三个结果,因此没有目标的区域仍可能争到输出位置。

2. 一张截图怎样得到三个建议?

流程把几何与识别分开:代码生成矩形决定看哪里,视觉模型判断框内像什么,网络本身不预测坐标。

五步流程如下:

complete screenshot
  → try many box sizes
  → resize each box to ConvNeXt's 128 × 128 input
  → ConvNeXt creates a 768-number feature vector
  → compare it with known icons

先生成大量候选框

方形窗口扫描整图。英雄边长 128–192 像素,技能 72–132 像素。英雄 128×128 尺寸对应 91 列×49 行=4,459 框。全部尺寸合计每图 21,193 个英雄框或 43,134 个技能框。

尺寸是唯一位置相关提示;每种尺寸仍扫整图,所以称为滑动窗口搜索,而非学习式检测器。

Hero and skill candidate-window sizes drawn at their true proportions inside example screenshots.

图 2。候选尺寸按真实比例画在原截图上。

把每个框变成 768 个数

RoI Align 把不同大小区域采样成固定输入。ConvNeXt-Tiny 来自 ImageNet 公开预训练,没有为本实验训练游戏图标。它把 128×128 裁图变为归一化的 768 维特征,即 embedding:

candidate box → 128 × 128 RGB → ConvNeXt-Tiny → 768 × 4 × 4
              → global average pooling → LayerNorm → normalized 768-D vector

采用 128×128 是因为原候选已较小,英雄 128–192、技能 72–132 像素。放大到 384×384 会增加计算,却不能增加原始像素。本轮没有测量更大输入是否改善准确性。

截图裁图带边框、发光、缩放和压缩;参考图则是放在简单背景上的干净美术图。这种外观差异让匹配更难。

最后逐框比较全部已知图标

程序计算每个候选向量与每个参考向量的余弦相似度。ConvNeXt 特征相近时得分高。每库只有 60–77 个参考,所以直接做全比较。

技能的基础、高级、专家图归于同一名称。每框按最佳匹配排序,**非极大值抑制(NMS)**保留高分框,移除与它重叠超过 10% 的低分框。重叠较小时,同一图标附近两个框仍可能都留下。

最后强制返回三个框,不能说“这里没有图标”。NMS 只能去掉部分重复,不能移动、缩放或修复坏框。

3. 图鉴里究竟有什么?

本轮参考库为 77 英雄各一个头像,20 主技能各三个等级图:60 张技能图、20 个身份。截图只与指定类型的参考比较。

后续审核移除了 Arcane、Daylight、Nightshade、Primal Magic 的四张错误卷轴参考,所以后续实验用 56 张图、相同 20 个技能身份。本文 60 张是原运行记录,不追溯改写。

透明参考先去空白、补边,再放到三种背景上,分别提取向量并平均:

r(entity, level) = normalize(mean(r_dark-blue, r_dark-gray, r_light-gray))

One transparent skill icon placed on three backgrounds, encoded three times, averaged, and normalized.

图 3。三种背景版本平均成一个参考向量。

每技能三个参考,只显示三者最高得分。这是视觉特征比较,不是逐像素模板匹配;尚未单独验证三背景或三等级各自是否改善检索。

4. 穷举搜索有多少计算量?

三张英雄图、四张技能图产生 236,115 个框和 1,525 万次框与参考比较。128×128 运行在 RTX 5080 上耗时 28.77 秒。这是一次运行的计时,不是通用速度基准。

5. 七张截图的观察结果

七张中有近重复,因此只展示三张代表帧。每面板有三个选中框及最近图鉴候选。没有完整审核框集,只能定性观察,不能据此报告 precision、recall 或准确率。

A hero-selection screenshot with three selected boxes and the nearest reference candidates shown below.

图 4。三个英雄身份都正确;框可用,但未完全对齐。

A main-skill screenshot where multiple selected windows survive near the same visual target.

图 5。原始魔法与秘术正确;秘术附近第二个局部框也保留,被误认成日光魔法。

A different main-skill screenshot with three selected regions and their nearest reference candidates.

图 6。三个可见技能身份都正确,但框的位置仍有差异。

图 5 最能说明问题:认出原始魔法与秘术,并不能阻止另一个秘术局部框存活并被标成日光魔法。正确身份证据不保证框完整、唯一。

6. 身份正确为何仍切错框?

**同一个分数回答两个问题。**余弦相似度既决定图标在哪里,又决定它是谁。预训练模型测外观相似,却没被教过完整居中框应比局部框分数高。

**局部框也可能看起来熟悉。**局部细节足以获得高分,平均池化把空间图压成向量,最终表示不明确说明图标是否完整或居中。

**尝试上万框会产生偶然高分。**大量坏框竞争且必须输出三个,无“都不是”选项,无关 UI 也可能入选。尺寸与 NMS 也会出错,需要人工框才能区分识别、定位与拒识失败。

7. 下一实验改什么?

后续训练共享图像模型识别带标签图鉴,再单独学习裁图质量。位置、尺度、补边、边框、发光和背景小幅变化可展示同一身份的正常变体。已完成的后续覆盖英雄、主技能、生物、宝物,不包括法术。

严重切歪或残缺框不应都当作正常身份样本,而应监督独立问题:“图标是否完整且对齐?”身份检索和框质量分别评估,不让一个余弦分数包办。

8. 结论

七帧上,通用 ConvNeXt 经常能检索对可见英雄与主技能,可作为标注起点。主要失败是定位和拒识:局部框也可高分,且流程强制三个答案。下一实验训练游戏图鉴特征、单独监督质量,并分别评分。

继续阅读图鉴训练骨干的滑动窗口检测。它沿用搜索形式,但训练特征并单独学质量;224×224 输入与审核后的图鉴都不同,因此不是本文七帧 128×128 基线的直接重跑。