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

تحديد مواقع العناصر في عرض VisionEye باستخدام Ultralytics YOLO11 🚀

ما هو VisionEye Object Mapping؟

يوفر Ultralytics YOLO11 VisionEye القدرة لأجهزة الكمبيوتر على تحديد وتحديد الكائنات، ومحاكاة الدقة الرصدية للعين البشرية. تمكن هذه الوظيفة أجهزة الكمبيوتر من تمييز الكائنات المحددة والتركيز عليها، تمامًا مثل الطريقة التي تراقب بها العين البشرية التفاصيل من وجهة نظر معينة.

تحديد مواقع العناصر في عرض VisionEye مع تتبع العناصر باستخدام Ultralytics YOLO11

تخطيط VisionEye باستخدام Ultralytics YOLO

# Monitor objects position with visioneye
yolo solutions visioneye show=True

# Pass a source video
yolo solutions visioneye source="path/to/video.mp4"

# Monitor the specific classes
yolo solutions visioneye classes="[0, 5]"
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("visioneye_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize vision eye object
visioneye = solutions.VisionEye(
    show=True,  # display the output
    model="yolo11n.pt",  # use any model that Ultralytics support, i.e, YOLOv10
    classes=[0, 2],  # generate visioneye view for specific classes
    vision_point=(50, 50),  # the point, where vision will view objects and draw tracks
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    results = visioneye(im0)

    print(results)  # access the output

    video_writer.write(results.plot_im)  # write the video file

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

VisionEye الوسائط

إليك جدول مع VisionEye arguments:

الوسيطة النوع افتراضي الوصف
model str None مسار إلى ملف نموذج Ultralytics YOLO.
vision_point tuple[int, int] (20, 20) النقطة التي ستتعقب فيها الرؤية الكائنات وترسم المسارات باستخدام VisionEye Solution.

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

الوسيطة النوع افتراضي الوصف
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 يعرض تسميات لكل كائن يتم الكشف عنه في الناتج المرئي. يوفر فهمًا فوريًا للكائنات التي تم الكشف عنها.

كيف يعمل VisionEye

تعمل VisionEye عن طريق إنشاء نقطة رؤية ثابتة في الإطار ورسم خطوط من هذه النقطة إلى الكائنات المكتشفة. يحاكي هذا كيف تركز الرؤية البشرية على كائنات متعددة من وجهة نظر واحدة. يستخدم الحل تتبع الكائنات للحفاظ على تحديد متسق للكائنات عبر الإطارات، مما يخلق تمثيلًا مرئيًا للعلاقة المكانية بين المراقب (نقطة الرؤية) والكائنات في المشهد.

في process ينفذ الأسلوب في فئة VisionEye عدة عمليات رئيسية:

  1. يستخرج المسارات (المربعات المحيطة والفئات والأقنعة) من الصورة المدخلة
  2. ينشئ مُعلِّمًا لرسم مربعات الإحاطة والتسميات
  3. لكل كائن يتم اكتشافه، يرسم مربع تسمية وينشئ خط رؤية من نقطة الرؤية
  4. إرجاع الصورة المشروحة مع إحصائيات التتبع

تعتبر هذه الطريقة مفيدة بشكل خاص للتطبيقات التي تتطلب وعيًا مكانيًا وتصورًا للعلاقة بين الكائنات، مثل أنظمة المراقبة والملاحة الذاتية والتركيبات التفاعلية.

تطبيقات VisionEye

يحتوي تخطيط كائنات VisionEye على العديد من التطبيقات العملية في مختلف الصناعات:

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

من خلال الجمع بين VisionEye وحلول Ultralytics الأخرى مثل حساب المسافة أو تقدير السرعة، يمكنك بناء أنظمة شاملة لا تتبع الأجسام فحسب، بل تفهم أيضًا علاقاتها المكانية وسلوكياتها.

ملاحظة

لأية استفسارات، لا تتردد في نشر أسئلتك في قسم المشكلات في Ultralytics أو قسم المناقشة المذكور أدناه.

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

كيف يمكنني البدء في استخدام VisionEye Object Mapping مع Ultralytics YOLO11؟

لبدء استخدام VisionEye Object Mapping مع Ultralytics YOLO11، ستحتاج أولاً إلى تثبيت حزمة Ultralytics YOLO عبر pip. بعد ذلك، يمكنك استخدام نموذج التعليمات البرمجية المتوفر في الوثائق لإعداد الكشف عن الكائنات باستخدام VisionEye. إليك مثال بسيط لمساعدتك على البدء:

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("vision-eye-mapping.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init vision eye object
visioneye = solutions.VisionEye(
    show=True,  # display the output
    model="yolo11n.pt",  # use any model that Ultralytics support, i.e, YOLOv10
    classes=[0, 2],  # generate visioneye view for specific classes
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    results = visioneye(im0)

    print(results)  # access the output

    video_writer.write(results.plot_im)  # write the video file

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

لماذا يجب علي استخدام Ultralytics YOLO11 لرسم خرائط وتتبع الكائنات؟

يشتهر Ultralytics YOLO11 بسرعته و دقته وسهولة دمجه، مما يجعله الخيار الأفضل لرسم الخرائط وتتبع الأجسام. تشمل المزايا الرئيسية ما يلي:

  1. أداء حديث: يوفر دقة عالية في الكشف عن الكائنات في الوقت الفعلي.
  2. المرونة: يدعم مهامًا متنوعة مثل الكشف والتتبع وحساب المسافة.
  3. المجتمع والدعم: وثائق شاملة ومجتمع GitHub نشط لاستكشاف الأخطاء وإصلاحها والتحسينات.
  4. سهولة الاستخدام: واجهة برمجة تطبيقات سهلة الاستخدام تعمل على تبسيط المهام المعقدة، مما يسمح بالنشر والتكرار السريع.

لمزيد من المعلومات حول التطبيقات والفوائد، تحقق من وثائق Ultralytics YOLO11.

كيف يمكنني دمج VisionEye مع أدوات التعلم الآلي الأخرى مثل Comet أو ClearML؟

يمكن أن تتكامل Ultralytics YOLO11 بسلاسة مع أدوات تعلم الآلة المختلفة مثل Comet و ClearML، مما يعزز تتبع التجارب والتعاون وإمكانية التكرار. اتبع الأدلة التفصيلية حول كيفية استخدام YOLOv5 مع Comet و دمج YOLO11 مع ClearML للبدء.

لمزيد من الاستكشاف وأمثلة التكامل، تحقق من دليل تكامل Ultralytics الخاص بنا.



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

تعليقات