Ultralytics YOLO ile Anlamsal Bölütleme#
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.
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.
| 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ülerinin ortalaması alınarak hesaplanmış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ümesinde önceden eğitilmiş YOLO26 Semantic modelleri aşağıda gösterilmiştir.
| 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.
yolo26n-sem-ade20k.ptdeğerini istediğinyolo26*-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ülerinin ortalaması alınarak hesaplanmıştır.
yolo26n-sem-ade20k.ptdeğerini istediğinyolo26*-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. - 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.
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.
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ğuTahmin#
Görüntülerde tahmin yapmak için eğitilmiş bir YOLO26n-sem modeli kullan.
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ı dtypepredict 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.
| Ö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; 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.
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ü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 | İ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 |
| Çokgenler | Evet, result.masks.xy ve result.masks.xyn aracılığıyla | Varsayı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ı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#
YOLO26n-sem modelini ONNX, CoreML vb. farklı bir biçime aktar.
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çim | format bağımsız değişkeni | Model | Üst 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 |
| Apple Core AI | coreai | yolo26n-sem.aimodel | ✅ | imgsz, batch, quantize |
| TF SavedModel | saved_model | yolo26n-sem_saved_model/ | ✅ | imgsz, 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 |
| LiteRT | litert | yolo26n-sem.tflite | ✅ | imgsz, quantize, batch, 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 |
| Hailo | hailo | yolo26n-sem_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou, device |
| Huawei Ascend | ascend | yolo26n-sem_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms, device |
| AMD Xilinx | xilinx | yolo26n-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:
Örnekfrom 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ındanmasks_diröğesini çıkar ve veri kümesi kök dizininde görüntülerinin yanındamasks/klasörünün bulunmadığından emin ol (masks_dirayarlanmamış 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)backgroundsınıfı otomatik olaraknamesöğ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 maskede1olur ve kapsanmayan pikseller0olur. 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:
Örnekfrom 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:
Örnekfrom 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.