Anlamsal Bölütleme Veri Kümelerine Genel Bakış

Anlamsal bölütleme, bir görüntüdeki her piksele bir sınıf etiketi atar. Örnek bölütlemeden farklı olarak, anlamsal bölütleme aynı sınıftaki bireysel 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 anlamsal bölütleme modelleri tarafından kullanılan veri kümesi biçimini açıklar ve eğitim ile doğrulama için mevcut olan yerleşik veri kümesi yapılandırmalarını listeler.

Desteklenen Veri Kümesi Biçimleri

İki etiket biçimi desteklenir. Veri kümesi yükleyicisi, yol seçimini veri kümesi YAML dosyasının bir masks_dir anahtarı tanımlayıp tanımlamadığına göre yapar.

PNG maske biçimi

Anlamsal bölütleme veri kümeleri, örnek başına bir görüntü dosyası ve bir maske dosyası kullanır. Maske, genellikle PNG olan ve her piksel değerinin ilgili görüntü pikseli için sınıf dizini olduğu tek kanallı bir görüntüdür.

  • 0, 1, 2, ... piksel değerleri, veri kümesi names eşlemesindeki sınıf kimliklerini temsil eder.
  • 255 piksel değeri, yoksayma etiketi olarak değerlendirilir ve kayıp ile metrik hesaplamalarından dışlanır.
  • Maske dosyaları, eşleşen görüntü dosyalarıyla aynı kök adı kullanmalıdır; örneğin frankfurt_000000_000294.png.
  • Desteklenen maske uzantıları .png, .PNG, .bmp ve .tif şeklindedir.

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 yerini alır.

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

For example, an image at images/train/aachen_000000_000019.png is paired with a mask at masks/train/aachen_000000_000019.png when masks_dir: masks.

YOLO çokgen etiket biçimi

If your dataset already has Ultralytics YOLO polygon labels (one .txt per image with <class-index> <x1> <y1> <x2> <y2> ... rows), you can train semantic segmentation directly from them — no PNG mask conversion needed. See the instance segmentation dataset format for the row-level layout.

Bu yol, veri kümesi YAML dosyasında masks_dir atlanıldığında otomatik olarak seçilir. Davranış:

  • Çokgenler, yükleme anında görüntü başına anlamsal bir maskeye dönüştürülür ve çakışma bölgelerinde küçük nesnelerin büyük olanların önüne geçmesi için alana göre sıralanır.
  • Multi-class (N > 1 in names): an extra background class is appended after your declared classes for pixels not covered by any polygon. The model is built with N + 1 output channels and the last channel is background.
  • Single-class (N == 1 in names): still trained as 1 class. The mask is binary, with your declared class shown as 1 and pixels not covered by any polygon as 0. No extra background class is added to names.
  • Artırma dolgusu (örneğin rastgele kırpma) tarafından eklenen pikseller, yoksayma etiketi olarak yine 255 kullanır.

Verilerin zaten örnek çokgenleri olarak etiketlendiyse ve aynı dosyalardan bir anlamsal bölütleme modeli istiyorsan bu yolu kullan.

Veri kümesi YAML biçimi

Anlamsal bölütleme veri kümeleri YAML dosyalarıyla yapılandırılır. Ana alanlar şunlardır:

AnahtarAçıklama
pathVeri kümesi kök dizini.
trainpath'e göre eğitim görüntüsü yolu veya mutlak bir yol.
valpath'e göre doğrulama görüntüsü yolu veya mutlak bir yol.
testİsteğe bağlı test görüntüsü yolu.
masks_dirAnlamsal maskeler için kullanılan dizin adı. YOLO çokgen etiket biçimine geçmek için bu anahtarı atla.
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 halihazırda ardışık eğitim sınıfı kimlikleriyle eşleşmediğinde label_mapping kullan. Cityscapes ve ADE20K, orijinal etiket kimliklerini YOLO anlamsal bölütleme eğitim kimliklerine dönüştüren ve kullanılmayan etiketleri yoksayan eşlemeler içerir.

Kullanım

Python veya CLI ile bir YOLO26 anlamsal bölütleme modelini eğit:

Ö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 anlamsal bölütleme veri kümesi YAML dosyaları sağlar:

  • Cityscapes: 19 eğitim sınıfına sahip kentsel sokak sahnesi anlamsal bölütleme veri kümesi.
  • 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 sahne ayrıştırma veri kümesi.

Kendi Veri Kümeni Ekleme

Seçenek A — PNG maskeleri

  1. Görüntülerini images/train ve images/val gibi ayrık klasörler altında kaydet.
  2. Görüntü başına bir tek kanallı maskeyi, masks/train ve masks/val gibi yansıtılmış maske klasörleri altında kaydet.
  3. Maske piksel değerlerinin sınıf kimlikleri olduğundan emin ol. Yoksayılması gereken pikseller için 255 kullan.
  4. path, train, val, masks_dir ve names içeren bir veri kümesi YAML dosyası oluştur.
  5. Sadece maske kimliklerinin ardışık eğitim kimliklerine dönüştürülmesi gerektiğinde label_mapping ekle.
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 — Çokgen etiketleri

  1. Görüntüleri ve .txt çokgen dosyalarını tam olarak örnek bölütlemede olduğu gibi düzenle.
  2. path, train, val ve names içeren bir veri kümesi YAML dosyası oluştur; masks_dir değerini atla.
  3. names içine bir "background" girişi ekleme. Çok sınıflı veri kümeleri için yükleyici bunu otomatik olarak ekler; tek sınıflı veri kümelerinde eğitim 1 sınıfta kalır; belirttiğin sınıf maskede 1 olur ve kapsanmayan pikseller 0 olur.
path: path/to/my-polygon-dataset
train: images/train
val: images/val

names:
    0: person
    1: car

SSS

Anlamsal bölütleme maskeleri ile örnek bölütleme etiketleri arasındaki fark nedir?

Anlamsal bölütleme maskeleri yoğun piksel haritalarıdır. Her piksel bir sınıf kimliği depolar ve eğitim görüntüsü başına bir maske görüntüsü vardır. Ultralytics YOLO'daki örnek bölütleme etiketleri, nesne örneği başına bir satır içeren, çokgen koordinatlı metin dosyaları kullanır.

Eğitim sırasında hangi piksel değeri yoksayılır?

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

Maske dosya adlarının görüntü dosya adlarıyla eşleşmesi gerekiyor mu?

Evet. Her anlamsal maske, ilgili görüntüyle aynı dosya köküne 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.

Orijinal veri kümesi etiket kimliklerini doğrudan kullanabilir miyim?

Evet, eğer zaten names sınıf kimliklerinle eşleşiyorlarsa. Eğer kaynak veri kümesi ardışık olmayan kimlikler kullanıyorsa veya yoksayılması gereken etiketler içeriyorsa, kaynak piksel değerlerini eğitim kimliklerine dönüştürmek için bir label_mapping bölümü ekle.

Anlamsal bölütleme eğitimi için örnek bölütleme veri kümemi kullanabilir miyim?

Yes. Instance segmentation datasets use Ultralytics YOLO polygon labels (one .txt per image with <class-index> <x1> <y1> <x2> <y2> ... rows), and the same files can be reused for semantic segmentation — just omit masks_dir from the dataset YAML. The loader converts polygons to per-image masks on the fly. For multi-class datasets (N > 1) an extra background class is appended and the model is built with N + 1 output channels. For single-class datasets (N == 1) training stays at 1 class — the mask shows your declared class as 1 and uncovered pixels as 0.

Yorumlar