Ultralytics YOLO ile Anlamsal Bölütleme#
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.
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.
| Model | boyut (piksel) | mIoUval | Hız RTX3090 PyTorch (ms) | parametre (M) | FLOPs (B) |
|---|---|---|---|---|---|
| YOLO26n-sem | 1024 × 2048 | 78.3 | 4.4 ± 0.0 | 1.6 | 23.8 |
| YOLO26s-sem | 1024 × 2048 | 80.8 | 8.4 ± 0.0 | 6.5 | 91.0 |
| YOLO26m-sem | 1024 × 2048 | 82.0 | 19.9 ± 0.1 | 14.3 | 305.5 |
| YOLO26l-sem | 1024 × 2048 | 82.9 | 26.5 ± 0.1 | 17.8 | 388.2 |
| YOLO26x-sem | 1024 × 2048 | 83.6 | 48.9 ± 0.2 | 40.1 | 866.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=2048ile 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=2048ile 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.
| Model | boyut (piksel) | mIoUval | Hız RTX3090 PyTorch (ms) | parametre (M) | FLOPs (B) |
|---|---|---|---|---|---|
| YOLO26n-sem-ade20k | 640 | 38.8 | 3.9 ± 0.2 | 1.6 | 4.5 |
| YOLO26s-sem-ade20k | 640 | 45.6 | 4.2 ± 0.3 | 6.5 | 17.5 |
| YOLO26m-sem-ade20k | 640 | 47.4 | 4.7 ± 0.3 | 14.4 | 59.6 |
| YOLO26l-sem-ade20k | 640 | 49.7 | 8.3 ± 0.2 | 17.9 | 75.2 |
| YOLO26x-sem-ade20k | 640 | 51.5 | 9.9 ± 0.3 | 40.2 | 168.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=640ile yeniden üret;yolo26n-sem-ade20k.ptyerine istediğinyolo26*-sem-ade20k.ptkontrol 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=640ile yeniden üret;yolo26n-sem-ade20k.ptyerine istediğinyolo26*-sem-ade20k.ptkontrol 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.
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.
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 accuracyTahmin#
Görüntüler üzerinde tahminler çalıştırmak için eğitilmiş bir YOLO26n-sem modeli kullan.
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 countpredict 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.
| Öznitelik | Tür | Şekil | Açıklama |
|---|---|---|---|
result.semantic_mask | SemanticMask | (H,W) | Yoğun sınıf haritası. |
result.semantic_mask.data | torch.uint8torch.int16torch.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.
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ırmak | Her piksele bir sınıf kimliği atamak |
| Çıktı alanı | result.masks | result.semantic_mask |
| Ana veri | result.masks.data | result.semantic_mask.data |
| Şekil | (N,H,W) | (H,W) |
| Piksel değerleri | İkili maske değerleri: 0 veya 1 | Sınıf kimlikleri: 0, 1, 2, ... |
| Dtype | torch.uint8 | torch.uint8torch.int16torch.int32 |
| Aynı sınıftaki nesneler | Ayrı örnekler olarak korunur | Aynı sınıf bölgesinde birleştirilir |
| Poligonlar | Evet, result.masks.xy ve result.masks.xyn aracılığıyla | Varsayılan olarak poligon çıktısı yoktur |
| Kutular ve güven skoru | Evet, result.boxes aracılığıyla | Örnek başına kutu veya güven skoru yoktur |
| Yaygın kullanım | Sayma, izleme, kırpma, nesne düzeyinde ölçüm | Yoğ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.
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çim | format bağımsız değişkeni | Model | Meta veriler | Bağımsız değişkenler |
|---|---|---|---|---|
| PyTorch | - | yolo26n-sem.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-sem.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n-sem.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-sem_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-sem.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-sem.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-sem_saved_model/ | ✅ | imgsz, keras, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-sem.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n-sem_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-sem_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-sem.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n-sem_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n-sem_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n-sem_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n-sem_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-sem_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n-sem_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-sem_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| LiteRT | litert | yolo26n-sem.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| Hailo | hailo | yolo26n-sem_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou |
| Huawei Ascend | ascend | yolo26n-sem_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms |
| Apple Core AI | coreai | yolo26n-sem.aimodel | ✅ | imgsz, 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:
Örnekfrom 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ındanmasks_dirdeğerini çıkar ve veri kümesinin kök dizininde, görüntülerinin yanında hiçbirmasks/klasörünün bulunmadığından emin ol (bu klasörün varlığı,masks_dirayarlanmamış 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)namesdeğerine otomatik olarak ek birbackgroundsı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 maskede1olur ve kapsanmayan pikseller0değ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:
Örnekfrom 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:
Örnekfrom 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.