Ultralytics YOLO27:
Get Started

Örnek Segmentasyonu Veri Kümelerine Genel Bakış#

Örnek segmentasyonu, görüntü içindeki nesneleri ayrı ayrı tanımlayıp sınırlarını belirlemeyi içeren bir bilgisayarlı görü görevidir. Bu kılavuzda, örnek segmentasyonu görevlerinde Ultralytics YOLO tarafından desteklenen veri kümesi biçimlerine genel bir bakışın yanı sıra modellerini eğitmek için bu veri kümelerini hazırlama, dönüştürme ve kullanma talimatları sunuluyor.

Desteklenen Veri Kümesi Biçimleri#

Ultralytics YOLO biçimi#

YOLO segmentasyon modellerini eğitmek için kullanılan veri kümesi etiket biçimi şöyledir:

  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 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. Her satırda nesne bilgileri: Her satır, nesne örneği hakkında aşağıdaki bilgileri içerir:
    • Nesne sınıfı indeksi: Nesnenin sınıfını belirten bir tam sayı (ör. kişi için 0, araba için 1 vb.).
    • Nesne çokgen koordinatları: Nesnenin maskesinin sınırlarını belirten, 0 ile 1 arasında normalize edilmiş (x, y) noktaları.

Segmentasyon veri kümesi dosyasındaki tek bir satırın biçimi şöyledir:

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

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

İşte 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çimi örneği.

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 nesne bir poligon gerektirir. Algılama biçimindeki satırlarda (<class-index> <x_center> <y_center> <width> <height>) poligon bulunmaz ve kutu sayısı ile poligon sayısı eşleşmeyen bir segmentasyon veri kümesi, etiketleri yüklenirken ValueError hatasıyla reddedilir.

Veri kümesi YAML biçimi#

Ultralytics framework'ü, Segmentasyon 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ümesi tanımlamak için kullanılan YAML biçimine bir örnek:

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 konumunu belirtir. Her biri bir dizin, dizin listesi veya her satırda bir görüntü yolu bulunan bir *.txt dosyası 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ölmede birleştirmek için kullanışlıdır.

`*.txt` dosyasında 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ı indekslerinin sırasıyla eşleşmelidir.

Kullanım#

Örnek
from ultralytics import YOLO

# Bir model yükle
model = YOLO("yolo26n-seg.pt")  # Önceden eğitilmiş bir model yükle (eğitim için önerilir)

# Modeli eğit
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)

Desteklenen Veri Kümeleri#

Ultralytics YOLO, örnek segmentasyonu görevleri için çeşitli veri kümelerini destekler. En sık kullanılanların listesi aşağıdadır. Bu veri kümelerinin çoğu, görüntülere ve açıklamalara göz atabileceğin, veri kümesi istatistiklerini görüntüleyebileceğin ve bulut üzerinde eğitim için klonlayabileceğin Ultralytics Platform üzerinde de barındırılır.

  • Carparts-seg: Otomotiv uygulamaları için ideal olan, otomobil parçalarının segmentasyonuna odaklanmış özel bir veri kümesidir. Tek tek araç bileşenlerine ilişkin ayrıntılı açıklamalarla çeşitli araçları içerir.
  • COCO: Geniş bir kategori yelpazesinde 200 binden fazla etiketli görüntü içeren, nesne algılama, segmentasyon ve altyazı oluşturma için kapsamlı bir veri kümesidir.
  • 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: Örnek segmentasyonu görevleri için segmentasyon açıklamaları içeren 128 COCO görüntüsünden oluşan daha küçük bir veri kümesidir.
  • Crack-seg: Çeşitli yüzeylerdeki çatlakların segmentasyonu için özel olarak hazırlanmış bir veri kümesidir. Altyapı bakımı ve kalite kontrol için önemli olan bu veri kümesi, yapısal zayıflıkları belirlemek üzere modelleri eğitmeye yönelik ayrıntılı görüntüler sağlar.
  • Package-seg: Farklı ambalaj malzemelerinin ve şekillerinin segmentasyonuna yönelik bir veri kümesidir. Özellikle lojistik ve depo otomasyonu için kullanışlıdır; paketlerin taşınması ve sınıflandırılmasına yönelik sistemlerin geliştirilmesine yardımcı olur.

Kendi veri kümeni ekleme#

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

Etiket Biçimlerini Taşıma veya Dönüştürme#

COCO Veri Kümesi Biçiminden YOLO Biçimine#

Aşağıdaki kod parçasını kullanarak popüler COCO veri kümesi biçimindeki etiketleri kolayca YOLO biçimine 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ı mutlaka kontrol et. Başarılı segmentasyon modelleri eğitmek için veri kümelerinin doğru biçimlendirilmesi çok önemlidir.

Otomatik etiketleme#

