我一直在玩 Google 的 MLKit,并决定检测俯卧撑。
作为一个快速测试,我取了左肩的位置,并绘制了 Y 轴。以下是各种试验的样子:
五个俯卧撑
6个俯卧撑,离手机稍微远一点
完全没有俯卧撑
6个俯卧撑,远见且方向不同
好消息
如果我查看这些图表,我可以直观地直观地看出某人做了多少俯卧撑。
挑战
我不太确定如何通过算法检测到这一点。
我考虑过使用“坡度变化”之类的东西,但这样我也会检测到很多噪音。我考虑过使用傅立叶变换,但从一些基本的演奏中,我无法清楚地区分“俯卧撑”信号与其他信号。
我认为的两个大问题是:
- 一种。“俯卧撑”波的宽度和高度可能不同,具体取决于用户与手机的距离
- 湾。我不能仅仅依靠斜坡来解决这个问题,需要某种“波”检测器
当前计划
目前,我正在考虑做一些特殊的启发式:
- 也许我可以使用其他信息,例如:
- 臀部坐标(确保它们与肩膀在同一纬度范围内)
- X坐标信息
- 我可以使用以上两条信息来“删除”坏区域
- (任何在 X 坐标上有很大运动的地方,或者臀部没有对齐,都不能做俯卧撑),也许我可以依靠像“显着”坡度变化这样的东西。
问题
现在我处于一个有很多我不知道我不知道的东西的位置。您如何看待我的“当前计划”?你会以不同的方式处理它吗?你有什么方法可以研究吗?
目前的探索:https ://github.com/stopachka/pushups-data-exploration/blob/main/exploration.ipynb



