战场生物的身体框通常不包含脚下的数量数字。直接扩大生物框会让身份分类看到过多地面、特效和邻近单位;只保留身体框又读不到数量。B032 因此把几种几何分开记录:生物身体、绿色血条、红/蓝数量牌、身体与牌的联合范围,以及未来的网格 footprint。
本轮从 23 个视频均匀抽取 92 张已审核战场原图,继承 968 个 canonical 生物身体框。轻量颜色/形状 proposal 找到 653 个数量牌候选;OCR 和人工复核后得到 592 个干净训练项与 61 个困难项。简单分类器只验证红/蓝外观是否容易区分。
flowchart LR
F[Reviewed battle frame] --> B[Canonical body box]
F --> H[Green health rail]
H --> P[Plate proposal]
P --> O[Number OCR]
P --> C[Red or blue appearance]
B --> R[Body-to-plate relation]
O --> R
C --> R
图 1:身体框保持不变;数量牌从全图单独检测和读取,再用空间关系连接到生物。
1. 身体框、数量牌和联合框服务不同任务
身份分类需要尽量干净的身体视觉;数量 OCR 需要小而清晰的数字牌;检测器训练可能需要单独的 plate 类别;状态表达则需要知道“这个数字属于哪个身体”。把这些都塞进一个大框会混淆训练目标。
因此 968 个 B12 身体框原样保留,新字段另存 health_bar_box、plate_box 和 body_plate_union_box。联合框只是关系和可视化辅助,不会覆盖 canonical body box。
2. 592 个干净样本怎样得到?
绿色 health rail 与红/蓝外观先生成 653 个便宜 proposal。recognition-only PaddleOCR 只识别已定位 crop 内的数字,不负责找框。两路 OCR 在 621/653 个候选上文本一致;经过置信门、颜色歧义门和可视复核后,保留 592 个干净项:红牌 345,蓝牌 247。

图 2:联系表展示实际 crop、数字牌外观和来源标识。英文 RED/BLUE 是外观类别;它们没有被翻译成玩家/敌人。
从不同来源抽查 48 个干净样本,数字 48/48 与画面一致,红蓝外观 48/48 一致。这是标签抽查,不是全 592 项的逐字人工验收。另有 315 个身体没有找到牌,被明确标成 UNRESOLVED_NOT_A_NEGATIVE_LABEL,不能虚构成“该生物没有数量牌”。
3. 红蓝很容易,不代表数量牌已经检测好
最小基线把数量牌缩放到 64×32,提取灰度 HOG 与 HSV 颜色直方图,再用 Extra Trees 区分红/蓝。所有包含原 B12 test 行的视频整段留出,同一视频不会同时出现在训练和 holdout。
| 集合 | 红 | 蓝 | 合计 |
|---|---|---|---|
| train | 303 | 211 | 514 |
| source-isolated holdout | 42 | 36 | 78 |
holdout 为 78/78,accuracy 与 macro-F1 都是 1.000。这个满分只说明“已经找准的干净红蓝 crop 很容易分类”。它不能说明全图中有多少数量牌被找到,也不能说明数字 OCR 准确率,更不能推出红色一定是敌人。
4. 一致的 OCR 也可能一起看错
61 个困难项包括遮挡、特效、颜色歧义和不完整数字。三处特效干扰甚至让两路 OCR 得到相同的错误答案:1359→135、655→55、6734→134。复核修正最终标签,但原始 OCR attempts 继续保留。
这说明“两路一致”只是筛选信号,不是人工真值。另一个常见风险是邻近生物和重叠特效:proposal 找到一个真实数字牌后,仍需根据距离、血条和战场几何判断它属于哪个身体。
5. 下一步先验收标注,再决定是否训练检测器
当前数据量已经足够判断方向,不急着训练复杂的 joint detector。先在可视化网站验收 92 张全图叠框、592 个干净 crop 和 61 个难例;再把数量牌层合并到精选关键帧的完整标注。
若轻量 CV proposal 在新视频上召回足够,就继续用它;若漏牌明显,再用现有 COCO 格式的红/蓝 plate 实例训练独立检测器。无论哪条路线,红蓝只保持外观 enum,敌我关系必须由同一对局的身份锚点建立。
Comments