مراقبة التدريبات باستخدام 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()
دعم
دعم "الضغط" و "السحب" و "التمرين"
خريطة النقاط الرئيسية
الحجج 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' |
يحدد مصدر البيانات للاستدلال. يمكن أن يكون مسار صورة أو ملف فيديو أو دليل أو عنوان URL أو معرف جهاز للخلاصات المباشرة. يدعم مجموعة واسعة من التنسيقات والمصادر ، مما يتيح التطبيق المرن عبر أنواع مختلفة من المدخلات. |
conf |
float |
0.25 |
يعين الحد الأدنى للثقة للاكتشافات. سيتم تجاهل الكائنات المكتشفة بثقة أقل من هذا الحد. يمكن أن يساعد ضبط هذه القيمة في تقليل الإيجابيات الخاطئة. |
iou |
float |
0.7 |
عتبة التقاطع فوق الاتحاد (IoU) للقمع غير الأقصى (NMS). تؤدي القيم المنخفضة إلى عدد أقل من الاكتشافات عن طريق إزالة المربعات المتداخلة ، وهو أمر مفيد لتقليل التكرارات. |
imgsz |
int or tuple |
640 |
يحدد حجم الصورة للاستدلال. يمكن أن يكون عددا صحيحا واحدا 640 لتغيير حجم المربع أو مجموعة (الارتفاع والعرض). يمكن أن يؤدي التحجيم المناسب إلى تحسين دقة الكشف وسرعة المعالجة. |
half |
bool |
False |
تمكين الاستدلال بنصف الدقة (FP16) ، والذي يمكنه تسريع استدلال النموذج على وحدات معالجة الرسومات المدعومة بأقل تأثير على الدقة. |
device |
str |
None |
يحدد جهاز الاستدلال (على سبيل المثال ، cpu , cuda:0 أو 0 ). يسمح للمستخدمين بالاختيار بين CPU ، أو جهاز GPU معين، أو أجهزة حوسبة أخرى لتنفيذ النموذج. |
max_det |
int |
300 |
الحد الأقصى لعدد الاكتشافات المسموح بها لكل صورة. يحد من العدد الإجمالي للكائنات التي يمكن للنموذج اكتشافها في استدلال واحد، مما يمنع المخرجات الزائدة في المشاهد الكثيفة. |
vid_stride |
int |
1 |
خطوة الإطار لمدخلات الفيديو. يسمح بتخطي الإطارات في مقاطع الفيديو لتسريع المعالجة على حساب الدقة الزمنية. قيمة 1 تعالج كل إطار ، القيم الأعلى تتخطى الإطارات. |
stream_buffer |
bool |
False |
يحدد ما إذا كان يجب تخزين كل الإطارات مؤقتا عند معالجة تدفقات الفيديو (True )، أو إذا كان يجب أن يعيد النموذج أحدث إطار (False ). مفيد للتطبيقات في الوقت الحقيقي. |
visualize |
bool |
False |
ينشط تصور ميزات النموذج أثناء الاستدلال ، مما يوفر رؤى حول ما "يراه" النموذج. مفيد لتصحيح الأخطاء وتفسير النموذج. |
augment |
bool |
False |
يتيح زيادة وقت الاختبار (TTA) للتنبؤات ، مما قد يؤدي إلى تحسين متانة الكشف على حساب سرعة الاستدلال. |
agnostic_nms |
bool |
False |
تمكين منع عدم الحد الأقصى (NMS) اللاأدري للفئة ، والذي يدمج المربعات المتداخلة لفئات مختلفة. مفيد في سيناريوهات الكشف متعددة الفئات حيث يكون تداخل الفئة شائعا. |
classes |
list[int] |
None |
تصفية التوقعات إلى مجموعة من معرفات الفئة. سيتم إرجاع الاكتشافات التي تنتمي إلى الفئات المحددة فقط. مفيد للتركيز على الكائنات ذات الصلة في مهام الكشف متعددة الفئات. |
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()
يكتب هذا الإعداد الفيديو المراقب إلى ملف الإخراج. لمزيد من التفاصيل، راجع قسم مراقبة التدريبات مع حفظ الإخراج.