P83 · 数量牌 · 实验记录与相关篇目
局部入口已实跑51图;另10图83个自动裁图比较读字。跨录像56可读数字,VL原尺寸54对,原PP43对;仍1错1漏牌。融合不如单读,未采用;助手待CTO、默认未换、非独立验收。
认出了生物种类,还需要知道这支部队剩多少个。数字写在身体下方的小牌里:只裁身体会漏掉数字,把框一味放大又容易混入邻居和特效。因此我们把身体与数量牌分别找出来,再记录它们可能的对应关系。
想集中看“试过哪些办法、为什么没采用”,可以读配套的 P912 试验与失败笔记。本文保留完整历史结果,配套文按问题讲清取舍。
本章按三个问题展开:牌在哪里、数字是什么、它属于哪个身体。先读方法和原图,再看对应的数据批次;不要把不同批次的百分比接成一条进步曲线。
最新一轮在另三段录像的 30 张固定窗口图上比较。202 个可读数量中,VL 四倍读法读对 200 个,但仍有错字,也会给假框输出数字。因此默认方法未换,身体—牌—网格联合也还没完成。最新比较与全部失败集中放在 P912。
flowchart LR
F[Full battlefield image] --> P[Locate quantity badges]
P --> O[Read visible numbers]
F --> B[Locate creature bodies]
P --> L[Keep possible links]
B --> L
O --> R[Review on original image]
L --> R
图1:找牌、读数和连接身体是三个问题。数字被遮挡时,仍应保留数量牌位置;找到牌也不等于认出了它属于哪支部队。
展开各批次结果索引:30张、32张、七张与历史身体实验
9月24日收尾:另三段录像的30张固定窗口已完成定位与读字比较。 保持同一批自动框,202个可读数量中,PP原尺寸184对、5错、13拒识;VL四倍200对、2错,却也在假框和不可读参考上输出数字。最新方法、全部失败与耗时单独记录。这不是下面32图或旧七图的同一组实验,也未替换默认。身体—数量牌—网格四路联合仍未运行。
最新进展是把已有找牌模型用到P02的全部32张候选,并接入可选视频步骤。四张参考图的41个可读数量,原先16个相符,固定模型后33个;修正一处偏左的人工框后34个相符、7拒识,43处数量位置匹配、另1假框。原评分单独保留,修正标签不算算法提升。另帧已发现21被两次一致读成211,所以默认还不能直接更换。原图与新旧读数保留全部32张与失败;组报告讲接线和下一步。参考待CTO,这不是独立验收。
前一轮先补通数量牌的局部入口,同七张图实际找到的牌从33/58增到56/58。然后保持这些自动框不变,只比较读数字的方法:56个可读数字,原方法43个读对,本地PaddleOCR-VL原尺寸读对54个,仍有1处读错和1块漏牌。读字对照保留了所有失败;这是另一批图,不能与本轮32图合并计分,默认方法没有更换。
此前三张旧图的接线试验中,24个可读数量由19个读对增到22个,另1个拒识、1个漏牌。接线结果保留这组改善;它与本次跨录像复测分别计分。
同样三张图的25对身体—数量牌参考中,现在20对给出与参考点相符的单候选,2对在歧义候选中保留了正确身体;仍有1处漏牌、2处身体漏检。对象关系组记录细节。身体、数字和配对分别计分,不能拿其中一项代替整帧准确率。
数量牌不仅用来读剩余数量,也可能帮助找回漏掉的身体。本篇先解释怎样找牌、怎样读数字,再回看三种历史用法:支持低分身体框、在牌的上方放大重检,以及把“身体连同数量牌”加入训练。身体检测的历史对照在第 6 节。
身体检测的历史结果是:数量牌支持找回了9个原漏检,误检没有增加;但重训联合框模型并没有更好。 这来自另一个固定的75张开发复测图,不与本轮40块数量牌合并计分。
历史训练数据从 23 个视频选出 92 张已审核原图和 968 个身体基准框。颜色与形状规则找到 653 个数量牌候选;文字识别(OCR)和可视复核将它们分为 592 个干净训练候选与 61 个困难项。这里的简单分类器只验证红蓝外观是否容易区分。
1. 身体框、数量牌和联合框服务不同任务
身份分类需要尽量干净的身体视觉;数量 OCR 需要小而清晰的数字牌;检测器训练可能需要单独的 plate 类别;状态表达则需要知道“这个数字属于哪个身体”。把这些都塞进一个大框会混淆训练目标。
因此历史数据中的 968 个身体框原样保留,新字段另存 health_bar_box、plate_box 和 body_plate_union_box。联合框最初用于记录关系和可视化;第 6 节进一步把它作为训练辅助目标,仍不覆盖原身体框。
2. 592 个干净样本怎样得到?
程序先找绿色血条,再检查其下方的红蓝区域,提出 653 个候选框。PaddleOCR 的纯识别模式只读这些局部裁图中的数字,不负责找框。两次读数在 621/653 项上相同;再检查识别分数、颜色歧义并作可视复核,保留 592 个干净项:红牌 345,蓝牌 247。“干净”指通过筛选,不是全部完成逐字审核;下面的 48 项才是数字转写抽查范围。

