Ultralytics YOLO27:
Get Started

Ultralytics YOLO ile Anlamsal Bölütleme#

Semantic segmentation examples

Anlamsal bölütleme, 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 bölütlemenin aksine, anlamsal bölütleme kaç farklı nesne bulunduğuna bakmaksızın aynı sınıftaki tüm pikselleri bir araya getirir.



İzle: Ultralytics YOLO26 ile Anlamsal Segmentasyon | Hızlı Başlangıç Eğitimi

Anlamsal bölütleme modelinin çıktısı, her piksel değerinin tahmin edilen bir sınıf kimliğine karşılık geldiği, yükseklik ve genişlik boyutlarında tek bir 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

Anlamsal bölütleme için task=semantic veya yolo semantic CLI görevini kullan. YOLO26 anlamsal bölütleme model dosyaları -sem son ekini kullanır; örneğin yolo26n-sem.pt.

Modeller#

Cityscapes veri kümesinde önceden eğitilmiş YOLO26 Semantic 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ülerinin ortalaması alınarak hesaplanmış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ümesinde önceden eğitilmiş YOLO26 Semantic modelleri aşağıda gösterilmiştir.

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.
    yolo26n-sem-ade20k.pt değerini istediğin yolo26*-sem-ade20k.pt kontrol noktasıyla değiştirerek yolo semantic val model=yolo26n-sem-ade20k.pt data=ade20k.yaml device=0 imgsz=640 ile yeniden üret.
  • Hız metrikleri, bir RTX3090 örneği kullanılarak ADE20K doğrulama görüntülerinin ortalaması alınarak hesaplanmıştır.
    yolo26n-sem-ade20k.pt değerini istediğin yolo26*-sem-ade20k.pt kontrol noktasıyla değiştirerek yolo semantic val model=yolo26n-sem-ade20k.pt data=ade20k.yaml batch=1 device=0|cpu imgsz=640 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.

Ön Cityscapes mIoU sonuçları için yayınlanmamış YOLO27 önizlemesine bak.

Eğit#

YOLO26n-sem modelini, 1024 görüntü boyutunda 100 epoch boyunca Cityscapes8 veri kümesinde eğit. Kullanılabilir bağımsız değişkenlerin tam listesi için Yapılandırma sayfasına bak.

Örnek
from ultralytics import YOLO

# Bir model yükle
model = YOLO("yolo26n-sem.yaml")  # YAML'den yeni bir model oluştur
model = YOLO("yolo26n-sem.pt")  # Önceden eğitilmiş bir model yükle (eğitim için önerilir)
model = YOLO("yolo26n-sem.yaml").load("yolo26n-sem.pt")  # YAML'den oluştur ve ağırlıkları aktar

# Modeli eğit
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)

train modunun tüm ayrıntıları için Eğitim sayfasına bak. Anlamsal bölütleme modellerini Ultralytics Platform bulut eğitimi ile de eğitebilirsin.

Veri kümesi biçimi#

Anlamsal bölütleme 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 "yoksay" olarak değerlendirilir ve kayıp hesaplamasının dışında bırakılır. Veri kümesi YAML dosyası, görüntülerin ve bunlara karşılık gelen maske dizinlerinin yollarını belirtmelidir. YOLO çokgen etiketlerine sahip veri kümeleri doğrudan eğitilir ve maskelere anlık olarak dönüştürülür (aşağıdaki Örnek bölütleme verilerini kullanabilir miyim bölümüne bak). Biçim ayrıntıları için Anlamsal Bölütleme Veri Kümesi Kılavuzu sayfasına bak. Desteklenen veri kümeleri arasında Cityscapes ve ADE20K bulunur. Anlamsal veri kümelerini Ultralytics Platform açıklama araçlarıyla yönetebilir ve etiketleyebilirsin.

Doğrula#

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

Örnek
from ultralytics import YOLO

# Bir model yükle
model = YOLO("yolo26n-sem.pt")  # Resmî bir modeli yükle
model = YOLO("path/to/best.pt")  # özel bir model yükle

