摘要
战斗中打开法术书时,书页会盖住屏幕中间的大部分战场,只在左右两侧露出一些生物的身体(游戏里同一种生物的一组单位称为一个“兵堆”,在战场上以一个身体形象显示)。这些露出的身体常常只剩一部分,整图检测器容易漏掉。前几个实验的做法是在书页两侧各取一块固定的 768×1152 区域,用一个“局部检测器”再找一遍身体,作为整图检测的补充。
本实验只改变一件事:在训练数据里加入 5 个新训练来源的 16 张书页图、92 个身体,用与上一轮完全相同的配方重训局部检测器,然后按预先冻结的五项门槛验收。
结果有跨来源改善:四个来源的开发集正确定位从 35/59 提升到 41/59,恢复 6 个、原来合格的 0 个丢失。但误报从 4 增加到 6,违反了“误报 ≤4”的冻结门槛。按规则不采用这个候选,原模型、默认读取器和 App 都保持不变。
要回答的问题
只扩大训练覆盖(更多带遮挡的书页身体样本),其余配方不变,能否在新来源上提高书页两侧身体的定位,同时不增加误报、不丢掉原来能找到的身体?
数据与来源
- 训练:原有 401 张图、4,588 个身体,加 5 个训练来源组的 16 张书页图、92 个身体,合计 417 张唯一原图、4,680 个身体。每张新书页图的两侧裁区各重复曝光 8 次(加整图一次),每轮 673 条样本 / 5,416 个身体曝光——重复曝光不是新数据。
- 开发集:上一轮整理的 4 个来源组、10 张图、59 个身体,只做验证。其中部分来源以前用于别的界面工作,因此它不是完全独立的测试集。训练与开发在图片路径、视频和来源组上都不交叉。
- 冻结的测试素材和历史测试集没有读像素、也没进训练。
- 另用原有的 54 张普通战场验证图(715 个身体)检查新权重对普通整图的影响。
方法
训练配方(与上一轮相同)。 从原有战场生物检测模型的最佳权重起步,固定训练 6 轮,批量 8,输入尺寸 960,AdamW 优化器、学习率 1e-4;增强、随机种子、冻结骨干网络前 11 层和 BatchNorm 都不变。固定使用第 6 轮的最后权重,不按验证分数挑选权重、阈值、轮次或种子。只跑这一组。
因为数据变多,每轮的更新次数也变多了(510 次优化机会、506 次真实更新、4 次混合精度跳过),所以这不是“更新次数相同”的纯数据量因果实验。
比较的五种方法(都经过相同的“与面板重叠 ≥0.5 就过滤”和紫 / 蓝成对书签过滤):
- 原整图检测器;
- 原权重只做局部;
- 新权重只做局部;
- 原整图 + 原局部补充;
- 原整图 + 新局部补充。
“补充”的意思是:保留整图的框,只新增与已有框 IoU(交并比)<0.5 的局部框;因此重叠的真身体或坏框导致的失败照样计入。
判定。 分数 ≥0.4、与标注框 IoU ≥0.5、逐图一对一匹配才算正确定位;身体的身份没有评分。
冻结门槛(在跑之前写好):开发集至少恢复 5 个;原来合格的 35 个一个不丢;误报 ≤4;至少两个来源有恢复;每个来源的正确数都不下降。
设置
训练耗时 281.70 秒。骨干网络 11 层共 240 个参数 / 统计张量每轮都审计过,完全没变。
结果
四来源开发集(59 个身体):
| 方法 | 正确定位 | 误报 | 漏检或框不合格 | 精确率 | 召回率 |
|---|---|---|---|---|---|
| 原整图 | 35 | 4 | 24 | 89.74% | 59.32% |
| 原权重只局部 | 23 | 13 | 36 | 63.89% | 38.98% |
| 新权重只局部 | 39 | 2 | 20 | 95.12% | 66.10% |
| 原整图 + 原局部 | 40 | 15 | 19 | 72.73% | 67.80% |
| 原整图 + 新局部 | 41 | 6 | 18 | 87.23% | 69.49% |
“新权重只局部”的 95.12% 只是精确率,它仍漏掉 20/59,不能说达到 95% 识别。采用补充方式时,完整可见的身体 28/28 保持,部分可见的 7/30→13/30,极小片段仍 0/1。
按来源:
| 来源组 | 原正确 / 误报 | 补充后正确 / 误报 | 身体数 |
|---|---|---|---|
| 10 月 2 日两段录像 | 14 / 1 | 15 / 1 | 22 |
| 10 月 3 日晚一段 | 4 / 0 | 6 / 0 | 7 |
| 10 月 3 日上午部分身体 | 4 / 1 | 4 / 2 | 5 |
| 10 月 4 日一段 | 13 / 2 | 16 / 3 | 25 |
门槛逐项:恢复 ≥5(实际 6)通过;原 35 不丢通过;至少两源恢复通过;各源正确数不退通过;误报 ≤4 失败(实际 6)。
训练集上的拟合(16 张、92 个身体,不能当泛化):原整图 48 对 / 19 误报 / 44 漏;新局部 84 / 10 / 8;补充 84 / 24 / 8。训练召回 91.30% 和开发召回 69.49% 差距明显。
失败与负结果
门槛失败的处理。 没有改标签、调阈值或重新定义分母来让门槛通过;候选不采用,也不做无意义的产品接入。
剩下 18 个漏检的根因(逐对象追溯原始候选、阈值、过滤和补充阶段):
- 9 个在原始局部输出里其实有 IoU 合格的框,但分数低于固定的 0.4(最好的约 0.003–0.387)。
- 另 9 个连原始候选里都没有 IoU ≥0.5 的框,包括细衣摆、翅膀片、被遮挡的头部、与书扣重叠的局部身体。
- 这 18 个都不是被过滤器或补充合并吃掉的合格高分候选,所以只改过滤器无法解决。
两个新增误报都是宽边界的重复 / 混合框:一个把红色身体和相邻身体框在一起(与最近标注框 IoU 0.490),一个把身体连同书扣和背景框成一个大框(IoU 0.262),而原来的框本来是对的。但也有相反的例子:另一张图里原来的宽框 IoU 只有 0.450,新的窄框恰好恢复了合格身体。所以粗暴地“被旧框包住就删除新框”会删掉真实恢复,不能用一次包含关系去重掩盖边界问题。
普通整图回归也变差。 新权重在原 54 张普通验证图上:原来 689 对 / 18 误报 / 26 漏,新的 685 / 14 / 30;恢复 9 个、丢失 13 个,净少 4 个正确。前两处退步都是右侧蓝色完整身体失检。冻结骨干并不能保证普通场景不受影响,这进一步不支持替换原模型。
局限
- 开发集只有 10 张图、59 个身体,部分来源以前被看过。
- 只评定位,没评身份、数量、阵营或与攻击预览的关系。
- 没有新的整帧 p95 计时,也没有实际 App 验收。
- 相关测试 50 项通过、各类审计通过,这些是软件和数据一致性检查,不是准确率。
结论与下一步
补充有遮挡的样本确实带来了 6 个跨来源恢复,说明数据覆盖是原因之一;但可见身体的边界学习、身体与界面的分离、两路框的质量判断同样是短板,不是单纯缺录像。
报告决定:停止同配方重训和阈值搜索,优先处理可见身体的几何边界和混合框。下一轮先在五个训练来源的已有精标和冻结的原始候选上,建立可复核的错误集(正确身体、截断身体、身体 + 书扣 / 邻体、纯界面 / 地面,保留未知),重点研究如何区分“局部框修正了旧坏框”和“局部框重复了旧好框”,同时保留真正重叠的不同身体。开发集下次仍称开发集;冻结的测试来源继续封存,不因门槛没过就轮流打开留出集找好分数。
Comments