Skip to content

youngzs/badminton_training

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

羽毛球训练视频智能分析系统

专为羽毛球训练和教学设计的AI视频分析工具,支持GPU加速、实时姿态分析、装备检测和对比回放。

🎯 核心功能

🚀 视频处理

  • 双检测引擎 - YOLOv8(多人/快速)+ MediaPipe(单人/高精度)
    • YOLOv8: 120 FPS (GPU) | 17关键点 | 多人检测
    • MediaPipe: 40-60 FPS | 33→17关键点 | 96%+精度
  • 5种线条样式 - OpenPose风格渐变、置信度驱动、部位分级等
    • OpenPose风格: 躯干粗四肢细,中心到端点渐变 ⭐ 推荐
    • 置信度驱动: 根据检测精度调整线宽
    • 部位分级: 躯干/头部/手臂/腿部不同粗细
  • GPU 加速 - RTX 4090 可达 120 FPS,CPU模式 10-20 FPS
  • 装备识别 - 自动检测羽毛球拍和羽毛球,中文标签显示
  • 分体颜色标注 - 头部/躯干/手臂/腿部分色显示,清晰易懂
  • 慢动作回放 - 1x-10x 可调速度,帧插值技术

🎨 可视化分析

  • 三屏对比显示 - 原视频 vs 分析结果 vs 姿态数据
  • 实时姿态分析 - 角度计算、问题识别、改进建议
  • 同步播放控制 - 播放/暂停、进度条、帧号显示
  • 历史记录管理 - 自动记录处理历史,一键快速访问

🛠️ 智能辅助

  • AI 动作分析 - 自动检测姿势问题,给出专业建议
  • 数据持久化 - JSON格式保存分析数据,可重复查看
  • 配置管理 - 保存/加载个性化设置
  • 音频保留 - 完整保留原视频音频

📸 界面预览

对比分析GUI(v1.7.1)

┌─────────────────────────────────────────────────────────────────┐
│  羽毛球训练视频对比分析系统                                        │
├──────────────────────┬──────────────────────┬────────────────────┤
│                      │                      │  姿态分析           │
│   原始视频            │   处理结果            │                    │
│                      │  ┌────────────────┐  │  关键角度:         │
│                      │  │ 姿态骨架标注    │  │  ✓ 右肘: 167.0°   │
│                      │  │ 装备检测显示    │  │  ✗ 左肘: 125.0°   │
│                      │  │ 中文标签        │  │  ✓ 躯干倾斜: 2.6° │
│                      │  └────────────────┘  │  ✓ 右膝: 148.1°   │
│                      │                      │                    │
│                      │                      │  问题:             │
│                      │                      │  • 弱球新手需酷失败 │
│                      │                      │                    │
│  ▶/⏸  ⏮  ═══════○═══  150 / 300           │  建议:             │
├──────────────────────┴──────────────────────┤  • 击球时右臂...   │
│  操作                                        │                    │
│  ┌──────────┬──────────┐                   │                    │
│  │开始处理   │停止处理  │                   │                    │
│  └──────────┴──────────┘                   │                    │
│  历史: [选择历史记录 (5条)] [刷新]           │                    │
│  ┌────┬────┬────┐                         │                    │
│  │保存│加载│重置│                         │                    │
│  └────┴────┴────┘                         │                    │
│                                            │                    │
│  处理进度                                   │                    │
│  ✓ GPU已启用                                │                    │
│  ⏳ 处理进度: 50.0% (150/300) - 98.5 FPS   │                    │
└────────────────────────────────────────────┴────────────────────┘

🚀 快速开始

第一步:环境准备

GPU加速(推荐)

# 一键修复GPU(RTX系列显卡必须)
scripts\fix_gpu.bat

# 验证GPU状态
scripts\test_gpu.bat

成功标志:

✓ GPU已启用: NVIDIA GeForce RTX 4090
✓ CUDA版本: 12.1
✓ 性能测试: 120+ FPS

CPU模式(备用)

无需额外配置,但速度较慢(10-20 FPS)

第二步:启动GUI

# 方式1:双击批处理文件
run_compare_gui.bat

# 方式2:命令行
venv\Scripts\activate
python pose_detection_compare_gui.py

