تقدير السرعة باستخدام Ultralytics YOLO11 🚀
ما هو تقدير السرعة؟
تقدير السرعة هو عملية حساب معدل حركة الكائن داخل سياق معين، وغالبًا ما يتم استخدامه في تطبيقات رؤية الكمبيوتر. باستخدام Ultralytics YOLO11، يمكنك الآن حساب سرعة الكائنات باستخدام تتبع الكائنات جنبًا إلى جنب مع بيانات المسافة والوقت، وهو أمر بالغ الأهمية لمهام مثل مراقبة حركة المرور والمراقبة. تؤثر دقة تقدير السرعة بشكل مباشر على كفاءة وموثوقية التطبيقات المختلفة، مما يجعلها مكونًا رئيسيًا في تطوير الأنظمة الذكية وعمليات اتخاذ القرار في الوقت الفعلي.
شاهد: تقدير السرعة باستخدام Ultralytics YOLO11
تحقق من مدونتنا
للحصول على رؤى أعمق حول تقدير السرعة، تحقق من منشور المدونة الخاص بنا: Ultralytics YOLO11 لتقدير السرعة في مشاريع رؤية الكمبيوتر
مزايا تقدير السرعة
- التحكم الفعال في حركة المرور: يساعد تقدير السرعة الدقيق في إدارة تدفق حركة المرور، وتعزيز السلامة، وتقليل الازدحام على الطرق.
- ملاحة ذاتية دقيقة: في الأنظمة الذاتية مثل السيارات ذاتية القيادة، يضمن تقدير السرعة الموثوق به ملاحة آمنة ودقيقة للمركبة.
- أمن المراقبة المحسن: يساعد تقدير السرعة في تحليلات المراقبة على تحديد السلوكيات غير العادية أو التهديدات المحتملة، مما يحسن فعالية التدابير الأمنية.
تطبيقات العالم الحقيقي
المواصلات | المواصلات |
---|---|
![]() |
![]() |
تقدير السرعة على الطريق باستخدام Ultralytics YOLO11 | تقدير السرعة على الجسر باستخدام Ultralytics YOLO11 |
السرعة هي تقدير
ستكون السرعة تقديرية وقد لا تكون دقيقة تمامًا. بالإضافة إلى ذلك، يمكن أن يختلف التقدير بناءً على مواصفات الكاميرا والعوامل ذات الصلة.
تقدير السرعة باستخدام Ultralytics YOLO
# Run a speed example
yolo solutions speed show=True
# Pass a source video
yolo solutions speed source="path/to/video.mp4"
# Adjust meter per pixel value based on camera configuration
yolo solutions speed meter_per_pixel=0.05
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# Video writer
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_management.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize speed estimation object
speedestimator = solutions.SpeedEstimator(
show=True, # display the output
model="yolo11n.pt", # path to the YOLO11 model file.
fps=fps, # adjust speed based on frame per second
# max_speed=120, # cap speed to a max value (km/h) to avoid outliers
# max_hist=5, # minimum frames object tracked before computing speed
# meter_per_pixel=0.05, # highly depends on the camera configuration
# classes=[0, 2], # estimate speed of specific classes.
# line_width=2, # adjust the line width for bounding boxes
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = speedestimator(im0)
# print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
SpeedEstimator
الوسائط
إليك جدول مع SpeedEstimator
arguments:
الوسيطة | النوع | افتراضي | الوصف |
---|---|---|---|
model |
str |
None |
مسار إلى ملف نموذج Ultralytics YOLO. |
fps |
float |
30.0 |
الإطارات في الثانية المستخدمة لحسابات السرعة. |
max_hist |
int |
5 |
الحد الأقصى للنقاط التاريخية التي يجب تتبعها لكل كائن لحساب السرعة/الاتجاه. |
meter_per_pixel |
float |
0.05 |
عامل القياس المستخدم لتحويل مسافة البكسل إلى وحدات العالم الحقيقي. |
max_speed |
int |
120 |
الحد الأقصى للسرعة في التراكبات المرئية (يستخدم في التنبيهات). |
في SpeedEstimator
يسمح الحل باستخدام track
المعلمات:
الوسيطة | النوع | افتراضي | الوصف |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
يحدد خوارزمية التتبع المراد استخدامها، على سبيل المثال، bytetrack.yaml أو botsort.yaml . |
conf |
float |
0.3 |
يحدد عتبة الثقة للكشف؛ القيم الأقل تسمح بتتبع المزيد من الكائنات ولكن قد تتضمن نتائج إيجابية كاذبة. |
iou |
float |
0.5 |
يحدد عتبة التقاطع على الاتحاد (IoU) لتصفية الاكتشافات المتداخلة. |
classes |
list |
None |
يقوم بتصفية النتائج حسب فهرس الفئة. على سبيل المثال، classes=[0, 2, 3] يتتبع الفئات المحددة فقط. |
verbose |
bool |
True |
يتحكم في عرض نتائج التتبع، مما يوفر مخرجًا مرئيًا للكائنات التي يتم تتبعها. |
device |
str |
None |
يحدد الجهاز الخاص بالاستدلال (على سبيل المثال، cpu , cuda:0 أو 0 ). يسمح للمستخدمين بالاختيار بين CPU أو GPU معين أو أجهزة حساب أخرى لتنفيذ النموذج. |
بالإضافة إلى ذلك، يتم دعم خيارات العرض المرئي التالية:
الوسيطة | النوع | افتراضي | الوصف |
---|---|---|---|
show |
bool |
False |
إذا True ، يعرض الصور أو مقاطع الفيديو المشروحة في نافذة. مفيد للحصول على تعليقات مرئية فورية أثناء التطوير أو الاختبار. |
line_width |
None or int |
None |
يحدد عرض خطوط مربعات الإحاطة. إذا None ، يتم تعديل عرض الخط تلقائيًا بناءً على حجم الصورة. يوفر تخصيصًا مرئيًا للوضوح. |
show_conf |
bool |
True |
يعرض قيمة الثقة لكل كائن يتم الكشف عنه بجانب التسمية. يعطي نظرة ثاقبة حول يقين النموذج لكل كائن تم الكشف عنه. |
show_labels |
bool |
True |
يعرض تسميات لكل كائن يتم الكشف عنه في الناتج المرئي. يوفر فهمًا فوريًا للكائنات التي تم الكشف عنها. |
الأسئلة الشائعة
كيف يمكنني تقدير سرعة الكائن باستخدام Ultralytics YOLO11؟
يتضمن تقدير سرعة الكائن باستخدام Ultralytics YOLO11 الجمع بين اكتشاف الكائن وتقنيات التتبع. أولاً، تحتاج إلى اكتشاف الكائنات في كل إطار باستخدام نموذج YOLO11. ثم، تتبع هذه الكائنات عبر الإطارات لحساب حركتها بمرور الوقت. أخيرًا، استخدم المسافة التي قطعها الكائن بين الإطارات ومعدل الإطارات لتقدير سرعته.
مثال:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.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
speedestimator = solutions.SpeedEstimator(
model="yolo11n.pt",
show=True,
)
while cap.isOpened():
success, im0 = cap.read()
if not success:
break
results = speedestimator(im0)
video_writer.write(results.plot_im)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
لمزيد من التفاصيل، راجع منشور المدونة الرسمي الخاص بنا.
ما هي فوائد استخدام Ultralytics YOLO11 لتقدير السرعة في إدارة حركة المرور؟
يوفر استخدام Ultralytics YOLO11 لتقدير السرعة مزايا كبيرة في إدارة حركة المرور:
- السلامة المعززة: تقدير سرعات المركبات بدقة لاكتشاف تجاوز السرعة وتحسين السلامة على الطرق.
- مراقبة في الوقت الفعلي: استفد من إمكانية اكتشاف الكائنات في الوقت الفعلي لـ YOLO11 لمراقبة تدفق حركة المرور والازدحام بفعالية.
- قابلية التوسع: انشر النموذج على إعدادات أجهزة متنوعة، من الأجهزة الطرفية إلى الخوادم، مما يضمن حلولاً مرنة وقابلة للتطوير لتطبيقات واسعة النطاق.
لمزيد من التطبيقات، راجع مزايا تقدير السرعة.
هل يمكن دمج YOLO11 مع أطر عمل الذكاء الاصطناعي الأخرى مثل TensorFlow أو PyTorch؟
نعم، يمكن دمج YOLO11 مع أطر عمل الذكاء الاصطناعي الأخرى مثل TensorFlow و PyTorch. توفر Ultralytics دعمًا لتصدير نماذج YOLO11 إلى تنسيقات مختلفة مثل ONNX و TensorRT و CoreML، مما يضمن التشغيل البيني السلس مع أطر عمل ML الأخرى.
لتصدير نموذج YOLO11 إلى تنسيق ONNX:
yolo export model=yolo11n.pt format=onnx
تعرف على المزيد حول تصدير النماذج في دليل التصدير الخاص بنا.
ما مدى دقة تقدير السرعة باستخدام Ultralytics YOLO11؟
تعتمد دقة تقدير السرعة باستخدام Ultralytics YOLO11 على عدة عوامل، بما في ذلك جودة تتبع الكائنات، ودقة ومعدل إطارات الفيديو، والمتغيرات البيئية. في حين أن مقدِّر السرعة يوفر تقديرات موثوقة، فقد لا يكون دقيقًا بنسبة 100٪ بسبب الاختلافات في سرعة معالجة الإطارات وإخفاء الكائنات.
ملاحظة: ضع في اعتبارك دائمًا هامش الخطأ وتحقق من صحة التقديرات ببيانات الواقع الفعلي متى أمكن ذلك.
للحصول على مزيد من النصائح حول تحسين الدقة، تحقق من الوسائط SpeedEstimator
القسم.