Anlamsal Bölütleme

Semantic segmentation examples

Anlamsal bölütleme, bir görüntüdeki her piksele bir sınıf etiketi atayarak tüm sahneyi kapsayan yoğun bir sınıf haritası üretir. Bireysel nesneleri birbirinden ayıran örnek bölütlemeden farklı olarak, anlamsal bölütleme, ortamda kaç tane farklı nesne olursa olsun aynı sınıfa ait tüm pikselleri bir arada gruplandırır.

Bir anlamsal bölütleme modelinin çıktısı, her piksel değerinin tahmin edilen bir sınıf kimliğine karşılık geldiği tek bir yükseklik çarpı genişlik sınıf haritasıdır. Bu özellik, anlamsal bölütlemeyi otonom sürüş, tıbbi görüntüleme ve arazi örtüsü haritalama gibi sahne ayrıştırma görevleri için ideal kılar.

İpucu

Use task=semantic or the yolo semantic CLI task for semantic segmentation. YOLO26 semantic segmentation model files use the -sem suffix, such as yolo26n-sem.pt.

Modeller

Cityscapes veri kümesi üzerinde önceden eğitilmiş YOLO26 anlamsal bölütleme modelleri aşağıda gösterilmiştir.

Modeller, ilk kullanımda en güncel Ultralytics sürümünden otomatik olarak indirilir.

Modelboyut
(piksel)
mIoUvalHız
RTX3090 PyTorch
(ms)
parametreler
(M)
FLOPs
(B)
YOLO26n-sem1024 × 204878.34.4 ± 0.01.622.7
YOLO26s-sem1024 × 204880.88.4 ± 0.06.588.8
YOLO26m-sem1024 × 204882.019.9 ± 0.114.3304.5
YOLO26l-sem1024 × 204882.926.5 ± 0.117.9384.7
YOLO26x-sem1024 × 204883.648.9 ± 0.240.2861.7
  • mIoUval değerleri, Cityscapes doğrulama kümesi üzerinde tek modelli, tek ölçekli sonuçlardır.
    yolo semantic val data=cityscapes.yaml device=0 imgsz=2048 ile yeniden üretebilirsin.
  • Hız metrikleri, bir Amazon EC2 P4d örneği kullanılarak Cityscapes doğrulama görüntüleri üzerinde ortalaması alınmış değerlerdir.
    yolo semantic val data=cityscapes.yaml batch=1 device=0|cpu imgsz=2048 ile yeniden üretebilirsin.
  • Params ve FLOPs değerleri, Conv ve BatchNorm katmanlarını birleştiren model.fuse() sonrası birleştirilmiş model içindir. Önceden eğitilmiş kontrol noktaları tüm eğitim mimarisini korur ve daha yüksek sayılar gösterebilir.

Train (Eğitim)

YOLO26n-sem modelini Cityscapes8 veri kümesi üzerinde 1024 görüntü boyutunda 100 dönem boyunca eğit. Mevcut argümanların tam listesi için Yapılandırma sayfasına bak.

