游戏画面分割数据集:四百万掩码怎么标
作者为《部落冲突》画面识别构建了包含 6909 帧、约 420 万个掩码和 1912 个类别的数据集,覆盖建筑、单位及界面元素。标注仅包含对象可见像素,支持 YOLO 分割与 COCO 格式,并按基地划分验证集。
AI 深度解读
Clash of Clans(部落冲突)只给玩家 30 秒观察对手基地:资源在哪、从哪里进攻、哪些位置能下兵,都得快速判断。作者想让模型帮忙读屏,却没找到合适的数据集,于是自己做了一套像素级标注。
这篇最有价值的地方,是展示了一个视觉任务如何落地:先处理遮挡和类别,再避免验证集泄漏,最后从「识别整个基地」里挑出「找下兵边界」这个具体问题,训练模型验证。
游戏读屏,难在认出建筑之外
游戏截图看着熟悉,真正标注起来却很复杂。建筑、城墙、陷阱、石头、树木、装饰、部队和英雄挤在一起,顶部有资源与计时信息,底部还有军队栏。场景物体互相遮挡,UI 又覆盖在场景上。
作者采用的规则是:每个对象都用多边形标出,而且只标实际可见的像素。比如雕像挡住半座加农炮,加农炮的掩码就只包含露出来的那一半。这里的掩码(mask),可以理解成一张标明「哪些像素属于这个对象」的图。
这个选择很关键。模型要学的是截图里能看到什么,而不是猜被挡住的完整建筑长什么样。
类别也不能只分到「加农炮」这一层。作者把建筑等级纳入区分,因为 10 级和 15 级加农炮外观不同;城墙按左倾、右倾、连接等形态区分;部队、英雄和军队栏里的卡片也在标注范围内。最终共有 1,912 个类别。
这让数据集能描述更细的屏幕信息,但也提高了标注和学习的难度。原文没有交代各类别的样本分布,不能据此判断每个等级或形态都有充足数据。
0.996 IoU,验证的到底是什么
数据集覆盖进攻前、进攻中、进攻后三种场景,共有 6,909 帧、约 4.2M 个掩码,提供 YOLO seg 和 COCO 格式。
比规模更值得借鉴的是划分方式:作者按基地划分训练集和验证集,验证集中的基地不会出现在训练集中。同一个基地的不同截图若混进两边,模型可能只是记住布局,验证成绩却看起来很好。
验证集要隔离的,是模型可能记住的对象,而不只是图片文件。
作者首先训练的也不是覆盖全部 1,912 类的模型,而是一个下兵区域模型。游戏用红色边界提示不能部署部队的区域,但基地拥挤时,这条线并不好辨认。
模型先预测禁止部署区域的掩码,再从掩码中提取边界。实现使用普通 U-Net,提供两个版本:
- MobileNetV2 版本,模型大小为 27 MB。
- EfficientNet-B4 版本,模型大小为 78 MB;它还把 UI 单独作为一类学习,减少预测掩码延伸到军队栏的问题。
作者报告,禁止部署区域在验证集上的 IoU 为 0.996。IoU 衡量预测区域与真实区域的重合程度,数值越接近 1,重合越高。
这个结果对应的是「禁止部署区域分割」,不能拿来证明模型已经准确识别全部建筑、等级和部队。原文也没明确说明这个分数属于哪个版本,更没有分别给出两个版本的效果、推理速度或设备测试结果。
我的判断
我认可作者的任务拆解方式。完整读懂基地涉及大量类别,而下兵区域有清楚的输出,也直接服务于观察基地这个需求。先把一个具体问题做通,比一开始就追求全屏理解更容易检验成效。
把 UI 单独设成类别也有道理:军队栏本来就覆盖在游戏画面上,让模型明确学习它,有助于区分界面和场景。不过,原文没有提供加入 UI 类别前后的对照数据,改善幅度仍是作者的经验描述。
0.996 IoU 很高,但它评价的是区域重合。如果目标是准确找到下兵边界,还需要关心局部边缘偏差:一大片区域预测正确,并不保证边界上的每个位置都准确。原文没有给出这部分评估。
另外,27 MB 和 78 MB 是模型文件大小,不能直接推导手机上的延迟、内存占用或耗电。与按颜色提取红线之类的规则方法相比,模型方案是否更划算,原文没有对照实验。它展示了可行性,还不足以替所有类似任务做技术选型。
能拿来做什么
- 做游戏截图或复杂界面识别时,先写清遮挡标注规则,明确只标可见区域,还是需要推断完整对象,避免数据混用。
- 构建截图验证集时,按基地这类实际实体分组隔离,再检查同一实体的不同截图是否跨集合,减少记忆造成的虚高成绩。
- 做 AI 视觉原型时,先选一个能独立验收的输出,例如禁止部署区域,再逐步扩展到建筑类别与等级识别。
- 如果要把识别结果叠加到前端页面上,除了检查区域 IoU,还应单独检查边界对齐,并在目标设备上测量推理延迟。