使用 Ultralytics YOLO11 进行锻炼监控
通过 Ultralytics YOLO11 的姿势估计来监控锻炼,可以通过实时准确地跟踪关键身体地标和关节来增强运动评估。这项技术可以提供关于运动姿势的即时反馈,跟踪锻炼程序,并测量性能指标,从而为用户和教练优化训练课程。
观看: 如何使用 Ultralytics 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]"
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Video writer
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_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Init AIGym
gym = solutions.AIGym(
show=True, # display the frame
kpts=[6, 8, 10], # keypoints for monitoring specific exercise, by default it's for pushup
model="yolo11n-pose.pt", # path to the YOLO11 pose estimation model file
# line_width=2, # adjust the line width for bounding boxes and text display
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = gym(im0)
# print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
关键点图
AIGym
参数
这是一个包含以下内容的表格 AIGym
参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
model |
str |
None |
Ultralytics YOLO 模型文件的路径。 |
up_angle |
float |
145.0 |
“向上”姿势的角度阈值。 |
down_angle |
float |
90.0 |
“向下”姿势的角度阈值。 |
kpts |
list[int, int, int] |
'[6, 8, 10]' |
用于监控锻炼的关键点列表。这些关键点对应于身体关节或部位,例如肩部、肘部和腕部,适用于俯卧撑、引体向上、深蹲、腹部锻炼等运动。 |
字段 AIGym
解决方案还支持一系列目标跟踪参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
指定要使用的跟踪算法,例如: bytetrack.yaml 或 botsort.yaml . |
conf |
float |
0.3 |
设置检测的置信度阈值;较低的值允许跟踪更多对象,但可能包含误报。 |
iou |
float |
0.5 |
设置用于过滤重叠检测的 Intersection over Union (IoU) 阈值。 |
classes |
list |
None |
按类别索引过滤结果。例如, classes=[0, 2, 3] 仅跟踪指定的类别。 |
verbose |
bool |
True |
控制跟踪结果的显示,提供被跟踪对象的可视化输出。 |
device |
str |
None |
指定用于推理的设备(例如, cpu , cuda:0 或 0 )。允许用户在 CPU、特定 GPU 或其他计算设备之间进行选择,以执行模型。 |
此外,还可以应用以下可视化设置:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
show |
bool |
False |
可视化参数: True ,则在窗口中显示带注释的图像或视频。这对于开发或测试期间的即时视觉反馈非常有用。 |
line_width |
None or int |
None |
指定边界框的线条宽度。 如果 None ,则线条宽度会根据图像大小自动调整。 提供视觉自定义以提高清晰度。 |
show_conf |
bool |
True |
在标签旁边显示每个检测的置信度分数。 可以深入了解模型对每次检测的确定性。 |
show_labels |
bool |
True |
在可视化输出中显示每个检测的标签。 能够立即理解检测到的对象。 |
常见问题
如何使用 Ultralytics YOLO11 监控我的训练过程?
要使用 Ultralytics YOLO11 监控您的锻炼,您可以利用姿势估计功能来实时跟踪和分析关键的身体地标和关节。这使您可以获得关于您的运动姿势的即时反馈,计算重复次数,并测量性能指标。您可以从使用提供的俯卧撑、引体向上或腹部锻炼的示例代码开始,如下所示:
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 YOLO11 进行健身监控有哪些好处?
使用 Ultralytics YOLO11 进行健身监控可提供多个关键优势:
- 优化性能: 通过根据监控数据定制训练计划,您可以获得更好的结果。
- 目标达成: 轻松跟踪和调整健身目标,以衡量进度。
- 个性化:根据您的个人数据获取定制的锻炼计划,以获得最佳效果。
- 健康意识: 早期检测表明潜在健康问题或过度训练的模式。
- 明智的决策: 制定数据驱动的决策,以调整日常安排并设定实际目标。
您可以观看 YouTube 视频演示,了解这些优势的实际应用。
Ultralytics YOLO11 在检测和跟踪运动方面的准确性如何?
由于其最先进的姿势估计功能,Ultralytics YOLO11 在检测和跟踪运动方面非常准确。它可以准确地跟踪关键的身体地标和关节,提供关于运动姿势和性能指标的实时反馈。该模型的预训练权重和强大的架构确保了高精度和可靠性。有关真实世界的示例,请查看文档中的实际应用部分,其中展示了俯卧撑和引体向上的计数。
我可以将Ultralytics YOLO11用于自定义锻炼程序吗?
是的,Ultralytics YOLO11 可以适用于自定义的锻炼程序。该 AIGym
class 支持不同的姿势类型,例如 pushup
, pullup
和 abworkout
。您可以指定关键点和角度来检测特定的练习。 这是一个示例设置:
from ultralytics import solutions
gym = solutions.AIGym(
line_width=2,
show=True,
kpts=[6, 8, 10], # For pushups - can be customized for other exercises
)
有关设置参数的更多详细信息,请参阅 参数 AIGym
部分。这种灵活性使您可以监控各种练习,并根据您的情况自定义例程 健身目标.
如何使用 Ultralytics YOLO11 保存锻炼监控输出?
要保存锻炼监控输出,您可以修改代码以包含一个视频写入器,用于保存处理后的帧。以下是一个示例:
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()
此设置将监控的视频写入输出文件,使您可以稍后查看您的锻炼表现或与教练分享,以获得更多反馈。