تقدير السرعة باستخدام 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)
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 |
سماكة الخطوط لرسم المربعات والمسارات. |
spdl_dist_thresh |
int |
10 |
عتبة المسافة لحساب السرعة. |
الحجج model.track
جدال | نوع | افتراضي | وصف |
---|---|---|---|
source |
str |
None |
Specifies the source directory for images or videos. Supports file paths and URLs. |
persist |
bool |
False |
Enables persistent tracking of objects between frames, maintaining IDs across video sequences. |
tracker |
str |
botsort.yaml |
Specifies the tracking algorithm to use, e.g., bytetrack.yaml أو botsort.yaml . |
conf |
float |
0.3 |
Sets the confidence threshold for detections; lower values allow more objects to be tracked but may include false positives. |
iou |
float |
0.5 |
Sets the Intersection over Union (IoU) threshold for filtering overlapping detections. |
classes |
list |
None |
Filters results by class index. For example, classes=[0, 2, 3] only tracks the specified classes. |
verbose |
bool |
True |
Controls the display of tracking results, providing a visual output of tracked objects. |
الأسئلة المتداولة
كيف يمكنني تقدير سرعة الجسم باستخدام 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 :
تعرف على المزيد حول تصدير النماذج في دليلنا الخاص بالتصدير.
ما مدى دقة تقدير السرعة باستخدام Ultralytics YOLOv8 ؟
وتعتمد دقة تقدير السرعة باستخدام Ultralytics YOLOv8 على عدة عوامل، بما في ذلك جودة تتبع الأجسام، ودقة ومعدل إطارات الفيديو، والمتغيرات البيئية. على الرغم من أن مقدر السرعة يوفر تقديرات موثوقة، إلا أنه قد لا يكون دقيقًا بنسبة 100% بسبب الاختلافات في سرعة معالجة الإطارات وانسداد الأجسام.
ملحوظة: ضع في اعتبارك دائماً هامش الخطأ وتحقق من صحة التقديرات باستخدام بيانات الحقيقة الأرضية عندما يكون ذلك ممكناً.
لمزيد من النصائح حول تحسين الدقة، راجع الحجج SpeedEstimator
القسم.
لماذا تختار Ultralytics YOLOv8 على نماذج أخرى للكشف عن الكائنات مثل TensorFlow واجهة برمجة تطبيقات الكشف عن الكائنات ؟
Ultralytics YOLOv8 العديد من المزايا مقارنةً بنماذج اكتشاف الكائنات الأخرى، مثل واجهة برمجة تطبيقات اكتشاف الكائنات TensorFlow :
- الأداء في الوقت الحقيقي: تم تحسين YOLOv8 للكشف في الوقت الحقيقي، مما يوفر سرعة ودقة عالية.
- سهولة الاستخدام: تم تصميمه بواجهة سهلة الاستخدام، YOLOv8 لتبسيط التدريب على النماذج ونشرها.
- تعدد الاستخدامات: يدعم مهام متعددة، بما في ذلك اكتشاف الأجسام، والتجزئة، وتقدير الوضعية.
- المجتمع والدعم: YOLOv8 مدعوم بمجتمع نشط ووثائق واسعة النطاق، مما يضمن حصول المطورين على الموارد التي يحتاجونها.
للمزيد من المعلومات حول فوائد YOLOv8 ، استكشف صفحة الطراز المفصلة الخاصة بنا.