Skip to content

基于MediaPipe姿态检测的AI健身助手,支持RTSP摄像头、Docker部署、TTS语音播报 选择 Public

License

Notifications You must be signed in to change notification settings

yanfeng17/Good-GYM

Repository files navigation

Good-GYM: AI健身助手 💪

Good-GYM Logo

基于 MediaPipe 姿态检测的智能健身助手 | Docker 一键部署 | 支持 RTSP 摄像头

License Python Docker


📖 项目简介

Good-GYM 是一款基于 AI 姿态检测技术的智能健身助手,通过摄像头实时追踪您的运动姿态,自动计数并提供语音反馈。项目采用 Google MediaPipe 进行姿态检测,支持 Docker 容器化部署,可通过 Web 界面远程访问。

🎯 核心特性

  • 🤖 AI 姿态检测 - 采用 MediaPipe Pose Landmarker 实现精准的 33 关键点追踪
  • 🎬 多源视频支持 - 支持本地摄像头、RTSP 网络摄像头、本地视频文件
  • 🐳 Docker 部署 - 一键启动,支持打包成 FPK 部署到 FNOS/Docker 环境
  • 🌐 Web 界面访问 - 通过浏览器远程访问,支持桌面端和移动端
  • 🔊 智能语音播报 - TTS 语音播报次数,里程碑音效(每 10 次)
  • 💾 设置持久化 - 运动类型、摄像头地址等配置自动保存
  • 📊 运动统计 - 实时追踪健身进度和历史记录
  • 🎨 可视化骨骼 - 实时显示人体骨骼和关键角度

🎥 摄像头配置指南

1. RTSP 网络摄像头

常见品牌 RTSP 地址格式:

  • 海康威视 (Hikvision): rtsp://admin:密码@IP地址:554/h264/ch1/main/av_stream
  • TP-Link / TAPO: rtsp://admin:密码@IP地址:554/stream1
  • 小米/大方: rtsp://IP地址:8554/unicast

如何配置:

  1. Web 界面配置

    • 打开 Good-GYM 网页 (http://IP:6080)
    • 点击右下角【控制面板】
    • 将【视频源】选择为 RTSP
    • 在下方输入框填入完整 RTSP 地址
    • 点击【保存设置】,页面会自动刷新
  2. 配置文件配置 (Docker):

    • 修改 docker-compose.yml:
      environment:
        - RTSP_URL=rtsp://admin:password@192.168.1.100:554/stream1

2. 使用手机作为摄像头

  • iOS/Android: 安装 "IP Webcam" 或 "DroidCam" 应用。
  • 获取 RTSP/HTTP 流地址(例如 http://192.168.1.5:8080/video)。
  • 在 Good-GYM 中填写该地址。

🚀 快速开始

方式一:FPK 部署(推荐 - 飞牛 NAS/Docker 用户)

  1. 下载 FPK 包

    git clone https://github.com/yanfeng17/Good-GYM.git
  2. 安装到 FNOS

    • 在飞牛 OS 应用商店中选择"本地安装"
    • 上传 fpk/goodgym.fpk 文件
    • 安装完成后,在浏览器访问 http://[NAS_IP]:6080

方式二:Docker 部署

docker-compose up -d

方式三:本地 Python 运行

pip install -r requirements.txt
python run.py

📋 系统要求

项目 最低要求 推荐配置
操作系统 Windows 10 / macOS 10.15 / Linux Windows 11 / macOS 12+ / Ubuntu 20.04+
Python 3.9 3.9 或 3.10
摄像头 任意 USB/网络摄像头 1080p 摄像头
Docker Docker 20.10+ Docker 24.0+

🎮 使用指南

1. Web 界面操作

访问 http://[设备IP]:6080

  • 🎥 视频显示区 - 实时显示摄像头画面和骨骼追踪
  • 📊 控制面板 - 选择运动类型、调整设置
  • 🔊 音频状态 - 右上角显示音频连接状态(绿色=已连接)
  • 🎯 计数显示 - 大字显示当前次数

2. 支持的运动类型详解

系统通过计算特定关节点的角度变化来判定动作是否完成。一般逻辑为:

  1. 准备/拉伸阶段:角度大于 开始角度,进入 "UP" 状态。
  2. 发力/收缩阶段:角度小于 触发角度,且处于 "UP" 状态 -> 计数 +1
运动类型 中文名 关键部位 (角度计算点) 计数逻辑 (角度阈值) 说明
Squat 深蹲 髋部-膝盖-脚踝 >160° 站立 -> <110° 下蹲 站直后下蹲到大腿约为水平位置
Push-up 俯卧撑 肩膀-手肘-手腕 >160° 手臂伸直 -> <110° 手臂弯曲 手臂伸直后下放身体直到手肘弯曲约90度
Sit-up 仰卧起坐 肩膀-髋部-膝盖 >170° 躺平 -> <145° 坐起 平躺后上半身坐起,使身体折叠
Bicep Curl 弯举 肩膀-手肘-手腕 <60° 手臂弯曲 (反向) -> >160° 下放 注意:此处逻辑为手臂先弯曲(举起)再下放复位
Lateral Raise 侧平举 髋部-肩膀-手肘 <80° 手臂平举 -> >30° 手臂放下 注意:测量的是腋下角度。手臂抬平后放下复位
Overhead Press 推举 髋部-肩膀-手肘 >150° 手臂上举 -> <30° 手臂放下 测量腋下角度,手臂上举伸直后下放
Leg Raise 抬腿 肩膀-髋部-膝盖 >160° 腿部伸直 -> <130° 抬腿 身体平躺,腿部伸直后向上抬起
Knee Raise 抬膝 髋部-膝盖-脚踝 >160° 腿部伸直 -> <110° 提膝 站立状态下将膝盖提起
Knee Press 压膝 髋部-膝盖-脚踝 >160° 腿部伸直 -> <110° 弯曲 膝盖按压运动,检测腿部角度变化
Crunch 卷腹 肩膀-髋部-膝盖 >175° 躺平 -> <150° 卷起 类似仰卧起坐,亦检测上半身抬起角度

提示:所有角度阈值均可在 data/exercises.json 文件中自定义修改。例如觉得深蹲太难触发,可以将 down_angle 改大一点(如 120)。

🤝 贡献指南

欢迎提交 Pull Request!

� 致谢

�📄 许可证

MIT License


Made with ❤️ by yanfeng17

About

基于MediaPipe姿态检测的AI健身助手,支持RTSP摄像头、Docker部署、TTS语音播报 选择 Public

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •