使用 Ultralytics YOLO26 监测锻炼#
通过 Ultralytics YOLO26 进行姿态估计来监测锻炼,可以精准跟踪身体关键点和关节,提升运动评估效果。这项技术可以即时反馈运动姿势、跟踪锻炼计划并测量表现指标,从而帮助用户和教练优化训练课程。
观看: 如何使用 Ultralytics YOLO 监测健身训练动作 | 深蹲、腿部伸展、俯卧撑等
锻炼监测的优势#
- 优化表现:根据监测数据调整锻炼计划,以取得更好的效果。
- 实现目标:跟踪并调整健身目标,取得可量化的进展。
- 个性化:根据个人数据定制锻炼计划,提升训练效果。
- 健康意识:及早发现可能表明健康问题或过度训练的模式。
- 明智决策:根据数据调整锻炼计划并设定切合实际的目标。
实际应用#
| 锻炼监测 | 锻炼监测 |
|---|---|
![]() | ![]() |
| 俯卧撑计数 | 引体向上计数 |
使用 YOLO26 监测锻炼#
AIGym 解决方案会运行姿态估计,并通过测量肢体在 up_angle 和 down_angle 阈值之间移动时三个关键点形成的角度来统计重复次数。使用 kpts 选择要跟踪的锻炼对应的关键点,然后使用 Python API 或 CLI 对视频运行此解决方案。
使用 Ultralytics YOLO 监测锻炼
# Run a workout example
yolo solutions workout show=True
# Pass a source video
yolo solutions workout source="path/to/video.mp4"
# Use keypoints for pushups
yolo solutions workout kpts="[6, 8, 10]"关键点示意图#

AIGym 参数#
下面是 AIGym 参数表:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
model | str | None | Ultralytics YOLO 模型文件的路径。 |
up_angle | float | 145.0 | “向上”姿势的角度阈值。 |
down_angle | float | 90.0 | “向下”姿势的角度阈值。 |
kpts | list[int] | [6, 8, 10] | 用于监测锻炼动作的三个关键点索引组成的列表。这些关键点对应身体关节或部位,例如肩部、肘部和手腕,可用于俯卧撑、引体向上、深蹲和腹部锻炼等动作。 |
line_width | int | 2 | 解决方案绘制的框、关键点和计数的线条粗细。 |
verbose | bool | True | 启用逐帧日志,记录输入形状、类别计数和处理速度。跟踪调用本身始终不会输出日志。 |
AIGym 解决方案还支持一系列对象跟踪参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | 指定要使用的跟踪算法。内置选项:botsort.yaml、bytetrack.yaml、ocsort.yaml、deepocsort.yaml、fasttrack.yaml、tracktrack.yaml。 |
conf | float | 0.25 | 设置检测的置信度阈值;较低的值允许跟踪更多物体,但可能会包含误检。 |
iou | float | 0.7 | 设置用于筛除重叠检测结果的交并比 (IoU) 阈值。 |
classes | list | None | 按类别索引筛选结果。例如,classes=[0, 2, 3] 只跟踪指定类别。 |
device | str | None | 指定推理设备(例如 cpu、cuda:0 或 0)。用户可以选择 CPU、特定 GPU 或其他计算设备来运行模型。 |
imgsz | int or tuple | 640 | 目标推理图像尺寸:正方形图像使用整数,或使用 (height, width) 对。图像尺寸会调整为模型步幅的整数倍。 |
max_det | int | 300 | 跟踪前每帧保留的最大检测数量,用于限制解决方案在密集场景中处理的物体数量。 |
quantize | int or str | None | 推理精度:对于 PyTorch 和 TorchScript 模型,使用 16 (FP16) 或 32/未设置 (FP32);其他格式则采用其模型文件和运行时选择的精度。替代已弃用的 half 标志。 |
此外,还可以应用以下可视化设置:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
show | bool | False | 如果 True,则在窗口中显示带标注的图像或视频。适用于在开发或测试期间即时查看结果。 |
show_labels | bool | True | 在可视化输出中显示每个检测结果的标签,便于立即了解检测到的对象。 |
常见问题#
要使用 Ultralytics YOLO26 监测锻炼,你可以利用姿态估计功能实时跟踪和分析身体关键点与关节。这样你就能即时获得运动姿势反馈、统计重复次数并测量表现指标。你可以从提供的俯卧撑、引体向上或腹部训练示例代码开始:
import cv2 from ultralytics import solutions cap = cv2.VideoCapture("path/to/video.mp4") assert cap.isOpened(), "Error reading video file" w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS)) gym = solutions.AIGym( line_width=2, show=True, kpts=[6, 8, 10], ) while cap.isOpened(): success, im0 = cap.read() if not success: print("Video frame is empty or processing is complete.") break results = gym(im0) cap.release() cv2.destroyAllWindows()如需进一步自定义和调整设置,请参阅文档中的 AIGym 部分。
使用 Ultralytics YOLO26 进行锻炼监测有以下几项主要好处:
- 优化表现:根据监测数据调整锻炼计划,取得更好的效果。
- 实现目标:轻松跟踪并调整健身目标,取得可量化的进展。
- 个性化:根据个人数据获取定制的锻炼计划,达到最佳效果。
- 健康意识:及早发现可能表明存在健康问题或过度训练的模式。
- 明智决策:根据数据调整锻炼计划并设定切合实际的目标。
你可以观看 YouTube 视频演示,了解这些优势如何发挥作用。
要保存锻炼监测输出,你可以修改代码,加入一个用于保存处理后帧的视频写入器。示例如下:
import cv2 from ultralytics import solutions cap = cv2.VideoCapture("path/to/video.mp4") assert cap.isOpened(), "Error reading video file" w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS)) video_writer = cv2.VideoWriter("workouts.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h)) gym = solutions.AIGym( line_width=2, show=True, kpts=[6, 8, 10], ) while cap.isOpened(): success, im0 = cap.read() if not success: print("Video frame is empty or processing is complete.") break results = gym(im0) video_writer.write(results.plot_im) cap.release() video_writer.release() cv2.destroyAllWindows()此配置会将监测视频写入输出文件,方便你之后回顾锻炼表现,或分享给教练以获取更多反馈。

