健身相机:将手机的相机变成健身追踪器

2021-02-10 04:55:11

帮助将现实世界上传到Internet。从事某些工作,使数十亿家庭用户在网上工作的体验更加有趣。在Zoom通话中叠加心率。提高视频会议质量。建立一个双人竞争对手,一个朋友而不是同事。舞台是你的。

今年早些时候,我使用了TensorFlow Lite的PoseNet模型。我认为它具有很大的潜力,我认为这次黑客马拉松将是一个很好的机会来寻找它的用途。

作为一个量化的自我发烧友,我几乎跟踪自己所做的一切。尽管我能够自动执行很多跟踪操作,但我对跟踪锻炼的方式从未感到满意:

我可以使用机器学习和相机自动跟踪我的锻炼吗?这次黑客马拉松将是我发现的机会。

您可能想知道,锻炼马拉松与hackathon的主题“使网络工作的乐趣更加有趣”有什么关系。我想我可能已经停止阅读“帮助将真实世界上传到Internet”上的提示,并决定“真实世界”将是我的锻炼,而“ Internet”将是一些云数据库。当我意识到自己的错误时,我改变了主旨,以“一种鼓励员工更加积极主动的方式”。

我要做的第一件事是从GitHub上获取TensorFlow Lite PoseNet Android演示。该应用程序使用手机的摄像头跟踪17个不同关键点(脚,脚踝,膝盖,臀部,肩膀,脖子,眼睛,耳朵,肘部和手腕)的位置,并将其叠加在视频预览上方。构建它并将其部署到我的手机后,我注意到性能很糟糕。在我的诺基亚6.1(并非完全是旗舰材料)上,该应用程序难以维持10 FPS。使用或演示都不好玩,所以我做了一点调查。

经过几个小时的调查,我发现并解决了3个重要的性能瓶颈。该应用程序现在可以达到25 FPS,将性能提高250%以上。虽然远非完美,但该应用程序终于可以使用了。

在接下来的一个小时里,我让手机看着我在不同的角度,距离和光照条件下进行各种锻炼。我密切关注了姿势估算覆盖图的准确性,以了解它会和不兼容的锻炼类型。例如,当面对镜头和下蹲时,它可以非常准确地跟踪所有17个关键点。但是,面对照相机和俯卧撑时,它很难识别我的脸(鼻子,眼睛,耳朵)以外的任何东西。同样,它非常擅长跟踪手的动作……直到您握住哑铃并且手突然消失。

最初,我计划使用姿势估计和训练有素的分类器来检测运动的不同阶段。例如,粗麻布可以分解为以下三个阶段:蹲伏,铺板和跳跃。

但是,由于PoseNet的准确性不一致和黑客马拉松的时间限制,我转向了一个更简单的方法。除了对练习进行分类外,它只计算重复次数。为了进一步简化范围,我仅支持4种体重练习:下蹲,俯卧撑,仰卧起坐和引体向上。

像往常一样,我在镜头前进行了锻炼,但是这次我将所有帧(17个关键点的快照)记录到CSV文件中。然后,我使用Python和Google Colab分析了数据,以查找模式并找到合适的重复计数算法。您可以在此处查看笔记本。

您无需成为天才就可以查看此图表并确定一个人进行了多少下蹲。我敢肯定,许多算法和机器学习模型都可以胜任。但这是一次黑客马拉松,我无法承受如此复杂的水平。

有了核心功能,并且在演示之前还有几个小时,我决定完善该应用程序。我调整了颜色,调整了布局,添加了音频反馈(“一个!”,“两个!”,“三个”"),实现了一些设置,设计了一个应用程序图标,并发布了APK。您可以在下面找到最终产品:

总体而言,黑客马拉松是一次很棒的经历。我很幸运被选为决赛入围者,并且有机会向评审们展示了我的应用。下次,我将确保加入团队。