Ultralytics YOLO27:

Ultralytics YOLO ile Anlamsal Bölütleme#

Semantic segmentation examples

Semantik segmentasyon, bir görüntüdeki her piksele bir sınıf etiketi atayarak tüm sahneyi kapsayan yoğun bir sınıf haritası oluşturur. Tek tek nesneleri birbirinden ayıran örnek segmentasyonun aksine semantik segmentasyon, kaç farklı nesne bulunduğundan bağımsız olarak aynı sınıfa ait tüm pikselleri birlikte gruplar.



Watch: Semantic Segmentation with Ultralytics YOLO26 | Quickstart Tutorial

Semantik segmentasyon modelinin çıktısı, her piksel değerinin tahmin edilen bir sınıf kimliğine karşılık geldiği, yükseklik-genişlik boyutlarında tek bir sınıf haritasıdır. Bu nedenle semantik segmentasyon; otonom sürüş, tıbbi görüntüleme ve arazi örtüsü haritalama gibi sahne ayrıştırma görevleri için idealdir.

İpucu

Semantik segmentasyon için task=semantic veya yolo semantic CLI görevini kullan. YOLO26 semantik segmentasyon model dosyaları, -sem son ekini kullanır; örneğin yolo26n-sem.pt.

Modeller#

Cityscapes veri kümesi üzerinde önceden eğitilmiş YOLO26 semantik segmentasyon 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)
parametre
(M)
FLOPs
(B)
YOLO26n-sem1024 × 204878.34.4 ± 0.01.623.8
YOLO26s-sem1024 × 204880.88.4 ± 0.06.591.0
YOLO26m-sem1024 × 204882.019.9 ± 0.114.3305.5
YOLO26l-sem1024 × 204882.926.5 ± 0.117.8388.2
YOLO26x-sem1024 × 204883.648.9 ± 0.240.1866.9
  • mIoUval değerleri, Cityscapes doğrulama kümesinde tek model ve tek ölçek için verilmiştir.
    yolo semantic val data=cityscapes.yaml device=0 imgsz=2048 ile yeniden üret.
  • Hız metrikleri, bir RTX3090 örneği kullanılarak Cityscapes doğrulama görüntüleri üzerinden ortalanmıştır.
    yolo semantic val data=cityscapes.yaml batch=1 device=0|cpu imgsz=2048 ile yeniden üret.
  • Parametre ve FLOPs değerleri, Conv ve BatchNorm katmanlarını birleştiren model.fuse() sonrasındaki birleştirilmiş model içindir. Önceden eğitilmiş kontrol noktaları tam eğitim mimarisini korur ve daha yüksek sayılar gösterebilir.

ADE20K veri kümesi üzerinde önceden eğitilmiş YOLO26 semantik segmentasyon 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)
parametre
(M)
FLOPs
(B)
YOLO26n-sem-ade20k64038.83.9 ± 0.21.64.5
YOLO26s-sem-ade20k64045.64.2 ± 0.36.517.5
YOLO26m-sem-ade20k64047.44.7 ± 0.314.459.6
YOLO26l-sem-ade20k64049.78.3 ± 0.217.975.2
YOLO26x-sem-ade20k64051.59.9 ± 0.340.2168.4
  • mIoUval değerleri, ADE20K doğrulama kümesinde tek model ve tek ölçek için verilmiştir.
    yolo semantic val model=yolo26n-sem-ade20k.pt data=ade20k.yaml device=0 imgsz=640 ile yeniden üret; yolo26n-sem-ade20k.pt yerine istediğin yolo26*-sem-ade20k.pt kontrol noktasını kullan.
  • Hız metrikleri, bir RTX3090 örneği kullanılarak ADE20K doğrulama görüntüleri üzerinden ortalanmıştır.
    yolo semantic val model=yolo26n-sem-ade20k.pt data=ade20k.yaml batch=1 device=0|cpu imgsz=640 ile yeniden üret; yolo26n-sem-ade20k.pt yerine istediğin yolo26*-sem-ade20k.pt kontrol noktasını kullan.
  • Parametre ve FLOPs değerleri, Conv ve BatchNorm katmanlarını birleştiren model.fuse() sonrasındaki birleştirilmiş model içindir. Önceden eğitilmiş kontrol noktaları tam eğitim mimarisini korur ve daha yüksek sayılar gösterebilir.

Ön hazırlık niteliğindeki Cityscapes mIoU sonuçları için yayınlanmamış YOLO27 önizlemesine göz at.

Eğit#

YOLO26n-sem modelini Cityscapes8 veri kümesi üzerinde görüntü boyutu 1024 olacak şekilde 100 epoch boyunca eğit. Kullanılabilir tüm bağımsız değişkenlerin 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 sayfasında train modunun tüm ayrıntılarını gör. Semantik segmentasyon modelleri Ultralytics Platform bulut eğitimi ile de eğitilebilir.

