YOLO Vision 2026:

使用 Ultralytics YOLO26 进行锻炼监测#

Open Workouts Monitoring In Colab

通过 Ultralytics YOLO26 的姿态估计监控锻炼,能够准确实时追踪身体关键标志点与关节,从而提升运动评估的效果。该技术可提供关于动作规范的即时反馈、追踪锻炼计划并衡量各项表现指标,为用户和教练优化训练过程。



Watch: How to Monitor Workout Exercises with Ultralytics YOLO | Squats, Leg Extension, Pushups and More

锻炼监测的优势#

  • 优化性能: 根据监测数据量身定制锻炼方案,以获取更好的效果。
  • 目标达成: 追踪并调整健身目标,以实现可衡量的进度。
  • 个性化: 基于个人数据定制锻炼计划,以实现高效训练。
  • 健康意识: 早期检测出指示健康问题或过度训练的模式。
  • 知情决策: 为调整日常训练和设定切合实际的目标提供数据驱动的决策。

现实世界应用#

锻炼监测锻炼监测
YOLO push-ups counting with pose estimationYOLO pull-ups counting with pose estimation
俯卧撑计数引体向上计数

使用 YOLO26 监测锻炼#

AIGym 解决方案通过运行 pose estimation,在四肢于 up_angledown_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]"

关键点地图#

YOLO pose estimation keypoints order diagram

AIGym 参数#

以下是包含 AIGym 参数的表格:

参数类型默认值描述
modelstrNoneUltralytics YOLO 模型文件的路径。
up_anglefloat145.0“向上”姿势的角度阈值。
down_angleint90“向下”姿势的角度阈值。
kptslist[int]'[6, 8, 10]'用于监控健身锻炼的三个关键点索引列表。这些关键点对应于身体关节或部位,例如肩膀、肘部和手腕,适用于俯卧撑、引体向上、深蹲和腹部锻炼等练习。
line_widthint2解决方案绘制的框、关键点和计数的线条粗细。
verboseboolTrue启用解决方案针对每帧的输入形状、类别计数和处理速度的日志记录。跟踪调用本身始终是静默的。

AIGym 解决方案还支持一系列目标追踪参数:

参数类型默认值描述
trackerstr'botsort.yaml'指定要使用的跟踪算法。内置选项:botsort.yamlbytetrack.yamlocsort.yamldeepocsort.yamlfasttrack.yamltracktrack.yaml
conffloat0.25设置检测的置信度阈值;较低的值允许跟踪更多的对象,但也可能包含误报。
ioufloat0.7设置用于过滤重叠检测结果的交并比 (IoU) 阈值。
classeslistNone按类别索引过滤结果。例如,classes=[0, 2, 3] 仅跟踪指定的类别。
devicestrNone指定用于推理的设备(例如 cpucuda:00)。允许用户在 CPU、特定的 GPU 或用于模型执行的其他计算设备之间进行选择。

此外,还可以应用以下可视化设置:

参数类型默认值描述
showboolFalse如果为 True,则在窗口中显示带注释的图像或视频。对于开发或测试期间的即时视觉反馈非常有用。
show_confboolTrue在标签旁显示每次检测的置信度得分。让你深入了解模型对每次检测的确定性。
show_labelsboolTrue在视觉输出中显示每次检测的标签。提供对检测到对象的即时理解。

常见问题解答#

  • 要使用 Ultralytics YOLO26 监控锻炼,你可以利用 pose estimation capabilities 实时追踪并分析身体关键标志点与关节。这能让你获得关于运动规范的即时反馈、计算重复次数并衡量表现指标。你可以从查看所提供的俯卧撑、引体向上或腹肌锻炼示例代码开始,如下所示:

    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)
    
    cv2.destroyAllWindows()

    如需了解更多自定义与设置信息,请参考文档中的 AIGym 章节。

  • 使用 Ultralytics YOLO26 进行锻炼监测具有几个关键优势:

    • 优化性能: 通过根据监测数据调整锻炼方案,你可以获得更好的效果。
    • 目标达成: 轻松追踪并调整健身目标,以实现可衡量的进度。
    • 个性化: 基于个人数据获取定制化的锻炼计划,以达到最佳效果。
    • 健康意识: 早期检测出可能预示健康问题或过度训练的模式。
    • 知情决策: 做出数据驱动的决策,以调整日常练习并设定切合实际的目标。

    你可以观看 YouTube video demonstration 来直观了解这些优势。

  • 凭借其顶尖的 pose estimation 功能,Ultralytics YOLO26 在检测和追踪运动时具有极高的准确性。它能精确追踪身体关键标志点和关节,提供关于运动规范和表现指标的实时反馈。该模型的预训练权重和强大的架构确保了高 precision 与可靠性。关于实际案例,请查看文档中的 real-world applications 章节,其中展示了俯卧撑和引体向上的计数功能。

  • 可以,Ultralytics YOLO26 能够适应自定义的锻炼计划。AIGym 类使用 up_angledown_anglekpts 参数来检测运动重复次数。你可以指定关键点和角度来检测特定的动作。以下是一个配置示例:

    from ultralytics import solutions
    
    gym = solutions.AIGym(
        line_width=2,
        show=True,
        kpts=[6, 8, 10],  # For pushups - can be customized for other exercises
    )

    有关设置参数的更多详情,请参考 Arguments AIGym 章节。这种灵活性允许你监控各种运动,并根据你的 fitness goals 自定义锻炼计划。

  • 若要保存锻炼监测的输出,你可以修改代码以包含一个视频写入器(video writer)来保存处理后的帧。以下是一个示例:

    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()

    此设置会将监测到的视频写入输出文件,使你能够事后回顾锻炼表现或与教练分享以获取进一步的反馈。

评论