跳至内容

使用Ultralytics YOLOv8 🚀 监控锻炼情况

通过姿势估算监测锻炼 Ultralytics YOLOv8通过实时准确地跟踪关键的身体地标和关节,增强了运动评估功能。这项技术可提供有关锻炼姿势的即时反馈、跟踪锻炼程序并测量性能指标,从而优化用户和教练的训练课程。



观看: 使用Ultralytics YOLOv8 监测锻炼情况 | 俯卧撑、引体向上、腹肌锻炼

锻炼监测的优势?

  • 优化性能:根据监测数据定制锻炼计划,以获得更好的效果。
  • 实现目标:跟踪和调整健身目标,以取得可衡量的进展。
  • 个性化:根据个人数据定制锻炼计划,提高效率。
  • 健康意识:及早发现表明存在健康问题或训练过度的模式。
  • 知情决策:以数据为依据,做出调整常规和设定现实目标的决定。

真实世界的应用

锻炼监测 锻炼监测
俯卧撑计数 引体向上计数
俯卧撑计数 引体向上计数

锻炼监测示例

from ultralytics import YOLO
from ultralytics.solutions import ai_gym
import cv2

model = YOLO("yolov8n-pose.pt")
cap = cv2.VideoCapture("path/to/video/file.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_object = ai_gym.AIGym()  # init AI GYM module
gym_object.set_args(line_thickness=2,
                    view_img=True,
                    pose_type="pushup",
                    kpts_to_check=[6, 8, 10])

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
      print("Video frame is empty or video processing has been successfully completed.")
      break
    frame_count += 1
    results = model.track(im0, verbose=False)  # Tracking recommended
    #results = model.predict(im0)  # Prediction also supported
    im0 = gym_object.start_counting(im0, results, frame_count)

cv2.destroyAllWindows()
from ultralytics import YOLO
from ultralytics.solutions import ai_gym
import cv2

model = YOLO("yolov8n-pose.pt")
cap = cv2.VideoCapture("path/to/video/file.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_object = ai_gym.AIGym()  # init AI GYM module
gym_object.set_args(line_thickness=2,
                    view_img=True,
                    pose_type="pushup",
                    kpts_to_check=[6, 8, 10])

frame_count = 0
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
      print("Video frame is empty or video processing has been successfully completed.")
      break
    frame_count += 1
    results = model.track(im0, verbose=False)  # Tracking recommended
    #results = model.predict(im0)  # Prediction also supported
    im0 = gym_object.start_counting(im0, results, frame_count)
    video_writer.write(im0)

cv2.destroyAllWindows()
video_writer.release()
支持

支持 "俯卧撑"、"引体向上 "和 "腹肌锻炼"。

关键点地图

关键点顺序Ultralytics YOLOv8  姿势

论据 set_args

名称 类型 默认值 说明
kpts_to_check list None 三个关键点索引列表,用于计算特定的锻炼,之后是关键点地图
view_img bool False 显示带有计数的帧
line_thickness int 2 增加计数值的厚度
pose_type str pushup 需要监控的姿势、 pullupabworkout 还支持
pose_up_angle int 145 姿势向上角度值
pose_down_angle int 90 姿势下降角度值

论据 model.predict

名称 类型 默认值 说明
source str 'ultralytics/assets' 图像或视频的源目录
conf float 0.25 检测对象置信度阈值
iou float 0.7 NMS 的 "相交大于结合"(IoU)阈值
imgsz int or tuple 640 图像尺寸标量或(高,宽)列表,即(640,480)
half bool False 使用半精度 (FP16)
device None or str None 设备上运行,如 cuda device=0/1/2/3 或 device=cpu
max_det int 300 每幅图像的最大检测次数
vid_stride bool False 视频帧速率跨度
stream_buffer bool False 缓冲所有流媒体帧(真)或返回最新帧(假)
visualize bool False 可视化模型特征
augment bool False 对预测源进行图像增强
agnostic_nms bool False 不分等级的 NMS
classes list[int] None 按类别筛选结果,即 classes=0,或 classes=[0,2,3]
retina_masks bool False 使用高分辨率分割掩膜
embed list[int] None 返回给定层的特征向量/嵌入值

论据 model.track

名称 类型 默认值 说明
source im0 None 图像或视频的源目录
persist bool False 帧与帧之间的持久轨迹
tracker str botsort.yaml 跟踪方法 "bytetrack "或 "botsort
conf float 0.3 置信度阈值
iou float 0.5 借据阈值
classes list None 按类别筛选结果,即 classes=0,或 classes=[0,2,3]
verbose bool True 显示物体跟踪结果


创建于 2023-12-02,更新于 2024-04-18
作者:glenn-jocher(6)、RizwanMunawar(1)

评论