تخطي إلى المحتوى

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

ما هو حساب المسافة (Distance Calculation)؟

تُعرف عملية قياس الفجوة بين كائنين بحساب المسافة داخل مساحة محددة. في حالة Ultralytics YOLO11، يتم استخدام مركز المربع المحيط لحساب المسافة للمربعات المحيطة التي يبرزها المستخدم.



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

مرئيات

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

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

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

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

حساب المسافة باستخدام 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="yolo11n.pt",  # path to the YOLO11 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 arguments:

الوسيطةالنوعافتراضيالوصف
modelstrNoneالمسار إلى ملف نموذجYOLO الخاص بـ Ultralytics .

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

الوسيطةالنوعافتراضيالوصف
trackerstr'botsort.yaml'يحدد خوارزمية التتبع المراد استخدامها، على سبيل المثال، bytetrack.yaml أو botsort.yaml.
conffloat0.3يحدد عتبة الثقة للكشف؛ القيم الأقل تسمح بتتبع المزيد من الكائنات ولكن قد تتضمن نتائج إيجابية كاذبة.
ioufloat0.5يحدد عتبة التقاطع على الاتحاد (IoU) لتصفية الاكتشافات المتداخلة.
classeslistNoneيقوم بتصفية النتائج حسب فهرس الفئة. على سبيل المثال، classes=[0, 2, 3] يتتبع الفئات المحددة فقط.
verboseboolTrueيتحكم في عرض نتائج التتبع، مما يوفر مخرجًا مرئيًا للكائنات التي يتم تتبعها.
devicestrNoneيحدد الجهاز الخاص بالاستدلال (على سبيل المثال، cpu, cuda:0 أو 0). يسمح للمستخدمين بالاختيار بين CPU أو GPU معين أو أجهزة حساب أخرى لتنفيذ النموذج.

علاوة على ذلك، تتوفر وسائط التصور التالية للاستخدام:

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

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

في DistanceCalculation class يعمل عن طريق تتبع الأجسام عبر إطارات الفيديو وحساب المسافة الإقليدية بين مراكز الثقل للمربعات المحيطة المحددة. عندما تنقر على جسمين، يكون الحل:

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

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

التطبيقات

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

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

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

كيف يمكنني حساب المسافات بين الكائنات باستخدام Ultralytics YOLO11؟

لحساب المسافات بين الكائنات باستخدام Ultralytics YOLO11، تحتاج إلى تحديد مراكز مربعات الإحاطة للكائنات المكتشفة. تتضمن هذه العملية تهيئة الـ DistanceCalculation فئة من Ultralytics' solutions الوحدة النمطية واستخدام مخرجات تتبع النموذج لحساب المسافات.

ما هي مزايا استخدام حساب المسافة مع Ultralytics YOLO11؟

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

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

هل يمكنني إجراء حساب المسافة في تدفقات الفيديو في الوقت الفعلي باستخدام Ultralytics YOLO11؟

نعم، يمكنك إجراء حساب المسافة في تدفقات الفيديو في الوقت الفعلي باستخدام Ultralytics YOLO11. تتضمن العملية التقاط إطارات الفيديو باستخدام OpenCV، تشغيل YOLO11 اكتشاف الكائنات، واستخدام DistanceCalculation فئة لحساب المسافات بين الكائنات في الإطارات المتتالية. للحصول على تطبيق تفصيلي، راجع مثال على تدفق الفيديو.

كيف يمكنني حذف النقاط المرسومة أثناء حساب المسافة باستخدام Ultralytics YOLO11؟

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

ما هي الحجج الرئيسية لتهيئة فئة DistanceCalculation في Ultralytics YOLO11؟

الوسائط الرئيسية لتهيئة DistanceCalculation تشمل الفئات في Ultralytics YOLO11 ما يلي:

  • model: مسار إلى ملف نموذج YOLO11.
  • tracker: خوارزمية التتبع المراد استخدامها (الافتراضي هو 'botsort.yaml').
  • conf: عتبة الثقة للكشف.
  • show: علامة لعرض الإخراج.

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



📅 تم الإنشاء منذ 1 سنة مضت ✏️ تم التحديث منذ 5 أيام
glenn-jocherRizwanMunawarMatthewNoyceUltralyticsAssistantjk4eIvorZhu331AyushExel

تعليقات