Ultralytics YOLO27:

Semantik Segmentasyon Veri Kümelerine Genel Bakış#

Semantik segmentasyon, bir görüntüdeki her piksele tek bir sınıf etiketi atar. Örnek segmentasyonun aksine semantik segmentasyon, aynı sınıftaki tek tek nesneleri birbirinden ayırmaz. Eğitim hedefi, her pikselin bir sınıf kimliği depoladığı yoğun bir sınıf haritasıdır.

Bu kılavuz, Ultralytics YOLO semantik segmentasyon modelleri tarafından kullanılan veri kümesi biçimini açıklar ve eğitim ile doğrulama için kullanılabilen yerleşik veri kümesi yapılandırmalarını listeler.

Desteklenen Veri Kümesi Formatları#

İki etiket biçimi desteklenir. Veri kümesi YAML dosyası masks_dir anahtarını tanımladığında veya veri kümesinin kök dizininde görüntülerinizin yanında zaten bir masks/ klasörü bulunduğunda veri kümesi yükleyicisi PNG maskelerini seçer; aksi takdirde YOLO poligon etiketlerine geri döner.

PNG maske biçimi#

Semantik segmentasyon veri kümelerinde her örnek için bir görüntü dosyası ve bir maske dosyası kullanılır. Maske, genellikle PNG biçiminde, karşılık gelen görüntü pikselinin sınıf indeksini her piksel değerinde depolayan tek kanallı bir görüntüdür.

  • 0, 1, 2, ... piksel değerleri, veri kümesinin names eşlemesindeki sınıf kimliklerini temsil eder.
  • 255 piksel değeri, yok sayma etiketi olarak değerlendirilir ve kayıp ile metrik hesaplamalarının dışında bırakılır.
  • Maske dosyaları, eşleşen görüntü dosyalarıyla aynı kök ada sahip olmalıdır; örneğin frankfurt_000000_000294.png.
  • Maskeler varsayılan olarak .png şeklinde çözümlenir; bu dosya yoksa desteklenen diğer görüntü uzantıları da kabul edilir. Kayıplı sıkıştırma (ör. .jpg) sınıf kimliği piksel değerlerini bozduğundan .png veya .tiff gibi kayıpsız biçimleri kullanın.

Varsayılan düzen, görüntüleri ve maskeleri paralel klasörlerde tutar. Veri kümesi YAML dosyasındaki masks_dir değeri, maskeleri bulmak için images yol bileşeninin yerine geçirilir.

dataset/
├── images/
│   ├── train/
│   └── val/
└── masks/
    ├── train/
    └── val/

Örneğin images/train/aachen_000000_000019.png konumundaki bir görüntü, masks_dir: masks olduğunda masks/train/aachen_000000_000019.png konumundaki bir maskeyle eşleştirilir.

YOLO poligon etiket biçimi#

Veri kümenizde zaten Ultralytics YOLO poligon etiketleri varsa (görüntü başına bir .txt dosyasında <class-index> <x1> <y1> <x2> <y2> ... satırları bulunuyorsa), PNG maskesi dönüştürmesine gerek kalmadan doğrudan bu etiketlerle semantik segmentasyon eğitebilirsiniz. Satır düzeyindeki düzen için örnek segmentasyon veri kümesi biçimine bakın.

Bu yol, veri kümesi YAML dosyası masks_dir anahtarını içermediğinde ve veri kümesinin kök dizininde görüntülerinizin yanında masks/ klasörü bulunmadığında otomatik olarak seçilir — geride kalan masks/ klasörlerini silin veya yeniden adlandırın; aksi takdirde yükleyici PNG maske moduna geri döner ve maskeleri orada arar. Davranış:

  • Poligonlar, yükleme sırasında görüntü başına bir semantik maskeye dönüştürülür ve çakışan bölgelerde küçük nesnelerin büyük nesnelerin üzerine yazması için alana göre sıralanır.
  • Çok sınıflı (N > 1 içinde names): hiçbir poligon tarafından kapsanmayan pikseller için, tanımladığınız sınıflardan sonra ek bir background sınıfı eklenir. Model, N + 1 çıkış kanalıyla oluşturulur ve son kanal arka plandır.
  • Tek sınıflı (N == 1 içinde names): yine 1 sınıf olarak eğitilir. Maske ikilidir; tanımladığınız sınıf 1 olarak, hiçbir poligon tarafından kapsanmayan pikseller ise 0 olarak gösterilir. names için ek bir arka plan sınıfı eklenmez.
  • Artırma dolgusu tarafından eklenen pikseller (ör. rastgele kırpma) yine yok sayma etiketi olarak 255 kullanır.