第三步:开始分析

方法A:处理新视频

  1. 点击"浏览"选择输入视频
  2. 设置输出路径(可选,默认添加_processed后缀)
  3. 调整参数(模型、显示、颜色、分析设置)
  4. 点击"开始处理"
  5. 等待处理完成(进度信息实时显示)
  6. 自动加载到播放器,查看分析结果

方法B:查看历史记录

  1. 点击"历史"下拉框
  2. 选择之前处理过的视频
  3. 立即加载并播放
  4. 无需重新处理

📊 功能详解

🎬 视频播放控制

播放操作:

  • 🎹 空格键 - 播放/暂停切换(防抖动,连续点击无卡死)
  • 🖱️ 点击按钮 - ▶播放 / ⏸暂停 自动切换
  • 🔄 重置按钮 - 回到第1帧,进度归零
  • 📊 进度条 - 拖动跳转,播放时实时同步
  • 🔢 帧号显示 - 当前帧 / 总帧数(从1开始)

进度条特性:

  • 实时同步:播放时自动跟随视频位置
  • 智能跳转:小幅度跳转无H.264警告
  • 精确定位:拖动到任意帧,立即显示
  • 帧号提示:清晰显示当前播放位置

🎨 姿态检测设置

检测引擎选择(v1.8新功能):

引擎 速度 精度 关键点 多人 适用场景
YOLOv8 ⚡⚡⚡ 120 FPS 70% 17 多人训练课堂
MediaPipe ⚡⚡ 40-60 FPS 96%+ 33→17 1v1精细指导

YOLOv8 模型选择(性能 vs 精度):

  • yolov8n-pose.pt - 快速(推荐日常训练)
  • yolov8s-pose.pt - 平衡
  • yolov8m-pose.pt - 精确(推荐专业分析)

MediaPipe 复杂度:

  • 0 - Lite模式(最快,适用CPU)
  • 1 - Full模式(平衡,推荐)
  • 2 - Heavy模式(最精确,适用高端GPU)

显示选项:

  • 骨架线条:显示人体骨架连接
  • 关键点:显示17个关节位置
  • 边界框:显示人物检测框
  • 置信度:显示检测置信度分数
  • 线宽/点大小:可调节(2-10px)

分体颜色标注:

  • 🔴 红色 - 头部(0-4号关键点)
  • 🟢 绿色 - 手臂(5-10号关键点)
  • 🔵 蓝色 - 躯干(肩膀和臀部连接)
  • 🟡 黄色 - 腿部(11-16号关键点)

🏸 装备检测

自动识别:

  • 羽毛球拍:使用COCO的tennis racket近似检测
  • 羽毛球:使用COCO的sports ball近似检测
  • 中文标签:PIL字体渲染,支持微软雅黑/黑体/宋体
  • 边界框:黄色框标注,清晰可见

检测设置:

  • 启用/禁用装备检测
  • 显示/隐藏边界框
  • 显示/隐藏标签
  • 可调置信度阈值(0.0-1.0)

注意: 标准COCO模型对羽毛球装备识别精度有限,建议训练专用模型以提高准确度。

🧠 AI姿态分析

自动计算:

  • 右肘角度(正常范围:140°-180°)
  • 左肘角度(正常范围:140°-180°)
  • 右膝角度(正常范围:145°-165°)
  • 左膝角度(正常范围:145°-165°)
  • 躯干倾斜(正常范围:0°-20°)

智能分析:

  • ✓ 绿色标记:角度正常
  • ✗ 红色标记:角度异常
  • 问题识别:自动列出姿态问题
  • 改进建议:给出专业指导意见

数据显示:

  • 实时显示:播放时同步更新
  • JSON保存:持久化到文件
  • 历史查看:加载历史视频时自动显示

📁 历史记录管理

自动记录:

  • 处理完成后自动添加到历史
  • 记录原视频、处理视频、姿态数据路径
  • 添加时间戳和显示名称
  • 最多保存20条,自动删除最旧的

智能清理:

  • 启动时自动检查文件是否存在
  • 刷新按钮手动清理无效记录
  • 删除视频文件后自动从列表移除
  • 保持历史列表干净有效

