姿态识别+康复训练矫正+代码+部署(AI 健身教练来分析深蹲等姿态)

本文主要是介绍姿态识别+康复训练矫正+代码+部署(AI 健身教练来分析深蹲等姿态),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

姿态识别+康复训练矫正(AI 健身教练姿态分析)

目录

本文旨在构建一个 AI 健身教练,帮助判断姿态标准与否,并且矫正姿态!无论您是初学者还是专业人士,它都可以帮助您无缝地进行深蹲。为了完成这项任务,我们可以利用基于深度学习的人类姿态估计算法的强大功能。

  1. 身体姿态估计

  2. 用于姿势分析的正面和侧视图的直觉]

  3. 姿势构建 AI 健身教练来分析深蹲

  4. 深蹲时的状态图解释]

  5. AI Fitness Trainer 的应用流程]

  6. 设计应用程序时的关键概念

    1. 角度计算
    2. AI Fitness Trainer 应用程序的反馈操作](
    3. 计算非活动时间]
  7. AI Fitness Trainer 应用程序中的测试用例]

  8. 深蹲模式 – 初学者与专业人士

姿态估计

使用检测器,管道首先定位帧内的人物/姿势感兴趣区域 (ROI)。跟踪器随后使用 ROI 裁剪的帧作为输入来预测 ROI 中的姿态地标和分割掩码。

在这里插入图片描述

姿势分析的正面和侧视图的直觉

  • 在设计一个应用程序来分析各种健身锻炼时,人们可能会好奇地执行各种计算,同时牢记相机对物体(人)的视野。
  • 使用正面视图,我们可以访问左侧和右侧,因此可以利用各种地标点的坡度和角度,例如膝臀线和膝臀线之间的角度等。这些信息可能有助于分析头顶推举、侧板支撑、仰卧起坐、卷曲等练习。
  • 我们可以使用侧视图来更好地估计有关垂直或水平的各种倾斜度。这些信息有助于分析硬拉、俯卧撑、深蹲、俯卧撑等运动。
  • 由于我们正在分析深蹲和所有关于垂直方向适当倾斜度的重要计算,因此我们选择了侧视图。
  • 为确保健康的生活方式,罗马尼亚主动向进行 20 次深蹲的人提供免费巴士票。看看这个Instagram帖子!
    在这里插入图片描述

姿势构建 AI 健身教练来分析深蹲

下图描述了我们的应用程序所需的地标。

在这里插入图片描述

我们将考虑髋-膝、膝-踝肩-髋线与垂直线的角度,以计算状态(在后续部分中解释)并执行适当的反馈消息。如下图所示。

在这里插入图片描述

用于姿势分析的正面和侧视图的直觉

Frontal vs side view for posture analysis on AI fitness trainer

在设计一个应用程序来分析各种健身锻炼时,人们可能会好奇地执行各种计算,同时牢记相机对物体(人)的视野。

使用正面视图,我们可以访问左侧和右侧,因此可以利用各种地标点的坡度和角度,例如膝臀线和膝臀线之间的角度等。这些信息可能有助于分析头顶推举、侧板支撑、仰卧起坐、卷曲等练习。

我们可以使用侧视图来更好地估计有关垂直或水平的各种倾斜度。这些信息有助于分析硬拉、俯卧撑、深蹲、俯卧撑等运动。

由于我们正在分析深蹲和所有关于垂直方向适当倾斜度的重要计算,因此我们选择了侧视图。

为确保健康的生活方式,罗马尼亚主动向进行 20 次深蹲的人提供免费巴士票。看看这个Instagram帖子!

在Instagram上查看此帖子

Алина Бжолка (@alinabzholkina) 分享的帖子

使用 MediaPipe 姿势构建 AI 健身教练来分析深蹲

下图描述了我们的应用程序所需的地标。

Pose Landmarks used for squats analysis in AI fitness

我们将考虑髋-膝、膝-踝肩-髋线与垂直线的角度,以计算状态(在后续部分中解释)并执行适当的反馈消息。如下图所示。