图 2:拼图展示实际裁图、数字牌外观和来源标识。RED/BLUE 只指红蓝颜色,不代表玩家或敌人。
从不同来源抽查 48 个干净样本,数字 48/48 与画面一致,红蓝外观 48/48 一致。这是标签抽查,不是全 592 项的逐字人工验收。另有 315 个身体没有找到牌,被明确标成 UNRESOLVED_NOT_A_NEGATIVE_LABEL,不能虚构成“该生物没有数量牌”。
3. 红蓝很容易,不代表数量牌已经检测好
最小基线把数量牌缩放到 64×32,提取灰度 HOG 与 HSV 颜色直方图,再用 Extra Trees 区分红/蓝。所有包含原 B12 test 行的视频整段留出,同一视频不会同时出现在训练和 holdout。
| 集合 | 红 | 蓝 | 合计 |
|---|---|---|---|
| 训练 | 303 | 211 | 514 |
| 按视频留出 | 42 | 36 | 78 |
holdout 为 78/78,accuracy 与 macro-F1 都是 1.000。这个满分只说明“已经找准的干净红蓝 crop 很容易分类”。它不能说明全图中有多少数量牌被找到,也不能说明数字 OCR 准确率,更不能推出红色一定是敌人。
4. 一致的 OCR 也可能一起看错
为什么不能只找绿色血条?
2026-09-23 的检查发现,两个漏掉的数量牌上方是黄色血条。旧方法只找绿色,自然没有给读字程序提供这两个位置。于是我们试了一个小改动:也找黄色横线,再检查下面有没有红蓝牌面和浅色字形。字形这里只表示“像有字”,没有识别出具体数字。
在用于设计方法的两张完整战场图里,找到的数量牌从 18/22 增到 20/22,补回了显示 22 和 19 的两块牌,没有多报。但换到预先选好的另外三段旧录像,结果从 20/21 降到 19/21:一块被遮挡、较暗的 135 被字形检查挡掉了。三张图的全部21块可见牌都已标出,读不清的也算目标,不因难识别就从分母里删除。
魔法书边缘的情况也有代价:旧的三处假框消失了,却新增了两处背景假框;原先能找到的一块部分遮挡蓝牌也被过滤掉。因此这个方法留在P912研究区,没有替换生产方法。 “读不出数字”不能直接等同于“这里没有数量牌”。这也促成了下面的整图训练:让模型学习牌的样子,而不是不断要求字更白、更清楚。
整图对照页可切换原方法与新候选、隐藏参考框,并查看运行后补查的错误。六张图都属于已曝光录像,参考待CTO审阅,当时没有用于训练,也不是独立验收。
把整张图标全,再训练只找数量牌的模型
旧标签多由绿色血条规则生成。直接拿它们训练,会把规则没找到的牌当成背景。因此这次先逐张补查:一张后期战斗图原来只有2个数量牌建议,实际能看见14个;另一张从1个补到5个。被翅膀挡住、数字读不清的牌也保留框,完全看不见的则不凭行动条补造。
这次整理了9段旧录像的18张整图、157块牌。12张图的103框用于训练,另一段录像的2图14框用于选模型与分数门槛,最后两段录像的4图40框只用于比较。标签仍是助手审核、待CTO确认;只允许本次研究训练,不等于已经批准进入生产。它们来自用过的图库,不是新视频独立验收。
模型使用本地已有的YOLO26s通用图像预训练权重,只学习“数量牌”这一类。它每次看完整截图并返回框,不需要先给身体框或牌的位置;找到框以后,另一个程序才负责读数字。1280像素方形输入、30轮训练约71秒,没有另建环境。
| 同样四张整图 | 找到的牌 | 漏牌 | 多报 | 全部数量牌都找对的画面 |
|---|---|---|---|---|
| 绿色血条规则 | 27/40 | 13 | 1 | 0/4 |
| 黄绿血条+字形筛选 | 32/40 | 8 | 2 | 0/4 |
| 完整标签训练的检测器 | 37/40 | 3 | 1 | 2/4 |
找到的37块不是靠宽松框凑出来的:把框重叠要求从0.3提高到0.5,仍是37块。三处漏牌都是遮挡位置;唯一多报是同一块红牌被框了两次。总体更好,不代表每张图都更好:密集部署那张,旧方法找到6/7,新模型只有5/7。 这促使我们固定规则补充与去重方案,再用这些已曝光图做开发对照,结果放在下一节。
上轮的书页错例也另行回放:三块清楚牌都找到,但两块部分遮挡牌仍漏掉。五处已知书边/背景反例没有被提议;这些只是局部反例,不证明所有书页都不会误检。接下来先检查重复框和规则互补,再把框交给实际读字程序。
新审阅页提供全部18张原图与标签、四种方法输出、漏牌和多报位置,可单独隐藏参考框。RTX5080上四张图的第二次调用中位约16毫秒,另有解码和首次加载;不含OCR,也不是整条流水线的实时速度。下面继续说明旧数字读取为什么会出错。
61 个困难项包括遮挡、特效、颜色歧义和不完整数字。三处特效干扰甚至让两路 OCR 得到相同的错误答案:1359→135、655→55、6734→134。复核修正最终标签,但原始 OCR attempts 继续保留。
这说明“两路一致”只是筛选信号,不是人工真值。另一个常见风险是邻近生物和重叠特效:proposal 找到一个真实数字牌后,仍需根据距离、血条和战场几何判断它属于哪个身体。
5. 新视频没有人工框,数量牌要自己找
更好的框,是否真的让数字读得更好?
模型有时会把同一块牌框两次。我们先合并高度重叠的框,保留分数较高的一份,同时记录被合并的原框;这种操作叫重复框抑制(NMS)。在四张已曝光比较图里,找到数仍是37/40,唯一重复多报消失了。再让原绿色规则补上模型没覆盖的位置,找到数增加到39/40,没有多报,3/4张图的全部数量牌都正确。这只是固定后处理的开发对照,还需要检查新录像。
接线试验先只用“模型+重复框合并”,没有加入颜色规则补充。三张旧录像截图依次经过身体模型、数量牌模型和数字读取,参考答案只用于事后评分。场景与整屏OCR沿用旧结果,所以这不是重新跑完整视频。
| 同样24个可读数量 | 旧数量牌规则 | 模型框接到同一读字程序 |
|---|---|---|
| 读对 | 19 | 22 |
| 读错 | 1 | 0 |
| 留空拒识 | 0 | 1 |
| 没找到数量牌 | 4 | 1 |
一个具体例子是红牌44:旧框裁出的图被读成447,新框的两次读数分别是低分的47与44,程序因此留空。它没有“读对”,但也不再把错误数字作为一致读数输出。另一个蓝牌135仍没被找到。还有一块牌无法可靠人工转写,模型即使给了数字,也不算正确。
数量牌找到后,身体仍可能漏检或出现两个重叠框,所以关联步骤不能强行选一个。三图25对参考现在20对单候选相符、2对正确身体保留在歧义中;另1处漏牌、2处身体缺失。书页那张只审核了三对清楚关系,另外两块遮挡牌仍漏,不能据此称整张图全对。
原图、数字与连线以及语义时间线展示相同程序输出。单一Python环境分进程运行两套模型,首次接线约17.4秒,续跑约1.2秒保留完成的帧结果;不含旧采样与整屏OCR,也不代表每帧实时速度。没有复制截图或生成视频。这些参考都待CTO审核,默认流程未切换。
换到三段录像后,真正卡住的是哪一步?
上面的结果来自旧小样本,不能直接推广。这次固定三段9月23日录像中的29张候选,模型和门槛都不变;另把预先选好的7张图里所有可见战场数量牌标全,共58块。它们包括开着面板的战场和一张没有数量牌的选技能图。参考仍待CTO审核,没有拿去重训;这些录像以前用于其他UI调试,所以仍不是独立整帧验收。
先让三个方法只看图片、直接找牌,结果是:
| 同样7张图、58块牌 | 找到 | 漏掉 | 多报 |
|---|---|---|---|
| 原绿色规则 | 31 | 27 | 3 |
| 数量牌模型+去重 | 56 | 2 | 0 |
| 模型+去重+绿色补充 | 56 | 2 | 3 |
模型漏掉的两块都被前景生物遮住;另一张图中被英雄面板截断的牌,这次反而找到了。绿色补充没有多找回一块,却增加了3个假框。 因此,上一轮四图上的互补效果没有在这组数据上复现,不能直接把这条补充规则设成默认。
接着跑实际程序,问题更明显:场景识别先决定是否启动数量牌检测。两张确实在战斗的图被判成未知,于是它们的25块牌全部跳过,其中23个数字肉眼可读。实际流程最终只找到33/58块牌,另有2个假框;不能用直接检测的56/58来宣传整条流程。
58块牌中有56个数字可可靠转写:26个读对、1个读错、6个拒识、23个上游跳过。那个错误是书页右侧的11被两次读成1;另外一个假框也被读成了数字。这说明两次放大方式不同、答案相同,仍不等于正确。两块被遮住的参考数字继续留空,不从行动条补答案。
跨录像审阅页展示全部29张原图,七张有完整数量牌参考,可隐藏白色参考框、展开三种方法,并进入原视频时间线。实际身体检测、数量牌和数字读取首次约66秒,续跑约6.4秒;复用了旧场景与整屏OCR,没有复制图像或生成视频,其余22张尚未逐项评分。
这次检查说明,继续换更强OCR之前,先要保证可读区域确实进入了识别。下面这一轮只修改入口,保留原来的模型、阈值和OCR,看看能补回多少。
不知道整张图是什么,仍能只读局部数量吗?
可以试,但不能让一个局部线索放行整张图。新策略只在全局场景仍未知、当前原尺寸图像两侧四个计时都可靠读到时,尝试数量牌模型。场景仍然未知,身体检测和其他UI不会因此启动。 已明确识别的暂停、断线、非游戏或过渡画面仍拒绝。
模型和OCR不变,同七张参考图的结果变成:
| 同一批参考 | 原场景入口 | 新局部入口 |
|---|---|---|
| 找到的数量牌 / 58 | 33 | 56 |
| 假框 | 2 | 3 |
| 完整读对的数字 / 56 | 26 | 43 |
| 读错 / 拒识 / 漏牌数字 | 1 / 6 / 0 | 1 / 11 / 1 |
| 被上游跳过的可读数字 | 23 | 0 |
原先被跳过的23个可读数字,现在17个读对、5个拒识、1个仍因漏牌没读到。入口补通了,但不是所有问题都解决了:蓝牌11→1仍错,绿色补充规则仍产生3个假框,其中一个假框还被读出了数字。两块人工也看不清完整数字的牌另列,不混进56个可读数字。
为检查误放行,还跑了7张选技能图、3张暂停、4张断线、15张桌面,29张都没有启动数量牌检测。连同22张战场候选,共51张实际执行;其中8张未知场景走了局部入口。这不代表所有过渡画面都安全:本轮没有新增真实淡入淡出数据,仍需补这一类反例。
最新审阅页可切换框、展开反例并进入时间线。复用原图和原整屏OCR日志,没有复制图片;最终续跑约6.6秒,51个已完成帧没有重写。这只是续跑时间,不是首次视频处理速度。上述参考仍待CTO审核,来自已曝光录像,不计作独立验收。
接下来分别解决假框、完整数字错误和遮挡漏牌。书页顶部重复显示的魔力(例如163/270)不另做检测与验收;英雄面板魔力和每个法术的消耗仍在各自任务里。
框已经找到了,放大一定会读得更好吗?
不一定。我们固定上面七张图的全部自动数量牌框,再加三张旧图作为回归检查,共83个区域。不补人工框、不改阈值,也不只挑清楚数字:假框、遮挡、漏牌都留下来。程序直接在内存里裁原图,没有保存83张新截图。
原方法使用PP-OCRv6 medium,它只负责读裁图中的字。对照一方面给它补边、放大或转灰度,另一方面换用本地已有的PaddleOCR-VL-1.6。后者是能读图与文字的模型,这里同样只让它抄出可见文字,不根据游戏规则补数字。两者都只接受完整的1–4位数字;不是纯数字就留空。
| 同七张图、56个可读数量 | 读对 | 读错 | 拒识 | 漏牌 |
|---|---|---|---|---|
| 原PP两次一致 | 43 | 1 | 11 | 1 |
| PP补边4倍 | 31 | 1 | 23 | 1 |
| PP灰度补边2倍 | 34 | 0 | 21 | 1 |
| VL原尺寸 | 54 | 1 | 0 | 1 |
| 两次VL一致 | 53 | 1 | 1 | 1 |
| 两次VL一致,且有PP支持 | 42 | 0 | 13 | 1 |
这次换模型比继续放大更有效,但不能只看总数。书边的蓝11,原PP两次读成1,VL两次都读成11;另一块部分遮挡的红牌,参考是13,VL却两次都读成12。还有一块24,VL原尺寸读对,补边后返回了非纯数字内容而被拒绝。同一个模型重复同意,仍可能一起读错。
我们在运行前还规定了一条更严格的规则:两次VL相同,并且至少一种PP读法支持,才保留候选。它挡住了错误的12,却也挡住正确的11和许多PP原本就读不出的数字,最后只剩42个正确读数。因此这条融合规则没有采用,原主读数也没有被覆盖。
七图中的3个假框,原PP有1个吐出数字,VL没有。另两块人工也看不清的参考不计入56个可读数字。旧三图单独评分:24个可读数量,原PP22个读对、VL23个读对,都还有1块漏牌;旧图中另一个不可读牌仍被VL输出150,不算读对,也不能据此断言150必错。全部参考仍待CTO审核,均来自已曝光图片,不是独立验收。
逐项对照页可以直接跳到11、遮挡13和退步的24,查看原图局部及全部原文。RTX5080上,83区域的三种PP输入总计8.32秒,两种VL输入总计32.67秒,包含启动和读图,不含找框或视频解码。统一环境分进程运行,没有新增模型副本。
接下来保留VL原尺寸作为候选,用未参与这轮调试的来源检验它;不靠刚看过的这几个错误继续改规则。半透明过渡图仍要在关键帧质量阶段筛掉,更强的读字模型不能替代这一步。
原颜色规则与历史视频检查
历史数据准备先给程序一个已审生物框,再找它附近的绿色血条。这适合整理训练数据,却不能直接说明新录像上的效果。现在程序在战场内部寻找短绿色横条,检查下方是否具有红蓝颜色,再向下裁出数字区域。上方行动条和下方操作栏不在这个搜索区域内。即使身体检测器漏掉一只生物,它的数量牌仍有机会被找到。
数字识别使用常驻的 PP-OCRv6 medium recognition 模型,分别读取原尺寸和三倍放大的裁图。只有两次得到相同的 1–4 位数字,且各自分数不低于 0.80,才输出数字候选;否则保留两次原文,并将数量留空。两次使用的是同一个模型,不是两位独立判断者。
例如一块红牌先产生位置和红色外观;两次 OCR 都读到“12”后,输出数量候选 12。随后程序根据位置寻找附近身体框,保存一个可能的关联。这个数字不自动成为该生物的真实存活数量,红色也不自动变成“我方”。
两段新录屏共筛出 275 张稳定图,112 张被本地场景模块判断为战场。新增模块在这些图上产生 1,176 个数量牌候选,其中 1,055 个两次读数一致,121 个留空;920 个有身体框关联候选,另 256 个未关联。这里没有重新训练,也没有让算法读取这些帧的参考框或文字。整批属于开发接线,同一军队在很多帧里重复出现,不能按 1,176 个独立样本理解。
本次抽查:清楚数字读取吻合,非牌和遮挡仍会被确定输出
运行完成后,从一个战斗视频中按时间分散选 10 帧,每帧检查四个候选裁图。下面的图只显示原像素和编号,没有把 OCR 答案印在图上。

