انتقل إلى المحتوى

تجزئة المثيل وتتبعه باستخدام Ultralytics YOLO11 🚀

What is Instance Segmentation?

Ultralytics YOLO11 instance segmentation involves identifying and outlining individual objects in an image, providing a detailed understanding of spatial distribution. Unlike semantic segmentation, it uniquely labels and precisely delineates each object, crucial for tasks like object detection and medical imaging.

هناك نوعان من تتبع تجزئة المثيل المتاحين في Ultralytics حزمة:

  • تجزئة المثيل مع كائنات الفئة: يتم تعيين لون فريد لكل كائن فئة لفصل مرئي واضح.

  • تجزئة المثيل مع مسارات الكائن: يتم تمثيل كل مسار بلون مميز ، مما يسهل التعرف عليه وتتبعه بسهولة.



شاهد: Instance Segmentation with Object Tracking using Ultralytics YOLO11

العينات

تجزئة المثيلتجزئة المثيل + تتبع الكائن
Ultralytics تجزئة المثيلUltralytics تجزئة المثيل مع تعقب الكائن
Ultralytics تجزئة 😍 المثيلUltralytics تجزئة المثيل مع تعقب 🔥 الكائن

تجزئة المثيل وتتبعه

import cv2

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

model = YOLO("yolo11n-seg.pt")  # segmentation model
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("instance-segmentation.avi", cv2.VideoWriter_fourcc(*"MJPG"), fps, (w, 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)
    annotator = Annotator(im0, line_width=2)

    if results[0].masks is not None:
        clss = results[0].boxes.cls.cpu().tolist()
        masks = results[0].masks.xy
        for mask, cls in zip(masks, clss):
            color = colors(int(cls), True)
            txt_color = annotator.get_txt_color(color)
            annotator.seg_bbox(mask=mask, mask_color=color, label=names[int(cls)], txt_color=txt_color)

    out.write(im0)
    cv2.imshow("instance-segmentation", im0)

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

out.release()
cap.release()
cv2.destroyAllWindows()
from collections import defaultdict

import cv2

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

track_history = defaultdict(lambda: [])

model = YOLO("yolo11n-seg.pt")  # segmentation model
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("instance-segmentation-object-tracking.avi", cv2.VideoWriter_fourcc(*"MJPG"), fps, (w, 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)

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

        for mask, track_id in zip(masks, track_ids):
            color = colors(int(track_id), True)
            txt_color = annotator.get_txt_color(color)
            annotator.seg_bbox(mask=mask, mask_color=color, label=str(track_id), txt_color=txt_color)

    out.write(im0)
    cv2.imshow("instance-segmentation-object-tracking", im0)

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

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

seg_bbox الحجج

اسمنوعافتراضيوصف
maskarrayNoneإحداثيات قناع التجزئة
mask_colorRGB(255, 0, 255)لون قناع لكل صندوق مجزأ
labelstrNoneتسمية للكائن المجزأ
txt_colorRGBNoneلون التسمية للكائن المجزأ والمتعقب

ملاحظه

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

الأسئلة المتداولة

كيف يمكنني إجراء تجزئة المثيل باستخدام Ultralytics YOLO11؟

لإجراء تجزئة المثيل باستخدام Ultralytics YOLO11، قم بتهيئة نموذج YOLO بنسخة تجزئة من YOLO11 ومعالجة إطارات الفيديو من خلاله. إليك مثال كود مبسط:

مثل

import cv2

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

model = YOLO("yolo11n-seg.pt")  # segmentation model
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("instance-segmentation.avi", cv2.VideoWriter_fourcc(*"MJPG"), fps, (w, h))

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

    results = model.predict(im0)
    annotator = Annotator(im0, line_width=2)

    if results[0].masks is not None:
        clss = results[0].boxes.cls.cpu().tolist()
        masks = results[0].masks.xy
        for mask, cls in zip(masks, clss):
            annotator.seg_bbox(mask=mask, mask_color=colors(int(cls), True), det_label=model.model.names[int(cls)])

    out.write(im0)
    cv2.imshow("instance-segmentation", im0)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

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

Learn more about instance segmentation in the Ultralytics YOLO11 guide.

ما الفرق بين تجزئة المثيل وتتبع الكائنات في Ultralytics YOLO11؟

Instance segmentation identifies and outlines individual objects within an image, giving each object a unique label and mask. Object tracking extends this by assigning consistent labels to objects across video frames, facilitating continuous tracking of the same objects over time. Learn more about the distinctions in the Ultralytics YOLO11 documentation.

لماذا يجب استخدام Ultralytics YOLO11 للتجزئة والتتبع على سبيل المثال بدلاً من النماذج الأخرى مثل Mask R-CNN أو Faster R-CNN؟

Ultralytics YOLO11 offers real-time performance, superior accuracy, and ease of use compared to other models like Mask R-CNN or Faster R-CNN. YOLO11 provides a seamless integration with Ultralytics HUB, allowing users to manage models, datasets, and training pipelines efficiently. Discover more about the benefits of YOLO11 in the Ultralytics blog.

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

لتنفيذ تتبُّع الكائنات، استخدم أداة model.track والتأكد من تعيين معرف كل كائن بشكل متسق عبر الإطارات. فيما يلي مثال بسيط:

مثل

from collections import defaultdict

import cv2

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

track_history = defaultdict(lambda: [])

model = YOLO("yolo11n-seg.pt")  # segmentation model
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("instance-segmentation-object-tracking.avi", cv2.VideoWriter_fourcc(*"MJPG"), fps, (w, h))

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

    annotator = Annotator(im0, line_width=2)
    results = model.track(im0, persist=True)

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

        for mask, track_id in zip(masks, track_ids):
            annotator.seg_bbox(mask=mask, mask_color=colors(track_id, True), track_label=str(track_id))

    out.write(im0)
    cv2.imshow("instance-segmentation-object-tracking", im0)
    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

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

اكتشف المزيد في قسم تجزئة المثيل وتتبعه.

هل هناك أي مجموعات بيانات مقدمة من Ultralytics مناسبة لتدريب نماذج YOLO11 على سبيل المثال للتجزئة والتتبع؟

Yes, Ultralytics offers several datasets suitable for training YOLO11 models, including segmentation and tracking datasets. Dataset examples, structures, and instructions for use can be found in the Ultralytics Datasets documentation.

📅 Created 11 months ago ✏️ Updated 1 month ago

التعليقات