摘要

在这款战棋游戏里,战场上每个兵堆(一群同种生物)脚下都挂着一块小牌,上面写着这一堆还剩多少个体,我们叫它数量牌。牌是红色或蓝色的,旁边还有一条绿色的短血条。数量牌颜色鲜明、形状固定,比生物本身的造型容易找。本实验问:能不能用数量牌当“锚点”,帮身体检测器找回它漏掉的部队?

先做数据:从已有审核数据里抽了 92 张原图、23 个视频来源,得到 592 个干净的数量牌样本(红 345、蓝 247)。然后做七组对照:在原身体检测器给出的低分框里,只保留脚下有数量牌支持的那些,漏检从 31 降到 22、误检仍是 33;直接放低阈值虽然漏检只剩 8,误检却暴增到 178;把“身体+牌”联合框作为辅助类别训练则漏检变成 56,没有采用。

要回答的问题

  1. 数量牌能否用很便宜的图像处理(颜色、血条、文字识别)稳定定位?
  2. 它能否在不增加误检的情况下,找回身体检测器漏掉的部队?
  3. 把数量牌加进检测器训练,是否比只训练身体更好?

数据与来源

  • 身体框沿用之前人工/助手审核的数据,定义不变。新加的数量牌框、血条框、“身体+牌”联合框都单独保存,绝不覆盖原身体框。
  • 数量牌训练数据(9 月 9 日):按视频均匀抽取 92 张原图、23 个来源,复用 968 个身体框。绿色血条锚点产生 653 个数量牌候选;用两路只做文字识别的 OCR(光学字符识别)读数字,再经置信度、颜色歧义门槛和目视复核,得到 592 个干净样本,另有 61 个遮挡/歧义的困难项单独保留。315 个没找到牌的身体被明确标为“未解决”,不当作“没有牌”的负例。
  • 两路 OCR 在 653 项中有 621 项文字一致。48 个跨来源干净样本目视抽查,数字和颜色都是 48/48。另有 3 个被特效干扰的一致误读被人工改正(例如 1359→135),原始读数保留。
  • 检测对照(9 月 12 日)沿用上一项检测器研究的划分:训练 401 帧/4,588 个身体,验证 54/715,测试 75/969,历史审计 89/1,017(不用)。这 75 张测试图以前已经报告过,所以本次是来源隔离的开发复测,不是新的盲测。
  • 所有新标签都等待用户验收;数量牌和联合框是由规则自动派生的弱标签。

方法

简单的颜色分类器

64×32 灰度 HOG(方向梯度直方图)特征加 HSV 颜色直方图,用 ExtraTrees 分红/蓝。所有包含旧测试行的视频整段留出。

七组检测对照

基线是之前冻结的 YOLO26s 身体检测器(阈值 0.40)。其他路线:

  1. 只降低身体阈值:不看牌,把阈值降到数量牌路线选出的 0.05。用来回答“收益是不是只来自放低门槛”。
  2. 数量牌支持低分身体:高分身体框全部保留;低分(≥0.05)的框只有在下方有颜色占比 ≥0.30 的数量牌几何支持时才加入。
  3. 数量牌 + 数字支持:在 2 的基础上还要求两次独立 OCR 读到一致的数字(主工作点低分门槛 0.20)。
  4. 数量牌引导局部重检:在还没有对应身体的牌上方裁一个 480×480 的局部窗口,用同一个身体检测器再检测一遍,坐标映回原图;分有无数字条件两种。
  5. 身体 + 联合框辅助训练:同样的初始化和训练设置,多加一个“身体+牌联合框”类别;评估时只看身体类。

阈值网格只在验证集上选(新增身体分数 0.05/0.10/0.20,颜色占比 0.08/0.18/0.30),选择文件保存之后才开始处理测试图。推理时不使用参考身体框、参考数字或物种名称。

设置

匹配规则:预测身体框与参考身体框 IoU(交并比)≥0.5、一对一才算找对。扩大后的联合框不参与身体评分,也不评价物种识别。

结果

红/蓝分类器:训练 514 个、来源隔离留出 78 个(红 42、蓝 36),留出准确率 78/78。这只说明“已经裁好的干净牌”颜色容易分,不是数量牌定位的召回率,更不说明红蓝就是敌我。

七组检测对照(75 张测试图、969 个身体):

路线 找对 TP 漏检 FN 误检 FP 精确率 召回率 F1
冻结身体模型 938 31 33 96.60% 96.80% 96.70%
只降低身体阈值 961 8 178 84.37% 99.17% 91.18%
数量牌支持低分身体 947 22 33 96.63% 97.73% 97.18%
数量牌+数字支持 944 25 33 96.62% 97.42% 97.02%
数量牌引导局部重检 947 22 33 96.63% 97.73% 97.18%
数量牌+数字引导重检 944 25 33 96.62% 97.42% 97.02%
身体+联合框辅助训练 913 56 15 98.38% 94.22% 96.26%

数量牌路线找回 9 个旧漏检(分布在 9 帧,8 个清晰、1 个部分可见),没有丢掉原来的正确框。漏检减少 29.0%,但召回只提高约 0.93 个百分点,不能说成“准确率提高 29%”。

验证集(54 帧、715 个身体):基线 689/18/26(TP/FP/FN),数量牌 696/20/19,数字条件 692/19/23,联合训练 682/20/33。新增的 2 个误检框都贴着真实单位、只覆盖部分身体(与最近参考的 IoU 为 0.456 和 0.392)。

身体类 COCO AP50:95:基线验证/测试 69.19%/70.21%,联合训练 69.11%/69.43%。

失败与负结果

  • 联合框辅助训练没有胜出:它在测试集找回 18 个旧漏检,却丢了 43 个原来的正确框,净少 25;精确率更高,但不符合本轮“少漏检”的目标。
  • 数字不是身体存在的必要条件:在同一工作点只加数字门槛,测试从 TP 947 变成 946。OCR 仍负责读兵数,但本轮不支持用它否决身体候选。
  • 局部重检没有额外贡献:验证/测试各有 15/22 个窗口,没有一个候选同时通过分数和几何筛选。这只否定当前这套窗口和模型组合,不证明局部检测本身没用;“局部图比例与训练图不同”只是待验证的解释。
  • 第一次联合训练因最佳权重保存的接线错误而失效(约 17.4 分钟),原样保留且没用于任何结果;修复后重跑约 17.9 分钟。
  • 数量牌路线在测试集仍漏 22 个身体,其中 19 个是部分可见;雪地图占 13 个漏检和 17 个误检,该地图精确率 90.81%、召回 92.82%。

局限

  • 测试图以前报告过,是开发复测;参考是已有助手复核,不是本轮用户新确认。
  • 数字两次一致:验证 451/487 个候选、测试 576/647;没有完整的数字真值,所以不报 OCR 准确率。
  • 独立的数量牌检测器、只用联合框的模型、脚下六边形格子上下文、身份分类裁图对照和端到端绑定都没有执行。
  • 验证阶段线索/OCR 曾与训练共享 GPU,耗时不能当延迟基准。
  • 在验证集上冻结的“精确率 ≥0.97”次要工作点,到测试集数量牌路线只有 96.63%,不能当作上线保证。

结论与下一步

“数量牌担保低分身体框”是一个便宜、有效的补漏手段,值得继续;联合框辅助训练暂不采用;没有切换默认模型,也没有改公开的观察输出格式。下一步优先人工核对来源不同的雪地图、拥挤和遮挡帧,同时标身体、数量牌、可见数字、不可读状态和对应关系,并保留空血条、非牌装饰、身体局部等负例。看过的这批图只作开发回归,不重新包装成盲测。