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

تحديد ورصد الكائنات باستخدام VisionEye View مع Ultralytics YOLO26 🚀

ما هو VisionEye Object Mapping؟

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

تعيين موضع الأجسام باستخدام تقنية VisionEye مع YOLO

تخطيط 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="yolo26n.pt",  # use any model that Ultralytics supports, e.g., YOLOv10
    classes=[0, 2],  # generate visioneye view for specific classes
    vision_point=(50, 50),  # the point where VisionEye 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

في vision_point يمثل tuple موضع المراقب بإحداثيات البكسل. اضبطه ليطابق منظور الكاميرا حتى توضح الأشعة المصورة بشكل صحيح كيفية ارتباط الكائنات بوجهة النظر المختارة.

VisionEye الوسائط

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

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

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

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

علاوة على ذلك، يتم دعم بعض وسيطات التصور، كما هو موضح أدناه:

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

كيف يعمل VisionEye

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

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

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

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

تطبيقات VisionEye

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

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

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

ملاحظة

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

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

كيف أبدأ في استخدام تحديد ورصد الكائنات باستخدام VisionEye مع Ultralytics YOLO26؟

للبدء في استخدام تحديد ورصد الكائنات باستخدام VisionEye مع Ultralytics YOLO26، ستحتاج أولاً إلى تثبيت حزمة 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="yolo26n.pt",  # use any model that Ultralytics supports, e.g., 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 YOLO26 لتحديد ورصد الكائنات؟

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

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

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

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

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

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



📅 تم الإنشاء قبل 2 أعوام ✏️ تم التحديث قبل 7 أيام
glenn-jocherRizwanMunawarUltralyticsAssistantMatthewNoyceIvorZhu331RizwanMunawar

تعليقات