实测 · 2026-09-03 夜 · 2026-09-04 补全片回合数与产品化后数字
昨天的调研说"改看人为主、听声为辅"。今晚用两条真实业余单打视频、人工打的金标,把现行声音法和看人法放在同一把尺子上量了一次。这页是第一版数字,全片回合数对比已在次日早补上(03b 节)。
本机现成素材里没有"正后方居中架高"的理想机位,选了最接近的两条。9 月 2 日拆解用的那条 B 站视频,看原图才发现其实是后方角落斜拍,正好是最初问的那种难机位;YouTube 那条是正后方略偏右、略架高、60 帧,是手头最容易的素材。


没有公开的业余逐拍标注,所以自己标。工具是"连续逐帧条":每 0.1 秒一格,近端球员一行、远端球员一行,从每个球员自己的裁剪框里看挥拍动作,逐拍记下时刻和是谁打的。快速网前对拉处两拍只隔半秒,人眼也只能定到正负 0.2 秒,这些拍标为"存疑",评分时不奖不罚。

| 素材 | 标注窗口 | 回合 | 确定的拍 | 存疑的拍 | 备注 |
|---|---|---|---|---|---|
| B 站 · 角落 | 40~66 秒、70~76 秒 | 3 | 22 | 3 | 76 秒后远端大段跟丢,没往后标 |
| YouTube · 正后方 | 0~46 秒 | 4(首尾两个不完整) | 25 | 15 | 一个 17 拍的网前快速回合,存疑拍集中在这里 |
评分口径:预测的拍落在金标拍前后 0.35 秒内算对。查准 = 报出来的拍里有多少是真的;查全 = 真的拍里有多少被报出来;综合分是两者的调和平均,满分 100。"谁打的"只对看人法有意义。
| 方法 | 查准 | 查全 | 综合分 | 谁打的 | 回合数(金标 3) | 每回合拍数(金标 10 / 7 / 8) |
|---|---|---|---|---|---|---|
| 现行声音法(全片固定门槛) | 56 | 41 | 47 | — | 4(切碎了一个) | 6 / 3 / 4 |
| 声音法 + 音画偏移校正 | 80 | 55 | 65 | — | 4 | 7 / 3 / 3 |
| 看人:持拍手臂动作峰值 + 交替 + 配对规则 | 76 | 73 | 74 | 15 / 16 | 3 | 8 / 5 / 8 |
| 看人 + 声音确认 | 76 | 73 | 74 | 13 / 16 | 3 | 8 / 5 / 8 |
| 方法 | 查准 | 查全 | 综合分 | 谁打的 | 每回合拍数(金标 10 / 17 / 6 / 4) |
|---|---|---|---|---|---|
| 现行声音法 | 92 | 48 | 63 | — | 4 / 7 / 4 / 1 |
| 看人:持拍手臂动作峰值 + 规则 | 55 | 68 | 61 | 14 / 17 | 11 / 6 / 5 / 5 |
| 看人 + 声音确认 | 65 | 68 | 67 | 13 / 17 | 11 / 6 / 5 / 5 |
怎么读这两张表:角落素材上看人法比声音法高 27 分,和昨天调研里"画面校验能提 15~30 分"的文献数字吻合。正后方素材上没拉开,问题出在那个 17 拍的快速回合:规则法只数出 6 拍。这说明看人法的短板不是机位,是"半秒一拍的网前对拉",需要更聪明的判据而不是更好的素材。
YouTube 那条 7 分 20 秒的全片姿态跑完了。参照是我从每秒一帧的缩略图人工数出的回合,边界只能定到正负 2 秒,31 个里有 25 个有把握、6 个拿不准(可能是 0 个也可能是 2 个)。
| 方法 | 数出的回合 | 对上人工的 | 其中有把握的 | 多出来的 | 漏掉的 | 全片拍数 |
|---|---|---|---|---|---|---|
| 人工参照 | 31 | — | 25 | — | — | — |
| 现行声音法 | 19 | 19 / 31 | 14 / 25 | 0 | 12 | 148 声 |
| 看人法(规则版) | 37 | 27 / 31 | 22 / 25 | 10 | 4 | 297 拍(近 165 / 远 132) |
怎么读:看人法找回合的查全率 87%,声音法 61%,漏掉的 12 个回合里 11 个是有把握的真回合。看人法的毛病在另一头:多出来的 10 个里,大多是把一个长回合切成两三段、或者把捡球时的挥拍当成了小回合。这正是卡里"回合结束判据"要治的(两人停下或出现捡球姿势才算结束,不只看拍与拍的间隔)。声音法的"对上 19 个"有水分:它把 6 秒内的响声合成一串,相邻回合常被合并,一段合并区间只算对上一个。
Codex 已把这套方法接进正式流程(R1 两人身份与挥拍候选,R2 管线接线)。下面是用正式流程、而不是我的原型脚本,在 Mac 上跑两条整片的结果。
| 素材 | 走的路径 | 回合 | 全片拍数 | 金标窗综合分 / 谁打的 | 姿态阶段耗时 |
|---|---|---|---|---|---|
| YouTube 正后方 7 分 20 秒 | 看人法 | 32(人工 31:对上 27、多 3、漏 4) | 170(近 79 / 远 91) | 51 / 80% | 3503 秒 = 时长 8 倍 |
| B 站角落 4 分 57 秒 | 退回声音法 | 9(同旧版) | — | — | 446 秒 |
验收结论:有条件通过。接线是对的,数据契约落地,退回机制可用。但离"能上产品"还差四件事,全部写进了下一张卡(R4):
另有一个和本卡无关但影响体验的数字:32 个回合的集锦合成花了 3715 秒,是整条流程里最慢的一步,另立卡处理。
| 素材 | 走的路径 | 回合 | 全片拍数 | 金标窗综合分 / 谁打的 | 姿态阶段 |
|---|---|---|---|---|---|
| YouTube 正后方 | 看人法 | 32(人工 31:对上 28、多 2、漏 3) | 279(近 133 / 远 146) | 63 / 75% | 2502 秒 = 5.7 倍 |
| B 站角落 | 看人法(自动区域生效) | 18 | 144(近 70 / 远 74) | 38 / 67% | 1557 秒 = 5.3 倍 |
正后方一切在往上走。角落素材第一次走上看人路径,但金标窗只有 38 分,逐层查下来:姿态质量和固件一样好;候选和规则也没问题,被漏掉的那个回合在规则阶段 9 拍找到 7 拍,把同一份姿态配整片声音重跑一遍能到 71 分。丢失发生在整片运行时的身份选择环节,而且中间产物没有落盘,没法回放。身份选择有三处实锤毛病:远端锁在一个静止的观众上、近端球员被同时当成远端、开头两秒选错人。另外击球声门控在角落素材上是拖后腿的:只用规则 88 分,加了门控 77 分。这些都写进了 R5 卡。
| 素材 | 回合(R4 → R5) | 金标窗综合分 / 谁打的(R4 → R5) | 判定 |
|---|---|---|---|
| YouTube 正后方 | 32 → 19(人工 31;6 个区间各吞并 2~7 个真回合) | 63 / 75% → 49 / 82% | 回退 |
| B 站角落 | 18 → 10(两段各吞并多个回合) | 38 / 67% → 61 / 91% | 拍数进步,回合合并过头 |
R5 的"身份选择三修"在角落素材上是正贡献(远端覆盖 62% 升到 76%,综合分翻了近一倍),但在正后方素材上把远端选错了 29% 的时间,开头六秒锁在一个底线外的小个子背景人物上。R5 的"回合结束判据"改成"两拍之间有人在跑就算还在打",把回合间捡球、回位的走动都当成了还在打,两条素材的回合数都合并过头。这两条打回,写成 R7;同时第一次给"身份选择"本身做了回归固件(逐帧所有人 + 正确答案),以后这一步不能再靠整片跑完才发现。
另有一条:R5 的子计时揭穿了慢的元凶,每读一帧都先跳转再读取,Mac 实测比顺序读慢 51 倍,姿态阶段 2500 秒里约 2100 秒花在这上面。R6 卡专修这一条,顺带让战报先出、集锦在后台合成。
| 正后方整片 7 分 20 秒 | R2 | R4 | R6 |
|---|---|---|---|
| "看两个人的挥拍"耗时 | 3503 秒(8.0 倍) | 2502 秒(5.7 倍) | 1197 秒(2.7 倍) |
| 其中解码 | — | 约 2100 秒 | 40 秒 |
把"每帧先跳转再读"改成顺序读,解码几乎归零,姿态阶段进了 3 倍预算。剩下的时间是检测和姿态两个模型本身,再往下要换轻量模型或放宽检测间隔,属于下一档。同时战报现在先出,集锦在后台合成,用户不再等最慢的那一步。
| 素材 | 回合(R4 → R5 → R7) | 金标窗综合分(R4 → R5 → R7) | 判定 |
|---|---|---|---|
| YouTube 正后方 | 32 → 19 → 27(人工 31,对上 29、多 0) | 63 → 49 → 49 | 回合修好,拍数未回 |
| B 站角落 | 18 → 10 → 14 | 38 → 61 → 46 | 拍数回退 |
回合边界 v2 生效:正后方从 19 回到 27,合并阶段不再丢拍。但两条素材的拍数都卡在“远端选人”上:R7 的身份回归测试用的是无状态姿态模型产生的候选人,产品里真正跑的两球员跟踪器候选集不同,测试 97.9% 通过而产品照错。R8 把测试改成用替身模型回放、走产品真实路径,第一次就抓到了根因:检测框带留白的高度(253 像素)被拿去套姿态身高上限(198),真远端球员被扔掉,背景小人反而通过。同一次也发现我做的“正确答案”固件在 7 到 14 秒标错了人(底线外旁观者),已修正。
| 素材 | 回合 | 金标窗综合分 / 谁打的 | 远端覆盖 | 姿态阶段 | 判定 |
|---|---|---|---|---|---|
| YouTube 正后方 | 29(人工 31:对上 28、多 1) | 60 / 75% | 92% | 1208 秒,2.7 倍 | 达标 |
| B 站角落 | 15 | 30 / 100% | 76% | 812 秒,2.7 倍 | 回退 |
正后方第一次同时过了三条线:回合数贴近人工、金标窗 60 分、速度 2.7 倍。角落却掉到 30 分:41 到 48 秒远端球员明明在落盘的区域里,却一个都没选上。原因和上一轮一模一样,正后方有走产品路径的回放测试,角落没有,修一条就坏一条。R9 把角落也做成回放测试(全员固件已入库),并顺手核实了角落的"正确答案":几秒标成远端的其实是坐着的观众,已清掉。
| 素材 | 回合 | 金标窗综合分 / 谁打的 | 远端覆盖 | 判定 |
|---|---|---|---|---|
| YouTube 正后方 | 29(人工 31:对上 28、多 1) | 60 / 75% | 92% | 达标 |
| B 站角落 | 14(丢失的回合已找回) | 65 / 92% | 91% | 达标,历史最高 |
两条素材第一次同时过线。从 9 月 3 日夜的原型(角落 74 分对声音 47 分,只在 36 秒的窗口上)到今天,产品链跑完整片:回合数贴近人工、每一拍带"谁打的"、远端球员九成时间跟得住、速度进了 3 倍预算。这个版本可以替换现行的击球声计数。
还没做完的:角落素材的回合仍有合并过头(缺人工参照,待标注);集锦合成阶段的球标注子进程在 Mac 上会挂死,与本线无关,另立卡;速度再往下要换轻量模型。另有一个环境教训:Mac 的"文稿"文件夹走 iCloud 且磁盘将满,系统会把仓库里的视频甚至源码悄悄云端化,程序一读就假死,今天下午的三次"挂死"全是它。
脚本和金标都在本机会话目录里(姿态提取、两人身份选择、信号计算、金标连续条、评估各一个脚本),产品化时整体搬进仓库。
2026-09-03 夜 · 本页数字来自两段各 45~60 秒的标注窗口,样本小,只能看方向不能看小数点;金标由一人目检,快速对拉处有 ±0.2 秒不确定。