Ultralytics YOLO27:

Instance Segmentation Veri Kümelerine Genel Bakış#

Instance segmentation, bir görüntüdeki nesneleri tek tek tanımlamayı ve sınırlarını belirlemeyi içeren bir bilgisayarlı görü görevidir. Bu kılavuz, Ultralytics YOLO tarafından instance segmentation görevleri için desteklenen veri kümesi biçimlerine genel bir bakışın yanı sıra bu veri kümelerini modellerini eğitmek üzere hazırlama, dönüştürme ve kullanma talimatlarını sunar.

Desteklenen Veri Kümesi Formatları#

Ultralytics YOLO formatı#

YOLO segmentation modellerini eğitmek için kullanılan veri kümesi etiket biçimi aşağıdaki gibidir:

  1. Görüntü başına bir metin dosyası: Veri kümesindeki her görüntünün, görüntü dosyasıyla aynı ada ve ".txt" uzantısına sahip karşılık gelen bir metin dosyası vardır.
  2. Nesne başına bir satır: Metin dosyasındaki her satır, görüntüdeki bir nesne örneğine karşılık gelir.
  3. Satır başına nesne bilgileri: Her satır, nesne örneği hakkında aşağıdaki bilgileri içerir:
    • Nesne sınıfı dizini: Nesnenin sınıfını temsil eden bir tam sayıdır (ör. kişi için 0, araba için 1 vb.).
    • Nesne poligon koordinatları: Nesnenin maskesini çizen ve 0 ile 1 arasında normalize edilmiş (x, y) noktaları.

Segmentasyon veri kümesi dosyasındaki tek bir satırın biçimi aşağıdaki gibidir:

<class-index> <x1> <y1> <x2> <y2> ... <xn> <yn>

Bu biçimde <class-index>, nesnenin sınıfının dizinidir ve <x1> <y1> <x2> <y2> ... <xn> <yn>, nesnenin segmentation maskesine ait normalize edilmiş çokgen koordinatlarıdır (değerler, görüntünün genişliği ve yüksekliğine göre [0, 1] içindedir). Koordinatlar boşluklarla ayrılır.

Burada, 3 noktalı bir segment ve 5 noktalı bir segmentten oluşan iki nesne içeren tek bir görüntü için YOLO veri kümesi biçimine bir örnek verilmiştir.

0 0.681 0.485 0.670 0.487 0.676 0.487
1 0.504 0.000 0.501 0.004 0.498 0.004 0.493 0.010 0.492 0.0104
İpucu
  • Her satırın uzunluğunun eşit olması gerekmez.
  • Her segmentasyon etiketi en az 3 (x, y) noktası içermelidir: <class-index> <x1> <y1> <x2> <y2> <x3> <y3>
  • Her nesnenin bir polygona ihtiyacı vardır. Detect formatındaki satırlar (<class-index> <x_center> <y_center> <width> <height>) poligon taşımaz ve kutu ile poligon sayıları farklı olan bir segment veri kümesi, etiketleri yüklendiğinde bir ValueError ile reddedilir.

Veri Kümesi YAML Biçimi#

Ultralytics framework'ü, segmentation modellerini eğitmek için veri kümesini ve model yapılandırmasını tanımlamak üzere YAML dosya biçimini kullanır. Segmentasyon veri kümesini tanımlamak için kullanılan YAML biçimine bir örnek aşağıda verilmiştir:

ultralytics/cfg/datasets/coco8-seg.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8-seg dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/segment/coco8-seg
# Example usage: yolo train data=coco8-seg.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8-seg ← downloads here (1 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: coco8-seg # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-seg.zip

train, val ve test alanları eğitim, doğrulama ve test görüntülerinin yollarını belirtir. Her biri bir dizini, dizinler listesini veya satır başına bir görüntü yolu listeleyen bir *.txt dosyasını kabul eder (./ ile başlayan yollar, *.txt dosyasına göre çözümlenir). Bir *.txt dosyası, bir dizinin alt kümesiyle eğitim yapmak, etiketsiz görüntüleri atlamak veya birden çok kaynaktaki görüntüleri tek bir bölüme birleştirmek için kullanışlıdır.

`*.txt` dosyası olarak görüntü yolları
path: datasets/coco8-seg # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: person