Veri kümesi biçimi#

Semantik segmentasyon veri kümelerinde, genellikle PNG biçiminde, her piksel değerinin bir sınıf kimliğini temsil ettiği tek kanallı maske görüntüleri kullanılır. 255 değerine sahip pikseller "ignore" olarak değerlendirilir ve kayıp hesaplamasına dahil edilmez. Veri kümesi YAML dosyası, görüntülerin ve bunlara karşılık gelen maske dizinlerinin yollarını belirtmelidir. Biçim ayrıntıları için Semantik Segmentasyon Veri Kümesi Kılavuzu sayfasına bak. Desteklenen veri kümeleri arasında Cityscapes ve ADE20K bulunur. Semantik veri kümelerini Ultralytics Platform açıklama araçlarıyla yönetebilir ve etiketleyebilirsin.

Doğrulama#

Eğitilmiş YOLO26n-sem modelinin doğruluğunu bir semantik segmentasyon veri kümesi üzerinde doğrula. Doğrulamanın amaçlanan veri kümesi YAML dosyasını kullanması için data değerini 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#

Görüntüler üzerinde tahminler ç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  # class map, shape (H,W), integer dtype selected by class count

predict modunun tüm ayrıntıları için Tahmin sayfasına bak.

Sonuç çıktısı#

YOLO semantik segmentasyonu, görüntü başına bir Results nesnesi döndürür. Her sonuç, nesne maskeleri listesinin yerine tüm görüntü için tek bir yoğun sınıf haritası depolar. Aynı tahmin edilen sınıfa sahip pikseller, ayrı nesnelere ait olsalar bile aynı sınıf kimliğini paylaşır.

ÖznitelikTürŞekilAçıklama
result.semantic_maskSemanticMask(H,W)Yoğun sınıf haritası.
result.semantic_mask.datatorch.uint8
torch.int16
torch.int32
(H,W)Sınıf kimlikleri; dtype sınıf sayısına göre seçilir.
result.masks--Örnek maskesi yoktur.
result.boxes--Örnek kutuları/güvenleri yoktur.
result.masks.xy--Varsayılan olarak poligon yoktur.

Her görevdeki göreve özgü Results alanlarının tamamı için Göreve Göre Tahmin Sonuçları bölümüne bak.

Maske sınırı kalitesi

Semantik segmentasyon yoğun bir sınıf haritası tahmin eder, ardından görselleştirme ve aşağı akış kullanımı için bu haritayı görüntü boyutlarına geri ölçekler. Bu nedenle şerit işaretleri, saha çizgileri, direkler veya kablolar gibi çok ince yapılar, çıkarım işlemi özgün görüntü çözünürlüğünden çok daha düşük bir imgsz değerinde çalıştırıldığında basamaklı görünebilir. Sınırlar tırtıklı görünüyorsa önce yerel PyTorch .pt modelini daha büyük bir imgsz değeriyle, örneğin 1024, 1280 veya kaynak görüntü boyutuna pratik olarak en yakın değerle yeniden test et. Dışa aktarılan modelleri yalnızca .pt çıktısının kabul edilebilir olduğunu doğruladıktan sonra kullan; çünkü daha düşük çözünürlüklü girdiler, tahmin edilen sınıf haritasında bulunmayan ince ayrıntıları geri getiremez.

Örnek ve Semantik Segmentasyon#

BoyutÖrnek Segmentasyon (task="segment")Semantik Segmentasyon (task="semantic")
Tahmin amacıAlgılanan her nesneyi ayrı ayrı segmentlere ayırmakHer piksele bir sınıf kimliği atamak
Çıktı alanıresult.masksresult.semantic_mask
Ana veriresult.masks.dataresult.semantic_mask.data
Şekil(N,H,W)(H,W)
Piksel değerleriİkili maske değerleri: 0 veya 1Sınıf kimlikleri: 0, 1, 2, ...
Dtypetorch.uint8torch.uint8
torch.int16
torch.int32
Aynı sınıftaki nesnelerAyrı örnekler olarak korunurAynı sınıf bölgesinde birleştirilir
PoligonlarEvet, result.masks.xy ve result.masks.xyn aracılığıylaVarsayılan olarak poligon çıktısı yoktur
Kutular ve güven skoruEvet, result.boxes aracılığıylaÖrnek başına kutu veya güven skoru yoktur
Yaygın kullanımSayma, izleme, kırpma, nesne düzeyinde ölçümYoğun sahne etiketleme, sürülebilir alan, arazi örtüsü, tıbbi bölgeler

Dışa aktarma#

Bir YOLO26n-sem modelini ONNX, CoreML vb. farklı bir biçime 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")

