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 引体向上计数姿态估计
俯卧撑计数引体向上计数
使用 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'指定要使用的跟踪算法,例如 bytetrack.yamlbotsort.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 监测锻炼,你可以利用姿态估计功能来实时追踪并分析身体关键部位和关节。这使你能够针对锻炼姿势获得即时反馈、计算次数并测量性能指标。你可以从使用提供的俯卧撑、引体向上或腹肌锻炼代码示例入手,如下所示:

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

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

评论