说明:这个实验目录是一个持续约一周(9 月 23 日—30 日)的研究线,包含五十多份协议和结果文件。本文按因果顺序把它们串成一篇,只引用原报告里的数字。原报告自己的总结是“研究候选,未采用”,因此归为失败实验:其中有真实的局部进展,但主要问题——得到可替换默认流程的、更好的整体结果——没有达成。
摘要
在这款回合制战斗游戏里,战场上的每个兵堆(同种生物的一组单位)都有一个可见的生物身体,脚下有一块小小的数量牌,牌上写着这一堆还剩多少只。要把一张截图变成“对局状态”,程序需要三件事同时做对:找到身体、找到数量牌、读对牌上的数字,并且把牌连到正确的身体上。
这条研究线依次尝试了:
- 用规则(找绿色/黄色血条)定位数量牌 → 训练一个专门的数量牌检测器(4 张比较图 27/40 → 37/40)。
- 两种 OCR(文字识别)读数字的对照:本地视觉语言 OCR 原尺寸单读在 56 个可读数字中读对 54 个,传统 OCR 读对 43 个。
- 身体与牌的配对规则:“双方明显领先才连”在 60 张图上 699 条相符、2 条不符,比“双方唯一才连”多 124 条。
- 多轮身体检测补训(书页遮挡、多来源、局部视图、困难样本):每一轮都是“这里找回几个、那里丢掉更多”,没有一轮整体更好。
- 数量牌的“真假/可读性”分类、面板插画角色区分、书签模板等辅助判断:有的局部有效,有的明显失败。
除了少量显式可选的私有接线,生产默认始终没有更换。所有参考标注都是 AI 助手目视填写、待负责人审核,评估图片大多已在开发中曝光,没有一项是独立验收。
要回答的问题
- 数量牌能否被稳定地找到,包括被遮挡、黄血条、面板边缘的牌?
- 找到牌之后,完整数字能否读对?会不会把装饰、残缺牌读成数字?
- 牌能否连到正确的身体?身体检测本身的漏检和重复框如何影响配对?
- 补训练数据、改尺度、加过滤器,哪些能带来真实、不退步的提升?
数据与来源
- 主要材料来自旧训练来源的录像截图(2560×1440 为主,少数 1920×1080),按整段录像划分训练、开发、回归。所有评估图都已在此前或本线中曝光,属于开发回归;同一局被拆成不同文件名的情况没有完全审计,因此不能称来源独立。
- 关键参考集(均为助手目视、待审核):
- 18 张图 157 块牌:第一个数量牌检测器的训练/验证/比较(按录像隔离)。
- 60 张图 / 18 段录像的“联合参考”:736 块可见牌、688 个可读数字、48 个不可读,734 条单一身体关系、2 条未知;其中 3 张因身体参考争议整张隔离训练(导出 57 图 696 牌)。
- 30 张“新来源”固定窗口图(9 月 19–20 日三段录像):208 块牌、202 个可读数字;后来又补齐身体参考,共 213 个身体框(24 张完整、6 张有存在性疑问)。
- 身体检测的旧开发集:54 张图、715 个身体;另一组 12 张开发图、80 个身体、75 块牌。
- 三份预留的验收录像在整条研究线中从未读取。
方法
整个流程可以想成一条流水线:
- 身体检测器:一个 YOLO 单类检测器(输入 960,分数门槛 0.40),框出每个生物身体。
- 数量牌检测器:一个专门训练的 YOLO 单类检测器(输入 1280,分数门槛 0.10),框出每块牌;重叠框按 IoU ≥0.5 去重。IoU 指两个框交集面积除以并集面积。
- 读数字:对每块自动检测到的牌裁图后做 OCR。对照了 PP-OCRv6 medium(下称“传统 OCR”,原尺寸/放大两遍且分数 ≥0.80 才接受)和本地 PaddleOCR-VL-1.6(下称“VL OCR”,一种视觉语言模型)。
- 配对:根据身体框与牌的相对几何(距离、方向)给出候选;比较“双方唯一才连”“每块牌选最高分”“双方互为第一且分差 ≥0.25 才连”三种规则。
每一轮实验都先写协议、冻结参数,再运行,最后才加载参考评分;评分采用一对一最大匹配(身体 IoU ≥0.5,牌 IoU ≥0.3,并另报 ≥0.5 的严格口径)。完整链指身体、牌、配对、数字全部正确。
设置
单机 RTX 5080、统一 Python 环境。时间数字只覆盖各实验说明的阶段,都不是端到端实时性能。
结果
1. 数量牌定位:从规则到学习式检测器
最初的规则只找绿色血条,漏掉黄色血条下的牌。加黄色候选和浅色字形检查后,5 张图只有 1 张全对(原规则 2 张),还新增背景假框、漏掉一块遮挡蓝牌——没有采用。
随后补全 18 张图中所有可见牌并训练专门检测器:
| 方法(4 张比较图、40 块牌) | 找到 | 漏 | 多报 | 整帧全对 |
|---|---|---|---|---|
| 原绿色血条 | 27 | 13 | 1 | 0/4 |
| 黄绿 + 字形规则 | 32 | 8 | 2 | 0/4 |
| 学习式检测器 | 37 | 3 | 1 | 2/4 |
但在一张密集部署图上,新模型漏 2 块,旧规则只漏 1 块。
跨三段录像 7 张图、58 块牌:检测器直接找到 56/58、0 多报;但实际流程因场景判断把两张战斗图整帧跳过,只读到 33/58。加一个“场景未知时,只要两侧计时器都能读出,就只放行数量牌读取”的局部入口后:找到 33 → 56,可读数字读对 26 → 43;29 张选秀、暂停、断线、桌面反例都未放行。
2. 数字读取
同一批自动裁图(7 图、56 个可读数字):
| 方法 | 读对 | 错 | 拒识 |
|---|---|---|---|
| 传统 OCR 两遍一致 | 43 | 1 | 11 |
| 传统 OCR 放大 4 倍 | 31 | 1 | 23 |
| VL OCR 原尺寸 | 54 | 1 | 0 |
| 两遍 VL 一致且传统 OCR 支持 | 42 | 0 | 13 |
在 30 张新来源图、202 个可读数字上:传统 OCR 原尺寸 184 对、5 错;VL OCR 原尺寸 199 对 / 3 错,放大 4 倍 200 对 / 2 错。放大对传统 OCR 反而有害(184 → 122)。
3. 配对规则
60 张图、718 个模型牌框:
| 规则 | 相符 | 不符 | 拒绝 |
|---|---|---|---|
| 双方唯一才连 | 575 | 2 | 141 |
| 每块牌选最高分 | 704 | 9 | 5 |
| 双方明显领先才连 | 699 | 2 | 17 |
“明显领先”规则保留为研究候选。身体检测器有时对同一生物输出两个几乎重合的框,导致配对被拒绝;在 60 张图上加 IoU >0.90 的身体去重(事先规定选最保守的合格档),多报 13 → 8,配对相符 699 → 704。
4. 数量牌其他尝试
- 补训数据 12 → 68 张图:旧 4 图 37/40 → 36/40,另 7 图仍 56/58。更多数据没有减少漏牌。
- 改推理尺度:同一模型把输入从 1280 改为 2560 后,开发 14 块牌一个都没找到(分数大幅下降);四块分块推理也大量漏检;整图 + 分块只增加假框。
- 整图 + 局部视图混合训练:回归 11 图中混合模型整图推理 97/98、0 多报(严格 IoU 0.5 时 96/98、1 多报),但开发集预先选中的是另一个模型;随后在 30 张新来源图上三个候选各有胜负(旧模型 203/208、开发选中模型 208/208 但 5 多报、混合模型 205/208),没有全胜者。
- 数量牌真假分类(HOG + 颜色特征的逻辑回归):开发集中最低门槛仍拒绝 4/366 个真牌裁区,而一个被读成“2”的装饰假框仍通过——没有满足“不损失正例”的门槛。
- 可读性分类:先把裁区分为“牌存在 / 牌面完整 / 数字可读”三个独立标签(98 个裁区)。旧字形条件拦住 7/9 开发不可读,但误拒清楚的 215;一个小分类器保住 23/23 清楚数字,却在新来源 4 张图上对“完整数量未知”的牌照样出数(5 → 5),还新增误拒正确的 38。补 43 个真实遮挡难例后再训练一次,连最低门槛都会丢一个清楚的 12,未通过。
5. 身体检测补训
| 尝试 | 新 12 图:找到 / 漏 / 多报 | 旧 54 图:找到 / 漏 / 多报 | 说明 |
|---|---|---|---|
| 原模型 | 73 / 7 / 6 | 689 / 26 / 15 | 基线 |
| 两张书页补训 | 73 / 7 / 5 | 675 / 40 / 20 | 书页多报 3 → 0,5 个遮挡漏项不变 |
| 降门槛到 0.1 | 73 / 7 / 10 | 689 / 26 / 29 | 新图无收益 |
| 多来源 + 负例 | 73 / 7 / 2 | 670 / 45 / 18 | 旧图找回 3、丢 22 |
| 整图 + 局部视图 | 75 / 5 / 2 | 682 / 33 / 13 | 找回一个书边身体,但旧图退步 |
| 18 张困难参考 | 73 / 7 / 6 | 679 / 36 / 25 | 30 图回归中数量链 157 → 154 |
一个反复出现的现象:COCO 综合定位分(AP50:95)略升,固定 0.4 工作点却漏得更多——综合分跨多个门槛统计,不能代表实际使用的那一个工作点。
6. 局部重检、距离规则与角色区分
- 数量牌附近局部重检身体:对没有任何身体候选的牌,在其周围裁 1280×720 的原像素窗口再跑身体模型。65 个原漏点中,框覆盖参考点 0 → 47;但完整框评估(26 个完整可见目标、IoU ≥0.5)大窗 22 个合格、1 个配到不合格框、3 个拒绝——“盖住一个点”不等于“框全身体”。
- 悬空身体的距离规则:允许的竖直间隔从身体高度的 0.42 放宽到 0.60,在 60 张图上恢复 2 条正确连接,无退步;0.80 无额外收益。
- 面板插画角色区分:生物资料面板里的立绘曾被当作战场身体。用 OCR 定位面板并检查外观后,三个来源 24 帧中 259 → 250 个身体候选,移出的 9 个框经事后目视均为插画,数量关联无变化。
- 书页与书签:用自动书页范围的“中心包含”规则排除身体会误排真实部队片段;“完整包含”规则又排不掉页签,两者都不采用。书签模板改为双外观 + 内部轮廓遮罩后,五张非模板来源书页从 1/25 提到 24/25 接受正确,但这只是控件定位,不能据此删除身体。
失败与负结果
这条研究线的主要价值在于记录了大量“看起来合理但不成立”的做法:
- 补训 ≠ 改善:几乎每一轮身体补训都在某些图上找回目标、在另一些图上丢掉更多;补数量牌训练数据也没有减少漏牌。
- 改尺度会破坏已训练模型:2560 输入使正确框分数从 0.898 降到 0.009,提示训练与推理尺度不匹配(未做受控重训,不能确认根因)。
- “数字读对”掩盖其他错误:一些图上完整数字链 32/32,但书页左侧可见身体被漏掉、书页标签被框成身体、火焰附近的假牌被读成“2”。
- 同模型两遍同意不等于可靠:两遍 VL OCR 都把被部件遮挡末位的“185”读成“18”;也都对看不清完整数量的牌给出数字。
- 标注也会错:一次跨来源参考中,两块蓝牌最初被标为 200,放大后发现末位被遮挡,应为未知;修正后成绩变化完全来自分母,不是算法提升。
- 工程失败:例如场景特征函数误收 RGB 图像导致 24 帧全部失败、读取器字段名错误导致关联为空、Windows 长路径和临时文件替换的间歇失败。这些都被单独记录,没有算作模型结果。
- 一些阶段只是接线成功:把数字读取接到原生视频解码、支持中断恢复后,51 个裁区的读数与 PNG 阶段逐项一致,完整链仍是 39/41——精度没有变化。
局限
- 所有参考都是 AI 助手目视标注,待人工审核;评估图片均已曝光,不是独立验收。
- 同局异名的来源审计未闭合;三份预留录像从未使用,因此本文任何数字都不能当作独立准确率。
- 只覆盖身体、数量牌、数字和关系;物种、阵营、跨帧身份、地面网格和其余界面元素都不在评分里。原计划的“身体 + 牌 + 网格”四路比较没有运行。
- 软件测试数量(五千余项)只说明代码行为,不代表视觉准确率。
结论与下一步
已经确定的方向:专门的数量牌检测器明显优于血条规则;VL OCR 原尺寸读数优于传统 OCR;配对应该允许拒绝,并对明显重复的身体框去重;“牌存在”“牌面完整”“数字可读”必须分开判断。但在已曝光的开发数据上反复调参已经没有收益,几十轮补训和过滤都没能给出整体不退步的候选。
原报告给出的下一步是:停止围绕同一批曝光图调参;先完成来源/同局隔离审计;从训练来源补齐重叠身体、悬空身体、无牌可见身体、面板边缘和真实遮挡的完整同帧参考;把已通过验证的各阶段合成实际视频任务;最后才用从未参与调参的录像做整帧端到端验收。
Comments