# Modeli doğrula
metrics = model.val(data="cityscapes.yaml")
metrics.miou  # ortalama Birleşim Üzerine Kesişim
metrics.pixel_accuracy  # genel piksel doğruluğu

Tahmin#

Görüntülerde tahmin yapmak için eğitilmiş bir YOLO26n-sem modeli kullan.

Örnek
from ultralytics import YOLO

# Bir model yükle
model = YOLO("yolo26n-sem.pt")  # Resmî bir modeli yükle
model = YOLO("path/to/best.pt")  # özel bir model yükle

# Modelle tahmin yap
results = model("https://ultralytics.com/images/bus.jpg")  # bir görüntü üzerinde tahmin yap

# Sonuçlara eriş
for result in results:
    semantic_mask = result.semantic_mask.data  # sınıf haritası, şekil (H,W), sınıf sayısına göre seçilen tamsayı dtype

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

Sonuç Çıktısı#

YOLO anlamsal bölütleme, her görüntü için bir Results nesnesi döndürür. Her sonuç, nesne maskeleri listesinin yerine görüntünün tamamı için tek bir yoğun sınıf haritası depolar. Aynı tahmin edilen sınıfa ait 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; veri türü sınıf sayısına göre seçilir.
result.masks--Örnek maskesi yok.
result.boxes--Örnek kutusu/güven değeri yok.

Tüm görevlerde göreve özgü Results alanları için Göreve Göre Tahmin Sonuçları bölümüne bak.

Maske sınırlarının kalitesi

Anlamsal bölütleme, yoğun bir sınıf haritası tahmin eder ve ardından görselleştirme ve sonraki işlemler için bu haritayı yeniden görüntü boyutuna getirir. Bu nedenle, şerit çizgileri, saha çizgileri, direkler veya teller gibi çok ince yapılar, çıkarım özgün görüntü çözünürlüğünden çok daha düşük bir imgsz ile çalıştığında basamaklı görünebilir. Sınırlar pürüzlü görünüyorsa önce yerel PyTorch .pt modelini imgsz için daha büyük bir değerle (örneğin 1024, 1280 veya kaynak görüntü boyutuna pratik açıdan en yakın değerle) yeniden test et. Daha düşük çözünürlüklü girdiler, tahmin edilen sınıf haritasında bulunmayan ince ayrıntıları geri getiremeyeceğinden, dışa aktarılan modelleri yalnızca .pt çıktısının kabul edilebilir olduğunu doğruladıktan sonra kullan.

Örnek Bölütleme ve Anlamsal Bölütleme#

YönÖrnek Bölütleme (task="segment")Anlamsal Bölütleme (task="semantic")
Tahmin amacıTespit edilen her nesneyi ayrı ayrı bölütleHer piksele bir sınıf kimliği ata
Çı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
ÇokgenlerEvet, result.masks.xy ve result.masks.xyn aracılığıylaVarsayılan olarak çokgen çıktısı yok
Kutular ve güven puanıEvet, result.boxes aracılığıylaÖrnek başına kutu veya güven puanı yok
Tipik 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 aktar#

YOLO26n-sem modelini ONNX, CoreML vb. farklı bir biçime aktar.

Örnek
from ultralytics import YOLO

# Bir model yükle
model = YOLO("yolo26n-sem.pt")  # Resmî bir modeli yükle
model = YOLO("path/to/best.pt")  # özel bir model yükle

# Modeli dışa aktar
model.export(format="onnx")

Kullanılabilir YOLO26 anlamsal bölütleme dışa aktarma biçimleri aşağıdaki tabloda verilmiştir. format bağımsız değişkenini, örneğin format='onnx' veya format='engine' değerini kullanarak istediğin biçime aktarabilirsin. Dışa aktarılan modellerde doğrudan tahmin veya doğrulama yapabilirsin; örneğin yolo predict model=yolo26n-sem.onnx. Dışa aktarma tamamlandıktan sonra modeline ait kullanım örnekleri gösterilir.

