مراقبة التدريبات باستخدام Ultralytics YOLO11
مراقبة التدريبات من خلال تقدير الوضعية باستخدام Ultralytics YOLO11 تحسين تقييم التمارين من خلال تتبع معالم الجسم الرئيسية والمفاصل بدقة في الوقت الفعلي. توفر هذه التقنية ملاحظات فورية حول شكل التمرين وتتبع التمارين الروتينية وقياس مقاييس الأداء، مما يحسّن جلسات التدريب للمستخدمين والمدربين على حد سواء.
شاهد: مراقبة التمارين باستخدام Ultralytics YOLO11 | تمارين الضغط والسحب وتمارين عضلات البطن
مزايا مراقبة التدريبات؟
- الأداء الأمثل: تخصيص التدريبات بناءً على بيانات المراقبة للحصول على نتائج أفضل.
- تحقيق الهدف: تتبع أهداف اللياقة البدنية وضبطها لتحقيق تقدم قابل للقياس.
- التخصيص: خطط تمارين رياضية مخصصة بناءً على البيانات الفردية لتحقيق الفعالية.
- التوعية الصحية: الكشف المبكر عن الأنماط التي تشير إلى وجود مشاكل صحية أو الإفراط في التدريب.
- قرارات مستنيرة: قرارات قائمة على البيانات لتعديل الإجراءات الروتينية وتحديد أهداف واقعية.
التطبيقات الواقعية
مراقبة التدريبات | مراقبة التدريبات |
---|---|
عدّ وحدات الدفع بالعد | عدّ عمليات السحب |
مثال على مراقبة التدريبات
import cv2
from ultralytics import solutions
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
video_writer = cv2.VideoWriter("workouts.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Init AIGym
gym = solutions.AIGym(
show=True, # Display the frame
kpts=[6, 8, 10], # keypoints index of person for monitoring specific exercise, by default it's for pushup
model="yolo11n-pose.pt", # Path to the YOLO11 pose estimation model file
# line_width=2, # Adjust the line width for bounding boxes and text display
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or video processing has been successfully completed.")
break
im0 = gym.monitor(im0)
video_writer.write(im0)
cv2.destroyAllWindows()
video_writer.release()
خريطة النقاط الرئيسية
الحجج AIGym
الاسم | النوع | افتراضي | الوصف |
---|---|---|---|
kpts |
list |
None |
قائمة بفهرس النقاط الرئيسية الثلاث، لحساب التمرين المحدد، تليها خريطة النقاط الرئيسية |
line_width |
int |
2 |
سُمك الخطوط المرسومة. |
show |
bool |
False |
علم لعرض الصورة. |
up_angle |
float |
145.0 |
عتبة الزاوية للوضعية "لأعلى". |
down_angle |
float |
90.0 |
عتبة الزاوية للوضعية "لأسفل". |
model |
str |
None |
المسار إلى Ultralytics YOLO ملف نموذج الوضعيات |
الحجج 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 معين، أو أجهزة حوسبة أخرى لتنفيذ النموذج. |
batch |
int |
1 |
يحدد حجم الدُفعة للاستدلال (يعمل فقط عندما يكون المصدر هو دليل أو ملف فيديو أو .txt الملف). يمكن أن يوفر حجم الدفعة الأكبر إنتاجية أعلى، مما يقلل من إجمالي الوقت اللازم للاستدلال. |
max_det |
int |
300 |
الحد الأقصى لعدد الاكتشافات المسموح به لكل صورة. يحد من العدد الإجمالي للأجسام التي يمكن للنموذج اكتشافها في استدلال واحد، مما يمنع المخرجات الزائدة في المشاهد الكثيفة. |
vid_stride |
int |
1 |
خطوة الإطار لمدخلات الفيديو. يسمح بتخطي الإطارات في مقاطع الفيديو لتسريع المعالجة على حساب الدقة الزمنية. القيمة 1 تعالج كل إطار، والقيم الأعلى تتخطى الإطارات. |
stream_buffer |
bool |
False |
يحدد ما إذا كان سيتم وضع الإطارات الواردة في قائمة الانتظار لبث الفيديو. في حالة False ، يتم إسقاط الإطارات القديمة لاستيعاب الإطارات الجديدة (محسّن لتطبيقات الوقت الحقيقي). إذا كان 'صحيح'، يتم وضع الإطارات الجديدة في قائمة انتظار في مخزن مؤقت، مما يضمن عدم تخطي أي إطارات، ولكن سيتسبب في حدوث تأخير في التأخير إذا كان معدل الإطارات في الثانية في الاستدلال أقل من معدل الإطارات في الثانية في الدفق. |
visualize |
bool |
False |
يُفعّل تصور ميزات النموذج أثناء الاستدلال، مما يوفر نظرة ثاقبة لما "يراه" النموذج. مفيد لتصحيح الأخطاء وتفسير النموذج. |
augment |
bool |
False |
تمكين زيادة وقت الاختبار (TTA) للتنبؤات، مما قد يحسن من قوة الكشف على حساب سرعة الاستدلال. |
agnostic_nms |
bool |
False |
تمكين الكبت غير الفئوي غير الفئوي (NMS)، الذي يدمج المربعات المتداخلة من فئات مختلفة. مفيد في سيناريوهات الكشف متعدد الفئات حيث يكون تداخل الفئات شائعًا. |
classes |
list[int] |
None |
تصفية التنبؤات إلى مجموعة من معرّفات الفئات. سيتم إرجاع الاكتشافات التي تنتمي إلى الفئات المحددة فقط. مفيد للتركيز على الكائنات ذات الصلة في مهام الكشف متعدد الفئات. |
retina_masks |
bool |
False |
إرجاع أقنعة تجزئة عالية الدقة. الأقنعة التي تم إرجاعها (masks.data ) ستطابق حجم الصورة الأصلية إذا تم تمكينها. أما إذا تم تعطيلها، فسيكون لها حجم الصورة المستخدم أثناء الاستدلال. |
embed |
list[int] |
None |
يحدد الطبقات التي يتم استخراج متجهات الميزات أو التضمينات منها. مفيد للمهام النهائية مثل التجميع أو البحث عن التشابه. |
project |
str |
None |
اسم دليل المشروع حيث يتم حفظ مخرجات التنبؤ في حالة save ممكّنة. |
name |
str |
None |
اسم عملية تشغيل التنبؤ. يُستخدم لإنشاء دليل فرعي داخل مجلد المشروع، حيث يتم تخزين مخرجات التنبؤ في حالة save ممكّنة. |
الحجج model.track
الجدال | النوع | افتراضي | الوصف |
---|---|---|---|
source |
str |
None |
يحدد الدليل المصدر للصور أو مقاطع الفيديو. يدعم مسارات الملفات وعناوين URL. |
persist |
bool |
False |
تمكين التتبع المستمر للكائنات بين الإطارات، والحفاظ على المعرفات عبر تسلسلات الفيديو. |
tracker |
str |
botsort.yaml |
يحدد خوارزمية التتبع المراد استخدامها، على سبيل المثال, bytetrack.yaml أو botsort.yaml . |
conf |
float |
0.3 |
تعيين عتبة الثقة للاكتشافات؛ تسمح القيم المنخفضة بتتبع المزيد من الكائنات ولكنها قد تتضمن نتائج إيجابية كاذبة. |
iou |
float |
0.5 |
يضبط عتبة التقاطع على الاتحاد (IoU) لتصفية الاكتشافات المتداخلة. |
classes |
list |
None |
تصفية النتائج حسب فهرس الفئة. على سبيل المثال, classes=[0, 2, 3] يتتبع الفئات المحددة فقط. |
verbose |
bool |
True |
يتحكم في عرض نتائج التتبع، مما يوفر إخراجًا مرئيًا للأجسام المتعقبة. |
الأسئلة الشائعة
كيف يمكنني مراقبة تماريني باستخدام Ultralytics YOLO11 ؟
لمراقبة التدريبات الخاصة بك باستخدام Ultralytics YOLO11 ، يمكنك الاستفادة من إمكانيات تقدير الوضعيات لتتبع وتحليل معالم الجسم الرئيسية والمفاصل في الوقت الفعلي. يسمح لك ذلك بتلقي ملاحظات فورية حول شكل التمرين الخاص بك، وعدّ التكرارات، وقياس مقاييس الأداء. يمكنك البدء باستخدام مثال التعليمات البرمجية المتوفرة لتمرين الضغط أو السحب أو تمارين عضلات البطن كما هو موضح:
import cv2
from ultralytics import solutions
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 = solutions.AIGym(
line_width=2,
show=True,
kpts=[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
im0 = gym.monitor(im0)
cv2.destroyAllWindows()
لمزيد من التخصيص والإعدادات، يمكنك الرجوع إلى قسم AIGym في الوثائق.
ما هي فوائد استخدام Ultralytics YOLO11 لمراقبة التمارين الرياضية؟
يوفر استخدام Ultralytics YOLO11 لمراقبة التمارين الرياضية العديد من الفوائد الرئيسية:
- الأداء الأمثل: من خلال تخصيص التدريبات بناءً على بيانات المراقبة، يمكنك تحقيق نتائج أفضل.
- تحقيق الأهداف: تتبع أهداف اللياقة البدنية وضبطها بسهولة لتحقيق تقدم قابل للقياس.
- التخصيص: احصل على خطط تمرين مخصصة بناءً على بياناتك الفردية لتحقيق الفعالية المثلى.
- التوعية الصحية: الاكتشاف المبكر للأنماط التي تشير إلى مشاكل صحية محتملة أو الإفراط في التدريب.
- قرارات مستنيرة: اتخذ قرارات قائمة على البيانات لضبط الإجراءات الروتينية ووضع أهداف واقعية.
يمكنك مشاهدة فيديو توضيحي على YouTube لمشاهدة هذه المزايا أثناء العمل.
ما مدى دقة الموقع الإلكتروني Ultralytics YOLO11 في الكشف عن التمارين وتتبعها؟
Ultralytics YOLO11 دقيق للغاية في اكتشاف التمارين وتتبعها بفضل قدراته المتطورة في تقدير الوضعية. ويمكنه تتبع المعالم الرئيسية للجسم والمفاصل الرئيسية بدقة، مما يوفر ملاحظات في الوقت الفعلي حول شكل التمرين ومقاييس الأداء. تضمن أوزان النموذج المدربة مسبقاً وبنيته القوية دقة وموثوقية عالية. للاطلاع على أمثلة واقعية، راجع قسم تطبيقات العالم الحقيقي في الوثائق، والذي يعرض تمارين الضغط والسحب التي يتم عدها.
هل يمكنني استخدام Ultralytics YOLO11 للتمارين الرياضية الروتينية المخصصة؟
نعم، Ultralytics YOLO11 يمكن تكييف مع التمارين الروتينية المخصصة. إن AIGym
يدعم الفصل أنواعًا مختلفة من الوضعيات مثل "تمرين الضغط" و "تمرين السحب" و "تمرين البطن". يمكنك تحديد نقاط رئيسية وزوايا للكشف عن تمارين محددة. إليك مثال على الإعداد:
from ultralytics import solutions
gym = solutions.AIGym(
line_width=2,
show=True,
kpts=[6, 8, 10],
)
للمزيد من التفاصيل حول إعداد الوسيعات، راجع الحجج AIGym
القسم. تسمح لك هذه المرونة بمراقبة التمارين المختلفة وتخصيص التمارين الروتينية بناءً على احتياجاتك.
كيف يمكنني حفظ مخرجات مراقبة التمرين باستخدام Ultralytics YOLO11 ؟
لحفظ مخرجات مراقبة التمرين، يمكنك تعديل الشيفرة البرمجية لتضمين كاتب فيديو يحفظ الإطارات المعالجة. إليك مثال على ذلك:
import cv2
from ultralytics import solutions
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 = solutions.AIGym(
line_width=2,
show=True,
kpts=[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
im0 = gym.monitor(im0)
video_writer.write(im0)
cv2.destroyAllWindows()
video_writer.release()
يكتب هذا الإعداد الفيديو المراقب إلى ملف الإخراج. لمزيد من التفاصيل، راجع قسم مراقبة التدريبات مع حفظ الإخراج.