Ultralytics YOLO27:
Get Started

حساب المسافة باستخدام Ultralytics YOLO26#

ما حساب المسافة؟#

حساب المسافة هو عملية قياس المسافة بين كائنين مكتشفين داخل صورة أو إطار فيديو. في حالة Ultralytics YOLO26، يُستخدم مركز مربع الإحاطة لحساب المسافة بين مربعات الإحاطة التي يحددها المستخدم.



شاهد: كيفية تقدير المسافة بين الكائنات المكتشفة باستخدام Ultralytics YOLO بالبكسل 🚀

المرئيات#

حساب المسافة باستخدام Ultralytics YOLO26
حساب المسافة باستخدام Ultralytics YOLO26

مزايا حساب المسافة#

  • دقة تحديد الموقع: تعزّز دقة التموضع المكاني في مهام الرؤية الحاسوبية.
  • تقدير الحجم: يتيح تقدير حجم الكائن لفهم السياق على نحو أفضل.
  • فهم المشهد: يحسّن استيعاب المشاهد ثلاثية الأبعاد لاتخاذ قرارات أفضل في تطبيقات مثل المركبات ذاتية القيادة وأنظمة المراقبة.
  • تجنّب الاصطدام: يتيح للأنظمة اكتشاف احتمالات الاصطدام من خلال مراقبة المسافات بين الكائنات المتحركة.
  • التحليل المكاني: يسهّل تحليل العلاقات والتفاعلات بين الكائنات داخل البيئة الخاضعة للمراقبة.
حساب المسافة
  • انقر بزر الفأرة الأيسر على مربعي إحاطة لحساب المسافة.
  • استخدم زر الفأرة الأيمن لحذف جميع النقاط المرسومة.
المسافة تقديرية

المسافة تقديرية وقد لا تكون دقيقة تمامًا لأنها تُحسب باستخدام بيانات ثنائية الأبعاد تفتقر إلى معلومات العمق.

حساب المسافات باستخدام YOLO26#

يتتبّع الحل DistanceCalculation الكائنات عبر الإطارات ويقيس المسافة الإقليدية، بوحدة البكسل، بين مركزي أي مربعي إحاطة تحددهما بالفأرة. شغّل المثال أدناه، ثم انقر بزر الفأرة الأيسر على كائنين لرسم الخط الواصل بينهما وقراءة المسافة؛ وانقر بزر الفأرة الأيمن لمسح التحديد.

حساب المسافة باستخدام Ultralytics YOLO
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.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 = cv2.VideoWriter("distance_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# ⁨تهيئة كائن حساب المسافة⁩
distancecalculator = solutions.DistanceCalculation(
    model="yolo26n.pt",  # ⁨مسار ملف نموذج YOLO26.⁩
    show=True,  # ⁨# اعرض الناتج⁩
)

# ⁨معالجة الفيديو⁩
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)  # ⁨الوصول إلى المخرجات⁩

    video_writer.write(results.plot_im)  # ⁨كتابة الإطار المعالَج.⁩

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # ⁨إغلاق جميع النوافذ المفتوحة⁩

وسيطات DistanceCalculation()#

إليك جدولًا بمعاملات DistanceCalculation:

المعاملالنوعالافتراضيالوصف
modelstrNoneمسار ملف نموذج Ultralytics YOLO.
line_widthint2سماكة الخط للصناديق والنقاط المفتاحية والعدادات التي يرسمها الحل.
verboseboolTrueيفعّل سجل الحل لكل إطار، ويشمل شكل المدخل وعدد الفئات وسرعة المعالجة. يظل استدعاء التتبع نفسه صامتًا دائمًا.

يمكنك أيضًا استخدام معاملات track المتنوعة في الحل DistanceCalculation.

المعاملالنوعالافتراضيالوصف
trackerstr'tracktrack.yaml'يحدد خوارزمية التتبع المطلوب استخدامها. الخيارات المضمنة: botsort.yaml، bytetrack.yaml، ocsort.yaml، deepocsort.yaml، fasttrack.yaml، tracktrack.yaml.
conffloat0.25يضبط عتبة الثقة للكشوفات؛ إذ تسمح القيم الأقل بتتبع مزيد من الكائنات، لكنها قد تتضمن إيجابيات كاذبة.
ioufloat0.7يضبط عتبة التقاطع على الاتحاد (IoU) لتصفية الكشوفات المتداخلة.
classeslistNoneيصفّي النتائج حسب فهرس الفئة. على سبيل المثال، لا يتتبع classes=[0, 2, 3] إلا الفئات المحددة.
devicestrNoneيحدد الجهاز المستخدم للاستدلال (مثل cpu أو cuda:0 أو 0). ويتيح للمستخدمين الاختيار بين CPU أو GPU محددة أو أجهزة حوسبة أخرى لتنفيذ النموذج.
imgszint or tuple640حجم صورة الاستدلال المستهدف: عدد صحيح لصورة مربعة، أو زوج (height, width). تُعدّل الأبعاد وفقًا لخطوة النموذج.
max_detint300الحد الأقصى لعدد الكشوفات التي يُحتفظ بها لكل إطار قبل التتبع، ما يحد من عدد الكائنات التي يعالجها الحل في المشاهد الكثيفة.
quantizeint or strNoneدقة الاستدلال: 16 (FP16) أو 32/unset (FP32) لنماذج PyTorch وTorchScript خارج CPU؛ أما التنسيقات الأخرى فتستخدم الدقة التي يحددها الملف الاصطناعي وبيئة التشغيل. يحل هذا الوسيط محل الوسيطة half المهملة.