names, sınıf adlarından oluşan bir sözlüktür. Adların sırası, YOLO veri kümesi dosyalarındaki nesne sınıfı dizinlerinin sırasıyla eşleşmelidir.

Kullanım#

Örnek
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)

Desteklenen Veri Kümeleri#

Ultralytics YOLO, örnek bölütleme görevleri için çeşitli veri kümelerini destekler. İşte en yaygın kullanılanların bir listesi. Bu veri kümelerinin çoğu, görselleri ve etiketlemeleri inceleyebileceğin, veri kümesi istatistiklerini görüntüleyebileceğin ve bulut tabanlı eğitim için bunları kopyalayabileceğin Ultralytics Platform üzerinde de barındırılmaktadır.

  • Carparts-seg: Otomotiv uygulamaları için ideal olan, otomobil parçalarının segmentasyonuna odaklanmış özel bir veri kümesidir. Tek tek otomobil bileşenlerine ilişkin ayrıntılı anotasyonlara sahip çeşitli araçlar içerir.
  • COCO: nesne algılama, segmentasyon ve görüntü açıklaması için kapsamlı bir veri kümesidir; çok çeşitli kategorilere yayılmış 200 binden fazla etiketli görüntü içerir.
  • COCO8-seg: Segmentasyon modeli eğitimini hızlıca test etmek için tasarlanmış, COCO'nun 8 görüntülük kompakt bir alt kümesidir; ultralytics deposundaki CI kontrolleri ve iş akışı doğrulaması için idealdir.
  • COCO128-seg: instance segmentation görevleri için daha küçük bir veri kümesidir ve segmentasyon anotasyonlarına sahip 128 COCO görüntüsünden oluşan bir alt küme içerir.
  • Crack-seg: Çeşitli yüzeylerdeki çatlakların segmentasyonu için hazırlanmış bir veri kümesidir. Altyapı bakımı ve kalite kontrolü için gerekli olan bu veri kümesi, yapısal zayıflıkları tespit etmek üzere modelleri eğitmek için ayrıntılı görüntüler sağlar.
  • Package-seg: Farklı tür ve şekillerdeki ambalaj malzemelerinin segmentasyonuna adanmış bir veri kümesidir. Lojistik ve depo otomasyonu için özellikle kullanışlıdır; paket taşıma ve ayırma sistemlerinin geliştirilmesine yardımcı olur.

Kendi veri kümeni ekleme#

Kendi veri kümen varsa ve bunu Ultralytics YOLO biçimiyle segmentation modellerini eğitmek için kullanmak istiyorsan "Ultralytics YOLO format" bölümünde yukarıda belirtilen biçime uyduğundan emin ol. Anotasyonlarını gerekli biçime dönüştür ve yolları, sınıf sayısını ve sınıf adlarını YAML yapılandırma dosyasında belirt. images/ ile labels/ klasörlerini aynı düzeyde, eşleşen alt klasör yapısıyla ayrı tut; etiket .txt dosyalarını görüntü klasörüne yerleştirmek modelin etiketleri gözden kaçırmasına neden olabilir.

Etiket Formatlarını Taşıma veya Dönüştürme#

COCO Veri Kümesi Formatından YOLO Formatına#

Aşağıdaki kod parçacığını kullanarak popüler COCO veri kümesi biçimindeki etiketleri YOLO biçimine kolayca dönüştürebilirsin:

Örnek
from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)

Bu dönüştürme aracı, COCO veri kümesini veya COCO biçimindeki herhangi bir veri kümesini Ultralytics YOLO biçimine dönüştürmek için kullanılabilir.

Kullanmak istediğin veri kümesinin modelinle uyumlu olup olmadığını ve gerekli biçim kurallarına uyup uymadığını tekrar kontrol etmeyi unutma. Doğru biçimlendirilmiş veri kümeleri, başarılı segmentation modelleri eğitmek için kritik öneme sahiptir.

Otomatik Anotasyon#

Otomatik anotasyon, önceden eğitilmiş bir algılama modeli kullanarak segmentation veri kümesi oluşturmanı sağlayan temel bir özelliktir. Manuel etiketlemeye gerek kalmadan çok sayıda görüntüyü hızlı ve doğru bir şekilde anotasyonlamana olanak tanıyarak zamandan ve emekten tasarruf sağlar.

