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

مراقبة التدريبات باستخدام 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.predict(im0, verbose=False)
    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.predict(im0, verbose=False)
    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 تشكل التي تحتاج إلى مراقبة ، "سحب" و "abworkout" أيضا دعم
pose_up_angle int 145 قيمة زاوية التشكل
pose_down_angle int 90 قيمة زاوية التشكل لأسفل

الحجج 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 إرجاع متجهات / تضمينات المعالم من طبقات معينة


تم إنشاء 2023-12-02, اخر تحديث 2024-01-15
المؤلفون: جلين جوشر (4) ، chr043416@gmail.com (2) ، رضوان منور (1)

التعليقات