姿态识别+康复训练矫正+代码+部署(AI 健身教练来分析深蹲等姿态)-1
https://developer.aliyun.com/article/1446343
深蹲时的状态图解释
状态转换图解释了执行深蹲时保持的各种状态。
请注意,所有状态都是根据髋膝线和垂直线之间的角度计算的(为简单起见,我们将此阶段压缩为膝盖和垂直线之间的角度).
以下 gif 说明了过渡的各个阶段。
我们将处理应用程序的三种状态:s1、s2 和 s3。
- 状态 s1: 如果膝盖与垂直方向的夹角落在32°以内,则处于正常阶段,其状态为s1。它本质上是更新正确和不当深蹲计数器的状态。
- 状态 s2: 如果膝盖和垂直方向之间的角度落在 35° 和 65° 之间,则处于过渡阶段,随后进入状态 s2.
- 状态 s3: 如果膝盖和垂直方向之间的角度在特定范围内(例如,在 75° 和 95° 之间),则它处于通过阶段,随后进入状态 s3.
我们最终也可以提供状态转换图。
。此列表确定是否执行正确或不正确的深蹲。
一旦遇到状态 s1,我们将state_sequence重新初始化为空列表,以便进行后续的深蹲计数。
设计应用程序时的关键概念
角度计算
3 点之间的角度,其中 1 个是参考点,如下所示。
该等式由下式给出:
例如,要计算偏移角,我们将找到鼻子和肩膀之间的角度,鼻子的坐标是参考点。
当偏移角度超过某个OFFSET_THRESH时,我们假设该人面向相机前方,并显示相应的警告消息。
同样,可以参考下图来计算肩臀线与垂直线之间的夹角.
AI Fitness Trainer 应用程序的反馈操作
我们的应用程序应提供五条反馈消息,而一条执行深蹲,即:
- 向前弯曲
- 向后弯曲
- 降低臀部
- 膝盖从脚趾上掉下来
- 深蹲
- 当髋部与髋部的垂直角度(即肩髋线与垂直线之间的夹角)低于阈值(例如 20°)时,将显示反馈 1,如下图所示。
当髋部垂直角度高于阈值(例如 45°)时,将显示反馈 2, 如下所示
# 代码与部署
环境安装
unzip myproject.zip cd my_project conda create -n pose python =3.9 pip install -r requirements.txt
脚本运行
python run.py
总结
到目前为止,我们已经展示了如何使用 姿态识别解决方案构建一个简单的应用程序来分析深蹲。该应用程序的关键组件包括:
- 计算角度,例如肩-髋、髋-膝和膝-踝线及其相应的垂直线。
- 我们保持各种状态以显示适当的反馈并区分正确和不适当的深蹲。
- 计算重置相应计数器期间的非活动状态。
该应用程序假设该人应保持相机的良好侧视图。如果一个人完全面对镜头前,我们会显示适当的警告信息。