当前位置:网站首页>智能健身动作识别:PP-TinyPose打造AI虚拟健身教练!
智能健身动作识别:PP-TinyPose打造AI虚拟健身教练!
2022-08-04 07:22:00 【飞桨PaddlePaddle】
在人工智能技术更迭及后疫情时代的背景下,随着居民生活模式发生改变,智能运动健身行业得到了极大的发展。刘畊宏带起的“本草纲目”健身热潮也正式开启了居家健身时代,随之而来的便是人们对个性化、智能化的健身动作识别、矫正、计数的强烈需求,如何随时随地进行便捷、标准的健身运动逐渐成为了人们热议的话题。
在健身场景下,动作类型与人体骨骼点的位置变化之间存在着密不可分的关系,因此采取人体关键点检测技术实现智能化健身动作识别与计数就再为合适不过了。
图1:基于PP-TinyPose的健身动作识别
那么具体如何能利用人体关键点检测实现智能化的健身动作识别与计数呢?今天就手把手带大家用飞桨搭建一个AI虚拟健身教练吧!
不慌,先码住完整教程:
https://github.com/PaddlePaddle/PaddleDetection
* 记得Star收藏 *
防止走丢又实时关注更新
项目难点
非常规姿态多
在健身、舞蹈等场景中,人体姿态明显区别于常见的站姿,存在较多复杂的姿态。常见的公开数据集中往往缺少这类数据,因此在处理这类复杂姿态时,容易出现检测框位置或关键点位置不准确的问题,导致动作识别出现误检漏检,无法达到令人满意的效果。
模型体积与速度要求高
体育健身动作持续时间通常在秒级以内,因此对检测响应速度要求极高,同时随着边缘端硬件在健身行业的普及,对模型的体积要求也愈加严苛。
视频抖动严重
使用关键点算法处理视频数据时,由于预测针对单帧图像进行,在视频结果上往往会有抖动的现象。对于依靠精细化坐标的应用场景(如健身计数、基于关键点的虚拟渲染等),非常容易造成误检或可视化效果不流畅的问题。
关键点点数需求多变
例如在芭蕾舞场景下,垫脚、勾脚等动作仅依赖脚腕关键点无法进行区分,往往需要更多骨骼点信息才能实现精细化动作识别。
方案设计
图2:方案设计
模型选型
PP-TinyPose的出世彻底打破了精度与速度无法兼得的难题,成为轻量级关键点检测的最佳选择。PP-TinyPose采用Top-Down的方式,先应用3.3M、150FPS的超轻量检测网络PP-PicoDet检测出人体,再用基于Lite-HRNet的移动端优化模型确保关键点检测的高精度,同时扩大数据集,减小输入尺寸,预处理与后处理加入AID、UDP和DARK等策略,保证模型的高性能。实现速度在FP16下达到122FPS的情况下,精度也可达到COCO数据集51.8%AP,不仅比其他类似实现速度更快,精度更是提升了130%!
数据准备
数据收集包含人体检测和人体关键点检测两部分,均使用COCO train2017和AI Challenger trainset作为训练集。将两数据集标注含义进行统一,并转换为COCO数据格式后执行训练。
图3:数据准备
模型训练优化
更令人惊喜的是,在原版的基础上,针对体育健身场景难点,PP-TinyPose分别从场景数据多样性、检测模型迭代、关键点稳定性三个方向全面升级,发布了专为体育动作识别打造的增强版本,最终相比原版在健身场景数据上提升9.1%AP,实现速度85FPS,精度77.1%AP。同时,新增7个复杂动作的精准识别,包括侧身、卧躺、跳跃、高抬腿等非常规动作。具体来看:
场景数据多样性
在COCO数据集和AI Challenger数据集的基础上,进一步结合采集的健身、舞蹈等较难场景数据对模型进行迭代,提升模型预测效果。
图4:PP-TinyPose增强版效果对比图
检测模型迭代
使用PP-PicoDet增强版模型,在原版基础上引入TAL及ETA Head,优化PAN等结构,COCO数据集精度提升2个点以上。基于丰富的健身场景数据,人体检测模型精度提升6.8% mAP****。
关键点稳定性
加入OneEuro滤波器和EMA两种关键点稳定方式,将当前关键点坐标结果和历史关键点坐标结果结合计算,使得输出的坐标更加稳定平滑。
图5:稳定性升级对比图
如果模型仍无法满足要求,开发者还可以基于飞桨目标检测开发套件PaddleDetection所提供的二次开发文档,进行模型训练及优化、关键点新增、删减与类别自定义,5分钟即可实现关键点检测个性化开发。
图6:PP-TinyPose增强版支持手指、脚趾等29个关键点
- 完整链接:
https://github.com/PaddlePaddle/PaddleDetection/blob/develop/docs/advanced_tutorials/customization/keypoint_detection.md
后处理逻辑
得到人体关键点检测结果后,可以结合不同关键点在相同帧的相对关系,或者不同帧下同一关键点的位置变化来进行动作识别和计数。
以侧平举为例,当手臂抬起角度接近水平,则认为手臂处于抬起动作;当手臂放下角度接近垂直,则认为手臂处于放下动作;两动作交替完成后认为侧平举动作计数加一。
图7:动作计数逻辑
除此之外,PP-TinyPose增强版还配套了深蹲和站姿上举的动作识别计数实现。
- 详细代码链接:
https://github.com/zhiboniu/pose_demo_android/blob/release/1.0/app/src/main/cpp/pose_action.cc
端侧部署
图8:端侧部署效果展示
通过以上方法即可获得高效的健身动作识别计数模型,依托于飞桨端侧推理引擎Paddle Lite,能够灵活快速的部署到各类端侧设备上。
blog.csdnimg.cn/img_convert/7479679e3abfb3507e9b0dddb05c8b65.png)
如需更新模型并实现更丰富的健身动作识别,可参考以下流程:
训练模型导出为.nb后缀的Paddle Lite模型;
替换pose_demo_android中models下的nb模型文件;
通过Android Studio编译运行代码,重新生成APP。
- 详细步骤参考链接:
https://github.com/zhiboniu/pose_demo_android
作为轻量化骨骼点检测的开源SOTA算法, PP-TinyPose以精度速度高、微小目标识别效果好、多人检测速度快、端侧部署易用性强、体育健身动作检测准著称,在端侧微弱算力上,使用飞桨轻量化推理引擎Paddle Lite,即可快速实现各类健身动作识别与计数!
还在等什么,快来搭建属于你的AI健身教练吧!
- 教程文档及模型下载链接:
https://github.com/PaddlePaddle/PaddleDetection/blob/develop/industrial_tutorial/README.md
最后,欢迎大家扫码进群,与PP-TinyPose核心研发工程师一起交流讨论,同时Get飞桨最新产品动态!
关注【飞桨PaddlePaddle】公众号
获取更多技术内容~
本文同步分享在 博客“飞桨PaddlePaddle”(CSDN)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
边栏推荐
猜你喜欢
给Unity Behavior Designer(Unity行为树) 的Can See Object 画圆锥辅助图
两日总结六
RT-Thread Studio学习(十二)W25Q128(SPI)的读写
C语言指针
likeshop外卖点餐系统【100%开源无加密】
Amazon亚马逊 Vendor Central Label详解
(19)[系统调用]SSTD hook 阻止关闭
GIS数据与CAD数据间带属性字段互相转换还原工具,解决ArcGIS等软件进行GIS数据转CAD数据无法保留属性字段问题
The national vocational skills contest competition of network security emergency response
千古第一文人苏轼的众CP
随机推荐
leetcode 22.7.31(1)两数之和 (2)整数除法
学校申请链接
分布式计算实验1 负载均衡
Lightweight Backbone VGNetG Achieves "No Choice, All" Lightweight Backbone Network
【字符串】最小表示法
powershell和cmd对比
高等代数_证明_两个矩阵乘积为0,则两个矩阵的秩之和小于等于n
LeetCode 97. 交错字符串
Cross-species regulatory sequence activity prediction
玩转TypeScript对象、对象作为参数进行函数传递、接口和内置对象[无敌态]
一天学会JDBC03:Statement的用法
千古第一文人苏轼的众CP
adb无法桥接夜神模拟器
Produce definition 产品与行业分析 勤于思考 善于总结 强于表达
Detailed explanation of TCP protocol
两日总结七
MYSQL JDBC图书管理系统
两日总结六
Amazon亚马逊 Vendor Central Label详解
【JS 逆向百例】某网站加速乐 Cookie 混淆逆向详解