بالإضافة إلى ذلك، تتوفر معاملات التصوّر التالية:

المعاملالنوعالافتراضيالوصف
showboolFalseإذا كان True، يعرض الصور أو مقاطع الفيديو المشروحة في نافذة. يفيد ذلك في الحصول على ملاحظات مرئية فورية أثناء التطوير أو الاختبار.
show_confboolTrueيعرض درجة الثقة لكل اكتشاف بجوار التسمية، ما يوضح مدى يقين النموذج بشأن كل اكتشاف.
show_labelsboolTrueيعرض تسميات كل اكتشاف في المخرجات المرئية، ما يتيح فهم الكائنات المكتشفة فورًا.

تفاصيل التنفيذ#

تعمل الفئة DistanceCalculation من خلال تتبّع الكائنات عبر إطارات الفيديو وحساب المسافة الإقليدية بين مراكز مربعات الإحاطة المحددة. عند النقر على كائنين، يقوم الحل بما يلي:

  1. استخراج مراكز مربعات الإحاطة المحددة (نقاطها المركزية)
  2. حساب المسافة الإقليدية بين هذه المراكز بالبكسل
  3. عرض المسافة على الإطار مع خط يصل بين الكائنين

يستخدم التنفيذ الطريقة mouse_event_for_distance للتعامل مع تفاعلات الفأرة، ما يتيح للمستخدمين تحديد الكائنات ومسح التحديدات عند الحاجة. أما الطريقة process فتتولى معالجة الإطارات إطارًا تلو الآخر، وتتبع الكائنات، وحساب المسافات.

التطبيقات#

لحساب المسافة باستخدام YOLO26 تطبيقات عملية عديدة:

  • تحليلات البيع بالتجزئة: قياس مدى قرب العملاء من المنتجات وتحليل مدى فعالية تخطيط المتجر
  • السلامة الصناعية: مراقبة مسافات الأمان بين العمال والآلات
  • إدارة حركة المرور: تحليل التباعد بين المركبات واكتشاف الاقتراب الشديد من المركبة الأمامية
  • التحليل الرياضي: حساب المسافات بين اللاعبين والكرة ومواضع الملعب الرئيسية
  • الرعاية الصحية: ضمان التباعد المناسب في مناطق الانتظار ومراقبة حركة المرضى
  • الروبوتات: تمكين الروبوتات من الحفاظ على مسافات مناسبة عن العوائق والأشخاص

الأسئلة الشائعة#

  • لحساب المسافات بين الكائنات باستخدام Ultralytics YOLO26، عليك تحديد مراكز مربعات الإحاطة للكائنات المكتشفة. تتضمن هذه العملية تهيئة الفئة DistanceCalculation من الوحدة solutions في Ultralytics، واستخدام مخرجات التتبّع الخاصة بالنموذج لحساب المسافات.

  • يوفر حساب المسافة باستخدام Ultralytics YOLO26 عدة مزايا:

    • دقة تحديد الموقع: يوفر تموضعًا مكانيًا دقيقًا للكائنات.
    • تقدير الحجم: يساعد في تقدير الأحجام الفعلية، مما يسهم في فهم السياق على نحو أفضل.
    • فهم المشهد: يعزّز استيعاب المشاهد ثلاثية الأبعاد، مما يساعد على تحسين اتخاذ القرار في تطبيقات مثل القيادة الذاتية والمراقبة.
    • المعالجة في الوقت الفعلي: يُجري الحسابات فورًا، مما يجعله مناسبًا لتحليل الفيديو المباشر.
    • إمكانات التكامل: يعمل بسلاسة مع حلول YOLO26 الأخرى مثل تتبّع الكائنات وتقدير السرعة.
  • نعم، يمكنك حساب المسافة في تدفقات الفيديو في الوقت الفعلي باستخدام Ultralytics YOLO26. تتضمن العملية التقاط إطارات الفيديو باستخدام OpenCV، وتشغيل اكتشاف الكائنات باستخدام YOLO26، واستخدام الفئة DistanceCalculation لحساب المسافات بين الكائنات في الإطارات المتعاقبة. للاطلاع على تنفيذ مفصّل، راجع مثال تدفق الفيديو.

  • لحذف النقاط المرسومة أثناء حساب المسافة باستخدام Ultralytics YOLO26، يمكنك النقر بزر الفأرة الأيمن. سيمسح هذا الإجراء جميع النقاط التي رسمتها. لمزيد من التفاصيل، راجع قسم الملاحظات ضمن مثال حساب المسافة.

  • تشمل المعاملات الرئيسية لتهيئة الفئة DistanceCalculation في Ultralytics YOLO26 ما يلي:

    • model: مسار ملف نموذج YOLO26.
    • tracker: خوارزمية التتبّع المراد استخدامها (تستخدم الحلول افتراضيًا tracktrack.yaml).
    • conf: عتبة الثقة لعمليات الكشف.
    • show: علامة لعرض المخرجات.

    للاطلاع على القائمة الكاملة والقيم الافتراضية، راجع معاملات DistanceCalculation.

التعليقات