Tonight Badminton · 系统全景

今晚羽球系统全景

依据 GitHub 提交记录、验收文档与本机运行中的服务整理 · 数据截至 2026-09-02 · 状态编码贯穿全页

一句话现状:"传一段球局视频,当晚拿到自己的战报、进步曲线和高光短片"这条闭环已经通了,网页版和 iOS 版都在跑。

一句话差距:闭环里流过的六场"真实数据"全是网上别人的视频;自家机位下每个数字还站不站得住,是下一阶段唯一要回答的问题。

120
提交 · 8/28 至 9/2 六天
6
场跑通全管线的球局
0
次自家机位拍摄
7.7×
60 帧视频的分析耗时倍数
已落地部分落地 / 估算值空缺 · 待做已封存 · 作废
01

理想形态

这是产品定义里"该长成的样子":球友零负担,一次架机全场受益;系统当晚给出三样产出,分别兑现"练下去有进步"和"发出去有面子"两种买单理由,再由复购和同场拉新把圈闭上。

打球球友零负担 拍摄球馆常驻位 / 到场服务 上传扫码 / App 自动分析当晚出结果 战报数字 进步曲线 高光短片 进步练下去有进步 面子发出去有面子 一次架机 自动/扫码 当场传 回合 · 拍数 · 击球点 · 跑动 复购 · 同场球友扫码领自己的战报 = 最便宜的拉新
理想闭环。橙色虚线是还没验证过的那一段:有没有人会因为看到别人的战报或短片而自己来传一场。
给谁

想进步、已在拍或愿意被拍的业余球友,以及教他们的教练。先教练后学员。

凭什么信

每个数字钉在视频帧上、能点开看画面;测不准就标注降权,不拦截也不造假。

怎么收钱

C 端 88 到 128 元买断或 15 元/月;教练版 99 到 199 元/月;到场单次 19.9 到 49 元。

护城河四件

公开准确度验证页 · 具名参照库加教练标注 · 教练渠道 · 拍摄标准到支架到球馆常驻位。都不是算法。

02

细分实现路径

视频从手机进来,到页面上变成数字和短片,中间经过六个环节。每个格子的颜色是它今天的真实状态;绿色箭头是决定数字可信度的关键数据流。

端 服务 感知 测量与切分 产出 呈现 iOS App(八屏)真机已装 · TestFlight 准备中 手机网页 /m与 App 同一套接口 拍摄引导正后方 · 单打 · 60帧 · 安静 账号 / 云端历史现在存在手机本地 Mac 本机服务FastAPI · 8000 端口 公网中继广州中继机 · 未备案 · 无门禁 分片上传40MB 一片 · 实测 5MB/s 排队 / 多任务现在一次只跑一场 预检 + 稳定性门时长 · 画面晃不晃 姿态 · 逐帧找人rtmlib · 最花时间的一步 击打声提取音频瞬态 球检测 TrackNetV3只跑候选瞬间 · CPU 很慢 人声清洁htdemucs · 只用于成片 回合切分 v2击打声瞬态 · 有球轨迹才用轨迹 击球点 · 腕高身高比例尺 · 估算值 拍数计数估算 · 未人工对账 验球 + 球离地高度球拍重合 · 只验关键瞬间 跑动距离引擎输出为空 · 场地未标定 走位热力图真产物 质量门 + 战力分标注降权 · 三项加权 杀球速度30帧判死 · 60帧未试 战报数据match.json · 回合逐拍 高光成片 19 秒选材 · 变焦 · 慢放 · 球标注 定格帧最高一拍 · 高度线压腕 训练诊断报告单动作 3D · 能出但难读 3D 人偶 / 解构9/1 判死 · 代码封存 鞭打 / 动力链动捕验证方向反 · 下线 战报五层结论 · 三数 · 之最 · 明细 · 可信区 进步曲线只和自己比 · 存在本机 高光播放 / 分享系统分享面板 回合原片 / 单球慢放流式播放 球友 / 周榜灰置占位 最快杀球卡文案写死"待60帧" mp4 任务 响声成簇=回合 腕高 一响=一拍 球点 选材 球标注
六段管线与今天的状态。数字可信度只取决于三条绿色数据流:击打声切回合并计拍、腕高换算击球点、关键瞬间验球。六场真实球局的回合和拍数全部来自声音,球轨迹切回合只在有轨迹文件时启用,真实球局从未启用。