Otomatik etiketleme, önceden eğitilmiş bir algılama modeli kullanarak segmentasyon veri kümesi oluşturmanı sağlayan temel bir özelliktir. Elle etiketleme gerektirmeden çok sayıda görüntüyü hızlı ve doğru biçimde etiketlemene olanak tanıyarak zamandan ve emekten tasarruf sağlar.

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

Ultralytics framework'ünü kullanarak veri kümeni otomatik etiketlemek 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
datastrgerekliEtiketleme veya bölümleme için hedef görüntüleri içeren dizinin yolu.
det_modelstr'yolo26x.pt'İlk nesne algılama için YOLO algılama modelinin yolu.
sam_modelstr'sam_b.pt'Bölümleme için SAM modelinin yolu (SAM, SAM 2, MobileSAM ve SAM 3 ağırlıklarını destekler).
devicestr''Hesaplama aygıtı (ör. 'cuda:0', 'cpu' veya aygıtın otomatik algılanması için '').
conffloat0.25Zayıf algılamaları filtrelemek için YOLO algılama güven eşiği.
ioufloat0.45Çakışan kutuları filtrelemek için Maksimum Olmayan Bastırma IoU eşiği.
imgszint640Görüntüleri yeniden boyutlandırmak için giriş boyutu (gerekirse 32'nin bir üst katına yuvarlanır).
max_detint300Bellek verimliliği için görüntü başına maksimum algılama sayısı.
classeslist[int]NoneAlgılanacak sınıf indekslerinin listesi (ör. kişi ve bisiklet için [0, 1]).
output_dirstrNoneEtiketler için kayıt dizini (varsayılan: kardeş dizin <data>_auto_annotate_labels).

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

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

Veri Kümesi Açıklamalarını Görselleştir#

Modelini eğitmeden önce, doğru olduklarından emin olmak için veri kümesi açıklamalarını görselleştirmek genellikle faydalıdır. Ultralytics bu amaçla bir yardımcı işlev sunar. İşlev yalnızca algılama biçimindeki kutu etiketlerini (<class-index> <x_center> <y_center> <width> <height>) okur; segmentasyon poligonu etiket dosyalarını ayrıştıramaz:

from ultralytics.data.utils import visualize_image_annotations

label_map = {  # Tüm açıklama eklenmiş sınıf etiketleriyle etiket eşlemesini tanımla.
    0: "person",
    1: "car",
}

# Visualize
visualize_image_annotations(
    "path/to/image.jpg",  # Giriş görüntüsünün yolu.
    "path/to/annotations.txt",  # Görüntüye ait açıklama dosyasının yolu.
    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 açıklama hatalarını belirleyip düzeltebilirsin.

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

Her piksel değerinin sınıf indeksi + 1 olduğu gri tonlamalı maske görüntülerin varsa (0 arka planı belirtir), bunları aşağıdakini kullanarak YOLO segmentasyon biçimine dönüştürebilirsin:

from ultralytics.data.converter import convert_segment_masks_to_yolo_seg

# 80 sınıflı COCO gibi veri kümeleri için
convert_segment_masks_to_yolo_seg(masks_dir="path/to/masks_dir", output_dir="path/to/output_dir", classes=80)

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

Sık Sorulan Sorular#

  • Ultralytics YOLO, örnek segmentasyonu için çeşitli veri kümesi biçimlerini destekler; temel biçim, Ultralytics YOLO'nun kendi biçimidir. Veri kümesindeki her görüntü için nesne bilgilerini içeren ve birden çok satıra bölünmüş (her nesne için bir satır) karşılık gelen bir metin dosyası gerekir. Bu dosyada sınıf indeksi ve normalize edilmiş poligon koordinatları listelenir. YOLO veri kümesi biçimiyle ilgili ayrıntılı yönergeler için Örnek Segmentasyonu Veri Kümelerine Genel Bakış sayfasını ziyaret et.

  • Ultralytics araçlarını kullanarak COCO biçimindeki açıklamaları YOLO biçimine dönüştürmek 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 açıklamalarını gerekli YOLO biçimine dönüştürerek YOLO modellerini eğitmeye uygun hâle getirir. Daha fazla bilgi için Etiket Biçimlerini Taşıma veya Dönüştürme sayfasına bak.

  • Ultralytics ile YOLO modellerini eğitmek için YAML dosyası hazırlarken veri kümesi yollarını ve sınıf adlarını tanımlaman gerekir. YAML yapılandırmasına bir örnek:

    # 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ümenle eşleşecek şekilde güncellediğinden emin ol. Daha fazla bilgi için Veri Kümesi YAML Biçimi bölümüne bak.

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

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

    Bu işlev, açıklama ekleme sürecini otomatikleştirerek daha hızlı ve verimli hâle getirir. Daha fazla bilgi için Otomatik Etiketleme Referansı sayfasını incele.

Yorumlar