حساب المسافة باستخدام Ultralytics YOLO26
ما هو حساب المسافة؟
يُعرف قياس الفجوة بين جسمين بحساب المسافة ضمن مساحة محددة. في حالة Ultralytics YOLO26، يتم استخدام مركز صندوق الإحاطة لحساب المسافة لصناديق الإحاطة المحددة من قبل المستخدم.
Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀
المرئيات
| حساب المسافة باستخدام Ultralytics YOLO26 |
|---|
![]() |
مزايا حساب المسافة
- دقة التموضع: تعزز دقة تحديد الموقع المكاني في مهام الرؤية الحاسوبية.
- تقدير الحجم: يسمح بتقدير حجم الجسم لفهم سياقي أفضل.
- فهم المشهد: يحسن فهم المشاهد ثلاثية الأبعاد لاتخاذ قرارات أفضل في تطبيقات مثل المركبات ذاتية القيادة وأنظمة المراقبة.
- تجنب الاصطدام: يُمكّن الأنظمة من اكتشاف الاصطدامات المحتملة عن طريق مراقبة المسافات بين الأجسام المتحركة.
- التحليل المكاني: يسهل تحليل علاقات الأجسام وتفاعلاتها داخل البيئة المراقبة.
حساب المسافة
- انقر فوق أي صندوقين إحاطة بزر الفأرة الأيسر لحساب المسافة.
- استخدم زر الفأرة الأيمن لحذف جميع النقاط المرسومة.
- انقر بزر الفأرة الأيسر في أي مكان في الإطار لإضافة نقاط جديدة.
المسافة هي تقدير
المسافة هي تقدير وقد لا تكون دقيقة تمامًا لأنها تُحسب باستخدام بيانات ثنائية الأبعاد، والتي تفتقر إلى معلومات العمق.
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 | 'botsort.yaml' | يحدد خوارزمية التتبع المراد استخدامها، على سبيل المثال، bytetrack.yaml أو botsort.yaml. |
conf | float | 0.1 | يضبط عتبة الثقة للكشوف؛ القيم المنخفضة تسمح بتتبع المزيد من الكائنات ولكنها قد تتضمن نتائج إيجابية كاذبة. |
iou | float | 0.7 | يضبط عتبة التقاطع فوق الاتحاد (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؟
لحساب المسافات بين الأجسام باستخدام Ultralytics YOLO26، تحتاج إلى تحديد مراكز صناديق الإحاطة للأجسام المكتشفة. تتضمن هذه العملية تهيئة فئة DistanceCalculation من وحدة solutions في Ultralytics واستخدام مخرجات تتبع النموذج لحساب المسافات.
ما هي مزايا استخدام حساب المسافة مع Ultralytics YOLO26؟
يوفر استخدام حساب المسافة مع Ultralytics YOLO26 العديد من المزايا:
- دقة التموضع: يوفر تحديدًا دقيقًا للموقع المكاني للأجسام.
- تقدير الحجم: يساعد في تقدير الأحجام المادية، مما يساهم في فهم سياقي أفضل.
- فهم المشهد: يعزز فهم المشاهد ثلاثية الأبعاد، مما يساعد في تحسين اتخاذ القرار في تطبيقات مثل القيادة الذاتية والمراقبة.
- المعالجة الفورية: يقوم بإجراء الحسابات أثناء التنقل، مما يجعله مناسبًا لتحليل الفيديو المباشر.
- قدرات التكامل: يعمل بسلاسة مع حلول YOLO26 الأخرى مثل تتبع الأجسام وتقدير السرعة.
هل يمكنني إجراء حساب المسافة في تدفقات الفيديو الفورية باستخدام Ultralytics YOLO26؟
نعم، يمكنك إجراء حساب المسافة في تدفقات الفيديو الفورية باستخدام Ultralytics YOLO26. تتضمن العملية التقاط إطارات الفيديو باستخدام OpenCV، وتشغيل اكتشاف الأجسام الخاص بـ YOLO26، واستخدام فئة DistanceCalculation لحساب المسافات بين الأجسام في الإطارات المتعاقبة. للحصول على تنفيذ مفصل، راجع مثال تدفق الفيديو.
كيف أحذف النقاط المرسومة أثناء حساب المسافة باستخدام Ultralytics YOLO26؟
لحذف النقاط المرسومة أثناء حساب المسافة باستخدام Ultralytics YOLO26، يمكنك استخدام زر الفأرة الأيمن. سيؤدي هذا الإجراء إلى مسح جميع النقاط التي رسمتها. لمزيد من التفاصيل، راجع قسم الملاحظات تحت مثال حساب المسافة.
ما هي المعاملات الرئيسية لتهيئة فئة DistanceCalculation في Ultralytics YOLO26؟
تتضمن المعاملات الرئيسية لتهيئة فئة DistanceCalculation في Ultralytics YOLO26 ما يلي:
model: مسار ملف نموذج YOLO26.tracker: خوارزمية التتبع المستخدمة (الافتراضي هو 'botsort.yaml').conf: عتبة الثقة للاكتشافات.show: علم لعرض المخرجات.
للحصول على قائمة شاملة والقيم الافتراضية، راجع معاملات DistanceCalculation.