做对了的工程纪律

  • 永远有产出。任何环节失败都降级不拍死:无音轨走整段兜底,合成失败只跳过成片。
  • 质量门只标注不拦截。画面条件差的测点标灰降权,不进默认曲线,也不让人白录。
  • 离谱值红线。高度只在 1.5 到 3.4 米带内显示数字,带外只留标记。
  • 任务卡加验收。每张卡先写测试再写代码,Claude 逐字节验收,回滚有据。

路径上的四个硬伤

  • 速度。60 帧视频跑 7.7 倍时长,30 帧约 1.5 倍。内测自己等得起,给别人用之前必须解决。
  • 存储。没有账号,历史和曲线存在手机本地,换机即失。
  • 吞吐。一台 Mac 一次一场,中继未备案、无邀请码门禁。
  • 空格子。跑动全空,杀球速度文案写死,两张卡永远灰着。
03

实践成果

一个月从零到闭环。灰色区间是走过又放弃的路:不算白走,但值得记住它们各花了多久。

3D 人偶两条线 · 六天 · 后封存 8/3 立项正手高远球单动作教练 8/16 3D 人偶开工 8/21 main 最后合并此后主干未再更新 8/22–23 调研周同行地图 · 产品定义 · 硬件评估 · 误差实验 8/28 指标梯队 v2UI 概念稿 16 张收官 8/30 闭环合龙一天内:网页六页 · App 八屏 · 上传到出片 8/31–9/1 高光转发级 · 战报曲线主攻3D 判死 · 手机网页上线 9/2 公网中继TestFlight 准备 8 月 3 日9 月 2 日
里程碑时间线。8 月 30 日是拐点:那一天之前是零件和探路,之后才是产品。

跑通全管线的六场球局

日期素材来源规格时长分析耗时回合拍数最高击球点成片验球
9/2李宗伟比赛(YouTube)60帧 1080p7.8 分60 分7.7 倍11312估算2.20 m估算 · 62 可信测点4/4 通过
9/1业余单打(YouTube)60帧 1080p7.3 分53 分7.3 倍16139估算2.32 m估算 · 43 可信 / 68 受限3 通过 1 未验
8/31业余单打正后方机位(B 站)30帧 1080p5.0 分7.8 分1.6 倍995估算1.96 m估算4/4 通过
8/30业余双打整场(B 站)30帧 1080p36.7 分56 分1.5 倍46681估算1.96 m估算 · 215 可信 / 111 受限4/4 通过
8/30新加坡球馆业余单打 30 秒片段60帧 1080p0.5 分1 分1.9 倍1140.98 m带外不显示未验
8/31教练正面示范 60 秒(训练线)30帧 竖屏1.0 分37 分3D 重建———不适用

耗时为本机 Apple M1 Pro 纯 CPU;所有素材均为公开平台视频,仅内部原型验证。"拍数"由击打声瞬态计得,从未与人工数拍对账。

已经验证过的

  • 击球点能区分水平。动捕数据集 25 人分级,人级 AUC 0.86 到 0.97。
  • 回合切分在转播素材上成立。与官方标注 IoU 0.94,截断从 9 降到 2。
  • "拍得好就能测"。理想机位五段球检测三段满分,业余机位为零。这定义了拍摄标准。
  • 高光三改有效。验球闸门、杀球物理判定、人球同框取景后,用户首次说"更近了"。
  • 整场跑得完。36 分钟整场 46 回合全自动到成片,兜底路径实战生效。

还没验证过的

  • 自家机位下的一切数字。到场拍摄零次,六场全是别人的视频。
  • 拍数准不准。人工对账一次没做,它是所有"量"类数字的地基。
  • 60 帧能不能测球速。物理账只算了 30 帧,60 帧素材已有但没试。
  • 有没有人愿意为数字付钱。国内球友原话证据为零,全部来自评论挖掘。
  • 曲线的可比性。不同机位的场次混在一条线上,"较上场"的箭头没有可信度前提。

封存与作废清单

  • 3D 人偶两条线(8/16 到 8/22,含 Xbot 蒙皮与 Hero 形象)。单目 3D 欠定,双打远景喂单人引擎成缝合怪。代码保留,开关关闭。
  • 鞭打 / 动力链指标。动捕验证与教练评分方向相反,主线下线,只算不评。
  • 自动判分 / 战术。转播域只成"三成一半",业余金标从未产生,悬空。
  • 硬件盒子与树莓派样机。光学账算反,判为"先用手机试出参数,再固化"。
  • 分享海报。降为有即可,火力转向整体交互。
04

调研与测试

三路调研加一个本地测试,全部于 2026-09-02 完成,不限于 8 月的旧报告;本地测试和提速基准都在这台 Mac 上跑,没有租 GPU。四节顺序:本地测试、球速路线、市场取证、提速办法。