Örnek
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.yaml")  # build a new model from YAML
model = YOLO("yolo26n-sem.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-sem.yaml").load("yolo26n-sem.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)

train moduna dair tüm detayları Eğitim sayfasında görebilirsin.

Veri kümesi biçimi

Anlamsal bölütleme veri kümeleri, genellikle her piksel değerinin bir sınıf kimliğini temsil ettiği PNG formatında tek kanallı maske görüntüleri kullanır. 255 değerine sahip pikseller "yok sayılır" olarak değerlendirilir ve kayıp hesaplamasına dahil edilmez. Veri kümesi YAML dosyası, görüntülere ve ilgili maske dizinlerine giden yolları belirtmelidir. Biçim detayları için Anlamsal Bölütleme Veri Kümesi Kılavuzu bölümüne bak. Desteklenen veri kümeleri arasında Cityscapes ve ADE20K yer alır.

Val (Doğrulama)

Eğitilmiş bir YOLO26n-sem modelinin doğruluğunu bir anlamsal bölütleme veri kümesi üzerinde doğrula. Doğrulamanın amaçlanan veri kümesi YAML dosyasını kullanması için data parametresini açıkça belirt.

Örnek
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val(data="cityscapes.yaml")
metrics.miou  # mean Intersection over Union
metrics.pixel_accuracy  # overall pixel accuracy

Tahmin Et

Görüntüler üzerinde tahmin çalıştırmak için eğitilmiş bir YOLO26n-sem modeli kullan.

Örnek
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image

# Access the results
for result in results:
    semantic_mask = result.semantic_mask.data  # height x width class map (torch.Tensor)

predict moduna dair tüm detayları Tahmin sayfasında görebilirsin.

Export (Dışa Aktarma)

Bir YOLO26n-sem modelini ONNX, CoreML vb. gibi farklı bir biçime dışa aktar.

Örnek
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Export the model
model.export(format="onnx")

Mevcut YOLO26 anlamsal bölütleme dışa aktarma biçimleri aşağıdaki tabloda yer almaktadır. format argümanını kullanarak, örneğin format='onnx' veya format='engine' ile herhangi bir biçime dışa aktarma yapabilirsin. Dışa aktarılan modeller üzerinde doğrudan tahmin veya doğrulama yapabilirsin; örneğin yolo predict model=yolo26n-sem.onnx. Dışa aktarma tamamlandıktan sonra modelin için kullanım örnekleri gösterilecektir.

Formatformat ArgümanıModelMeta veriArgümanlar
PyTorch-yolo26n-sem.pt-
TorchScripttorchscriptyolo26n-sem.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-sem.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-sem_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-sem.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-sem.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-sem_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-sem.pbimgsz, batch, device
TF Litetfliteyolo26n-sem.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-sem_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n-sem_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-sem_paddle_model/imgsz, batch, device
MNNmnnyolo26n-sem.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-sem_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-sem_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n-sem_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-sem_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-sem_axelera_model/imgsz, batch, int8, data, fraction, device
DeepXdeepxyolo26n-sem_deepx_model/imgsz, int8, data, optimize, device

export ile ilgili tüm detayları Dışa Aktarma sayfasında görebilirsin.

SSS

Özel bir veri kümesi üzerinde YOLO26 anlamsal bölütleme modelini nasıl eğitirim?

Özel bir veri kümesi üzerinde YOLO26 anlamsal bölütleme modeli eğitmek için, her piksel değerinin bir sınıf kimliğini temsil ettiği (0, 1, 2, ...) ve 255 değerine sahip piksellerin eğitim sırasında yok sayıldığı PNG maske görüntüleri hazırlaman gerekir. Görüntü ve maske dizinlerini işaret eden bir veri kümesi YAML dosyası oluştur ve ardından modeli eğit:

Örnek
from ultralytics import YOLO

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

# Train the model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=512)

Mevcut diğer argümanlar için Yapılandırma sayfasına göz at.

Örnek bölütleme ile anlamsal bölütleme arasındaki fark nedir?

Örnek bölütleme ve anlamsal bölütleme her ikisi de piksel düzeyinde görevlerdir ancak temel bir noktada farklılaşırlar:

  • Anlamsal bölütleme her piksele bir sınıf etiketi atar ancak aynı sınıfın bireysel nesneleri arasında ayrım yapmaz. Örneğin, bir sahnedeki tüm arabalar aynı sınıf etiketini paylaşır.
  • Örnek bölütleme, her bir nesneyi ayrı ayrı tanımlar ve aynı sınıfa ait olsalar bile her nesne için farklı maskeler üretir.

Anlamsal bölütleme, otonom sürüş ve arazi örtüsü haritalama gibi sahne anlama görevleri için en uygun yöntemdir; örnek bölütleme ise bireysel nesneleri saymanın veya takip etmenin önemli olduğu durumlarda tercih edilir.

Anlamsal bölütleme eğitmek için örnek bölütleme verilerini kullanabilir miyim?

Yes. If your dataset uses Ultralytics YOLO polygon labels (one .txt per image), omit masks_dir from the dataset YAML and the loader will convert polygons to per-image semantic masks on the fly. For multi-class datasets (N > 1) an extra background class is appended to names automatically. For single-class datasets (N == 1) training stays at 1 class — your declared class becomes 1 in the mask and uncovered pixels become 0. See the Semantic Segmentation Dataset Guide for details.

Anlamsal bölütleme için hangi veri kümeleri desteklenmektedir?

Ultralytics YOLO26, birkaç anlamsal bölütleme veri kümesi için yerleşik yapılandırmalar sunar:

  • Cityscapes: Otonom sürüş araştırmalarında yaygın olarak kullanılan, 19 sınıflı kentsel sokak sahneleri.
  • ADE20K: 150 sınıflı, büyük ölçekli bir sahne ayrıştırma veri kümesi.

Ayrıca piksel değerlerinin sınıf kimliklerine karşılık geldiği PNG maske açıklamaları sağlayan herhangi bir özel veri kümesini de kullanabilirsin.

Önceden eğitilmiş bir YOLO26 anlamsal bölütleme modelini nasıl doğrularım?

Önceden eğitilmiş bir YOLO26 anlamsal bölütleme modelini, değerlendirme için kullanılan veri kümesi YAML dosyası ile doğrula:

Örnek
from ultralytics import YOLO

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

# Validate the model
metrics = model.val(data="cityscapes.yaml")
print("Mean IoU:", metrics.miou)
print("Pixel Accuracy:", metrics.pixel_accuracy)

Bu adımlar, anlamsal bölütleme performansını değerlendirmek için standart ölçüler olan ortalama Birleşim Üzerinde Kesişim (mIoU) ve piksel doğruluğu gibi doğrulama metriklerini sana sağlayacaktır.

Bir YOLO26 anlamsal bölütleme modelini nasıl ONNX biçimine aktarabilirim?

Bir YOLO26 anlamsal bölütleme modelini Python veya CLI komutlarıyla ONNX biçimine aktar:

Örnek
from ultralytics import YOLO

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

# Export the model to ONNX format
model.export(format="onnx")

Çeşitli biçimlere dışa aktarma hakkında daha fazla detay için Dışa Aktarma sayfasına başvur.

Yorumlar