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ümesininnameseşlemesindeki sınıf kimliklerini temsil eder.255piksel 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.pngveya.tiffgibi 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 > 1içindenames): hiçbir poligon tarafından kapsanmayan pikseller için, tanımladığınız sınıflardan sonra ek birbackgroundsınıfı eklenir. Model,N + 1çıkış kanalıyla oluşturulur ve son kanal arka plandır. - Tek sınıflı (
N == 1içindenames): yine 1 sınıf olarak eğitilir. Maske ikilidir; tanımladığınız sınıf1olarak, hiçbir poligon tarafından kapsanmayan pikseller ise0olarak gösterilir.namesiç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
255kullanı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:
| Anahtar | Açıklama |
|---|---|
path | Veri kümesinin kök dizini. |
train | path konumuna göreli eğitim görüntüsü yolu veya mutlak yol. |
val | path 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_dir | Semantik 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. |
names | Sınıf kimliğinden sınıf adına eşleme. |
label_mapping | Kaynak veri kümesi kimliklerinden eğitim kimliklerine veya ignore_label değerine isteğe bağlı eşleme. |
# 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.zipKaynak 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:
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#
- Görüntülerinizi
images/trainveimages/valgibi bölme klasörlerinin altına kaydedin. - Her görüntü için bir tek kanallı maskeyi,
masks/trainvemasks/valgibi karşılık gelen maske klasörlerinin altına kaydedin. - Maske piksel değerlerinin sınıf kimlikleri olduğundan emin olun. Yok sayılması gereken pikseller için
255kullanın. path,train,val,masks_dirvenamesiçeren bir veri kümesi YAML dosyası oluşturun.- Maske kimliklerinizin ardışık eğitim kimliklerine dönüştürülmesi gerekiyorsa yalnızca
label_mappingekleyin.
path: path/to/my-semantic-dataset
train: images/train
val: images/val
masks_dir: masks
names:
0: background
1: road
2: buildingSeçenek B — Poligon etiketleri#
- Görüntüleri ve
.txtpoligon dosyalarını örnek segmentasyonda olduğu gibi düzenleyin. path,train,valvenamesiçeren bir veri kümesi YAML dosyası oluşturun —masks_diranahtarını atlayın.- 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ındamasks_dirbulunmasa bile yükleyiciyi PNG maske moduna geçirir. namesiç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 maskede1, kapsanmayan pikseller ise0olur.
path: path/to/my-polygon-dataset
train: images/train
val: images/val
names:
0: person
1: carUltralytics 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.
255piksel 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,
imagesdizin bileşeninimasks_dirile değiştirir ve eşleşen maske dosyalarını arar;.pngmaskesi 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,
namessı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 birlabel_mappingbölümü ekleyin.Evet. Örnek segmentasyon veri kümeleri, Ultralytics YOLO poligon etiketlerini kullanır (görüntü başına bir
.txtdosyası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ındanmasks_diranahtarını atlamanız ve veri kümesinin kök dizininde görüntülerinizin yanında hiçbirmasks/klasörünün bulunmadığından emin olmanız yeterlidir (masks_dirayarlanmamış 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 birbackgroundsınıfı eklenir ve modelN + 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 ise0olarak 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.