4.1 本地测试 · 60 帧素材上,球检测跟不跟得住、看得见多少速度 已完成

素材:李宗伟比赛,60 帧 1080p,正后方机位。截取"击球点 2.20 米"那一拍前后 2.6 秒共 156 帧,在本机 CPU 上跑球检测和姿态,把球每帧的位移按近端球员的身高比例尺换算成速度。

画面 1920×1080 按 1/3 缩放 · 上方是对方半场 近端球员 · 脚点 击球 · 第 22 帧 之后 9 帧连续检出 首帧位移 51 像素 ≈ 52 km/h(投影值) 球冲出画面顶部 · 随后约 1 秒检不到 对方回球落下 第 96 到 155 帧 · 每帧约 29 像素 竖直 · 看得见 横向 · 几乎不动 深度 · 镜头看不见
本机实测的球轨迹。从正后方看,球出手后主要沿镜头深度方向飞,画面里只剩竖直分量;按身高比例尺算出的 52 km/h 只是投影,不是球速。
测什么结果意味着什么
球检测耗时(CPU)257 秒 / 2.6 秒视频约 99 倍时长整场跑不起,只能像现在这样只跑关键瞬间;若将来全片跑球,必须换算力或换更轻的检测器。
检出率95 / 156 帧击球后连续 9 帧跟住60 帧、后方机位都在模型训练分布之外,但出手段仍然可用;球到远半场高处时约 1 秒完全检不到。
出手后首帧位移51.5 像素近端球员身高 353 像素按比例尺换算仅 52 km/h。这一拍是向上的高远球,真实出手速度远高于此,差额全在镜头看不见的深度方向。
身高比例尺的适用性只对出手那一帧成立球每飞远一帧,尺度就错一截;正后方机位下它不能用来测球速,只能定出手高度。

这是一次性小样本测试,用来核对物理账的方向,不是精度结论。测试脚本和原始球点坐标留在本会话的临时目录里。

4.2 调研 · 60 帧单机位测球速,三条可走的路 已完成

调研员读了球速衰减的物理论文、TrackNetV3 与 MonoTrack 的原文、Smashspeed 对应的论文和雷达信度研究,把"理想态误差预算"算了出来。下面的百分比凡未注明出处的都是推算,方法写在调研全文里。

先记住的四个物理事实(有出处)

  • 球每飞 3.35 米速度减半。300 km/h 出手的球,60 帧的第一个帧间隔平均只剩 261,第二个只剩 206。所以"取相邻帧最大值当球速"天然低估一到三成,必须按衰减曲线拟合回出手瞬间。
  • 击球时刻差一帧,球速差 15%。这是绝对值路线里最大的误差项;用击打声定时可以压到 2% 到 3%。
  • 快门是硬门槛。300 km/h 的球在 1/120 秒快门下拖影 0.69 米;要拖影不超过一个球长需要 1/1000 秒。手机 60 帧的默认快门没有公开数据,只能从素材里量拖影反推。
  • 正后方机位看不到深度分量。身高比例尺和地面标线换算都只对贴地或同深度的点成立,对飞行中的球不成立。本地测试 4.1 印证了这一点。

Smashspeed 到底怎么做的

  • 侧面机位,一球一段。手机放边线,用户在画面上点一条已知长度的场地线定尺度,逐帧算峰值。
  • "对雷达枪 95%"没有公开方法。找到的对应论文用 iPhone 16 在 30 帧下对雷达测了 20 次,峰值速度平均误差 66 km/h,作者归咎于雷达只能测下游速度。
  • 和我们的形态不兼容。它是"单独去测速",不是"上传整场球局"。可以当我们的参照工具,不适合当产品主线。
路线原理一句话理想态误差拍摄门槛算力工作量判断
③ 飞行时间分档只给慢 / 中 / 快数"击球帧到对方触球帧"隔了几帧,加两人脚下距离,套一维衰减公式反推量级。±13–15%三档不会串现有机位即可,不需要看清球,无快门要求几乎为零,复用姿态3–5 人日先做
① 后方 60 帧绝对值标定 + 端点 + 拟合用远场地线和网柱标定相机,用两人脚位钉住球路两端,球点按衰减曲线拟合外推出手速度。±8%有击打声定时;无则 ±17%现有机位加上仰角,快门需短于 1/330 秒,否则降级球检测只跑击球前后 0.6 秒,约 36 秒 CPU 一球12–15 人日绝对值目标
② 侧面 240 帧Smashspeed 模式球在像平面内运动,一条同深度的场地线给出米每像素。±5–8%推算,仅对雷达验证过单独拍、侧面、一球一段、每分钟 480MB帧数四倍,需更轻的检测器8–10 人日当参照工具
身高比例尺测球速现有做法直接套到球上。后方机位不可用———淘汰
等级边界怎么定

