تقدير السرعة باستخدام 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 :
تعرف على المزيد حول تصدير النماذج في دليلنا الخاص بالتصدير.
ما مدى دقة تقدير السرعة باستخدام 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)