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

تقدير السرعة باستخدام Ultralytics YOLOv8 🚀

ما هو تقدير السرعة؟

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



شاهد: تقدير السرعة باستخدام Ultralytics YOLOv8

اطلع على مدونتنا

للحصول على رؤى أعمق حول تقدير السرعة، راجع منشور مدونتنا: Ultralytics YOLOv8 لتقدير السرعة في مشاريع الرؤية الحاسوبية

مزايا تقدير السرعة؟

  • التحكم الفعال في حركة المرور: يساعد التقدير الدقيق للسرعة في إدارة تدفق حركة المرور وتعزيز السلامة وتقليل الازدحام على الطرق.
  • الملاحة المستقلة الدقيقة: في الأنظمة المستقلة مثل السيارات ذاتية القيادة ، يضمن تقدير السرعة الموثوق به ملاحة آمنة ودقيقة للمركبة.
  • تعزيز أمن المراقبة: يساعد تقدير السرعة في تحليلات المراقبة على تحديد السلوكيات غير العادية أو التهديدات المحتملة ، مما يحسن فعالية التدابير الأمنية.

تطبيقات العالم الحقيقي

النقل النقل
تقدير السرعة على الطريق باستخدام Ultralytics YOLOv8 تقدير السرعة على الجسر باستخدام Ultralytics YOLOv8
تقدير السرعة على الطريق باستخدام Ultralytics YOLOv8 تقدير السرعة على الجسر باستخدام Ultralytics YOLOv8

تقدير السرعة باستخدام YOLOv8 مثل

import cv2

from ultralytics import YOLO, solutions

model = YOLO("yolov8n.pt")
names = model.model.names

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("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

line_pts = [(0, 360), (1280, 360)]

# Init speed-estimation obj
speed_obj = solutions.SpeedEstimator(
    reg_pts=line_pts,
    names=names,
    view_img=True,
)

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

    tracks = model.track(im0, persist=True, show=False)

    im0 = speed_obj.estimate_speed(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()
السرعة تقديرية

ستكون السرعة تقديرية وقد لا تكون دقيقة تماماً. بالإضافة إلى ذلك، يمكن أن يختلف التقدير حسب السرعة GPU .

الحجج SpeedEstimator

اسم نوع افتراضي وصف
names dict None قاموس أسماء الطبقات.
reg_pts list [(20, 400), (1260, 400)] قائمة نقاط المنطقة لتقدير السرعة.
view_img bool False ما إذا كان سيتم عرض الصورة مع التعليقات التوضيحية.
line_thickness int 2 سماكة الخطوط لرسم المربعات والمسارات.
region_thickness int 5 سُمك خطوط المنطقة.
spdl_dist_thresh int 10 عتبة المسافة لحساب السرعة.

الحجج 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 الجمع بين تقنيات اكتشاف الأجسام وتتبعها. أولاً، تحتاج إلى اكتشاف الأجسام في كل إطار باستخدام نموذج YOLOv8 . بعد ذلك، تتبّع هذه الأجسام عبر الإطارات لحساب حركتها بمرور الوقت. أخيرًا، استخدم المسافة التي يقطعها الجسم بين الإطارات ومعدل الإطارات لتقدير سرعته.

مثال على ذلك:

import cv2

from ultralytics import YOLO, solutions

model = YOLO("yolov8n.pt")
names = model.model.names

cap = cv2.VideoCapture("path/to/video/file.mp4")
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("speed_estimation.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize SpeedEstimator
speed_obj = solutions.SpeedEstimator(
    reg_pts=[(0, 360), (1280, 360)],
    names=names,
    view_img=True,
)

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break
    tracks = model.track(im0, persist=True, show=False)
    im0 = speed_obj.estimate_speed(im0, tracks)
    video_writer.write(im0)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

لمزيد من التفاصيل، راجع منشور المدونة الرسمي الخاص بنا.

ما هي فوائد استخدام Ultralytics YOLOv8 لتقدير السرعة في إدارة حركة المرور؟

يوفر استخدام Ultralytics YOLOv8 لتقدير السرعة مزايا كبيرة في إدارة حركة المرور:

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

لمزيد من التطبيقات، راجع مزايا تقدير السرعة.

هل يمكن دمج YOLOv8 مع أطر عمل الذكاء الاصطناعي الأخرى مثل TensorFlow أو PyTorch ؟

نعم، يمكن دمج YOLOv8 مع أطر عمل أخرى للذكاء الاصطناعي مثل TensorFlow و PyTorch. Ultralytics يوفر دعمًا لتصدير نماذج YOLOv8 إلى تنسيقات مختلفة مثل ONNX و TensorRT و CoreML ، مما يضمن إمكانية التشغيل البيني السلس مع أطر عمل أخرى لتعلم الآلة.

لتصدير نموذج YOLOv8 إلى تنسيق ONNX :

yolo export --weights yolov8n.pt --include onnx

تعرف على المزيد حول تصدير النماذج في دليلنا الخاص بالتصدير.

ما مدى دقة تقدير السرعة باستخدام Ultralytics YOLOv8 ؟

وتعتمد دقة تقدير السرعة باستخدام Ultralytics YOLOv8 على عدة عوامل، بما في ذلك جودة تتبع الأجسام، ودقة ومعدل إطارات الفيديو، والمتغيرات البيئية. على الرغم من أن مقدر السرعة يوفر تقديرات موثوقة، إلا أنه قد لا يكون دقيقًا بنسبة 100% بسبب الاختلافات في سرعة معالجة الإطارات وانسداد الأجسام.

ملحوظة: ضع في اعتبارك دائماً هامش الخطأ وتحقق من صحة التقديرات باستخدام بيانات الحقيقة الأرضية عندما يكون ذلك ممكناً.

لمزيد من النصائح حول تحسين الدقة، راجع الحجج SpeedEstimator القسم.

لماذا تختار Ultralytics YOLOv8 على نماذج أخرى للكشف عن الكائنات مثل TensorFlow واجهة برمجة تطبيقات الكشف عن الكائنات ؟

Ultralytics YOLOv8 العديد من المزايا مقارنةً بنماذج اكتشاف الكائنات الأخرى، مثل واجهة برمجة تطبيقات اكتشاف الكائنات TensorFlow :

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

للمزيد من المعلومات حول فوائد YOLOv8 ، استكشف صفحة الطراز المفصلة الخاصة بنا.



تم الإنشاء 2024-01-05، تم التحديث 2024-07-05
المؤلفون: جلين-جوتشر (7)، إيفور زو331 (1)، رضوان منور (2)، برهان-ق (1)، أيوش إكسل (1)

التعليقات