实战精选 | 基于 LabVIEW 和 YOLOv8-Pose 的跳绳计数装置

基于LabVIEW和YOLOv8-Pose的跳绳计数装置
部署运行你感兴趣的模型镜像

点击蓝字

关注我们,让开发变得更有趣

作者 | 李筱语

指导老师 | 王立奇 英特尔创新大使

OpenVINO™

跳绳是一项广受欢迎的运动项目,因其简单易行而备受学生和运动爱好者青睐。然而,在实际运动中,人工计数容易出现误差,影响比赛和训练效果。本文提出了一种基于 LabVIEW 和 YOLOv8-Pose 的跳绳计数装置,利用深度学习的姿态检测能力和 LabVIEW 的实时处理功能,实现跳绳动作的精准识别与计数。本装置具有操作简单、检测精准、实时性强等优点,适用于学校、体育馆及家庭训练场景。

OpenVINO™

引言

随着人工智能技术的发展,计算机视觉在体育领域的应用日益广泛。传统的跳绳计数方法主要依赖人工记录,存在效率低、误差大的问题。近年来,基于机器视觉的自动计数方法逐渐受到关注,其中人体姿态识别技术为跳绳计数提供了全新的解决方案。

OpenVINO™

系统设计

2.1 硬件设计

本装置的硬件包括:

摄像头:用于采集跳绳者的视频图像,支持USB接口的普通网络摄像头或工业相机。摄像头的采样速率建议高于30FPS(每秒30帧)。

dcaf347b70cae140f2c4fea257776ab3.png

AIPC:搭载GPU的台式机或笔记本电脑,用于运行 YOLOv8-Pose 模型。

1963020349c5a5270a81a80337b51f76.png

2.2 软件模块

YOLOv8-Pose 模型:基于深度学习的开源模型,能够精准识别人体关节点位置。模型通过训练,能够检测跳绳者的肢体动作。

360233420b4c7c1d4fd867541cc40f51.png

LabVIEW用于构建图形化界面和处理逻辑,包括摄像头采集、处理、计数及结果显示。

b13c2bcfc6a5f8aeba470050197cfc67.png

26d5e130f5127a7d41b682cba9cab083.png

OpenVINO™ :用于加快的模型推理速度,支持 Intel 的 CPU/GPU/NPU。在 AIPC 的 Intel 11 代 1165G7 芯片下,yolov8n-Pose 的最大推理速度可达到 60FPS。

2.3 软件设计

步骤1:模型和摄像头初始化

使用LabVIEW中的Opencv Camera模块,即可快速采集摄像头的图像,并将图像显示在前面板上。程序中,我们需要设置采集图像的宽度为640个像素,高度为480个像素。同时,我们初始化yolov8-pose模型,加载至OpenVINO™ 推理引擎中。跳绳计数器归零,然后进入循环。

0ba88008ae60396abcfbd364927f61e9.png

步骤2:实时采集与姿态识别

每次循环,软件都从摄像头中取出一帧图像,送入 yolov8-pose 的推理函数中,获取识别的结果图像,和第一个人的所有关键点位置。

e3f48f6abe13821222260b8071ff67cd.png

步骤3:

调用跳绳计数器算法,每次循环都需要判断是否跳绳数加1。

OpenVINO™

跳绳计数算法设计

3.1 yolov8-pose模型输出解析

Yolov8-pose算法的输出分两部分,第一部分是box,即每个人的外接矩形的位置,里面的参数为:

Box=[left,top,width,height] (左边的像素点、上边的像素点、宽度,高度)

第二部分是keypoints,由17个点构成,17个点的定义如下图:

7709c2c2a94b1ec088e326a364ca4296.png

3.2 跳绳过程中的坐标变化

以双脚跳为例,采集某同学整个跳绳过程中的keypoint-15(左脚踝)或者keypoint-16(右脚踝)的y轴数值。Y值越小,说明在图中的位置越高。

3eccaaf2a89e427accf4c12ed6b2540e.png

波形图中,左右两边部分表示了正常的跳跃时间段,中间有一部分y轴变化较小,说明学生暂停跳跃。

3.2 算法实现思路

(1) 在正常跳跃时,当学生脚部处于一个周期的最低点(即曲线的极大值)时可认为跳了一个。

(2) 但是,曲线在接近最高点时,由于AI产生的误差,曲线会有毛刺。因此需要判断当前新产生的最高点与上一次最高点的循环间隔,如果间隔太小,就可以忽略。

(3) 当学生失误停止跳绳时,由于学生本身还在移动或测量误差导致的y值变化也应去除。只需判断当前值与历史数据中的最高点(y的最小值)的差,如果小于一个阈值就可忽略。

3.3 算法实现代码

在 LabVIEW 中,我们取最近的10个点分析,其中最后5个点用来判断曲线的极大值,如果5个值中第2个(从0开始计数)为最大值的,且与10个数的最小值的差大于60(最高点与最低点的高度像素差),可将该点作为候选点。

56a1b33ec7f68b86e3c918dcd96c30f3.png

获取候选点所对应的时间,与它之前的一个候选点做比较。如果时间大于150毫秒(5帧,假设人类跳绳速度小于每分钟360个),则忽略,小于则计数器加1。

387eae75e5aaa8d34d5d082537af64fe.png

将算法保存为子vi :跳绳计数判断.vi,放入主程序,最终程序如下图:

8ceaeb4805691c0cf8f225469b521ac4.png

OpenVINO™

实验

4.1 实验设置

在校内体育馆搭建实验场景,选取10名学生进行跳绳测试。设置单人跳绳和双人交替跳绳两种模式,采集多组视频数据。

4.2 测试结果

