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

عرض VisionEye لرسم خرائط الكائنات باستخدام Ultralytics YOLO11 🚀

ما هو تخطيط الكائنات VisionEye؟

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

العينات

فيجن آي فيو عرض VisionEye مع تتبع الكائنات عرض VisionEye مع حساب المسافة
تخطيط كائن عرض VisionEye باستخدام Ultralytics YOLO11 تخطيط كائن عرض VisionEye مع تتبع الكائنات باستخدام Ultralytics YOLO11 طريقة عرض VisionEye مع حساب المسافة باستخدام Ultralytics YOLO11
تخطيط كائن عرض VisionEye باستخدام Ultralytics YOLO11 تخطيط كائن عرض VisionEye مع تتبع الكائنات باستخدام Ultralytics YOLO11 طريقة عرض VisionEye مع حساب المسافة باستخدام Ultralytics YOLO11

تخطيط كائن VisionEye باستخدام YOLO11

import cv2

from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors

model = YOLO("yolo11n.pt")
names = model.model.names
cap = cv2.VideoCapture("path/to/video/file.mp4")
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

out = cv2.VideoWriter("visioneye-pinpoint.avi", cv2.VideoWriter_fourcc(*"MJPG"), fps, (w, h))

center_point = (-10, h)

while True:
    ret, im0 = cap.read()
    if not ret:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    results = model.predict(im0)
    boxes = results[0].boxes.xyxy.cpu()
    clss = results[0].boxes.cls.cpu().tolist()

    annotator = Annotator(im0, line_width=2)

    for box, cls in zip(boxes, clss):
        annotator.box_label(box, label=names[int(cls)], color=colors(int(cls)))
        annotator.visioneye(box, center_point)

    out.write(im0)
    cv2.imshow("visioneye-pinpoint", im0)

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

out.release()
cap.release()
cv2.destroyAllWindows()
import cv2

from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors

model = YOLO("yolo11n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

out = cv2.VideoWriter("visioneye-pinpoint.avi", cv2.VideoWriter_fourcc(*"MJPG"), fps, (w, h))

center_point = (-10, h)

while True:
    ret, im0 = cap.read()
    if not ret:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    annotator = Annotator(im0, line_width=2)

    results = model.track(im0, persist=True)
    boxes = results[0].boxes.xyxy.cpu()

    if results[0].boxes.id is not None:
        track_ids = results[0].boxes.id.int().cpu().tolist()

        for box, track_id in zip(boxes, track_ids):
            annotator.box_label(box, label=str(track_id), color=colors(int(track_id)))
            annotator.visioneye(box, center_point)

    out.write(im0)
    cv2.imshow("visioneye-pinpoint", im0)

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

out.release()
cap.release()
cv2.destroyAllWindows()
import math

import cv2

from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator

model = YOLO("yolo11n.pt")
cap = cv2.VideoCapture("Path/to/video/file.mp4")

w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

out = cv2.VideoWriter("visioneye-distance-calculation.avi", cv2.VideoWriter_fourcc(*"MJPG"), fps, (w, h))

center_point = (0, h)
pixel_per_meter = 10

txt_color, txt_background, bbox_clr = ((0, 0, 0), (255, 255, 255), (255, 0, 255))

while True:
    ret, im0 = cap.read()
    if not ret:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    annotator = Annotator(im0, line_width=2)

    results = model.track(im0, persist=True)
    boxes = results[0].boxes.xyxy.cpu()

    if results[0].boxes.id is not None:
        track_ids = results[0].boxes.id.int().cpu().tolist()

        for box, track_id in zip(boxes, track_ids):
            annotator.box_label(box, label=str(track_id), color=bbox_clr)
            annotator.visioneye(box, center_point)

            x1, y1 = int((box[0] + box[2]) // 2), int((box[1] + box[3]) // 2)  # Bounding box centroid

            distance = (math.sqrt((x1 - center_point[0]) ** 2 + (y1 - center_point[1]) ** 2)) / pixel_per_meter

            text_size, _ = cv2.getTextSize(f"Distance: {distance:.2f} m", cv2.FONT_HERSHEY_SIMPLEX, 1.2, 3)
            cv2.rectangle(im0, (x1, y1 - text_size[1] - 10), (x1 + text_size[0] + 10, y1), txt_background, -1)
            cv2.putText(im0, f"Distance: {distance:.2f} m", (x1, y1 - 5), cv2.FONT_HERSHEY_SIMPLEX, 1.2, txt_color, 3)

    out.write(im0)
    cv2.imshow("visioneye-distance-calculation", im0)

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

out.release()
cap.release()
cv2.destroyAllWindows()

visioneye الحجج

الاسم النوع افتراضي الوصف
color tuple (235, 219, 11) لون مركزية الخط والكائن
pin_color tuple (255, 0, 255) فيجنآي آي لون دقيق دقيق اللون

ملاحظة

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

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

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

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

import cv2

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")

while True:
    ret, frame = cap.read()
    if not ret:
        break

    results = model.predict(frame)
    for result in results:
        # Perform custom logic with result
        pass

    cv2.imshow("visioneye", frame)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

ما هي الميزات الرئيسية لقدرة VisionEye على تتبع الأجسام باستخدام Ultralytics YOLO11 ؟

تتيح خاصية تتبع الأجسام من VisionEye مع Ultralytics YOLO11 للمستخدمين متابعة حركة الأجسام داخل إطار الفيديو. تشمل الميزات الرئيسية ما يلي:

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

إليك مقتطف رمز موجز يوضح التتبع باستخدام VisionEye:

import cv2

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")

while True:
    ret, frame = cap.read()
    if not ret:
        break

    results = model.track(frame, persist=True)
    for result in results:
        # Annotate and visualize tracking
        pass

    cv2.imshow("visioneye-tracking", frame)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

للاطلاع على دليل شامل، قم بزيارة دليل VisionEye لتخطيط الكائنات مع تتبع الكائنات.

كيف يمكنني حساب المسافات باستخدام نموذج VisionEye YOLO11 ؟

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

إليك مثالاً مبسطاً:

import math

import cv2

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
cap = cv2.VideoCapture("path/to/video/file.mp4")
center_point = (0, 480)  # Example center point
pixel_per_meter = 10

while True:
    ret, frame = cap.read()
    if not ret:
        break

    results = model.track(frame, persist=True)
    for result in results:
        # Calculate distance logic
        distances = [
            (math.sqrt((box[0] - center_point[0]) ** 2 + (box[1] - center_point[1]) ** 2)) / pixel_per_meter
            for box in results
        ]

    cv2.imshow("visioneye-distance", frame)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

للحصول على تعليمات مفصلة، ارجع إلى VisionEye مع حساب المسافة.

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

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

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

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

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

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

لمزيد من الاستكشاف وأمثلة التكامل، راجع دليل التكاملUltralytics .

📅 Created 12 months ago ✏️ Updated 2 months ago

التعليقات