图 3:40 个实际候选。review-015、review-039 是魔法书边框,却被两次 OCR 都读成“1”;review-019 是地面绿色移动边缘。这些是候选生成的负例,不能作为真实数量牌训练。
逐项转写把 40 项分成三组:
| 抽查分组 | 本次观察 | 能说明什么 |
|---|---|---|
| 32 个清楚数字牌 | 数字全部与参考一致 | 这组已提出、清晰的裁图可正确读取 |
| 2 个无法可靠转写的牌 | 其中一个仍输出确定数字 | 不确定性处理有缺口,不能断言所猜数值必错 |
| 6 个非数量牌 | 两个装饰边框被输出为数字 | 存在非牌错误接受 |
34 个真实牌的红蓝外观也都一致。这次检查没有枚举整图全部数量牌,也没有审核身体关联,因此不能给出定位召回或关联准确率。同一模型的两种输入读取一致,是筛选规则,不是两份独立证据;不能把这三组硬合成一个总体准确率。
这批参考已与算法结果分层放入本地数量牌抽查时间线,保留“助手审核、待用户确认”。框表示本次查看的候选裁图范围,不是精确牌边界。原先 592 个干净训练项仍单独保存,没有用这些预测替换。
6. 数量牌真的能减少身体漏检吗?
找到一个红蓝小牌,不等于找准它上面的身体。我们需要完整比较,而不是只展示几个成功裁图。这里先不扩大标注量,沿用已有身体参考,检查数量牌提供的信息究竟有没有用。
先选对基线,再比较六种方法和一个控制组
旧的生物识别实验同时研究“在哪里”和“是什么生物”,其中 75.39% 是小批次模型的定位 F1,不是召回率。后来扩充数据的 B13 检测器比较 已有更强的身体模型。这里使用它保存的 YOLO26s 身体检测器作为基线;物种分类不在本轮评分中。
第一种变化不重新训练。程序保留所有高分身体框,再看低分框脚下有没有位置合适的红蓝牌:有的话,允许这个低分框成为新增候选。第二种变化针对“全图根本没提到身体”的情况,在尚未对应身体的数量牌上方裁一块局部图,再交给同一个身体检测器。两种做法都分别比较是否要求数字 OCR 两次读数一致。
第三种变化才重新训练。模型同时学习“身体”和“身体连同数量牌”两类框,最后只评身体那一类。这是在测试:训练时多看脚下的上下文,能不能帮助定位身体?它不是把原身体框直接放大,也不是已经训练好了一个独立数量牌检测器。
| 方法 | 比身体基线多用了什么 | 是否重训 |
|---|---|---|
| 仅身体 | 无 | 否,使用冻结权重 |
| 数量牌支持低分框 | 牌的颜色、形状与位置 | 否 |
| 数量牌+数字支持 | 再要求数字两次读取一致 | 否 |
| 数量牌引导局部重检 | 在牌上方放大看身体 | 否 |
| 数量牌+数字引导重检 | 局部重检加数字条件 | 否 |
| 身体+联合框辅助训练 | 训练图里身体和数量牌的联合范围 | 是,原初始化与训练配置 |
另外保留一个“只降低身体分数门槛、不看数量牌”的控制组。否则,即使多找到几个单位,也不能判断究竟是数量牌有用,还是单纯放宽门槛的结果。
例如,身体检测器在某处只给出 0.15 的分数,低于原来的 0.40 门槛,但脚下确实找到了位置相符的红牌。数量牌路线可以保留这个框;数字路线还会检查牌能否读出。如果数字被遮挡,前者可能找回身体,后者则会拒绝它。反过来,数字可读也不能保证身体框大小正确——这正是需要整图评分的原因。
使用哪些数据,怎样避免混比?
训练使用 401 张图、4,588 个身体框;验证使用 54 张图、715 个身体框;固定复测使用 75 张图、969 个身体框。视频保持原来的分区。同一视频内仍有相关帧,而且这批复测图以前已经在 B13 用过,因此这里只称开发复测,不称全新盲测。另有 89 张历史审计图未参与本轮。
这次没有新增人工标注。程序从训练图的已有身体框附近派生出 2,784 个联合框,作为自动生成的辅助标签;剩下 1,804 个身体仍正常参加身体训练,不能因为没有找到数量牌就被丢弃。这些联合框没有被标成新的人审真值。
身体参考沿用先前的助手逐图复核结果,保留原审核来源;这不表示本轮又经过用户确认。推理时只把图片和模型候选交给数量牌模块,参考框仅用于训练或评分。
新增路线的阈值只在验证集上选择,然后固定下来跑复测。主要看找对多少、漏掉多少、误报多少;匹配仍要求原身体框的交并比(IoU)至少为 0.5,也就是预测框与参考框的重合区域达到两者总覆盖区域的一半。联合框不会直接计入身体成绩。
结果:简单的数量牌支持更值得保留
下面每一行面对相同的 75 张图、969 个身体参考。“误检”指未匹配原参考的预测框,既可能是框到了背景,也可能是只框住了真实生物的一部分。
| 方法 | 找对 | 漏检 | 误检 | 召回率 | F1 |
|---|---|---|---|---|---|
| 原身体基线 | 938 | 31 | 33 | 96.80% | 96.70% |
| 只降低身体门槛 | 961 | 8 | 178 | 99.17% | 91.18% |
| 数量牌支持低分框 | 947 | 22 | 33 | 97.73% | 97.18% |
| 数量牌+数字支持 | 944 | 25 | 33 | 97.42% | 97.02% |
| 数量牌引导局部重检 | 947 | 22 | 33 | 97.73% | 97.18% |
| 数量牌+数字引导重检 | 944 | 25 | 33 | 97.42% | 97.02% |
| 身体+联合框辅助训练 | 913 | 56 | 15 | 94.22% | 96.26% |
数量牌支持的精确率为 96.63%,原基线为 96.60%。它让原来的 31 个漏检少了 9 个,约减少 29%;不是整体准确率提高 29%。单纯降低门槛虽然能找到更多目标,却把误检从 33 增至 178,说明数量牌确实提供了比“宽松一点”更有用的筛选信息。

