在人工智能技术更迭及后疫情时代的背景下,随着居民生活模式发生改变,智能运动健身行业得到了极大的发展。刘畊宏带起的“本草纲目”健身热潮也正式开启了居家健身时代,随之而来的便是人们对个性化、智能化的健身动作识别、矫正、计数的强烈需求,如何随时随地进行便捷、标准的健身运动逐渐成为了人们热议的话题。
防止走丢又实时关注更新
项目难点
非常规姿态多
在健身、舞蹈等场景中,人体姿态明显区别于常见的站姿,存在较多复杂的姿态。常见的公开数据集中往往缺少这类数据,因此在处理这类复杂姿态时,容易出现检测框位置或关键点位置不准确的问题,导致动作识别出现误检漏检,无法达到令人满意的效果。
模型体积与速度要求高
体育健身动作持续时间通常在秒级以内,因此对检测响应速度要求极高,同时随着边缘端硬件在健身行业的普及,对模型的体积要求也愈加严苛。
视频抖动严重
使用关键点算法处理视频数据时,由于预测针对单帧图像进行,在视频结果上往往会有抖动的现象。对于依靠精细化坐标的应用场景(如健身计数、基于关键点的虚拟渲染等),非常容易造成误检或可视化效果不流畅的问题。
关键点点数需求多变
方案设计
图2:方案设计
模型选型
PP-TinyPose的出世彻底打破了精度与速度无法兼得的难题,成为轻量级关键点检测的最佳选择。PP-TinyPose采用Top-Down的方式,先应用3.3M、150FPS的超轻量检测网络PP-PicoDet检测出人体,再用基于Lite-HRNet的移动端优化模型确保关键点检测的高精度,同时扩大数据集,减小输入尺寸,预处理与后处理加入AID、UDP和DARK等策略,保证模型的高性能。实现速度在FP16下达到122FPS的情况下,精度也可达到COCO数据集51.8%AP,不仅比其他类似实现速度更快,精度更是提升了130%!
数据准备
图3:数据准备
模型训练优化
更令人惊喜的是,在原版的基础上,针对体育健身场景难点,PP-TinyPose分别从场景数据多样性、检测模型迭代、关键点稳定性三个方向全面升级,发布了专为体育动作识别打造的增强版本,最终相比原版在健身场景数据上提升9.1%AP,实现速度85FPS,精度77.1%AP。同时,新增7个复杂动作的精准识别,包括侧身、卧躺、跳跃、高抬腿等非常规动作。具体来看:
场景数据多样性
图4:PP-TinyPose增强版效果对比图
检测模型迭代
关键点稳定性
加入OneEuro滤波器和EMA两种关键点稳定方式,将当前关键点坐标结果和历史关键点坐标结果结合计算,使得输出的坐标更加稳定平滑。
如果模型仍无法满足要求,开发者还可以基于飞桨目标检测开发套件PaddleDetection所提供的二次开发文档,进行模型训练及优化、关键点新增、删减与类别自定义,5分钟即可实现关键点检测个性化开发。
完整链接:
https://github.com/PaddlePaddle/PaddleDetection/blob/develop/docs/advanced_tutorials/customization/keypoint_detection.md
后处理逻辑
图7:动作计数逻辑
详细代码链接:
https://github.com/zhiboniu/pose_demo_android/blob/release/1.0/app/src/main/cpp/pose_action.cc
端侧部署
图8:端侧部署效果展示
如需更新模型并实现更丰富的健身动作识别,可参考以下流程:
训练模型导出为.nb后缀的Paddle Lite模型;
替换pose_demo_android中models下的nb模型文件;
通过Android Studio编译运行代码,重新生成APP。
https://github.com/zhiboniu/pose_demo_android
作为轻量化骨骼点检测的开源SOTA算法, PP-TinyPose以精度速度高、微小目标识别效果好、多人检测速度快、端侧部署易用性强、体育健身动作检测准著称,在端侧微弱算力上,使用飞桨轻量化推理引擎Paddle Lite,即可快速实现各类健身动作识别与计数!
还在等什么,快来搭建属于你的AI健身教练吧!
关注【飞桨PaddlePaddle】公众号
获取更多技术内容~