快速访问:

  • 下拉框显示所有历史记录
  • 点击选择,立即加载
  • 无需重新处理
  • 无需查找文件路径

配置保存:

  • 历史记录保存到 compare_config.json
  • 启动时自动加载
  • 可手动编辑配置文件
  • 团队共享配置(相同文件路径)

⚙️ 界面优化(v1.7)

紧凑布局:

  • 操作区域高度减少40%(~200px → ~120px)
  • 按钮横向排列,3行紧凑布局
  • padding和spacing大幅减少
  • 处理信息区增加80px可用空间

操作区域:

  • 第一行:开始处理 | 停止处理
  • 第二行:历史: [下拉选择框] [刷新]
  • 第三行:保存配置 | 加载配置 | 重置配置

空间利用:

  • 更多空间用于显示处理进度
  • 更多空间用于显示日志信息
  • 更清晰的信息展示
  • 更流畅的用户体验

📁 项目结构

ytDownload/
├── 🎯 核心程序
│   ├── pose_detection_compare_gui.py  # 对比分析GUI(v1.7.1)⭐ 推荐
│   ├── pose_detection_training.py     # 训练专用CLI版(GPU加速)
│   ├── pose_detection_advanced.py     # 高级CLI版(物体检测)
│   ├── pose_detection_gui.py          # 简单GUI版
│   ├── pose_detection.py              # 基础CLI版
│   └── sports_equipment_detector.py   # 装备检测模块
│
├── 📚 文档目录
│   ├── 界面优化和历史记录功能.txt      # v1.7功能说明
│   ├── 视频跳转优化说明.txt            # v1.7.1跳转优化
│   ├── 播放控制线程安全修复.txt        # 空格键修复
│   ├── 视频回放改进说明.txt            # v1.6回放功能
│   ├── 播放控制改进说明.txt            # v1.5+播放控制
│   ├── 姿态数据回放说明.txt            # 姿态数据功能
│   ├── 中文显示修复说明.txt            # 中文标签显示
│   ├── 装备检测说明.txt                # 装备检测功能
│   ├── 颜色修复说明.txt                # 分体颜色标注
│   ├── v1.4功能总结.txt               # v1.4版本总结
│   └── v1.6功能总结.txt               # v1.6版本总结
│
├── 📖 技术文档
│   ├── COMPARE_GUI_README.md          # GUI详细使用说明
│   ├── QUICKSTART.md                  # 5分钟快速入门
│   ├── TRAINING_GUIDE.md              # 完整使用教程
│   ├── CUDA_INSTALL_GUIDE.md          # GPU安装详解
│   ├── README_TRAINING.md             # 训练版功能说明
│   ├── MODEL_COMPARISON.md            # 模型对比
│   └── BUILD_EXE.md                   # 打包说明
│
├── 🔧 快捷脚本
│   ├── fix_gpu.bat                    # 修复GPU(必须运行)
│   ├── test_gpu.bat                   # 测试GPU性能
│   ├── check_nvidia.bat               # 环境诊断
│   ├── run_gui.bat                    # 启动简单GUI
│   └── run_pose_detection.bat         # 快速运行CLI
│
├── 🛠️ 工具程序
│   ├── benchmark_gpu.py               # GPU性能测试
│   └── build_exe.py                   # EXE打包工具
│
├── 📋 配置文件
│   ├── compare_config.json            # GUI配置(自动生成)
│   ├── requirements.txt               # Python依赖
│   └── START_HERE.txt                 # 快速参考卡
│
├── run_compare_gui.bat                # 启动对比分析GUI
├── README.md                          # 本文件
└── CLAUDE.md                          # AI开发文档

📊 性能对比

配置 处理速度 1分钟视频处理时间 显存占用 适用场景
CPU模式 10-20 FPS 3-6分钟 ~2GB RAM 备用方案
GPU (RTX 4090) 100-150 FPS 5秒 ~4GB VRAM 日常训练 ⭐
GPU + yolov8m-pose 60-80 FPS 10-15秒 ~6GB VRAM 专业分析
GPU + 慢动作4x 40-60 FPS 15-20秒 ~4GB VRAM 技术诊断

🎓 使用场景