Angles between the shoulder-hip, hip-knee, knee-ankle lines with the corresponding vertical in AI fitness trainer

  • 此外,我们将计算偏移角度(鼻子和肩膀所占的角度),并发出适当的警告,以保持良好的侧视图。
  • 此外,我们还将考虑计算不活动的时间,根据这些时间,正确和不正确的深蹲计数器将被重置。
  • 该应用程序还将提供两种模式:初学者和专业;人们可以选择其中任何一个并开始无缝地进行深蹲,无论他是初学者还是专家。
  • 人体姿态估计是计算机视觉中最令人兴奋的研究领域之一。它在广泛的应用中具有重要意义。我们可以用它来构建一个简单而令人兴奋的应用程序来[分析不良的坐姿]

深蹲时的状态图解释

状态转换图解释了执行深蹲时保持的各种状态。

请注意,所有状态都是根据髋膝线和垂直线之间的角度计算的(为简单起见,我们将此阶段压缩为膝盖和垂直线之间的角度.

以下 gif 说明了过渡的各个阶段。

在这里插入图片描述

我们将处理应用程序的三种状态:s1s2s3。

  • 状态 s1: 如果膝盖与垂直方向的夹角落在32°以内,则处于正常阶段,其状态为s1。它本质上是更新正确和不当深蹲计数器的状态。

  • 状态 s2: 如果膝盖和垂直方向之间的角度落在 35° 和 65° 之间,则处于过渡阶段,随后进入状态 s2.

  • 状态 s3: 如果膝盖和垂直方向之间的角度在特定范围内(例如,在 75° 和 95° 之间),则它处于通过阶段,随后进入状态 s3.

我们最终也可以提供状态转换图。

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=C%3A%5CUsers%5Cadmin%5CDesktop%5C%E5%9B%BE%E5%BA%93%5C5.png&pos_id=img-3im2gicr-1698838611908
注意:

  • 与反馈相关的所有计算都是针对状态 s2 和 s3 计算的。

  • 在实施过程中,我们维护一个列表:state_sequence。它包含人员从状态 s1s3 再回到 s1 时的一系列状态。state_sequence 中的最大状态数 为 3 ([s2**, s3, s2]**)。此列表确定是否执行正确或不正确的深蹲。

一旦遇到状态 s1,我们将state_sequence重新初始化为空列表,以便进行后续的深蹲计数。

在这里插入图片描述

设计应用程序时的关键概念

角度计算

3 点之间的角度,其中 1 个是参考点,如下所示。

在这里插入图片描述

该等式由下式给出:
在这里插入图片描述

例如,要计算偏移角,我们将找到鼻子和肩膀之间的角度,鼻子的坐标是参考点。

在这里插入图片描述

偏移角度超过某个OFFSET_THRESH时,我们假设该人面向相机前方,并显示相应的警告消息。

同样,可以参考下图来计算肩臀线与垂直线之间的夹角.

在这里插入图片描述

AI Fitness Trainer 应用程序的反馈操作

我们的应用程序应提供五条反馈消息,而一条执行深蹲,即:

  1. 向前弯曲
  2. 向后弯曲
  3. 降低臀部
  4. 膝盖从脚趾上掉下来
  5. 深蹲
  • 当髋部与髋部的垂直角度(即肩髋线与垂直线之间的夹角)低于阈值(例如 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

总结

到目前为止,我们已经展示了如何使用 姿态识别解决方案构建一个简单的应用程序来分析深蹲。该应用程序的关键组件包括:

  • 计算角度,例如肩-髋、髋-膝和膝-踝线及其相应的垂直线。
  • 我们保持各种状态以显示适当的反馈并区分正确和不适当的深蹲。
  • 计算重置相应计数器期间的非活动状态。

该应用程序假设该人应保持相机的良好侧视图。如果一个人完全面对镜头前,我们会显示适当的警告信息。

这篇关于姿态识别+康复训练矫正+代码+部署(AI 健身教练来分析深蹲等姿态)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/328093

相关文章

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

Java 线程池+分布式实现代码

《Java线程池+分布式实现代码》在Java开发中,池通过预先创建并管理一定数量的资源,避免频繁创建和销毁资源带来的性能开销,从而提高系统效率,:本文主要介绍Java线程池+分布式实现代码,需要... 目录1. 线程池1.1 自定义线程池实现1.1.1 线程池核心1.1.2 代码示例1.2 总结流程2. J

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

Vue实现路由守卫的示例代码

《Vue实现路由守卫的示例代码》Vue路由守卫是控制页面导航的钩子函数,主要用于鉴权、数据预加载等场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、概念二、类型三、实战一、概念路由守卫(Navigation Guards)本质上就是 在路

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