انتقل إلى المحتوى

مراقبة التدريبات باستخدام Ultralytics YOLOv8 🚀

مراقبة التدريبات من خلال تقدير الوضع مع Ultralytics YOLOv8 يعزز تقييم التمرين من خلال تتبع معالم الجسم الرئيسية والمفاصل بدقة في الوقت الفعلي. توفر هذه التقنية ملاحظات فورية على شكل التمرين ، وتتعقب إجراءات التمرين ، وتقيس مقاييس الأداء ، مما يحسن جلسات التدريب للمستخدمين والمدربين على حد سواء.



شاهد: مراقبة التدريبات باستخدام Ultralytics YOLOv8 | بوشوبس ، سحب ، تمارين البطن

مزايا مراقبة التدريبات؟

  • الأداء الأمثل: تصميم التدريبات بناء على بيانات المراقبة للحصول على نتائج أفضل.
  • تحقيق الهدف: تتبع وضبط أهداف اللياقة البدنية لتحقيق تقدم قابل للقياس.
  • التخصيص: خطط تمرين مخصصة بناء على البيانات الفردية لتحقيق الفعالية.
  • التوعية الصحية: الكشف المبكر عن الأنماط التي تشير إلى مشاكل صحية أو الإفراط في التدريب.
  • قرارات مستنيرة: قرارات تعتمد على البيانات لتعديل الإجراءات الروتينية وتحديد أهداف واقعية.

تطبيقات العالم الحقيقي

مراقبة التدريبات مراقبة التدريبات
بوشوبس العد سحب العد
بوشوبس العد سحب العد

مثال على مراقبة التدريبات

import cv2
from ultralytics import YOLO, solutions

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 = solutions.AIGym(
    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()
import cv2
from ultralytics import YOLO, solutions

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 = solutions.AIGym(
    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 تشكل

الحجج AIGym

اسم نوع افتراضي وصف
kpts_to_check list None قائمة بمؤشر النقاط الرئيسية الثلاثة، لحساب تمرين معين، متبوعا بخريطة النقاط الرئيسية
line_thickness int 2 سُمك الخطوط المرسومة.
view_img bool False علم لعرض الصورة.
pose_up_angle float 145.0 عتبة الزاوية للوضعية "لأعلى".
pose_down_angle float 90.0 عتبة الزاوية للوضعية "لأسفل".
pose_type str pullup نوع الوضعية المراد اكتشافها ('pullup', pushup, abworkout, squat).

الحجج model.predict

اسم نوع افتراضي وصف
source str 'ultralytics/assets' الدليل المصدر للصور أو مقاطع الفيديو
conf float 0.25 عتبة ثقة الكائن للكشف
iou float 0.7 التقاطع على عتبة الاتحاد (IoU) ل NMS
imgsz int or tuple 640 حجم الصورة كعدد قياسي أو قائمة (H ، W) ، أي (640 ، 480)
half bool False استخدام نصف الدقة (FP16)
device None or str None جهاز للتشغيل ، أي جهاز cuda = 0/1/2/3 أو الجهاز = وحدة المعالجة المركزية
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 تصفية النتائج حسب الفئة ، أي الفئات = 0 ، أو الفئات = [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 عتبة IOU
classes list None تصفية النتائج حسب الفئة ، أي الفئات = 0 ، أو الفئات = [0،2،3]
verbose bool True عرض نتائج تعقب الكائن


تم الإنشاء 2023-12-02، تم التحديث 2024-05-23
المؤلفون: RizwanMunawar (4)، Glenn-jocher (8)

التعليقات