Verileriniz zaten örnek poligonları olarak etiketlenmişse ve aynı dosyalardan bir semantik segmentasyon modeli oluşturmak istiyorsanız bu yolu kullanın.

Veri Kümesi YAML Biçimi#

Semantik segmentasyon veri kümeleri YAML dosyalarıyla yapılandırılır. Ana alanlar şunlardır:

AnahtarAçıklama
pathVeri kümesinin kök dizini.
trainpath konumuna göreli eğitim görüntüsü yolu veya mutlak yol.
valpath konumuna göreli doğrulama görüntüsü yolu veya mutlak yol.
testİsteğe bağlı test görüntüsü yolu.
masks_dirSemantik maskeler için kullanılan dizin adı. YOLO poligon etiket biçimine geçmek için bu anahtarı, veri kümesinin kök dizininde masks/ klasörü bulunmayacak şekilde atlayın.
namesSınıf kimliğinden sınıf adına eşleme.
label_mappingKaynak veri kümesi kimliklerinden eğitim kimliklerine veya ignore_label değerine isteğe bağlı eşleme.
ultralytics/cfg/datasets/cityscapes8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# Cityscapes semantic segmentation dataset (19 classes)
# Documentation: https://docs.ultralytics.com/datasets/semantic/cityscapes8
# Example usage: yolo semantic train data=cityscapes8.yaml model=yolo26n-sem.pt
# parent
# ├── ultralytics
# └── datasets
#     └── cityscapes8 ← downloads here (small subset)
#         └── images
#         └── masks

# Dataset root directory
path: cityscapes8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images

masks_dir: masks # semantic mask directory

# Cityscapes 19-class labels
names:
  0: road
  1: sidewalk
  2: building
  3: wall
  4: fence
  5: pole
  6: traffic light
  7: traffic sign
  8: vegetation
  9: terrain
  10: sky
  11: person
  12: rider
  13: car
  14: truck
  15: bus
  16: train
  17: motorcycle
  18: bicycle

# Map source label IDs to train IDs; ignore_label is converted to 255.
label_mapping:
  -1: ignore_label
  0: ignore_label
  1: ignore_label
  2: ignore_label
  3: ignore_label
  4: ignore_label
  5: ignore_label
  6: ignore_label
  7: 0
  8: 1
  9: ignore_label
  10: ignore_label
  11: 2
  12: 3
  13: 4
  14: ignore_label
  15: ignore_label
  16: ignore_label
  17: 5
  18: ignore_label
  19: 6
  20: 7
  21: 8
  22: 9
  23: 10
  24: 11
  25: 12
  26: 13
  27: 14
  28: 15
  29: ignore_label
  30: ignore_label
  31: 16
  32: 17
  33: 18

# Download URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/cityscapes8.zip

Kaynak maske kimlikleri ardışık eğitim sınıfı kimlikleriyle zaten eşleşmiyorsa label_mapping kullanın. Cityscapes ve ADE20K, özgün etiket kimliklerini YOLO semantik segmentasyon eğitim kimliklerine dönüştüren ve kullanılmayan etiketleri yok sayan eşlemeler içerir.

Kullanım#

Python veya CLI ile bir YOLO26 semantik segmentasyon modeli eğitin:

Örnek
from ultralytics import YOLO

# Load a pretrained semantic segmentation model
model = YOLO("yolo26n-sem.pt")

# Train on the Cityscapes8 semantic segmentation dataset
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)

Desteklenen Veri Kümeleri#

Ultralytics, bu veri kümeleri için semantik segmentasyon veri kümesi YAML dosyaları sağlar. Önceden eğitilmiş model kıyaslama tablosunun tamamı için semantik segmentasyon görev sayfasına bakın.

  • Cityscapes: 19 eğitim sınıfına sahip, kentsel sokak sahneleri için anlamsal segmentasyon veri kümesidir.
  • Cityscapes8: Hızlı testler ve CI kontrolleri için 8 görüntülük bir Cityscapes alt kümesi.
  • ADE20K: 150 anlamsal sınıfa sahip bir sahne ayrıştırma veri kümesidir.

Kendi Veri Kümeni Ekleme#

Seçenek A — PNG maskeleri#

  1. Görüntülerinizi images/train ve images/val gibi bölme klasörlerinin altına kaydedin.
  2. Her görüntü için bir tek kanallı maskeyi, masks/train ve masks/val gibi karşılık gelen maske klasörlerinin altına kaydedin.
  3. Maske piksel değerlerinin sınıf kimlikleri olduğundan emin olun. Yok sayılması gereken pikseller için 255 kullanın.
  4. path, train, val, masks_dir ve names içeren bir veri kümesi YAML dosyası oluşturun.
  5. Maske kimliklerinizin ardışık eğitim kimliklerine dönüştürülmesi gerekiyorsa yalnızca label_mapping ekleyin.
