حساب المسافة باستخدام Ultralytics YOLO26#
ما هو حساب المسافة؟#
حساب المسافة هو عملية قياس الفراغ بين جسمين مكتشفين داخل صورة أو إطار فيديو. في حالة Ultralytics YOLO26، يتم استخدام مركز bounding box لحساب المسافة لمربعات الإحاطة المحددة من قبل المستخدم.
Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀
المرئيات#
| حساب المسافة باستخدام Ultralytics YOLO26 |
|---|
![]() |
مزايا حساب المسافة#
- دقة Localization: تعزز التموضع المكاني الدقيق في مهام computer vision.
- تقدير الحجم: يسمح بتقدير حجم الكائن لفهم سياقي أفضل.
- فهم المشهد: يحسن فهم المشهد ثلاثي الأبعاد لاتخاذ قرارات أفضل في تطبيقات مثل autonomous vehicles وأنظمة المراقبة.
- تجنب الاصطدام: يمكن الأنظمة من اكتشاف الاصطدامات المحتملة عن طريق مراقبة المسافات بين الأجسام المتحركة.
- التحليل المكاني: يسهل تحليل علاقات الكائنات وتفاعلاتها داخل البيئة المراقبة.
حساب المسافة
- انقر على أي صندوقي إحاطة باستخدام زر الفأرة الأيسر لحساب المسافة.
- استخدم زر الفأرة الأيمن لحذف جميع النقاط المرسومة.
- انقر بزر الفأرة الأيسر في أي مكان داخل الإطار لإضافة نقاط جديدة.
المسافة هي تقدير
المسافة هي تقدير وقد لا تكون دقيقة تماماً لأنها تُحسب باستخدام بيانات ثنائية الأبعاد، والتي تفتقر إلى معلومات العمق.
حساب المسافات باستخدام YOLO26#
يقوم حل DistanceCalculation بتتبع الكائنات عبر الإطارات ويقيس المسافة الإقليدية، بالبكسل، بين مراكز أي صندوقين إحاطة تحددهما بالماوس. قم بتشغيل المثال أدناه، ثم انقر بزر الماوس الأيسر فوق كائنين لرسم خط الاتصال وقراءة المسافة؛ وانقر بزر الماوس الأيمن لمسح تحديدك.
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("distance_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize distance calculation object
distancecalculator = solutions.DistanceCalculation(
model="yolo26n.pt", # path to the YOLO26 model file.
show=True, # display the output
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = distancecalculator(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وسائط DistanceCalculation()#
إليك جدول يحتوي على وسائط DistanceCalculation:
| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
model | str | None | المسار إلى ملف نموذج Ultralytics YOLO. |
يمكنك أيضاً الاستفادة من مختلف وسائط track في حل DistanceCalculation.
| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | يحدد خوارزمية التتبع المراد استخدامها. الخيارات المضمنة: botsort.yaml، وbytetrack.yaml، وocsort.yaml، وdeepocsort.yaml، وfasttrack.yaml، وtracktrack.yaml. |
conf | float | 0.1 | يضبط عتبة الثقة للاكتشافات؛ تسمح القيم المنخفضة بتتبع المزيد من الكائنات ولكنها قد تتضمن إيجابيات كاذبة. |
iou | float | 0.7 | يحدد عتبة Intersection over Union (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 | int or None | None | يحدد عرض خط صناديق الإحاطة. إذا كان None، يتم ضبط عرض الخط تلقائيًا بناءً على حجم الصورة. يوفر تخصيصًا مرئيًا للوضوح. |
show_conf | bool | True | يعرض درجة الثقة لكل اكتشاف بجانب التصنيف. يوفر رؤية حول مدى يقين النموذج في كل اكتشاف. |
show_labels | bool | True | يعرض تصنيفات كل اكتشاف في المخرجات المرئية. يوفر فهماً فورياً للكائنات المكتشفة. |
تفاصيل التنفيذ#
يعمل فئة DistanceCalculation عن طريق تتبع الكائنات عبر إطارات الفيديو وحساب المسافة الإقليدية بين مراكز صناديق الإحاطة المحددة. عندما تنقر على كائنين، يقوم الحل بما يلي:
- استخراج مراكز (نقاط المنتصف) لصناديق الإحاطة المحددة
- حساب المسافة الإقليدية بين هذه المراكز بالبكسل
- عرض المسافة على الإطار مع خط واصل بين الكائنات
يستخدم التطفيذ طريقة mouse_event_for_distance للتعامل مع تفاعلات الماوس، مما يسمح للمستخدمين بتحديد الكائنات ومسح التحديدات حسب الحاجة. تتعامل طريقة process مع معالجة الإطار تلو الآخر، وتتبع الكائنات، وحساب المسافات.
التطبيقات#
لحساب المسافة باستخدام YOLO26 تطبيقات عملية عديدة:
- تحليلات التجزئة: قياس قرب العملاء من المنتجات وتحليل فعالية تخطيط المتجر
- السلامة الصناعية: مراقبة المسافات الآمنة بين العمال والآلات
- إدارة المرور: تحليل تباعد المركبات واكتشاف التلاصق (القيادة المتقاربة جداً)
- تحليل الرياضة: حساب المسافات بين اللاعبين والكرة ومواقع الملعب الرئيسية
- الرعاية الصحية: ضمان التباعد المناسب في مناطق الانتظار ومراقبة حركة المرضى
- الروبوتات: تمكين الروبوتات من الحفاظ على مسافات مناسبة من العوائق والأشخاص
الأسئلة الشائعة#
لحساب المسافات بين الكائنات باستخدام Ultralytics YOLO26، تحتاج إلى تحديد مراكز صندوق الإحاطة للكائنات المكتشفة. تتضمن هذه العملية تهيئة فئة
DistanceCalculationمن وحدةsolutionsالتابعة لـ Ultralytics واستخدام مخرجات تتبع النموذج لحساب المسافات.يوفر استخدام حساب المسافة مع Ultralytics YOLO26 العديد من المزايا:
- الدقة في التوطين: يوفر تحديداً دقيقاً للموقع المكاني للكائنات.
- تقدير الحجم: يساعد في تقدير الأحجام الفيزيائية، مما يساهم في فهم سياقي أفضل.
- فهم المشهد: يعزز فهم المشهد ثلاثي الأبعاد، مما يساعد في تحسين اتخاذ القرار في تطبيقات مثل القيادة الذاتية والمراقبة.
- المعالجة الفورية: يقوم بإجراء الحسابات أثناء التنفيذ، مما يجعله مناسباً لتحليل الفيديو المباشر.
- قدرات التكامل: تعمل بسلاسة مع حلول YOLO26 الأخرى مثل object tracking وspeed estimation.
نعم، يمكنك إجراء حساب المسافة في تدفقات الفيديو في الوقت الفعلي باستخدام Ultralytics YOLO26. تتضمن العملية التقاط إطارات الفيديو باستخدام OpenCV، وتشغيل object detection الخاص بـ YOLO26، واستخدام فئة
DistanceCalculationلحساب المسافات بين الكائنات في الإطارات المتتالية. للحصول على تنفيذ مفصل، راجع video stream example.لحذف النقاط المرسومة أثناء حساب المسافة باستخدام Ultralytics YOLO26، يمكنك استخدام النقر بزر الماوس الأيمن. سيؤدي هذا الإجراء إلى مسح جميع النقاط التي رسمتها. لمزيد من التفاصيل، راجع قسم الملاحظات ضمن distance calculation example.
تتضمن الوسائط الرئيسية لتهيئة فئة
DistanceCalculationفي Ultralytics YOLO26 ما يلي:model: مسار ملف نموذج YOLO26.tracker: خوارزمية التتبع المراد استخدامها (الافتراضي هو 'botsort.yaml').conf: عتبة الثقة للاكتشافات.show: علامة لعرض المخرجات.
للحصول على قائمة شاملة والقيَم الافتراضية، راجع arguments of DistanceCalculation.
