现状 · 2026-09-07 · 看人数拍 v2
给一段业余对战视频,程序现在能切出回合、数出每个人各打了几拍。这页回答两件事:停在哪,效果到底怎么样。数字全部来自正式流程跑整片的结果,不是原型。
停在哪:定稿版本是 Codex 提交 5c0b796(分支 claude/badminton-app-ui-feedback-777abd),R1 到 R9 九张卡全部验收完,没有正在进行的卡。流程默认走"看人",两人识别覆盖不够时自动退回旧的"听声"。
效果:正后方视频回合 29 对人工 31,拍数六成准、谁打的 75% 准;角落视频拍数 65 分、谁打的 92% 准。比三天前的听声法(47 分、分不清谁打)强一大截,离"准到不用看"还有距离。
没做的:集锦阶段在 Mac 上会挂死(另立卡);角落回合有合并过头;速度再降要换轻量模型。以及你要做的两件事:关 iCloud"优化储存"、自己拍一场正后方素材。
灰条是我人工从缩略图数的 31 个回合,蓝条是程序切出的 29 个。对上 28 个,多 1 个,3 段各把两个回合连在了一起。
下面是程序自己标出的击球瞬间,黄框是近端球员、红框是远端球员。这几张是随机抽的,不是挑好的。








| 素材 | 回合 | 拍数(近端 / 远端) | 金标窗综合分 / 谁打的 | 远端识别覆盖 | "看挥拍"耗时 | 判定 |
|---|---|---|---|---|---|---|
| YouTube 正后方 7 分 20 秒 | 29(人工 31) | 257(134 / 123) | 60 / 75% | 92% | 时长 2.7 倍 | 达标 |
| B 站角落 4 分 57 秒 | 14 | 196(101 / 95) | 65 / 92% | 91% | 时长 3.5 倍 | 达标 |
"金标窗综合分"是在人工逐拍标注过的一段(正后方 46 秒、角落 36 秒)上算的查全查准综合分,满分 100,容差 0.35 秒。三天前的听声法在角落那段是 47 分。
| # | 起止(秒) | 拍数 | 近 / 远 |
|---|---|---|---|
| 1 | 0.0–8.8 | 8 | 4 / 4 |
| 2 | 10.8–25.6 | 16 | 8 / 8 |
| 3 | 31.3–35.9 | 5 | 3 / 2 |
| 4 | 42.1–50.2 | 7 | 3 / 4 |
| 5 | 52.4–57.1 | 4 | 3 / 1 |
| 6 | 62.0–73.2 | 9 | 4 / 5 |
| 7 | 77.0–88.6 | 11 | 6 / 5 |
| 8 | 96.8–111.4 | 11 | 5 / 6 |
| 9 | 125.3–135.0 | 7 | 2 / 5 |
| 10 | 154.9–162.8 | 9 | 5 / 4 |
| 11 | 166.3–180.8 | 13 | 7 / 6 |
| 12 | 182.4–207.6 | 25 | 13 / 12 |
| 13 | 209.3–223.9 | 14 | 8 / 6 |
| 14 | 225.2–229.0 | 3 | 1 / 2 |
| 15 | 234.5–246.8 | 12 | 6 / 6 |
| 16 | 247.7–254.1 | 4 | 1 / 3 |
| 17 | 255.3–258.3 | 4 | 2 / 2 |
| 18 | 262.9–268.9 | 4 | 2 / 2 |
| 19 | 279.1–287.0 | 5 | 4 / 1 |
| 20 | 292.2–300.6 | 6 | 3 / 3 |
| 21 | 301.7–312.2 | 11 | 6 / 5 |
| 22 | 321.6–329.6 | 6 | 3 / 3 |
| 23 | 333.2–342.6 | 7 | 5 / 2 |
| 24 | 343.8–355.2 | 10 | 4 / 6 |
| 25 | 358.9–380.8 | 14 | 8 / 6 |
| 26 | 382.6–389.5 | 7 | 4 / 3 |
| 27 | 398.2–417.3 | 15 | 8 / 7 |
| 28 | 419.1–423.0 | 3 | 2 / 1 |
| 29 | 426.8–438.5 | 7 | 4 / 3 |
| # | 起止(秒) | 拍数 | 近 / 远 |
|---|---|---|---|
| 1 | 0.0–24.6 | 28 | 16 / 12 |
| 2 | 25.0–34.2 | 6 | 4 / 2 |
| 3 | 40.9–50.3 | 5 | 3 / 2 |
| 4 | 51.8–95.3 | 33 | 19 / 14 |
| 5 | 96.6–110.6 | 10 | 6 / 4 |
| 6 | 112.8–124.0 | 7 | 4 / 3 |
| 7 | 126.8–141.6 | 9 | 4 / 5 |
| 8 | 144.2–160.0 | 10 | 4 / 6 |
| 9 | 162.2–171.6 | 7 | 3 / 4 |
| 10 | 173.1–182.7 | 8 | 3 / 5 |
| 11 | 187.1–250.4 | 44 | 21 / 23 |
| 12 | 252.6–261.5 | 6 | 4 / 2 |
| 13 | 263.6–271.7 | 5 | 2 / 3 |
| 14 | 274.5–295.9 | 18 | 8 / 10 |
定稿版本部署成正式服务后,把手头所有对战素材各跑了一遍。看两件事:走没走上"看人"路径,以及退回时有没有老实退。
| 素材 | 机位 | 走的路径 | 回合 | 拍数(近 / 远) | 说明 |
|---|---|---|---|---|---|
| YouTube 单打 7 分 20 秒 | 正后方 | 看人 | 29 | 257(134 / 123) | 与验收一致 |
| B 站单打 4 分 57 秒 | 后方角落 | 看人 | 14 | 196(101 / 95) | 与验收一致 |
| B 站单打 2 分 06 秒 | 后方角落,22.5 帧 | 看人(R10 后) | 8 | 77(45 / 32) | R10 前退回听声(远端只跟到 37%);R10 后远端跟到 83% |
| 李宗伟 7 分 47 秒 | 高机位,有看台 | 看人(R10 后) | 8 | 263(135 / 128) | R10 前退回听声(远端只跟到 17%,看台观众把远端身高带偏成 89);R10 后远端跟到 83% |
| B 站少儿 2 分 48 秒 | 侧面 | 退回听声 | 3 | 90 声 | 侧面机位两人一左一右、无近远之分,不在支持范围,退回是预期内的 |
2026-09-09 更新:R10 上线(划远端区域只看会动、且身高不低于近端 0.35 倍的人),李宗伟和第二条角落两条都走上了看人路径,远端跟踪从 17%、37% 升到 83%,老素材没退步;战报页也已显示近端/远端拍数和每一拍的标记(W1)。原结论(9 月 8 日):五条里两条走上看人路径,三条退回听声,退回时都没有乱报。三条退回里,侧面机位是范围外;另外两条暴露了同一个新毛病:场边有一群坐着不动的人(看台观众、等场的人)时,自动划区域会把"远端球员的身高"估错,导致选人漏掉真球员。业余球馆人少没暴露,一到有看台的场馆就会出。修法明确:划远端区域只看"会动的人"。这是下一张卡(R10)。另外,集锦在新环境里五条全部合成成功,此前的"挂死"确认是 iCloud 云端化所致,不是代码问题。
之前数拍靠的是手写规则(手腕甩到最快的那一下算一拍,再用交替、间隔去掉假的),天花板在七成上下。这次用公开的职业比赛逐拍标注(桃田 vs 安赛龙一场,756 拍)加上我们自己五条业余视频的半自动标注,在 Mac 上训了一个小模型,让它看前后 0.6 秒的双人姿态曲线自己判断"这一下是不是击球"。训练只要几秒钟,不用显卡;模型已经装进正式流程,默认走模型,模型文件坏了会自动退回原来的规则。
| 素材(同一段标准答案) | 原规则 | 小模型 | 说明 |
|---|---|---|---|
| 正后方 YouTube 单打,0–46 秒 | 0.60 | 0.64 | 报出来的拍 64% 是真的,真拍抓到 64%;谁打的 11/16 对 |
| 后方角落 B 站单打,40–76 秒 | 0.63 | 0.77 | 报出来的拍 88% 是真的,真拍抓到 68%;谁打的 14/15 对 |
分数是"准和全"的综合分(满分 1)。角落机位涨得最多,原因是模型比规则更挑:以前把捡球、挥空当成击球的情况少了很多。整片数字:正后方 29 回合不变,拍数从 257 降到 215(假拍少了);角落回合数从 14 变成 11——有三处回合被粘在了一起,是模型在回合间隙给出了几拍低信心的判断,这是下一步"回合边界"要修的,得先人工标一段角落视频的回合起止。
中间踩过一个坑:第一次接线把模型候选也塞进了原来给规则用的"没声音就得幅度特别大才算"的门,结果没声音的拍全被丢了,分数掉到 0.38。在 Mac 上用固件把四种门控方案都跑了一遍,结论是模型给的击球时刻比声音更准(嘈杂角落球馆的声峰反而会把时间拽偏),于是定了新规矩:走模型时声音只负责标"有声/无声"和信心高低,一拍都不丢、时间也不挪。
再往上涨要靠干净的业余标签:现在业余视频的标注只有八九成准,所以紧接着做了一个打标工具(2026-09-10 上线):在回合回看页点"编辑模式",点一下删一拍、改近端远端,把视频拖到击球那一刻点击球条加一拍,改动即时保存、刷新不丢,战报页会给改过的回合打"已修正"角标。接下来用它把五条业余视频的标签一条条过干净,再训第二轮模型。
三天沉淀下来最值钱的东西:两条素材的"正确答案"固件加走产品真实路径的回放测试,以后任何改动跑一下就知道有没有把哪条素材改坏。完整过程见 看人数拍实测,调研见 回合与拍数怎么数。