Meet YOLO26: next-gen vision AI.

Link to this section使用 Ultralytics YOLO26 进行锻炼监测#

在 Colab 中打开锻炼监测

通过 Ultralytics YOLO26 进行姿态估计来监测锻炼,可以通过实时精准追踪关键身体特征点和关节来改善锻炼评估。该技术可针对运动姿势提供即时反馈、追踪锻炼流程并测量性能指标,从而为用户和教练优化训练环节。



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

Link to this section锻炼监测的优势#

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

Link to this section现实世界应用#

锻炼监测锻炼监测
YOLO 俯卧撑计数姿态估计YOLO 引体向上计数姿态估计
俯卧撑计数引体向上计数

Link to this section使用 YOLO26 监测锻炼#

The AIGym solution runs pose estimation and counts repetitions by measuring the angle formed by three keypoints as a limb moves between the up_angle and down_angle thresholds. Pick the keypoints for the exercise you want to track with kpts, then run the solution over your video with the Python API or the 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]"

Link to this section关键点地图#

YOLO 姿态估计关键点顺序图

Link to this sectionAIGym 参数#

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

参数类型默认值描述
modelstrNoneUltralytics YOLO 模型文件的路径。
up_anglefloat145.0“向上”姿势的角度阈值。
down_angleint90“向下”姿势的角度阈值。
kptslist[int]'[6, 8, 10]'用于监控健身锻炼的三个关键点索引列表。这些关键点对应于身体关节或部位,例如肩膀、肘部和手腕,适用于俯卧撑、引体向上、深蹲和腹部锻炼等练习。

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

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

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

参数类型默认值描述
showboolFalse如果为 True,则在窗口中显示标注后的图像或视频。这对于开发或测试过程中的即时视觉反馈非常有用。
line_widthint or NoneNone指定边界框的线条宽度。如果为 None,则线条宽度会根据图像尺寸自动调整。提供用于清晰度的视觉自定义功能。
show_confboolTrue在标签旁显示每次检测的置信度得分。让你深入了解模型对每次检测的确定性。
show_labelsboolTrue在视觉输出中显示每次检测的标签。提供对检测到对象的即时理解。

Link to this section常见问题解答#

Link to this section我该如何使用 Ultralytics YOLO26 监测我的锻炼?#

要使用 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 部分。

Link to this section使用 Ultralytics YOLO26 进行锻炼监测有什么好处?#

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

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

你可以观看 YouTube 视频演示来查看这些优势的实际应用。

Link to this sectionUltralytics YOLO26 在检测和追踪锻炼方面的准确度如何?#

由于其先进的姿态估计能力,Ultralytics YOLO26 在检测和追踪锻炼方面具有极高的准确度。它能精准追踪关键身体特征点和关节,针对锻炼姿势和性能指标提供实时反馈。该模型预训练的权重和稳健的架构确保了高精度和可靠性。如需查看实际应用案例,请参阅文档中的现实应用场景部分,其中展示了俯卧撑和引体向上计数。

Link to this section我可以使用 Ultralytics YOLO26 进行自定义锻炼吗?#

可以,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 部分。这种灵活性使你能够监测各种锻炼项目,并根据你的健身目标自定义练习流程。

Link to this section我该如何保存使用 Ultralytics YOLO26 进行锻炼监测的输出结果?#

若要保存锻炼监测的输出,你可以修改代码以包含一个视频写入器(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()

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

评论