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

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

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

الحجج 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 عرض نتائج تعقب الكائن


Created 2024-01-05, Updated 2024-06-10
Authors: glenn-jocher (6), IvorZhu331 (1), RizwanMunawar (2), Burhan-Q (1), AyushExel (1)

التعليقات