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

مراقبة التدريبات باستخدام 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],
)

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

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],
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    results = model.track(im0, verbose=False)  # Tracking recommended
    # results = model.predict(im0)  # Prediction also supported
    im0 = gym_object.start_counting(im0, results)
    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 أو الجهاز=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 تصفية النتائج حسب الفئة ، أي الفئات = 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 عرض نتائج تعقب الكائن

الأسئلة المتداولة

كيف يمكنني مراقبة تماريني باستخدام 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],
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    results = model.track(im0, verbose=False)
    im0 = gym_object.start_counting(im0, results)

cv2.destroyAllWindows()

لمزيد من التخصيص والإعدادات، يمكنك الرجوع إلى قسم AIGym في الوثائق.

ما هي فوائد استخدام Ultralytics YOLOv8 لمراقبة التمارين الرياضية؟

يوفر استخدام Ultralytics YOLOv8 لمراقبة التمارين الرياضية العديد من الفوائد الرئيسية:

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

يمكنك مشاهدة فيديو توضيحي على YouTube لمشاهدة هذه المزايا أثناء العمل.

ما مدى دقة Ultralytics YOLOv8 في الكشف عن التمارين وتتبعها؟

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

هل يمكنني استخدام Ultralytics YOLOv8 للتمارين الرياضية الروتينية المخصصة؟

نعم، Ultralytics YOLOv8 يمكن تكييف مع التمارين الروتينية المخصصة. إن AIGym يدعم الفصل أنواعًا مختلفة من الوضعيات مثل "تمرين الضغط" و "تمرين السحب" و "تمرين البطن". يمكنك تحديد نقاط رئيسية وزوايا للكشف عن تمارين محددة. إليك مثال على الإعداد:

from ultralytics import solutions

gym_object = solutions.AIGym(
    line_thickness=2,
    view_img=True,
    pose_type="squat",
    kpts_to_check=[6, 8, 10],
)

للمزيد من التفاصيل حول إعداد الوسيعات، راجع الحجج AIGym القسم. تسمح لك هذه المرونة بمراقبة التمارين المختلفة وتخصيص التمارين الروتينية بناءً على احتياجاتك.

كيف يمكنني حفظ مخرجات مراقبة التمرين باستخدام 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))

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],
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break
    results = model.track(im0, verbose=False)
    im0 = gym_object.start_counting(im0, results)
    video_writer.write(im0)

cv2.destroyAllWindows()
video_writer.release()

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



تم الإنشاء 2023-12-02، تم التحديث 2024-07-05
المؤلفون: جلين-جوتشر (12)، أمبيتيوس-أكتوبوس (1)، إيفور زو331 (1)، رضوان منور (4)

التعليقات