场景1:课堂实时分析

需求: 现场录制视频,快速处理,立即讲解

操作流程:

  1. 录制学员动作视频(手机/相机)
  2. 导入到电脑,启动GUI
  3. 选择视频,点击"开始处理"
  4. 5-10秒处理完成
  5. 播放对比,指出问题
  6. 查看姿态数据,给出建议

时间成本: 1分钟视频 < 15秒处理时间

场景2:学员技术诊断

需求: 详细分析动作,找出技术问题

操作流程:

  1. 处理学员训练视频
  2. 使用慢动作回放(2-4x)
  3. 查看AI姿态分析
  4. 记录关键帧数据
  5. 对比正确动作标准
  6. 制定改进计划

分析维度:

  • 关节角度是否正常
  • 身体平衡是否稳定
  • 击球时机是否准确
  • 动作连贯性如何

场景3:专业技术对比

需求: 对比专业选手和学员动作差异

操作流程:

  1. 处理专业选手视频
  2. 处理学员视频
  3. 从历史记录快速切换查看
  4. 对比相同动作的姿态数据
  5. 找出差异点
  6. 制定针对性训练方案

对比要点:

  • 起跳高度和时机
  • 挥拍轨迹和速度
  • 落地姿势和平衡
  • 身体协调性

场景4:训练效果评估

需求: 跟踪学员进步,量化训练效果

操作流程:

  1. 定期录制学员动作(每周/每月)
  2. 处理并保存到历史记录
  3. 对比不同时期的姿态数据
  4. 量化角度改善程度
  5. 评估训练效果
  6. 调整训练计划

评估指标:

  • 关节角度改善度
  • 动作稳定性提升
  • 错误动作减少率
  • 技术标准符合度

🔧 系统要求

推荐配置(GPU加速)

  • 显卡: NVIDIA RTX 3060 或更高(6GB+ 显存)
  • CPU: Intel i5-10代 / AMD Ryzen 5 5000 或更高
  • 内存: 16GB RAM
  • 硬盘: SSD(视频读取更快)
  • 系统: Windows 10/11 64位
  • Python: 3.8 - 3.11

最低配置(CPU模式)

  • CPU: Intel i5-8代 / AMD Ryzen 5 3000
  • 内存: 8GB RAM
  • 硬盘: 50GB 可用空间
  • 系统: Windows 10/11 64位
  • 速度: 约10-20 FPS(较慢)

依赖环境

  • Python 3.8+
  • PyTorch 2.0+ (CUDA版本推荐)
  • OpenCV 4.8+
  • ultralytics (YOLOv8)
  • tkinter (GUI)
  • Pillow (中文字体)
  • FFmpeg (音频复制,可选)

⚠️ 重要提示

🚨 GPU必须正确配置

检查GPU状态:

python -c "import torch; print('CUDA可用:', torch.cuda.is_available())"

如果显示 CUDA可用: False

# 立即运行GPU修复脚本
scripts\fix_gpu.bat

# 验证修复结果
scripts\test_gpu.bat

成功后应该看到:

✓ CUDA可用: True
✓ GPU名称: NVIDIA GeForce RTX 4090
✓ CUDA版本: 12.1
✓ 性能测试: 120+ FPS

💾 文件组织建议

推荐目录结构:

羽毛球训练视频/
├── 原始视频/
│   ├── 2025-01-15_学员A.mp4
│   ├── 2025-01-15_学员B.mp4
│   └── ...
├── 处理结果/
│   ├── 2025-01-15_学员A_processed.mp4
│   ├── 2025-01-15_学员A_processed_pose_data.json
│   ├── 2025-01-15_学员B_processed.mp4
│   └── ...
└── 分析报告/
    └── ...

注意事项:

  • 保持原视频和处理视频在同一文件夹(方便历史记录自动匹配)
  • 使用默认命名规则(自动添加_processed后缀)
  • 不要手动重命名处理后的文件
  • 定期清理不需要的视频文件

🎬 视频格式建议

推荐格式:

  • 容器格式:MP4
  • 视频编码:H.264
  • 音频编码:AAC
  • 分辨率:1080p (1920x1080)
  • 帧率:30fps 或 60fps

