Anlamsal Bölütleme#
Semantic segmentation, 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 ayıran instance segmentation özelliğinin aksine, anlamsal segmentasyon, kaç tane ayrı nesne olduğuna bakılmaksızın aynı sınıfa ait tüm pikselleri bir araya getirir.
Watch: Semantic Segmentation with Ultralytics YOLO26 | Quickstart Tutorial
Anlamsal bölütleme modelinin çıktısı, her piksel değerinin tahmin edilen bir sınıf kimliğine (ID) 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.
Anlamsal segmentasyon için task=semantic veya yolo semantic CLI görevini kullan. YOLO26 anlamsal segmentasyon model dosyaları, yolo26n-sem.pt gibi -sem son ekini kullanır.
Modeller#
Cityscapes veri kümesi üzerinde önceden eğitilmiş YOLO26 anlamsal segmentasyon modelleri aşağıda gösterilmektedir.
Modeller, ilk kullanımda en son Ultralytics sürümünden otomatik olarak indirilir.
| Model | boyut (piksel) | mIoUval | Hız RTX3090 PyTorch (ms) | parametreler (M) | FLOPs (B) |
|---|---|---|---|---|---|
| YOLO26n-sem | 1024 × 2048 | 78.3 | 4.4 ± 0.0 | 1.6 | 22.7 |
| YOLO26s-sem | 1024 × 2048 | 80.8 | 8.4 ± 0.0 | 6.5 | 88.8 |
| YOLO26m-sem | 1024 × 2048 | 82.0 | 19.9 ± 0.1 | 14.3 | 304.5 |
| YOLO26l-sem | 1024 × 2048 | 82.9 | 26.5 ± 0.1 | 17.9 | 384.7 |
| YOLO26x-sem | 1024 × 2048 | 83.6 | 48.9 ± 0.2 | 40.2 | 861.7 |
- mIoUval değerleri Cityscapes doğrulama kümesi üzerindeki tek model ve tek ölçekli sonuçlar içindir.
yolo semantic val data=cityscapes.yaml device=0 imgsz=2048ile yeniden üret - Speed metrikleri, bir RTX3090 örneği kullanılarak Cityscapes doğrulama görüntüleri üzerinden ortalama olarak hesaplanmıştır.
yolo semantic val data=cityscapes.yaml batch=1 device=0|cpu imgsz=2048ile yeniden üret - Params 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ı tüm eğitim mimarisini korur ve daha yüksek sayılar gösterebilir.
ADE20K veri kümesi üzerinde önceden eğitilmiş YOLO26 anlamsal segmentasyon modelleri aşağıda gösterilmektedir.
Modeller, ilk kullanımda en son Ultralytics sürümünden otomatik olarak indirilir.
| Model | boyut (piksel) | mIoUval | Hız RTX3090 PyTorch (ms) | parametreler (M) | FLOPs (B) |
|---|---|---|---|---|---|
| YOLO26n-sem-ade20k | 640 | 38.8 | 3.9 ± 0.2 | 1.6 | 4.4 |
| YOLO26s-sem-ade20k | 640 | 45.6 | 4.2 ± 0.3 | 6.5 | 17.4 |
| YOLO26m-sem-ade20k | 640 | 47.4 | 4.7 ± 0.3 | 14.3 | 59.5 |
| YOLO26l-sem-ade20k | 640 | 49.7 | 8.3 ± 0.2 | 17.9 | 75.0 |
| YOLO26x-sem-ade20k | 640 | 51.5 | 9.9 ± 0.3 | 40.2 | 168.1 |
- mIoUval değerleri ADE20K doğrulama kümesi üzerinde tek model ve tek ölçek içindir.
yolo26n-sem-ade20k.ptdeğerini istenenyolo26*-sem-ade20k.ptkontrol noktasıyla değiştirerekyolo semantic val model=yolo26n-sem-ade20k.pt data=ade20k.yaml device=0 imgsz=640ile yeniden üret. - Hız metrikleri, bir RTX3090 örneği kullanılarak ADE20K doğrulama görüntüleri üzerinden ortalama olarak alınmıştır.
yolo26n-sem-ade20k.ptdeğerini istenenyolo26*-sem-ade20k.ptkontrol noktasıyla değiştirerekyolo semantic val model=yolo26n-sem-ade20k.pt data=ade20k.yaml batch=1 device=0|cpu imgsz=640ile yeniden üret. - Params 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ı tüm eğitim mimarisini korur ve daha yüksek sayılar gösterebilir.
Eğit (Train)#
1024 görüntü boyutunda 100 epochs boyunca Cityscapes8 veri kümesinde YOLO26n-sem modelini eğit. Kullanılabilir tüm argümanların tam listesi için Configuration sayfasına göz at.
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)Tam train modu ayrıntılarını Train sayfasında bulabilirsin. Anlamsal segmentasyon modelleri ayrıca Ultralytics Platform cloud training ile eğitilebilir.
Veri kümesi biçimi#
Anlamsal segmentasyon veri kümeleri, her piksel değerinin bir sınıf kimliğini temsil ettiği, genellikle PNG formatında tek kanallı maske görüntüleri kullanır. 255 değerine sahip pikseller "ignore" olarak değerlendirilir ve kayıp hesaplamasından hariç tutulur. Veri kümesi YAML dosyası, görüntülere ve bunlara karşılık gelen maske dizinlerine giden yolları belirtmelidir. Biçim ayrıntıları için Semantic Segmentation Dataset Guide sayfasına bak. Desteklenen veri kümeleri arasında Cityscapes ve ADE20K yer alır. Anlamsal veri kümelerini Ultralytics Platform annotation ile yönetebilir ve etiketleyebilirsin.
Doğrula (Val)#
Eğitilmiş YOLO26n-sem modelinin accuracy değerini bir anlamsal segmentasyon veri kümesinde doğrula. Doğrulamanın amaçlanan veri kümesi YAML dosyasını kullanması için data değerini açıkça ilet.
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 Et (Predict)#
Görüntüler üzerinde tahmin yürütmek 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 countTam predict modu ayrıntılarını Tahmin sayfasında görün.
Sonuç Çıktısı#
YOLO anlamsal segmentasyon, görüntü başına bir adet Results nesnesi döndürür. Her sonuç, bir nesne maskesi listesi yerine tüm görüntü için yoğun bir sınıf haritası depolar. Farklı nesnelere ait olsalar bile, aynı tahmin edilen sınıfa sahip pikseller aynı sınıf kimliğini paylaşır.
| Öznitelik | Tip | Ş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; sınıf sayısına göre seçilen veri tipi (dtype). |
result.masks | - | - | Örnek maskesi yok. |
result.boxes | - | - | Örnek kutuları/güvenilirlikleri yok. |
result.masks.xy | - | - | Varsayılan çokgenler yok. |
Her görev genelinde göreve özgü Results alanları için Göreve Göre Tahmin Sonuçları bölümüne bakın.
Anlamsal segmentasyon yoğun bir sınıf haritası tahmin eder, ardından görselleştirme ve akıştaki sonraki kullanımlar için bu haritayı yeniden boyutlandırarak orijinal görüntü boyutuna getirir. Şerit çizgileri, saha çizgileri, direkler veya teller gibi çok ince yapılar, çıkarım orijinal görüntü çözünürlüğünden çok daha düşük bir imgsz değerinde çalıştırıldığında bu nedenle merdiven basamağı şeklinde görünebilir. Sınırlar tırtıklı görünüyorsa, önce yerel PyTorch .pt modelini 1024, 1280 gibi daha büyük bir imgsz ile veya kaynak görüntü boyutuna en yakın pratik değerle yeniden test et. Düşük çözünürlüklü girdiler tahmin edilen sınıf haritasında bulunmayan ince detayları kurtaramayacağından, dışarı aktarılan modelleri yalnızca .pt çıktısının kabul edilebilir olduğunu onayladıktan sonra kullan.
Örnek Bölütleme vs Anlamsal Bölütleme#
| Özellik | Instance Segmentation (task="segment") | Semantic Segmentation (task="semantic") |
|---|---|---|
| Tahmin amacı | Algılanan her nesneyi ayrı ayrı bölütle | Her piksele bir sınıf kimliği ata |
| Çı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 | Binary mask values: 0 veya 1 | Class IDs: 0, 1, 2, ... |
| Veri Tipi (Dtype) | torch.uint8 | torch.uint8torch.int16torch.int32 |
| Aynı sınıf nesneleri | Ayrı örnekler olarak tutulur | Aynı sınıf bölgesinde birleştirilir |
| Çokgenler | result.masks.xy ve result.masks.xyn aracılığıyla Evet | Varsayılan olarak çokgen çıktısı yok |
| Kutular ve güven | result.boxes aracılığıyla Evet | Örnek başına kutu veya güven puanı yok |
| Tipik 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 Aktar (Export)#
Bir YOLO26n-sem modelini ONNX, CoreML vb. farklı bir formata dışa 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 anlamsal segmentasyon dışa aktarım formatları aşağıdaki tabloda yer almaktadır. format argümanını (yani format='onnx' veya format='engine') kullanarak herhangi bir formate dışa aktarabilirsin. Doğrudan dışa aktarılan modeller üzerinde tahmin yapabilir veya doğrulayabilirsin, yani yolo predict model=yolo26n-sem.onnx. Dışa aktarım tamamlandıktan sonra modelin için kullanım örnekleri gösterilir.
| Format | format Argümanı | Model | Meta veriler | Argümanlar |
|---|---|---|---|---|
| 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 |
Tam export ayrıntılarını Dışa Aktar sayfasında görün.
SSS#
Özel bir veri kümesinde nasıl YOLO26 anlamsal bölütleme modeli eğitebilirim?#
Özel bir veri kümesinde YOLO26 anlamsal bölütleme modeli 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 yoksayıldığı PNG maske görüntüleri hazırlaman gerekir. Görüntü ve maske dizinlerine işaret eden bir veri kümesi YAML dosyası oluştur ve ardından modeli eğit:
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ını kontrol edin.
Ö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 şekilde farklılaşırlar:
- Semantic segmentation 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.
- Instance segmentation her bir bireysel nesneyi ayrı ayrı tanımlayarak, 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 saymak veya izlemek önemli olduğunda tercih edilir.
Örnek bölütleme verilerini anlamsal bölütleme eğitmek için kullanabilir miyim?#
Evet. Veri kümen Ultralytics YOLO çokgen etiketlerini kullanıyorsa (her görüntü için bir .txt), masks_dir öğesini veri kümesi YAML dosyasından çıkar ve veri kümesi kök dizininde görüntülerinin yanında hiçbir masks/ klasörünün bulunmadığından emin ol (yalnızca varlığı, masks_dir ayarlanmamış olsa bile PNG maskesi modunu tetikler). Yükleyici daha sonra çokgenleri anında görüntü başına anlamsal maskelere dönüştürür. Çok sınıflı veri kümeleri için (N > 1) ek bir background sınıfı otomatik olarak names öğesine eklenir. Tek sınıflı veri kümeleri için (N == 1) eğitim 1 sınıfta kalır; bildirdiğin sınıf maskede 1 olur ve üzeri örtülmeyen pikseller 0 olur. Ayrıntılar için Anlamsal Segmentasyon Veri Kümesi Kılavuzu sayfasına göz at.
Anlamsal bölütleme için hangi veri kümeleri desteklenmektedir?#
Ultralytics YOLO26, çeşitli anlamsal bölütleme 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 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ı sunan 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:
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çümler olan ortalama Kesişim Birleşim Üzerinden (mIoU) ve piksel doğruluğu gibi doğrulama metriklerini sana sağlayacaktır.
Bir YOLO26 anlamsal bölütleme modelini ONNX biçimine nasıl dışa aktarabilirim?#
Bir YOLO26 anlamsal bölütleme modelini Python veya CLI komutlarıyla ONNX biçimine dışa aktar:
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 formatlara dışa aktarma hakkında daha fazla ayrıntı için Dışa Aktar sayfasına başvurun.