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

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

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

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

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

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

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

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

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

from ultralytics import YOLO
from ultralytics.solutions import speed_estimation
import cv2

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 = speed_estimation.SpeedEstimator()
speed_obj.set_args(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()
السرعة تقديرية

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

الحجج الاختيارية set_args

اسم نوع افتراضي وصف
reg_pts list [(20, 400), (1260, 400)] النقاط التي تحدد منطقة المنطقة
names dict None أسماء الفصول
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 عرض نتائج تعقب الكائن


تم إنشاؤه في 2024-01-05, اخر تحديث 2024-01-15
المؤلفون: جلين جوشر (2) ، أيوشكسل (1) ، chr043416@gmail.com (1)

التعليقات