拍摄技巧:

  • 光线充足,避免逆光
  • 拍摄距离:能完整看到人物动作
  • 拍摄角度:侧面或斜侧面最佳
  • 背景简洁,避免干扰
  • 单人入镜效果最好

🆘 常见问题

Q1: 处理速度很慢(<20 FPS)

原因: GPU未启用或驱动问题

解决:

# 方案1:修复GPU
scripts\fix_gpu.bat

# 方案2:检查驱动
scripts\check_nvidia.bat

# 方案3:更新显卡驱动
访问 NVIDIA 官网下载最新驱动

Q2: 显存不足错误

原因: 模型太大或视频分辨率过高

解决:

# 使用较小模型
选择 yolov8n-pose.pt

# 或禁用FP16
取消勾选"使用FP16"选项

Q3: 拖动进度条出现警告

原因: H.264视频解码技术性警告(已优化)

说明:

  • v1.7.1已优化跳转逻辑
  • 警告已自动抑制
  • 不影响任何功能
  • 如仍有问题,查看 视频跳转优化说明.txt

Q4: 连续按空格键卡死

原因: 多线程冲突(已修复)

说明:

  • v1.6.1已添加防抖动机制
  • 300ms内重复点击自动忽略
  • 线程安全检查防止冲突
  • 详见 播放控制线程安全修复.txt

Q5: 装备检测不准确

原因: 使用通用COCO模型近似检测

改进:

  1. 调高置信度阈值(0.3 → 0.5)
  2. 训练专用羽毛球装备检测模型
  3. 使用 sports_equipment_detector.py 的 CustomSportsDetector

Q6: 中文标签显示为方框

原因: 系统缺少中文字体

解决:

  1. 确保Windows系统字体正常
  2. 检查以下字体是否存在:
    • C:/Windows/Fonts/msyh.ttc(微软雅黑)
    • C:/Windows/Fonts/simhei.ttf(黑体)
    • C:/Windows/Fonts/simsun.ttc(宋体)
  3. 重新安装系统字体

Q7: 历史记录不显示

原因: 配置文件损坏或文件已移动

解决:

# 方案1:刷新历史记录
点击GUI中的"刷新"按钮

# 方案2:重置配置
点击"重置配置"按钮

# 方案3:手动编辑
删除 compare_config.json,重新启动

Q8: AI分析不准确

原因: 模型精度不够或视频质量问题

改进:

  1. 使用更大模型(yolov8m-pose.pt)
  2. 提高视频质量(1080p, 良好光线)
  3. 确保人物完整入镜
  4. 避免严重遮挡

Q9: 音频没有保留

原因: FFmpeg未安装

解决:

# 方案1:安装FFmpeg
下载 https://ffmpeg.org/download.html
添加到系统PATH

# 方案2:使用moviepy
pip install moviepy

# 验证
ffmpeg -version

Q10: 处理后视频无法播放

原因: 编解码器问题

解决:

  1. 安装完整的视频解码器包(如K-Lite Codec Pack)
  2. 使用VLC播放器
  3. 检查输出视频文件是否完整
  4. 查看处理日志是否有错误

📝 版本更新日志

v1.8.1 (2025-01-16) - OpenPose风格线条

  • 5种骨架线条样式 - 专业可视化效果
  • OpenPose风格渐变 - 躯干粗四肢细,中心到端点渐变
  • 置信度驱动线宽 - 检测精度可视化
  • 部位分级线宽 - 根据身体部位重要性调整
  • 由粗到细样式 - 从躯干向外递减
  • GUI样式选择 - 下拉框一键切换
  • 配置持久化 - 样式设置自动保存
  • 性能优化 - OpenPose渐变开销<5%

v1.8 (2025-01-16) - 双引擎支持

  • MediaPipe引擎集成 - 33关键点高精度检测
  • 智能关键点映射 - MediaPipe 33点 → COCO 17点兼容
  • 引擎自由切换 - GUI下拉选择 YOLOv8/MediaPipe
  • 性能对比表 - 速度、精度、适用场景一目了然
  • MediaPipe复杂度 - Lite/Full/Heavy三档可调
  • 配置持久化 - 引擎选择保存到配置文件
  • 统一绘制接口 - 两种引擎共用骨架绘制逻辑
  • 独立测试脚本 - mediapipe_detector.py 可单独运行

