مراقبة التدريبات باستخدام Ultralytics YOLOv8 🚀
مراقبة التدريبات من خلال تقدير الوضع مع 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.track(im0, verbose=False) # Tracking recommended
#results = model.predict(im0) # Prediction also supported
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.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()
دعم
دعم "الضغط" و "السحب" و "التمرين"
خريطة النقاط الرئيسية
الحجج set_args
اسم | نوع | افتراضي | وصف |
---|---|---|---|
kpts_to_check |
list |
None |
قائمة بمؤشر النقاط الرئيسية الثلاثة، لحساب تمرين معين، متبوعا بخريطة النقاط الرئيسية |
view_img |
bool |
False |
عرض الإطار مع الأعداد |
line_thickness |
int |
2 |
زيادة سمك قيمة العد |
pose_type |
str |
pushup |
تشكل التي تحتاج إلى مراقبة ، pullup و 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 |
إرجاع متجهات / تضمينات المعالم من طبقات معينة |
الحجج 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 |
عرض نتائج تعقب الكائن |