锚点是雷达研究的三组均值:新手 126、中级 162、专家 206 km/h。但我们测的量与雷达口径不同,边界要在自家语料上按分位定,表述用"慢 / 中 / 快"或"同水平前百分之几",不写绝对 km/h。

怎么验证

路线③对路线②的侧面 240 帧参照,30 球以上分档一致率要过 85%;同一人多球的档位稳定性作为内部一致性指标。路线①另用转播片段验拟合核心。

没找到的

手机 60 帧默认快门;TrackNetV3 在后方机位 60 帧的检出率(论文与社区均无);任何单目视频球速对高速相机真值的定量验证;Smashspeed 的标定方式。

这一节与 8 月 28 日指标梯队里"速度只给等级"的原判方向一致,区别在于现在有了物理模型和逐项误差预算,实测只需要校准其中一环。调研全文含全部出处,需要时可以整理成附页。

4.3 调研 · 市场原话取证,三个缺口填了多少 已完成

调研员跑了五十次检索,覆盖 App Store 评论、中羽在线、B 站、V2EX、36 氪等。中羽在线开了人机验证读不到正文,小红书和抖音评论区搜索引擎不收录,所以下面的证据主要来自应用商店评论和媒体报道。每条都可点开核对。

缺口找到了什么证据强度
① 愿不愿为数字付钱没有一条球友明说"愿意花多少钱看分析"。能看到的是各家实际收的价和差评:拒绝理由全部是产品层面,闪退、白板、弹窗强推、识别不准、包月之外再按次扣费,没有一条说"数据没用"。正面评价集中在"和标准视频一比问题立刻暴露"和"回合切得准、省时间"。中 · 间接
② 击球点认不认 / 杀球速度热不热"击球点高度"作为一个数字,球友侧零原话;只有好球哇把它列进 2026 年 AI 教练计划。"杀球速度"热度有实锤:中羽有专帖问业余真实球速,羽记用户点名喜欢挥拍速度加排名,海外 Smashspeed 两万五千下载并加了排行榜和晒图卡片。同时它也是准确性差评最集中的指标。击球点 无 杀球速度 中
③ 好球哇 2026 口径三月报道 C 端用户三万余、头部球馆十五家以上;五月拿高瓴创投天使加轮,口径变"数十家球馆",新品是网球相机、首发欧美,定位转向"主动管理训练的 AI 副驾"。用户实际看的是长视频回放加短视频集锦。收费价格和用户评价一条都没找到。中 · 收费为空
球友现在在付的价类型月费买断 / 年费评分 · 评价数被骂的点
好球(Apple Watch)手表计数¥15¥68 终身4.8 · 4043弹窗强推会员
羽记 / 开球(Apple Watch)手表计数¥12 / ¥18¥58 / ¥68 终身4.5 · 670(开球)上下手识别不准
多练视频动作对比¥38¥268 / 年3.9 · 10白板、闪退;十四个月十条评价
小球圈视频 AI 分析¥58¥398 / 年4.6 · 148会员之外每次分析再扣钻,开发者称大模型成本高
剪球(2025 年 10 月上架)切回合 + 集锦¥12¥128 永久4.7 · 12好评但量小

旧结论里没有的五个新发现

  • 好球哇创始人公开把"上传视频出报告"判为停留在事后分析阶段,重心转向网球出海和主动管理训练。国内羽毛球事后分析他们在降优先级:既是空档也是警示。
  • 剪球是新的直接对标。十二元一个月做切回合加集锦,本地离线跑,证明集锦能收到这个价,也证明这个价位的量很小。
  • 按次扣费是明确雷区。小球圈包月之外再按次扣钻被骂上最新差评,AI 推理成本不能转成用户可见的摩擦。
  • 杀球速度是唯一有"晒"行为证据的指标,击球点高度没有任何用户侧信号。指标梯队里击球点的可晒性应降权,它属于"进步"那条腿,不属于"面子"。
  • 硬件相机加小程序是 2026 年主流形态(好球哇、AI 尚运动相机、马来西亚 BWF 批准的即时回放系统)。纯软件"上传视频"在国内几乎只剩多练和个人练手作品。