v1.7.1 (2025-01-15)

  • ✅ 优化视频跳转逻辑,减少H.264警告
  • ✅ 智能跳转策略(小幅度逐帧,大幅度直接)
  • ✅ 抑制技术性警告,保持控制台清爽
  • ✅ 改进用户体验

v1.7 (2025-01-14)

  • ✅ 紧凑界面布局,操作区域减少40%
  • ✅ 智能历史记录系统(最多20条)
  • ✅ 下拉选择快速访问
  • ✅ 自动清理无效记录
  • ✅ 配置文件增强

v1.6.1 (2025-01-13)

  • ✅ 修复连续点击空格键卡死问题
  • ✅ 添加播放控制防抖动机制(300ms)
  • ✅ 线程安全检查防止重复创建
  • ✅ 暂停时等待线程优雅退出

v1.6 (2025-01-12)

  • ✅ 直接加载已处理视频功能
  • ✅ 播放时进度条实时同步
  • ✅ 进度条重置修复
  • ✅ 帧标签显示优化(从1开始)

v1.5+ (2024-11)

  • ✅ 播放/暂停按钮合并
  • ✅ 空格键快捷键
  • ✅ 姿态数据实时显示

v1.4 (2024-11)

  • ✅ 羽毛球装备检测
  • ✅ 中文标签显示(PIL字体渲染)
  • ✅ 装备检测设置界面

v1.3

  • ✅ 姿态分析数据持久化
  • ✅ JSON格式保存
  • ✅ 数据回放功能

v1.2

  • ✅ 分体颜色标注(头/躯干/手臂/腿)
  • ✅ 颜色自定义功能

v1.1

  • ✅ 音频复制功能
  • ✅ FFmpeg/moviepy支持

v1.0

  • ✅ 基础姿态检测
  • ✅ 视频对比播放
  • ✅ GPU加速支持

📞 技术支持

问题诊断

生成诊断报告:

scripts\check_nvidia.bat > diagnosis.txt

报告内容包括:

  • GPU型号和驱动版本
  • CUDA版本和兼容性
  • PyTorch安装状态
  • 性能测试结果
  • 常见问题建议

获取帮助

  1. 查看文档 - 文档目录包含所有功能说明
  2. 运行诊断 - 使用 check_nvidia.bat 检查环境
  3. 查看日志 - GUI处理进度窗口显示详细日志
  4. 配置文件 - 检查 compare_config.json 配置

开发文档

  • AI开发 - 查看 CLAUDE.md
  • GUI详解 - 查看 COMPARE_GUI_README.md
  • 训练版 - 查看 docs/README_TRAINING.md

📜 许可证

MIT License - 自由使用和修改

🙏 致谢

  • YOLOv8 - Ultralytics团队
  • PyTorch - Facebook AI Research
  • OpenCV - OpenCV团队
  • FFmpeg - FFmpeg团队

🚀 快速开始指引

新手5步快速上手:

  1. 修复GPU → 运行 scripts\fix_gpu.bat
  2. 验证状态 → 运行 scripts\test_gpu.bat
  3. 启动GUI → 双击 run_compare_gui.bat
  4. 处理视频 → 选择视频,点击"开始处理"
  5. 查看结果 → 自动播放,查看姿态分析

详细教程:

  • 📖 快速入门:docs/QUICKSTART.md
  • 📖 完整教程:docs/TRAINING_GUIDE.md
  • 📖 功能说明:查看文档目录各个说明文件

遇到问题?

  • 🔧 GPU问题 → docs/CUDA_INSTALL_GUIDE.md
  • 🎬 使用问题 → COMPARE_GUI_README.md
  • 🐛 报告问题 → 查看文档或运行诊断工具

开始享受AI辅助羽毛球训练! 🏸

About

针对羽毛球运动员训练视频,写一段程序识别羽毛球运动员的运动姿势,判断姿势是否标准。 标注骨骼四肢手脚动作,用Python实现的代码,同时在视频中计算移动距离。运动员是在羽毛球场进行训练,训练周边有球场划线作为参考

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages