İçeriğe geç

Ultralytics YOLO11 kullanarak Örnek Segmentasyonu ve Takibi 🚀

Örnek Segmentasyonu Nedir?

Ultralytics YOLO11 örnek segmentasyonu, bir görüntüdeki tek tek nesnelerin tanımlanmasını ve ana hatlarının belirlenmesini içerir ve uzamsal dağılımın ayrıntılı bir şekilde anlaşılmasını sağlar. Anlamsal segmentasyonun aksine, nesne algılama ve tıbbi görüntüleme gibi görevler için çok önemli olan her nesneyi benzersiz bir şekilde etiketler ve kesin olarak tanımlar.

Ultralytics paketinde iki tür örnek segmentasyon takibi mevcuttur:

  • Sınıf Nesneleri ile Örnek Segmentasyonu: Net bir görsel ayrım için her sınıf nesnesine benzersiz bir renk atanır.

  • Nesne İzleri ile Örnek Segmentasyonu: Her iz farklı bir renkle temsil edilir, bu da kolay tanımlama ve izlemeyi kolaylaştırır.



İzle: Ultralytics YOLO11 kullanarak Nesne Takibi ile Örnek Segmentasyonu

Örnekler

Örnek SegmentasyonuÖrnek Segmentasyonu + Nesne Takibi
Ultralytics Örnek SegmentasyonuUltralytics Nesne Takibi ile Örnek Segmentasyonu
Ultralytics Örnek Segmentasyonu 😍Ultralytics Nesne Takibi ile Örnek Segmentasyonu 🔥

Örnek Segmentasyonu ve İzleme

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 Argümanlar

İsimTipVarsayılanAçıklama
maskarrayNoneSegmentasyon maskesi koordinatları
mask_colorRGB(255, 0, 255)Her bölümlenmiş kutu için maske rengi
labelstrNoneBölümlere ayrılmış nesne için etiket
txt_colorRGBNoneSegmente edilen ve izlenen nesne için etiket rengi

Not

Sorularınız için Ultralytics Sorun Bölümüne veya aşağıda belirtilen tartışma bölümüne sorularınızı göndermekten çekinmeyin.

SSS

Ultralytics YOLO11 kullanarak örnek segmentasyonunu nasıl gerçekleştirebilirim?

Ultralytics YOLO11 kullanarak örnek segmentasyonu gerçekleştirmek için YOLO modelini YOLO11'in segmentasyon versiyonuyla başlatın ve video karelerini bu model üzerinden işleyin. İşte basitleştirilmiş bir kod örneği:

Örnek

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()

Ultralytics YOLO11 kılavuzunda örnek segmentasyonu hakkında daha fazla bilgi edinin.

Ultralytics YOLO11'de örnek segmentasyonu ve nesne izleme arasındaki fark nedir?

Örnek segmentasyonu, her nesneye benzersiz bir etiket ve maske vererek bir görüntüdeki tek tek nesneleri tanımlar ve ana hatlarını belirler. Nesne izleme, video kareleri boyunca nesnelere tutarlı etiketler atayarak bunu genişletir ve aynı nesnelerin zaman içinde sürekli izlenmesini kolaylaştırır. Ultralytics YOLO11 belgelerinde ayrımlar hakkında daha fazla bilgi edinin.

Neden Maske R-CNN veya Daha Hızlı R-CNN gibi diğer modeller yerine örneğin segmentasyon ve izleme için Ultralytics YOLO11 kullanmalıyım?

Ultralytics YOLO11, Mask R-CNN veya Faster R-CNN gibi diğer modellere kıyasla gerçek zamanlı performans, üstün doğruluk ve kullanım kolaylığı sunar. YOLO11, Ultralytics HUB ile sorunsuz bir entegrasyon sağlayarak kullanıcıların modelleri, veri kümelerini ve eğitim işlem hatlarını verimli bir şekilde yönetmesine olanak tanır. YOLO11'in faydaları hakkında daha fazla bilgiyi Ultralytics blogunda bulabilirsiniz.

Ultralytics YOLO11 kullanarak nesne izlemeyi nasıl uygulayabilirim?

Nesne izlemeyi uygulamak için model.track yöntemini kullanın ve her nesnenin kimliğinin çerçeveler arasında tutarlı bir şekilde atandığından emin olun. Aşağıda basit bir örnek verilmiştir:

Örnek

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()

Örnek Segmentasyonu ve İzleme bölümünde daha fazlasını bulabilirsiniz.

Segmentasyon ve izleme gibi YOLO11 modellerini eğitmek için Ultralytics tarafından sağlanan uygun veri kümeleri var mı?

Evet, Ultralytics , segmentasyon ve izleme veri kümeleri de dahil olmak üzere YOLO11 modellerini eğitmek için uygun çeşitli veri kümeleri sunar. Veri kümesi örnekleri, yapıları ve kullanım talimatları Ultralytics Veri Kümeleri belgesinde bulunabilir.

📅 1 1 ay önce oluşturuldu ✏️ 1 ay önce güncellendi

Yorumlar