图 4:验证图中的一个成功例子。左侧身体分数约 0.26,未达到原 0.40 门槛;右侧有位置相符的数量牌支持,保留了这个框。橙色虚线是未匹配的身体参考,绿色是匹配预测,青色是算法数量牌。下方放大区只用于解释,不是这条路线的模型输入。
更多信号为什么没有继续改善?
数字条件会拒绝一些真实身体。为分清 OCR 与阈值变化的影响,我们另固定相同的低分门槛,仅开关数字条件:复测从找对 947 个变为 946 个,误检都是 33。在验证集上,它少找对 4 个,只少报错 1 个。因此数字适合用于读数量,本轮不支持把“数字必须读清”设为身体存在的硬条件。
局部重检也没有增加收益。验证和复测分别尝试了 15、22 个未关联数量牌上方的窗口,但没有重检候选同时通过分数与几何筛选。这说明当前“固定窗口+原全图模型”的组合没有奏效;它不等于局部检测永远无用。局部放大后生物比例改变,是后续可以单独验证的原因。
联合框辅助训练少报了一些错,却漏掉了更多身体。它在复测中找回 18 个旧漏检,同时丢失 43 个原来找到的目标,净少 25 个。身体类 AP50:95 也从原来的 70.21% 变为 69.43%;这项指标综合考察不同分数门槛与更严格的框重合要求,避免只看一个工作点。至少在这一轮自动派生标签和训练配置下,不能说把数量牌塞进训练目标就更好。