Biçimformat bağımsız değişkeniModelÜst verilerBağımsız değişkenler
PyTorch-yolo26n-sem.pt✅-
TorchScripttorchscriptyolo26n-sem.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-sem.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-sem_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-sem.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-sem.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n-sem.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n-sem_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-sem.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-sem_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n-sem.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-sem_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n-sem.mnn✅imgsz, 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.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n-sem_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n-sem_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n-sem_xilinx_model/✅imgsz, name, quantize, data, fraction, opset, simplify, device

nms=None, harici NMS için varsayılan olarak ham çıktılar üretir. Kullanılabilir bir NMS içermeyen başlık seçmek için nms=False değerini ayarla; desteklenmeyen biçimler yerel çıktı yoluna döner. Yukarıdaki nms girdileri, nms=True ile NMS içerebilen biçimleri tanımlar.

Ayrıntılı export bilgileri için Dışa Aktarma sayfasına bak.

Sık Sorulan Sorular#

  • Özel bir veri kümesinde YOLO26 anlamsal bölümleme modelini eğitmek için her piksel değerinin bir sınıf kimliğini (0, 1, 2, ...) temsil ettiği ve 255 değerindeki 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
    
    # Önceden eğitilmiş bir YOLO26 anlamsal bölümleme modeli yükle
    model = YOLO("yolo26n-sem.pt")
    
    # Modeli eğit
    results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=1024)

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

  • Örnek bölümleme ve anlamsal bölümleme, her ikisi de piksel düzeyinde görevlerdir ancak önemli bir açıdan farklılık gösterir:

    • Anlamsal bölümleme her piksele bir sınıf etiketi atar ancak aynı sınıftaki nesneleri birbirinden ayırmaz. Örneğin, bir sahnedeki tüm arabalar aynı sınıf etiketini paylaşır.
    • Örnek bölümleme her bir nesneyi ayrı ayrı belirler ve aynı sınıfa ait olsalar bile her nesne için farklı maskeler üretir.

    Anlamsal bölümleme, otonom sürüş ve arazi örtüsü haritalama gibi sahne anlama görevleri için en uygunudur; tek tek nesneleri saymak veya izlemek önemli olduğunda ise örnek bölümleme 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 öğesini çıkar ve veri kümesi kök dizininde görüntülerinin yanında masks/ klasörünün bulunmadığından emin ol (masks_dir ayarlanmamış olsa bile bu klasörün varlığı tek başına PNG maske modunu etkinleştirir). Yükleyici daha sonra poligonları anlık olarak görüntü başına anlamsal maskelere dönüştürür. Çok sınıflı veri kümelerinde (N > 1) background sınıfı otomatik olarak names öğesine eklenir. Tek sınıflı veri kümelerinde (N == 1) eğitim 1 sınıfta kalır; tanımladığın sınıf maskede 1 olur ve kapsanmayan pikseller 0 olur. Ayrıntılar için Anlamsal Bölümleme Veri Kümesi Kılavuzu sayfasına bak.

  • Ultralytics YOLO26, çeşitli anlamsal bölümleme veri kümeleri 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.

    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ümleme modelini, değerlendirme için kullanılan veri kümesi YAML dosyasıyla doğrula:

    Örnek
    from ultralytics import YOLO
    
    # Önceden eğitilmiş bir modeli yükle
    model = YOLO("yolo26n-sem.pt")
    
    # Modeli doğrula
    metrics = model.val(data="cityscapes.yaml")
    print("Mean IoU:", metrics.miou)
    print("Pixel Accuracy:", metrics.pixel_accuracy)

    Bu adımlar, anlamsal bölümleme performansını değerlendirmek için standart ölçütler olan ortalama Birleşim Üzerine Kesişim (mIoU) ve piksel doğruluğu gibi doğrulama metriklerini sağlar.

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

    Örnek
    from ultralytics import YOLO
    
    # Önceden eğitilmiş bir modeli yükle
    model = YOLO("yolo26n-sem.pt")
    
    # Modeli ONNX biçimine aktar
    model.export(format="onnx")

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

Yorumlar