开放问题
羽毛球挥拍动作纠正 demo 应如何定义
这个问题仍然开放,需要通过新的 primary evidence 继续收窄。
问题
当前 sports-AI roadmap 已经有羽毛球的球路 tracking、stroke-level dataset、skeleton action recognition 和 adaptive explanation 证据。这个问题页把下一步 demo 收束成一个可执行定义:系统应输入一段羽毛球挥拍片段,输出 stroke type、关键动作阶段、错误模式、置信度和一句教练式反馈。
Demo 最小范围
建议先做 单人挥拍 / 单打片段 / 3–5 类错误模式,把问题控制在可复现范围内:
| 模块 | 最小输入 / 输出 | 对应证据 |
|---|---|---|
| 球路与击球时刻 | shuttle trajectory、击球前后短窗口 | sources/2026-04-25-tracknetv3、sources/2026-05-05-tracknetv4-motion-attention-maps |
| stroke-level 标签 | clear / drop / smash / net shot 等击球类型与落点 | sources/2026-05-16-shuttleset-stroke-level-badminton-dataset、sources/2026-05-16-bst-badminton-stroke-type-transformer |
| 姿态与骨架动作 | 关键帧、关键关节、身体链路 | sources/2026-05-16-tempose-badminton-fine-grained-motion、sources/2026-05-16-blockgcn-topology-aware-skeleton-action-recognition、sources/2026-05-16-skateformer-skeletal-temporal-transformer |
| 细粒度差异 | 相似动作之间的局部差异 | sources/2026-05-16-protogcn-skeleton-action-recognition |
| 解释策略 | 简短反馈 / 深解释切换 | sources/2026-05-12-videoauto-r1、sources/2026-05-05-finecausal-action-quality-assessment |
VideoAuto-R1 的全文复核给这一层增加了明确约束:early exit 应使用经过教练域校准的置信度;语言 CoT 优先处理规则、因果和多因素错误;击球时刻、轨迹与姿态边界错误应回到视觉模块复核。论文只证明响应 token 与 benchmark 精度的折中,demo 仍需单独测端到端延迟、解释正确率和误导率。
2026-07-12 全文复核后的系统约束
感知到评分必须分层
首版 pipeline 应明确为:shuttle tracking → court/3D trajectory reconstruction → hit/phase alignment → action quality assessment。
OpenCap 为第二、三层提供双视角生物力学参考:两台 ±45° iPhone、HRNet、confidence-weighted triangulation、LSTM marker augmentation 与 OpenSim 可输出 3D pose、joint angles 和 moments。实验室验证的 rotation MAE 为 4.5°,100 人 field screening AUC 为 0.90。它需要标定、双视角和可见身体,适合受控训练采集;单目广播 clip 仍使用 2D pose/TrackNet 分支。
- 原始 TrackNet 的网球随机帧 split F1 为 98.5%,10-fold 仅 84.3%;羽毛球专训 F1 68.7%,适合作为历史 failure baseline。
- TrackNetV3 在其羽毛球测试协议上达到 accuracy 97.51%、recall 99.33%、F1 98.56%,适合作为 10 样本 demo 的主前端。InpaintNet 将 FN 从 3.56% 降到 0.57%,同时 FP 增加,因此每个坐标必须保留
raw/repaired来源标记。 - TrackNetV4 在多个协议上的增益约 0.6–1.4 个百分点,适合作为 V3 的 motion-aware 成对对照。帧差也会响应球员、镜头和灯光,必须检查 attention 是否真正跟随 shuttle。
- FineCausal 只在 FineDiving-HM 上验证阶段化 AQA,ρ=0.9447、R-L2=0.2338。其 attention 属于结构化模型依赖,尚未构成真实因果诊断;MVP 应使用专家 rubric 与 exemplar 阶段差异。
编码器按证据层选型
- TrackMAE:RGB/motion backbone;SSv2/Gym99 线性探测 27.3/31.8,point tracking 令预训练时间增加约 50%。
- BlockGCN:轻量 pose baseline;NTU120 X-Sub 85.2→86.9,参数 2.1M→1.3M。动态拓扑的独立延迟和 pose-noise 鲁棒性仍待测。
- ProtoGCN:细粒度错误分类候选;FineGYM 95.9%,最难 10 类 +3.0 点。latent prototype 需要和关节角、速度及教练术语对齐。
- SkateFormer:实时 skeleton encoder 候选;2.03M 参数、3.62G FLOPs、11.46ms。attention heatmap 只能作为候选解释,需反事实和专家复核。
以上通用分类结果证明的是表征与分类能力。羽毛球纠正还需要 hit-aligned clips、阶段标签、球拍/羽毛球/场地关系、专家错误标签与反馈评价。
基础表征再加入四个约束:SportMamba 只提供 player association,SportsMOT HOTA 77.3 但身份指标未全面领先;ST-GCN 的 skeleton-only Kinetics top-1 30.7 明显低于 RGB 57.0,适合作为轻量互补 baseline;TimeSformer 121.4M 参数、0.59 TFLOPs,长视频结果仍是 clip averaging;VideoMAE 支持羽毛球域内无标签预训练,但 90% tube mask 可能完全遮掉 shuttle、racket tip 和 wrist motion。MVP 优先采用 VideoMAE/TrackMAE 的域内预训练 + ST-GCN/BlockGCN pose branch,保留 TimeSformer 对照,避免直接部署 ViT-H。
Wave 5 的数据与评分证据进一步约束端到端协议:SportsMOT/TeamTrack 证明 player association 与视角域差需要单独记录;TranSPORTmer 只有在上游已提供干净场地坐标后才做 trajectory/state reasoning;SportsHHI 的 HHICls/HHIDet mAP 10.69/4.93 表明 interaction layer 仍是独立难点。AthletePose3D/AthleticsPose 显示 MPJPE 改善不保证速度可靠,FineGym 的 sub-action localization mAP 仅 9.6,FineDiving 的 0.9203 Spearman 又依赖 dive number 与 reference score。首版 demo 因此只把 joint angle/phase trend 当证据,挥拍速度与因果扣分保持为未验证输出。
MultiSports 为 stroke localization 增加直接协议参考:frame-mAP 与 tube-mAP 同时报告,并把 class/spatial/temporal/linking errors 分解。其 frame-mAP 27.72 对应严格 [email protected] 仅 9.65,说明只看逐帧 stroke 分类会严重高估端到端可用性。羽毛球 MVP 需要额外报告 hit/phase temporal IoU、player/shuttle localization、stroke tube mAP 和 feedback correctness。
SoccerNet-GSR 提供 court-state 层的方法学模板:先做 calibration、player tracking/ID,再输出 court coordinates。标准 HOTA 57.64 到完整 GS-HOTA 22.26 表明坐标与身份属性会显著拉低系统质量;羽毛球应移除 jersey OCR、把 5m tolerance 改为场地尺度下的严格阈值,并把 shuttle/contact accuracy 纳入 pipeline metric。
Wave 7 的动作/AQA 证据给出更具体的 MVP 分层:FineSports 适合“点选目标运动员→stroke tube”;SportsCap 适合 pose→sub-motion→structured attribute,但 badminton 只有示例且 closed PCA prior 对 rare mistakes 薄弱;TPT 可用同 stroke exemplar 初始化弱监督阶段,却必须用真实 phase/contact/error labels 校准 latent parts;LOGO 只在双打站位/长回合聚合上提供间接价值。首版输出应优先结构化属性与置信度,再由规则/NLG 生成反馈。
Event2Tracking 说明 hit/event tokens 可反向帮助 shuttle trajectory repair:60 秒足球中 ball mADE 5.46→3.51m。羽毛球可用 serve/hit/bounce/land/phase tokens 融合长时轨迹,同时保留 50–120Hz contact window;离线双向修复和低延迟在线模式应分开评测,上游 hit detector 错误必须计入端到端指标。
Sports-QA 只适合作为最终 query layer 的设计参考:Description/Temporal/Causal/Counterfactual 四类问题中,Temporal accuracy 仅 35.3,BlindQA accuracy 仍达 43.7。Demo 应采用 structured evidence → temporal retrieval → constrained QA/NLG,每个回答回链 contact/phase/pose/trajectory,并设置 question-only baseline 检查模板泄漏。
X-VARS 提供 explanation layer 的工程模板:structured evidence + coach rubric → constrained diagnosis → cited explanation → human review。它的解释盲评 3.8/5 接近裁判 4.0/5,同时存在 classifier token shortcut 和动作幻觉。羽毛球 demo 必须加入 evidence ablation、错误-token counterfactual、faithfulness、abstention 与多教练分歧分布。
MonoTrack 与 TrackNetV2 给出当前最直接的前三层 baseline:TrackNetV2 31.84 FPS、frame accuracy 85.2%,MonoTrack HitNet F1 0.946、synthetic 3D error 8.0cm;真实全自动 reprojection 仍为 23.3–37.1px,且无真实 3D GT。Demo 必须保存 observed/interpolated、court/hit confidence 和 3D residual,并采用 match-level split、serve/landing coverage 与真实多视角 3D GT。
SoccerNet-Tracking 提供上游误差审计模板:同时跑 GT-detection 与 end-to-end tracking,并分报 DetA/AssA/HOTA。羽毛球 player/shuttle 两条流都应继承该协议;shuttle 另加 trajectory coverage、max gap、pixel/court error 和 hit accuracy,避免把 frame accuracy 当作可用轨迹比例。
低标注与人机层再加三项约束:active learning 的 16% 只代表模拟 oracle 数据比例,需记录真实教练分钟;HITL retrieval 的 5 labels 由类别模拟,真实个性化应评 other queries;RefereeBench 证明规则 RAG 可能把错误视觉前提解释得更充分。Demo 必须加入合法动作负例、诱导问题、abstention 与 evidence-first diagnosis。
Broadcast2Pitch 补充 court/game-state 工程:joint line/circle/keypoint geometry、identity-aware split/merge 和 module ablation 可迁移;jersey VLM 与 team-x heuristic 应替换为 player click/re-ID 与 court side。所有模块需输出 uncertainty,坐标 tolerance 远小于足球 5m,并分 fixed/mobile camera 报告全流程 latency。
SoccerNet challenge/校准历史增加数据治理要求:private challenge 与公开 test 分开;任何人工查看 test frames 的调参标为污染;商业 teacher pseudo labels 必须披露 game-level split、coverage、失败率与人工抽检。羽毛球 court calibration 采用真实 corner/line GT 和 court-coordinate error,避免只用伪标签或 action spotting 间接证明。
SoccerNet-v2、VARS、PathCRF、WEAR 对 demo 增加四个协议:match/player/camera-disjoint;contact-centered 与 full-stream detection 分开;hard state constraints + Viterbi;视频/腕部IMU同步和缺失传感器消融。足球 2FPS/5–60s tolerance、foul replay 和5FPS possession 都不能替代羽毛球 high-FPS contact GT。
Automated Offside Detection 的受限证据提示可用 rule state + pass/contact time + geometry + receive/landing event 组织判定;其20片段 F1 63.1% 和双固定广角相机协议仅作历史线索。羽毛球需独立建立规则负例、边界事件、遮挡与多场地测试,并保持全文未取回的证据标记。
3–5 个建议错误模式
第一版 demo 可以先定义这些错误模式,便于标注和反馈模板对齐:
- 击球点过晚:击球帧相对身体重心和 shuttle trajectory 滞后,常导致被动回球。
- 引拍不足:击球前肩肘腕链路幅度太小,动作阶段缺少明显 backswing。
- 重心转移不足:髋 / 膝 / 脚步变化弱,击球主要依赖上肢。
- 随挥提前中断:击球后 follow-through 轨迹短,可能影响力量和稳定性。
- 步法到位滞后:击球前站位或启动不足,导致击球点和身体姿态都进入补偿状态。
这些标签不需要一开始就覆盖所有 badminton coaching 细节。第一版目标是验证“视频证据 → 结构化动作阶段 → 可读反馈”这条链路能否跑通。
标注协议 v0.1
第一版标注以 rally 片段中的一次击球 为基本样本。每条样本只标一个主 stroke、一个主错误模式和最多两个辅助错误模式,保证后续 baseline 容易评估。
样本切分
| 字段 | 定义 | 建议规则 |
|---|---|---|
clip_id | 视频片段 ID | 对应原始视频、rally、球员侧和击球序号 |
hit_frame | 击球帧 | 以 shuttle trajectory 速度突变、球拍接触附近帧、人工复核共同确定 |
window_start / window_end | 标注窗口 | 默认 hit_frame - 30 到 hit_frame + 30;高速片段可缩到 ±20 帧 |
player_side | 远端 / 近端 / 左侧 / 右侧 | 优先使用画面中稳定可见的一侧 |
stroke_type | 击球类型 | 第一版只保留 4–6 类高频 stroke,降低标签噪声 |
Stroke type 最小集合
第一版建议只保留这些类别:
cleardropsmashdrivenet_shotserveunknown_or_unclear
unknown_or_unclear 很重要:真实视频里球被遮挡、击球点模糊、姿态估计失败时,应允许标注员把样本放入复核池。
错误模式标签
| label | 中文名 | 正样本判定 | 主要证据 |
|---|---|---|---|
impact_timing_late | 击球点过晚 | 击球帧中 shuttle 已越过更理想击球区,身体进入被动补偿 | shuttle 位置、手腕 / 肘部、躯干朝向 |
backswing_insufficient | 引拍不足 | 击球前准备阶段肩肘腕活动幅度偏小 | hit 前 10–25 帧的上肢角度变化 |
weight_transfer_insufficient | 重心转移不足 | 下肢和髋部位移弱,上肢主导发力 | 髋、膝、脚步、躯干前移 |
follow_through_cut_short | 随挥提前中断 | 击球后手臂轨迹很快停止或回收 | hit 后 5–25 帧的腕肘轨迹 |
footwork_late | 步法到位滞后 | 击球前最后一步或站位调整滞后,身体姿态进入补偿 | 脚部位置、身体重心、hit 前移动速度 |
标注置信度
每个错误模式都标 confidence:
high:视频清楚、关键点稳定、错误证据集中在 hit 附近。medium:动作大体可见,但存在遮挡、角度或关键点抖动。low:只能作为候选样本,进入人工复核池。
质量控制
每 20 个样本抽 5 个做复核,优先检查 hit_frame、stroke_type 和主错误模式。若两个标注员对主错误模式分歧大,保留 needs_review: true,并把原因写进 review_note。
Baseline 规则 v0.1
第一版 baseline 先用规则系统验证任务形状,目标是形成可展示输出,而不是追求高分模型。
输入特征
inputs:
video_clip: path/to/clip.mp4
fps: 30
hit_frame: 128
shuttle_xy: [[frame, x, y, confidence], ...]
keypoints_2d:
format: coco17
values: [[frame, joint, x, y, confidence], ...]
court_region: optional
中间特征
features:
wrist_speed_peak_frame: int
elbow_angle_delta_pre_hit: float
shoulder_rotation_delta_pre_hit: float
hip_center_shift_pre_hit: float
knee_bend_delta_pre_hit: float
follow_through_length_post_hit: float
foot_adjustment_frames_pre_hit: int
shuttle_relative_position_at_hit: [dx, dy]
规则输出
rules:
impact_timing_late:
trigger: shuttle_relative_position_at_hit.dx < late_threshold and wrist_speed_peak_frame > hit_frame
backswing_insufficient:
trigger: shoulder_rotation_delta_pre_hit < shoulder_threshold and elbow_angle_delta_pre_hit < elbow_threshold
weight_transfer_insufficient:
trigger: hip_center_shift_pre_hit < hip_shift_threshold and knee_bend_delta_pre_hit < knee_threshold
follow_through_cut_short:
trigger: follow_through_length_post_hit < follow_through_threshold
footwork_late:
trigger: foot_adjustment_frames_pre_hit > footwork_threshold
这些阈值先通过 20–50 个人工样本粗调。后续若要训练模型,可把规则输出当作 weak labels 或 baseline 对照。
展示输出
clip_id: rally_003_player_near_hit_07
stroke_type: smash
stroke_confidence: 0.78
hit_frame: 128
primary_error:
label: impact_timing_late
confidence: medium
evidence_window: [118, 138]
key_evidence:
- shuttle 已接近身体侧后方
- wrist speed peak 晚于 hit_frame
- torso forward shift 较弱
feedback_short: 击球点偏晚,下一拍提前完成引拍,把击球点放到身体前侧。
feedback_detail: 片段中手腕加速峰值晚于击球帧,身体重心前移不足;这会让击球更被动,力量更多来自手臂补偿。
needs_review: true
review_note: shuttle 在击球帧附近有轻微遮挡,建议人工复核 hit_frame。
可执行脚手架
当前已经把标注与 baseline 文件落到 docs/sports-ai/badminton-stroke-correction-demo/:
README.md— demo 执行顺序。annotation-guideline-v0.1.md— 标注员可读说明。annotation-template.csv— 10 个击球样本的标注表模板。sample-manifest.yaml— 10 个样本的清单模板。baseline-output-schema.yaml— baseline 输出字段定义。baseline-rules-v0.1.py— 规则 baseline 脚本,读取 feature JSON 并输出 YAML 反馈。
最小验收标准
第一版 demo 可以用下面标准判定是否跑通:
- 能处理 10 个手工切好的击球片段。
- 每个片段都有
hit_frame、stroke_type、主错误模式和反馈文本。 - 至少 7 个片段的反馈被人工判断为“方向合理”。
- 每个低置信样本都进入
needs_review: true,并给出复核原因。 - 输出可以直接转成网页卡片或短报告。
输出格式建议
Demo 输出应尽量像教练反馈,而不是只给分类分数:
stroke_type: smash
confidence: 0.82
error_modes:
- name: impact_timing_late
confidence: 0.71
evidence_window: frames 42-56
key_body_parts: [right_wrist, right_elbow, torso]
feedback_short: 击球点略晚,下一次提前半拍完成引拍,让击球点更靠身体前侧。
feedback_explanation: 模型在击球前后窗口看到手腕和肘部加速滞后,同时重心没有充分前移;这会让击球更被动,力量主要来自手臂补偿。
needs_review: true
当前更倾向的技术路线
第一版优先走 模块化路线:TrackNetV3 / TrackNetV4 负责 shuttle cue,pose estimator 负责 skeleton,BST / TemPose / SAR baseline 负责 stroke semantics,VideoAuto-R1 式策略决定何时输出短反馈、何时展开解释。这样比端到端大模型更容易复现、诊断和人工复核。
topics/sports-ai-video-understanding 当前证据更支持“先把结构化中间层做稳,再谈教练式解释”。ShuttleSet 给数据结构,TemPose 给 skeleton + shuttle / court position attention 证据窗口,BST 给 hit-frame-centered clipping 与 stroke-type classification,BlockGCN / SkateFormer / ProtoGCN 给骨架动作方法线,TrackMAE / FineCausal / VideoAuto-R1 给动作纠正的解释接口。
深分析后的 demo 约束
本轮重读 ShuttleSet、TemPose 和 BST 后,demo v0.1 应固定三条约束:
- 样本围绕 hit frame:ShuttleSet 和 BST 都把 hit frame 作为 stroke record / clip 的核心,标注窗口默认
hit_frame ± 30,低清晰度片段可缩到±20。 - shuttle trajectory 是主证据:BST 的结果显示 ball information 对 stroke classification 很关键,输出里应保留 shuttle-relative-position、速度变化和轨迹置信度。
- 2D pose 先行:BST supplement 中 3D pose 估计出现朝向误差;第一版 demo 用稳定 2D keypoints、joint / bone 变化和球路证据,更适合转播或手机视频。
2026-06-12 repo 代码深读后的执行收束
本轮新增 docs/sports-ai/tracknet-repo-zread-2026-06-12.md,把 TrackNetV3 / TrackNetV4 的代码级 zread 结果接入 demo 设计。结论更偏工程执行:
| 模块 | 当前选择 | 原因 |
|---|---|---|
| shuttle baseline | TrackNetV3 + InpaintNet | zread 已覆盖 heatmap prediction、coordinate repair、mask generation、sliding window 和 IterableDataset 推理路径 |
| low-visibility 对照 | TrackNetV4 Motion-Aware Fusion | zread 已覆盖 frame-difference motion prompt、power normalization、Type A / Type B fusion、evaluation 和 prediction pipeline |
| 样本窗口 | hit_frame ± 30 | 与 ShuttleSet / BST 的 hit-frame-centered 结构一致,也方便保留 pose + shuttle evidence |
| 输出证据 | shuttle_xy、visibility、repaired segment、pose feature、review flag | 方便把 feedback 变成可人工复核的证据链 |
第一版 demo 的下一步可以直接进入 10 个真实击球片段准备:每个片段先跑 TrackNetV3 输出 trajectory,再人工确认 hit frame 与错误模式;低可见度样本再用 TrackNetV4 做对照,观察 motion cue 是否改善 shuttle evidence。
为什么还没有解决
- 公开数据多支持 stroke classification 或 tactical analysis,错误动作标签和教练反馈标签较少。
- 球路、姿态、场地位置、击球时刻之间需要时间同步;任一上游模块不稳都会影响解释。
- SAR 方法通常输出类别,demo 需要把类别、关键帧和局部身体部位转成可读反馈。
- 真实训练场视频和职业转播视频差异大,泛化协议需要单独设计。
下一步最有价值的证据
- 找到公开羽毛球挥拍 / stroke correction / coaching feedback 数据或视频样例。
- 用 TrackNetV3 真实 test split 跑出 shuttle trajectory,再选 5–10 个 rally 做人工片段标注。
- 为上述 5 个错误模式写最小 annotation guideline。
- 做一个不训练模型的 baseline:pose + trajectory + hand-crafted temporal rules,先验证反馈格式是否有用。
相关页面
- topics/sports-ai-video-understanding
- topics/sports-ai-roadmap
- topics/video-understanding
- sources/2026-05-16-bst-badminton-stroke-type-transformer
- sources/2026-05-16-shuttleset-stroke-level-badminton-dataset
- sources/2026-05-16-tempose-badminton-fine-grained-motion
- sources/2026-05-16-blockgcn-topology-aware-skeleton-action-recognition
- sources/2026-05-16-skateformer-skeletal-temporal-transformer
- sources/2026-05-16-protogcn-skeleton-action-recognition
2026-05-17 证据补强:系统边界、球员级数据与多传感器上界
本轮新增三条证据后,demo 的分层更清楚:sources/2026-05-17-structured-analysis-broadcast-badminton-videos 给出公开视频系统边界,先切 point / rally、定位球员、识别球员并标注 stroke;sources/2026-05-17-badmintondb-player-specific-match-analysis 提醒第一版之后要做 player-specific split 和跨球员泛化;sources/2026-05-17-multisensebadminton-biomechanical-dataset 则提供多传感器训练反馈上界,说明真正教练式反馈可以接入眼动、肌电、足压、落点和技能水平。
因此第一版执行策略保持轻量:公开视频 + 2D pose + shuttle trajectory + hit frame + 4–6 类 stroke type。第二阶段再把 BadmintonDB 式的 player-specific 评估和 MultiSenseBadminton 式的 biomechanical feedback 作为扩展目标。