图 5:验证集中的代价。右侧新增粉色框确实落在生物附近,但只覆盖部分身体,与参考框的 IoU 约为 0.456,仍记为一次误检和一个漏检。数量牌提示了位置,却没有自动解决身体边界和遮挡问题。
复现这轮比较需要的设置
原身体门槛为 0.40。数量牌支持从低分门槛 0.05/0.10/0.20、颜色占比 0.08/0.18/0.30 的九组组合中按验证 F1 选择;最终不带数字路线选 0.05/0.30,带数字路线选 0.20/0.30。只降低门槛的控制组选 0.05,不用数量牌。
联合模型从同一公开 COCO YOLO26s 权重开始,沿用 960 输入、AdamW、batch=nbs=8、30 轮和原数据增强。第 28 轮按验证身体类 AP50:95 选中,身体输出门槛为 0.50。辅助联合框的分数不计入身体指标。这里只跑一个 seed,不能排除训练波动或其他辅助标签定义带来不同结果。
额外的“验证精确率至少 97%”工作点也在复测前冻结,但数量牌路线到复测仍只有 96.63%;验证条件不保证新来源也达标。本轮没有穷尽的数字转写真值,因此 OCR 两次一致的比例不当成数字准确率。
完整的七组输出可在本地逐帧对照页查看,支持左右键、进度条、方法切换与失败筛选。原身体参考、预测、数量牌和数字分层显示,不写回标注。入口也已加入标注网站首页。
7. 下一步补有效性和遮挡判断
先补失败类型,而不是继续堆相似的清晰图。数量牌支持后,复测仍漏 22 个身体,其中 19 个有部分遮挡;雪地图占了 13 个漏检和 17 个误检。下一轮优先选不同视频中的这些完整画面,同时核对身体、数量牌、数字和对应关系,并加入低血量、不可读数字、魔法书边缘与移动高亮等难例。
独立数量牌检测器已经接入可选研究流程,局部入口也已补通。固定裁图比较显示,VL原尺寸能读对更多数字,但遮挡仍会误读;无条件补绿色规则则会带来额外假框。下一步固定候选再检查新来源,并补半透明与遮挡反例,不直接切换默认。红蓝仍只表示外观,敌我关系由同一对局的身份线索建立。
现在不仅有数量牌训练实验,也有实际读数与身体候选接线;但完整身体范围、遮挡和正确绑定仍有缺口。下一轮用有针对性的新数据检验它们,而不是把旧图的小样本进步当作稳定交付。
Comments