İçeriğe geç

Ultralytics YOLOv8 kullanarak Örnek Segmentasyonu ve Takibi 🚀

Örnek Segmentasyonu Nedir?

Ultralytics YOLOv8 Ö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 segmentasyondan farklı olarak, her nesneyi benzersiz bir şekilde etiketler ve kesin olarak tanımlar, bu da nesne algılama ve tıbbi görüntüleme gibi görevler için çok önemlidir.

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: Nesne Takibi ile Örnek Segmentasyonu Ultralytics YOLOv8

Örnekler

Örnek Segmentasyonu Örnek Segmentasyonu + Nesne Takibi
Ultralytics Örnek Segmentasyonu Ultralytics 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("yolov8n-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("yolov8n-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

İsim Tip Varsayılan Açıklama
mask array None Segmentasyon maskesi koordinatları
mask_color RGB (255, 0, 255) Her bölümlenmiş kutu için maske rengi
label str None Bölümlere ayrılmış nesne için etiket
txt_color RGB None Segmente 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 YOLOv8 adresini kullanarak örnek segmentasyonunu nasıl gerçekleştirebilirim?

Ultralytics YOLOv8 kullanarak örnek segmentasyonu gerçekleştirmek için YOLO modelini YOLOv8 segmentasyon versiyonu ile 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("yolov8n-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 YOLOv8 kılavuzunda örnek segmentasyonu hakkında daha fazla bilgi edinin.

Ultralytics YOLOv8 adresinde ö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. Farklılıklar hakkında daha fazla bilgi için Ultralytics YOLOv8 belgelerine bakın.

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

Ultralytics YOLOv8 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. YOLOv8 , Ultralytics HUB ile sorunsuz bir entegrasyon sağlayarak kullanıcıların modelleri, veri kümelerini ve eğitim boru hatlarını verimli bir şekilde yönetmesine olanak tanır. YOLOv8 'un faydaları hakkında daha fazlasını Ultralytics blogunda keşfedin.

Ultralytics YOLOv8 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("yolov8n-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 YOLOv8 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 YOLOv8 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.



Oluşturuldu 2023-12-18, Güncellendi 2024-07-14
Yazarlar: RizwanMunawar (2), glenn-jocher (10), IvorZhu331 (1)

Yorumlar