Kullanılabilir YOLO26 semantik segmentasyon dışa aktarma biçimleri aşağıdaki tabloda yer alır. format bağımsız değişkenini kullanarak herhangi bir biçime aktarabilirsin; örneğin format='onnx' veya format='engine'. Dışa aktarılan modeller üzerinde doğrudan tahmin yapabilir veya doğrulama çalıştırabilirsin; örneğin yolo predict model=yolo26n-sem.onnx. Kullanım örnekleri, dışa aktarma tamamlandıktan sonra modelin için gösterilir.

Biçimformat bağımsız değişkeniModelMeta verilerBağımsız değişkenler
PyTorch-yolo26n-sem.pt-
TorchScripttorchscriptyolo26n-sem.torchscriptimgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-sem.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-sem_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-sem.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-sem.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n-sem_saved_model/imgsz, keras, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-sem.pbimgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-sem_edgetpu.tfliteimgsz, quantize, opset, data, fraction, device
PaddlePaddlepaddleyolo26n-sem_paddle_model/imgsz, batch, device
MNNmnnyolo26n-sem.mnnimgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-sem_ncnn_model/imgsz, quantize, batch, device
IMX500imxyolo26n-sem_imx_model/imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-sem_rknn_model/imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-sem_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-sem_axelera_model/imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-sem_deepx_model/imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-sem_qnn.onnximgsz, batch, name, quantize, simplify, opset, data, fraction, device
LiteRTlitertyolo26n-sem.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n-sem_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou
Huawei Ascendascendyolo26n-sem_ascend_model/imgsz, batch, name, quantize, opset, simplify, nms
Apple Core AIcoreaiyolo26n-sem.aimodelimgsz, batch, quantize

nms=None, harici NMS için varsayılan olarak ham çıktıları kullanır. Mevcut bir NMS'siz başlığı seçmek için nms=False değerini ayarla; desteklenmeyen formatlar yerel çıktı yollarına geri döner. Yukarıdaki nms girdileri, NMS'yi nms=True ile gömebilen formatları tanımlar.

Ayrıntıların tamamı için Dışa aktarma sayfasındaki export bilgilerine bak.

SSS#

  • Özel bir veri kümesi üzerinde YOLO26 semantik segmentasyon modelini eğitmek için her piksel değerinin bir sınıf kimliğini (0, 1, 2, ...) temsil ettiği 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 gösteren bir veri kümesi YAML dosyası oluştur, 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)

    Kullanılabilir diğer bağımsız değişkenler için Yapılandırma sayfasına bak.

  • Örnek segmentasyon ve semantik segmentasyon, her ikisi de piksel düzeyinde görevlerdir ancak temel bir açıdan farklıdır:

    • Semantik segmentasyon her piksele bir sınıf etiketi atar ancak aynı sınıftaki tek tek nesneleri birbirinden ayırmaz. Örneğin bir sahnedeki tüm arabalar aynı sınıf etiketini paylaşır.
    • Örnek segmentasyon her bir nesneyi ayrı ayrı tanımlar ve aynı sınıfa ait olsalar bile her nesne için farklı maskeler oluşturur.

    Semantik segmentasyon, otonom sürüş ve arazi örtüsü haritalama gibi sahneyi anlama görevleri için daha uygundur; örnek segmentasyonu ise tek tek nesneleri saymanın veya izlemenin önemli olduğu durumlarda tercih edilir.

  • Evet. Veri kümen Ultralytics YOLO poligon etiketlerini (görüntü başına bir .txt) kullanıyorsa veri kümesi YAML dosyasından masks_dir değerini çıkar ve veri kümesinin kök dizininde, görüntülerinin yanında hiçbir masks/ klasörünün bulunmadığından emin ol (bu klasörün varlığı, masks_dir ayarlanmamış olsa bile PNG maske modunu tek başına etkinleştirir). Yükleyici daha sonra poligonları çalışma sırasında görüntü başına semantik maskelere dönüştürür. Çok sınıflı veri kümelerinde (N > 1) names değerine otomatik olarak ek bir background sınıfı eklenir. Tek sınıflı veri kümelerinde (N == 1) eğitim 1 sınıf olarak kalır — tanımladığın sınıf maskede 1 olur ve kapsanmayan pikseller 0 değerine dönüşür. Ayrıntılar için Semantik Segmentasyon Veri Kümesi Kılavuzu sayfasına bak.

  • Ultralytics YOLO26, çeşitli semantik segmentasyon veri kümeleri için yerleşik yapılandırmalar sağlar:

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

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

  • Önceden eğitilmiş bir YOLO26 semantik segmentasyon modelini, değerlendirme için kullanılan veri kümesi YAML dosyasıyla 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, semantik segmentasyon performansını değerlendirmek için standart ölçütler olan ortalama Intersection over Union (mIoU) ve piksel doğruluğu gibi doğrulama metriklerini elde etmeni sağlar.

  • Bir YOLO26 semantik segmentasyon 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 ayrıntı için Dışa aktarma sayfasına başvur.

Yorumlar