这对产品意味着什么

  • "面子"那条腿,速度分档比击球点更有把握。与 4.2 的路线③结论一致:先做慢中快三档,它是最有晒的证据、也最不需要拍摄门槛的指标。
  • 留存先看可靠性和收费方式,再看指标多少。所有差评都是能不能用、要不要重复掏钱;一口价包月或买断,绝不按次。
  • 差异不该是"事后报告更详细"。好球哇已经把这条判成落后。能站住的是"能比、能看见进步"的曲线和可信数字,这正是 9 月 1 日定下的主攻方向。
  • 付费原话这个缺口网上补不了。唯一办法是面对面:五个球友看自己的真报告,问"给多少钱"。这一条要等自家素材。

没找到的:中羽在线任何帖子正文;好球哇的收费价格和用户评价;小红书、抖音、B 站评论区原话;任何球友明说愿付多少钱或把击球点高度当数字看的原话;多练在安卓商店的评价。一份文风像 AI 生成的行业文章列了几款海外产品的价格,无法核实,未计入证据。

4.4 调研加实测 · 不租 GPU,60 帧视频能快多少 已完成

调研员没有只查资料,还在这台 Mac 上把几个模型分别跑了基准。结论:不租 GPU 也能把 60 帧 8 分钟视频的分析从 60 分钟压到十几分钟,靠的是芯片自带的加速和少做无用功。

本机实测现在(CPU)用上 Apple 芯片加速倍数坑
找人的检测器(YOLOX-m)425 毫秒/帧37.6 毫秒/帧CoreML · 静态形状11.3×现成的 mps 开关在这台机器上直接崩,要给 rtmlib 打一个小补丁传参数
姿态(RTMPose-m)24.5 毫秒/人9.4 毫秒/人CoreML2.6×可能静默用半精度,上线前用 100 帧对比关键点差异
球检测主干(TrackNetV3)0.8 帧/秒10.3 帧/秒MPS12.8×改一行设备代码;个别算子不支持时可回落 CPU
整帧找人(轻量档 vs 现用均衡档)425 毫秒73 毫秒检测器换 tiny5.8×远端小人漏检更多,近端球员几乎不受影响

时间花在哪(推算,需一次分阶段计时核实)

  • 集锦阶段占五到六成。每个入选瞬间 8 到 11 分钟,其中"整段球标注"单项最大:TrackNet 对每个瞬间整段逐帧跑,每次还重新加载模型。
  • 找人走位约 7 分钟。只取每秒一帧来算,却把 60 帧的每一帧都解了码,一半时间可能在白解码。
  • 测击球点 3 到 10 分钟。每个测点随机跳帧,60 帧视频跳一次要从关键帧重解。
  • 姿态模型本身不是瓶颈,检测器才是。换更小的姿态模型省不了多少,换检测器或开 CoreML 才是关键。

按改动量排的提速清单

  • 零代码改动。球检测子进程加"不重叠"模式,最多 8 倍(需核实);线程数只用 6 个性能核。
  • 一天内的小改动。rtmlib 补丁开 CoreML;TrackNet 改 MPS;模型常驻不重载;顺序解码不随机跳帧;慢放窗和球标注按 30 帧抽帧;球标注只跑入选瞬间且限 3 秒;视频编码走硬件。
  • 三天以上的大改动。姿态在 iPhone 端侧跑、只上传关键点,服务器姿态算力归零;Apple 的 3D 姿态接口直接给米制坐标,可能免去 1.75 米身高假设,但精度未公开。
  • 组合估计。小改动做完,60 帧 8 分钟视频从 60 分钟到 12 至 16 分钟;再修解码和编码有望进 10 分钟。
将来若租 GPU按量价格(第三方整理,未登录核实)一场 36 分钟 60 帧球局费用
RTX 4090(AutoDL)1.3–2.2 元/小时12–20 分钟推理不到 5 分钟,其余是解码编码0.3–0.7 元
A10(阿里云)5.6–12 元/小时口径不一15–25 分钟1.4–5 元
T4(腾讯云)7.8–8.7 元/小时25–40 分钟3.5–6 元
本机 CPU 现状—约 4.6 小时按 7.7 倍推0
本机做完小改动—约 1 小时推算0

对"理论闭环前不开 GPU"的判断:成立,而且代价不大。租 GPU 时真正的瓶颈会转到解码和编码,那是 CPU 的活。建议第一步只做一件事:在管线里加分阶段计时,跑一遍 60 帧样片,用真数据替换上面的推算,再决定先改哪一项。没找到的:rtmlib 官方各档速度表、TrackNetV3 的 GPU 帧率、Apple 3D 姿态的官方精度、火山引擎的具体单价。