تقدير السرعة باستخدام 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-05-08
المؤلفون: برهان-ق (1)، رضوان منور (2)، جلين-جوتشر (2)، أيوش إكسيل (1)