Algılama Modeli Kullanarak Segmentasyon Veri Kümesi Oluşturma#

Veri kümeni Ultralytics framework'ünü kullanarak otomatik olarak anotasyonlamak için aşağıda gösterildiği gibi auto_annotate işlevini kullanabilirsin:

Örnek
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")
Bağımsız değişkenTürVarsayılanAçıklama
datastrgerekliAçıklama veya segmentasyon için hedef görüntüleri içeren dizinin yolu.
det_modelstr'yolo26x.pt'İlk nesne algılama için YOLO algılama modeli yolu.
sam_modelstr'sam_b.pt'Segmentasyon için SAM modelinin yolu (SAM, SAM 2, MobileSAM ve SAM 3 ağırlıklarını destekler).
devicestr''Hesaplama cihazı (ör. 'cuda:0', 'cpu' veya otomatik cihaz algılama için '').
conffloat0.25Zayıf algılamaları filtrelemek için YOLO algılama güven eşiği.
ioufloat0.45Örtüşen kutuları filtrelemek için Maksimum Olmayan Bastırma işlemine yönelik IoU eşiği.
imgszint640Görüntüleri yeniden boyutlandırmak için giriş boyutu (32'nin katı olmalıdır).
max_detint300Bellek verimliliği için görüntü başına maksimum algılama sayısı.
classeslist[int]NoneAlgılanacak sınıf dizinlerinin listesi (ör. kişi ve bisiklet için [0, 1]).
output_dirstrNoneAçıklamalar için kayıt dizini (varsayılan: <data>_auto_annotate_labels ile aynı üst dizindeki kardeş dizin).

auto_annotate işlevi, görüntülerinin yolunu ve önceden eğitilmiş algılama modellerini (ör. YOLO26, YOLO11 veya diğer modeller), segmentation modellerini (ör. SAM, SAM 2, MobileSAM veya SAM 3), modellerin çalıştırılacağı cihazı ve anotasyonlu sonuçların kaydedileceği çıktı dizinini belirtmek için isteğe bağlı bağımsız değişkenleri alır.

Önceden eğitilmiş modellerin gücünden yararlanan otomatik anotasyon, yüksek kaliteli segmentation veri kümeleri oluşturmak için gereken zamanı ve emeği önemli ölçüde azaltabilir. Bu özellik, büyük görüntü koleksiyonlarıyla çalışan araştırmacılar ve geliştiriciler için özellikle kullanışlıdır; manuel anotasyon yerine model geliştirme ve değerlendirmeye odaklanmalarını sağlar.

Veri Kümesi Anotasyonlarını Görselleştirme#

Modelini eğitmeden önce, doğru olduklarından emin olmak için veri kümesi anotasyonlarını görselleştirmek çoğu zaman yararlıdır. Ultralytics bu amaçla bir yardımcı işlev sağlar:

from ultralytics.data.utils import visualize_image_annotations

label_map = {  # Define the label map with all annotated class labels.
    0: "person",
    1: "car",
}

# Visualize
visualize_image_annotations(
    "path/to/image.jpg",  # Input image path.
    "path/to/annotations.txt",  # Annotation file path for the image.
    label_map,
)

Bu işlev sınırlayıcı kutular çizer, nesneleri sınıf adlarıyla etiketler ve daha iyi okunabilirlik için metin rengini ayarlar; böylece eğitimden önce anotasyon hatalarını belirleyip düzeltmene yardımcı olur.

Segmentasyon Maskelerini YOLO Biçimine Dönüştürme#

Segmentasyon maskelerin ikili biçimdeyse bunları aşağıdaki yöntemi kullanarak YOLO segmentasyon biçimine dönüştürebilirsin:

from ultralytics.data.converter import convert_segment_masks_to_yolo_seg

# For datasets like COCO with 80 classes
convert_segment_masks_to_yolo_seg(masks_dir="path/to/masks_dir", output_dir="path/to/output_dir", classes=80)

Bu yardımcı program, ikili maske görüntülerini YOLO segmentasyon biçimine dönüştürür ve belirtilen çıktı dizinine kaydeder.

SSS#

  • Ultralytics YOLO, instance segmentation için çeşitli veri kümesi biçimlerini destekler; temel biçim, kendi Ultralytics YOLO biçimidir. Veri kümenizdeki her görüntünün, nesne bilgilerini birden çok satıra bölünmüş şekilde (nesne başına bir satır) içeren ve sınıf dizini ile normalize edilmiş sınırlayıcı koordinatları listeleyen karşılık gelen bir metin dosyası olmalıdır. YOLO veri kümesi biçimiyle ilgili daha ayrıntılı talimatlar için Instance Segmentation Datasets Overview sayfasını ziyaret et.

  • COCO biçimindeki anotasyonları YOLO biçimine dönüştürmek, Ultralytics araçlarıyla kolaydır. ultralytics.data.converter modülündeki convert_coco işlevini kullanabilirsin:

    from ultralytics.data.converter import convert_coco
    
    convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)

    Bu betik, COCO veri kümesi anotasyonlarını gerekli YOLO biçimine dönüştürerek YOLO modellerini eğitmeye uygun hale getirir. Daha fazla bilgi için Port or Convert Label Formats sayfasına başvur.

  • Ultralytics ile YOLO modellerini eğitmek üzere bir YAML dosyası hazırlamak için veri kümesi yollarını ve sınıf adlarını tanımlaman gerekir. Örnek bir YAML yapılandırması aşağıda verilmiştir:

    # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
    
    # COCO8-seg dataset (first 8 images from COCO train2017) by Ultralytics
    # Documentation: https://docs.ultralytics.com/datasets/segment/coco8-seg
    # Example usage: yolo train data=coco8-seg.yaml
    # parent
    # ├── ultralytics
    # └── datasets
    #     └── coco8-seg ← downloads here (1 MB)
    
    # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
    path: coco8-seg # dataset root dir
    train: images/train # train images (relative to 'path') 4 images
    val: images/val # val images (relative to 'path') 4 images
    test: # test images (optional)
    
    # Classes
    names:
      0: person
      1: bicycle
      2: car
      3: motorcycle
      4: airplane
      5: bus
      6: train
      7: truck
      8: boat
      9: traffic light
      10: fire hydrant
      11: stop sign
      12: parking meter
      13: bench
      14: bird
      15: cat
      16: dog
      17: horse
      18: sheep
      19: cow
      20: elephant
      21: bear
      22: zebra
      23: giraffe
      24: backpack
      25: umbrella
      26: handbag
      27: tie
      28: suitcase
      29: frisbee
      30: skis
      31: snowboard
      32: sports ball
      33: kite
      34: baseball bat
      35: baseball glove
      36: skateboard
      37: surfboard
      38: tennis racket
      39: bottle
      40: wine glass
      41: cup
      42: fork
      43: knife
      44: spoon
      45: bowl
      46: banana
      47: apple
      48: sandwich
      49: orange
      50: broccoli
      51: carrot
      52: hot dog
      53: pizza
      54: donut
      55: cake
      56: chair
      57: couch
      58: potted plant
      59: bed
      60: dining table
      61: toilet
      62: tv
      63: laptop
      64: mouse
      65: remote
      66: keyboard
      67: cell phone
      68: microwave
      69: oven
      70: toaster
      71: sink
      72: refrigerator
      73: book
      74: clock
      75: vase
      76: scissors
      77: teddy bear
      78: hair drier
      79: toothbrush
    
    # Download script/URL (optional)
    download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-seg.zip

    Yolları ve sınıf adlarını veri kümenize göre güncellediğinden emin ol. Daha fazla bilgi için Dataset YAML Format bölümüne bak.

  • Ultralytics YOLO'daki otomatik anotasyon, önceden eğitilmiş bir algılama modeli kullanarak veri kümen için segmentasyon anotasyonları oluşturmanı sağlar. Bu, manuel etiketleme ihtiyacını önemli ölçüde azaltır. auto_annotate işlevini aşağıdaki gibi kullanabilirsin:

    from ultralytics.data.annotator import auto_annotate
    
    auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")  # or sam_model="mobile_sam.pt"

    Bu işlev anotasyon sürecini otomatikleştirerek daha hızlı ve verimli hale getirir. Daha fazla bilgi için Auto-Annotate Reference sayfasını incele.

Yorumlar