path: path/to/my-semantic-dataset
train: images/train
val: images/val
masks_dir: masks

names:
    0: background
    1: road
    2: building

Seçenek B — Poligon etiketleri#

  1. Görüntüleri ve .txt poligon dosyalarını örnek segmentasyonda olduğu gibi düzenleyin.
  2. path, train, val ve names içeren bir veri kümesi YAML dosyası oluşturun — masks_dir anahtarını atlayın.
  3. Veri kümesinin kök dizininde, görüntülerinizin yanında hiçbir masks/ klasörünün bulunmadığından emin olun — bu klasörün varlığı, YAML dosyasında masks_dir bulunmasa bile yükleyiciyi PNG maske moduna geçirir.
  4. names içine "background" girdisi eklemeyin. Çok sınıflı veri kümelerinde yükleyici bir tane otomatik olarak ekler; tek sınıflı veri kümelerinde eğitim 1 sınıf olarak kalır — tanımladığınız sınıf maskede 1, kapsanmayan pikseller ise 0 olur.
path: path/to/my-polygon-dataset
train: images/train
val: images/val

names:
    0: person
    1: car

Ultralytics Platform, semantik görev için bir poligon açıklama aracı ve SAM destekli Smart açıklama özelliği sağlar — doğrudan tarayıcıda açıklama ekleyebilir, ortaya çıkan poligon etiketli veri kümesini bu düzeni elle kurmadan dışa aktarabilir veya bununla eğitim yapabilirsiniz.

SSS#

  • Semantik segmentasyon maskeleri yoğun piksel haritalarıdır. Her piksel bir sınıf kimliği depolar ve her eğitim görüntüsü için bir maske görüntüsü bulunur. Ultralytics YOLO'daki örnek segmentasyon etiketleri, nesne örneği başına bir satır olacak şekilde poligon koordinatlarını içeren metin dosyalarını kullanır.

  • 255 piksel değeri yok sayma etiketi olarak kullanılır. Bu pikseller kayıp ve metrik hesaplamaları sırasında atlanır; bu özellik boş bölgeler, etiketlenmemiş pikseller veya eğitim etiketi kümesinin dışındaki sınıflar için kullanışlıdır.

  • Evet. Her semantik maske, karşılık gelen görüntüyle aynı dosya kök adına sahip olmalıdır. Veri kümesi yükleyicisi, images dizin bileşenini masks_dir ile değiştirir ve eşleşen maske dosyalarını arar; .png maskesi bulunamazsa desteklenen diğer görüntü uzantılarına (.jpg, .tiff, vb.) geri döner — ancak geri dönüş mekanizması bunu zorunlu kılmadığından yalnızca kayıpsız biçimler önerilir.

  • Evet, names sınıf kimliklerinizle zaten eşleşiyorlarsa kullanabilirsiniz. Kaynak veri kümesi ardışık olmayan kimlikler kullanıyorsa veya yok sayılması gereken etiketler içeriyorsa, kaynak piksel değerlerini eğitim kimliklerine dönüştürmek için bir label_mapping bölümü ekleyin.

  • Evet. Örnek segmentasyon veri kümeleri, Ultralytics YOLO poligon etiketlerini kullanır (görüntü başına bir .txt dosyasında <class-index> <x1> <y1> <x2> <y2> ... satırları bulunur) ve aynı dosyalar semantik segmentasyon için yeniden kullanılabilir — veri kümesi YAML dosyasından masks_dir anahtarını atlamanız ve veri kümesinin kök dizininde görüntülerinizin yanında hiçbir masks/ klasörünün bulunmadığından emin olmanız yeterlidir (masks_dir ayarlanmamış olsa bile bu klasörün varlığı PNG maske modunu tetikler). Yükleyici daha sonra poligonları anında görüntü başına maskelere dönüştürür. Çok sınıflı veri kümelerinde (N > 1) ek bir background sınıfı eklenir ve model N + 1 çıkış kanalıyla oluşturulur. Tek sınıflı veri kümelerinde (N == 1) eğitim 1 sınıf olarak kalır — maske, tanımladığınız sınıfı 1, kapsanmayan pikselleri ise 0 olarak gösterir.

  • Ultralytics, Cityscapes (19 kentsel sahne sınıfı), işlem hattı testi için hafif Cityscapes8 alt kümesi ve ADE20K (150 sahne ayrıştırma sınıfı) için kullanıma hazır veri kümesi YAML dosyaları içerir. Her sayfada tam sınıf listesi, indirme adımları ve doğrulanmış bir eğitim örneği belgelenir.

Yorumlar