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

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

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

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



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

مرئيات

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

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

  • دقة تحديد الموقع: يعزز تحديد المواقع المكانية الدقيقة في مهام الرؤية الحاسوبية.
  • تقدير الحجم: يسمح بتقدير حجم الكائن لفهم سياقي أفضل.
  • فهم المشهد: يحسن فهم المشهد ثلاثي الأبعاد لاتخاذ قرارات أفضل في تطبيقات مثل المركبات ذاتية القيادة وأنظمة المراقبة.
  • تجنب الاصطدام: يمكّن الأنظمة من اكتشاف الاصطدامات المحتملة من خلال مراقبة المسافات بين الأجسام المتحركة.
  • التحليل المكاني: يسهل تحليل علاقات الكائنات وتفاعلاتها داخل البيئة الخاضعة للمراقبة.
حساب المسافة
  • انقر بزر الفأرة الأيسر على أي مربعين محيطين لحساب المسافة
  • سيؤدي النقر بزر الفأرة الأيمن إلى حذف جميع النقاط المرسومة
  • يمكن استخدام النقر بزر الفأرة الأيسر لرسم النقاط
المسافة هي تقدير
Distance will be an estimate and may not be fully accurate, as it is calculated using 2-dimensional data,
which lacks information about the object's depth.

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

الوسيطة النوع افتراضي الوصف
model str None مسار إلى ملف نموذج Ultralytics YOLO.

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

الوسيطة النوع افتراضي الوصف
tracker str 'botsort.yaml' يحدد خوارزمية التتبع المراد استخدامها، على سبيل المثال، bytetrack.yaml أو botsort.yaml.
conf float 0.3 يحدد عتبة الثقة للكشف؛ القيم الأقل تسمح بتتبع المزيد من الكائنات ولكن قد تتضمن نتائج إيجابية كاذبة.
iou float 0.5 يحدد عتبة التقاطع على الاتحاد (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 None or int None يحدد عرض خطوط مربعات الإحاطة. إذا None، يتم تعديل عرض الخط تلقائيًا بناءً على حجم الصورة. يوفر تخصيصًا مرئيًا للوضوح.
show_conf bool True يعرض قيمة الثقة لكل كائن يتم الكشف عنه بجانب التسمية. يعطي نظرة ثاقبة حول يقين النموذج لكل كائن تم الكشف عنه.
show_labels bool True يعرض تسميات لكل كائن يتم الكشف عنه في الناتج المرئي. يوفر فهمًا فوريًا للكائنات التي تم الكشف عنها.

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

في 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.



📅 تم الإنشاء منذ سنة واحدة ✏️ تم التحديث منذ شهرين

تعليقات