在当今快节奏的生活中,保持健康和活力变得越来越重要。为了帮助用户更有效地进行锻炼,开发了一款健身追踪系统,该系统结合了计算机视觉和物联网(IoT)技术,能够自动跟踪并计算用户在锻炼过程中的动作次数,例如俯卧撑。这种自动化的计数器让用户能够专注于锻炼,而无需手动记录动作次数。
在本文中,将详细介绍如何构建这个健身追踪项目,它利用计算机视觉和IoT技术的力量,彻底改变了健身日常。以下是系统运行的截图:
该健身追踪系统由一个IoT传感器节点组成,该节点配备了基于摄像头的设置,能够执行Roboflow的Python SDK进行推理。这个传感器节点捕获锻炼姿势,并使用在Roboflow平台上构建的对象检测模型来对这些姿势进行分类。然后,检测到的姿势被发布到互联网上的MQTT代理。
一个订阅了代理的应用程序使用JavaScript应用程序检测到的每个姿势进行计数。锻炼次数在应用程序的Web UI上发布,以跟踪锻炼姿势。系统的工作原理在下图中表示。
使用Jetson Nano或Raspberry Pi,IoT摄像头节点使用Roboflow推理服务器上的定制模型来对锻炼姿势进行分类。然后,从class_name变量中提取的结果被发布到MQTT代理上的estatus主题上。
与此同时,客户端应用程序,用JavaScript编写,订阅了estatus主题上的数据,计算并存储计数器变量中的计数,并将锻炼姿势计数呈现给用户在Web UI上。
为了有效地对各种锻炼姿势进行分类,例如示例中的俯卧撑,将使用对象检测模型。在本指南中,将重点关注俯卧撑。将训练一个对象检测模型来识别两种锻炼状态之一:'push-up'和'push-down'。这些不同的状态为确定和计算俯卧撑计数奠定了基础。
以下是开发系统的步骤:
收集并标记数据集
训练对象检测模型
运行推理以对锻炼姿势进行分类并发送结果
编写JavaScript应用程序以计算并显示锻炼姿势计数
步骤#1:收集并标记数据集
用于俯卧撑锻炼的图像数据集,包括前面提到的两种不同状态,是手动收集的,并上传到Roboflow平台进行标记。
步骤#2:训练对象检测模型
完成标记过程后,生成数据集版本,并使用Roboflow自动训练选项对模型进行训练。
步骤#3:检测锻炼姿势并通过MQTT发送结果
在这个项目中,使用从Roboflow GitHub仓库中获取的代码,通过Python脚本运行推理。提供的Python代码接受摄像头输入,并通过训练有素的模型处理来自摄像头的视频数据。
步骤#4:计算并显示锻炼姿势计数
在这一步中,构建了一个简单的JavaScript应用程序,该应用程序使用PAHO MQTT JavaScript库连接到MQTT代理,并订阅MQTT主题estatus。
在代码中,只在一个类别(例如'up')最初被检测到时才增加计数器。然后,如果检测到相同的类别(例如'up')在检测到另一个类别(例如'down')之后再次被检测到,计数器变量将被更新。
以上代码中,计数器只有在下一次检测结果报告之前才增加一次。这意味着计数器不会因为每个预测而增加。如果因为每个预测而增加计数器,那将是有问题的,因为连续10次'up'检测将使计数器增加10次,即使没有'down'消息也是如此。