Ultralytics YOLO27:

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

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

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



Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀

المرئيات#

حساب المسافة باستخدام 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"

# 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:

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

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

الوسيطةالنوعالافتراضيالوصف
trackerstr'botsort.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/غير محدد (FP32) لنموذجي PyTorch وTorchScript؛ بينما تحسب التنسيقات الأخرى بالدقة التي تحددها ملفاتها ومحيط تشغيلها. يحل محل علامة 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: خوارزمية التتبع المراد استخدامها (تستخدم الحلول افتراضيًا botsort.yaml).
    • conf: عتبة الثقة لعمليات الاكتشاف.
    • show: علامة لعرض المخرجات.

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

التعليقات