实验结果表明,该装置在双脚跳绳场景下的计数准确率达98.5%,在左右脚交替跳绳场景下准确率为95.3%。与人工计数相比,误差控制在±2次以内。

误差原因主要与相机位置有关,相机需要放在学生正前方2~3米左右,高度大约为学生身高的一半,且相机镜头水平向前。如果相机斜着,可能造成一定误差。

4.3 性能分析

实时性:使用 OpenVINO™ 及英特尔 GPU 加速,系统处理帧率可达60 FPS,满足实时计数需求。

稳定性:即使在光照变化和背景复杂的情况下,模型依然能够有效识别关键动作。

OpenVINO™

创新点与优势

1. 将 LabVIEW 与 YOLOv8-Pose 结合,实现深度学习 型的实时调用与可视化界面交互。

2. 提出了基于关键点运动轨迹的跳绳动作识别算法,有效降低误判率。

3. 系统成本低、部署简单,适合中学生科创比赛和实际推广。

OpenVINO™

结论与展望

本文设计了一种基于 LabVIEW 和 YOLOv8-Pose 的跳绳计数装置,成功解决了人工计数误差大的问题。未来可进一步优化算法,使用平均滤波算法提高人体位置(如脚踝位置的准确度)、并兼容双脚跳和单脚跳两种跳绳模式。同时探索硬件设备的小型化与便携化,使其适应更多应用场景。

参考文献

Redmon J., Farhadi A. YOLOv8: Real-Time Object Detection and Pose Estimation. arXiv preprint.

National Instruments. LabVIEW User Manual. NI.

Cao Z., Simon T., Wei S. Pose Estimation in Sports Applications. IEEE Transactions.

https://doc.virobotics.net/zh_cn/ai_toolkit_for_ov

https://github.com/openvinotoolkit/openvino_notebooks/tree/latest/notebooks/pose-estimation-webcam

OpenVINO™

---------------------------------------

*OpenVINO and the OpenVINO logo are trademarks of Intel Corporation or its subsidiaries.

-----------------------------

 OpenVINO 中文社区 

微信号 : openvinodev

B站:OpenVINO中文社区

“开放、开源、共创”

致力于通过定期举办线上与线下的沙龙、动手实践及开发者交流大会等活动,促进人工智能开发者之间的交流学习。

○ 点击 “ 在看 ”,让更多人看见

您可能感兴趣的与本文相关的镜像

Yolo-v8.3

Yolo-v8.3

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

LabVIEW中使用YOLOv8模型并结合ONNX Runtime GPU进行推理,可以通过以下几个关键步骤实现: ### 一、YOLOv8模型准备 首先需要获取YOLOv8的ONNX格式模型。YOLOv8的官方实现通常基于PyTorch框架,因此需要使用其导出脚本将.pt模型转换为.onnx格式。转换过程中需要注意输入尺寸、动态轴设置等参数[^1]。 ```bash # 示例:使用YOLOv8官方代码导出ONNX模型 yolo export model=yolov8s.pt format=onnx opset=13 ``` ### 二、ONNX Runtime GPU环境配置 为了实现GPU加速推理,需要安装支持CUDA的ONNX Runtime版本。可以从[ONNX Runtime官网](https://onnxruntime.ai/)下载对应的`onnxruntime_gpu`版本[^4]。 - 安装`onnxruntime_gpu`的Python包(用于模型验证): ```bash pip install onnxruntime-gpu ``` - 若使用C++进行高性能部署,需配置CUDA、cuDNN以及ONNX Runtime的C++ API环境[^3]。 ### 三、LabVIEW调用ONNX Runtime进行推理 LabVIEW可以通过调用外部DLL或使用Python节点来集成ONNX Runtime推理流程。 #### 方法一:使用LabVIEW调用Python脚本 利用LabVIEW的Python节点功能,调用Python脚本进行YOLOv8推理: ```python import onnxruntime as ort import numpy as np # 加载ONNX模型 ort_session = ort.InferenceSession("yolov8s.onnx", providers=["CUDAExecutionProvider"]) # 模拟输入 input_data = np.random.rand(1, 3, 640, 640).astype(np.float32) # 推理 outputs = ort_session.run(None, {"images": input_data}) ``` 在LabVIEW中使用`Python Node`调用上述脚本,即可实现YOLOv8的GPU推理流程。 #### 方法二:使用C++ DLL与LabVIEW交互 若需更高性能,可使用C++编写ONNX Runtime推理模块,并编译为DLL供LabVIEW调用。主要步骤包括: 1. 初始化ONNX Runtime会话 2. 预处理图像数据并复制到GPU内存 3. 执行推理 4. 解析输出并返回检测结果 示例C++代码片段: ```cpp #include <onnxruntime_cxx_api.h> Ort::Env env(ORT_LOGGING_LEVEL_WARNING, "YOLOv8"); Ort::SessionOptions session_options; session_options.SetIntraOpNumThreads(1); #ifdef USE_CUDA session_options.AppendExecutionProvider_CUDA(CUDAExecutionProviderOptions()); #endif Ort::Session session(env, "yolov8s.onnx", session_options); ``` ### 四、性能优化建议 - 使用FP16精度进行推理以提升性能,可在模型导出时指定: ```bash yolo export model=yolov8s.pt format=onnx opset=13 half=True ``` - 在ONNX Runtime中启用混合精度推理[^4]。 - 使用CUDA内存池优化数据传输效率。 ### 五、总结 通过上述步骤,可以在LabVIEW中实现YOLOv8模型在GPU上的高效推理。结合ONNX Runtime的GPU加速能力,能够显著提升推理速度,适用于工业检测、视频监控等实时性要求较高的场景[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值