Ultralytics YOLO27:

Ultralytics YOLO ile Örnek Segmentasyonu#

Ultralytics YOLO instance segmentation examples

Örnek segmentasyonu, nesne algılamanın bir adım ötesine geçer; bir görüntüdeki tek tek nesneleri belirlemeyi ve bunları görüntünün geri kalanından segmentlere ayırmayı içerir.

Örnek segmentasyonu modelinin çıktısı, görüntüdeki her nesnenin sınırlarını belirleyen bir maske veya kontur kümesinin yanı sıra her nesne için sınıf etiketleri ve güven skorlarından oluşur. Örnek segmentasyonu, bir görüntüde nesnelerin yalnızca nerede olduğunu değil, tam şekillerinin ne olduğunu da bilmen gerektiğinde kullanışlıdır.



Watch: Run Segmentation with Pretrained Ultralytics YOLO Model in Python.
İpucu

YOLO26 Segment modelleri -seg son ekini, yani yolo26n-seg.pt kullanır ve COCO üzerinde önceden eğitilmiştir.

Modeller#

Önceden eğitilmiş YOLO26 Segment modelleri burada gösterilmektedir. Detect, Segment ve Pose modelleri COCO veri kümesi üzerinde, Semantic modelleri Cityscapes üzerinde, Classify modelleri ise ImageNet veri kümesi üzerinde önceden eğitilmiştir.

Modeller, ilk kullanımda en güncel Ultralytics sürümünden otomatik olarak indirilir.

Modelboyut
(piksel)
mAPkutu
50-95(e2e)
mAPmaske
50-95(e2e)
Hız
CPU ONNX
(ms)
Hız
T4 TensorRT10
(ms)
parametre
(M)
FLOPs
(B)
YOLO26n-seg64039.633.953.3 ± 0.52.1 ± 0.02.79.3
YOLO26s-seg64047.340.0118.4 ± 0.93.3 ± 0.010.434.5
YOLO26m-seg64052.544.1328.2 ± 2.46.7 ± 0.123.6121.7
YOLO26l-seg64054.445.5387.0 ± 3.78.0 ± 0.128.0140.1
YOLO26x-seg64056.547.0787.0 ± 6.816.4 ± 0.162.8314.0
  • mAPval değerleri, COCO val2017 veri kümesinde tek model ve tek ölçek için verilmiştir.
    yolo val segment data=coco.yaml device=0 nms=False ile yeniden üretin
  • Hız, bir Amazon EC2 P4d örneği kullanılarak COCO val görüntüleri üzerinde ortalanmıştır.
    yolo val segment data=coco.yaml batch=1 device=0|cpu nms=False ile yeniden üretin
  • Parametreler ve FLOP değerleri, Conv/BatchNorm katlama işlemi ve kullanılmayan algılama dalının kaldırılmasından sonraki birleştirilmiş modeller içindir. Önceden eğitilmiş kontrol noktaları tam eğitim mimarisini korur ve daha yüksek sayılar gösterebilir.

Bu checkpoint'ler 80 COCO sınıfını segmentlere ayırır. Yeniden eğitim yapmadan bu listenin dışındaki kategorileri segmentlere ayırmak için sınıfları metin istemi, görsel örnek veya yerleşik bir sözlük olarak alan YOLOE aracına bakabilirsin.

COCO kutu ve maske için ön sonuçları henüz yayınlanmamış YOLO27 önizlemesinde inceleyebilirsin.

Eğit#

YOLO26n-seg modelini COCO8-seg veri kümesi üzerinde, görüntü boyutu 640 olacak şekilde 100 epoch eğit. Kullanılabilir bağımsız değişkenlerin tam listesi için Configuration sayfasına bak.

Örnek
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.yaml")  # build a new model from YAML
model = YOLO("yolo26n-seg.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-seg.yaml").load("yolo26n-seg.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)

Train sayfasında train modunun tüm ayrıntılarını görebilirsin. Segmentasyon modelleri Ultralytics Platform bulut eğitimi ile de eğitilebilir.

Veri kümesi biçimi#

YOLO segmentasyon veri kümesi biçimini ayrıntılı olarak Veri Kümesi Kılavuzu içinde bulabilirsin. Mevcut bir COCO JSON veri kümesini YOLO biçimine dönüştürmek için, COCO - YOLO kılavuzu içinde açıklandığı gibi yerleşik convert_coco işlevini use_segments=True ile kullanabilirsin. Ayrıca poligon araçlarını ve SAM destekli akıllı etiketlemeyi kullanarak Ultralytics Platform etiketleme ile segmentasyon maskeleri oluşturabilirsin.

Doğrulama#

Eğitilmiş YOLO26n-seg modelinin doğruluğunu COCO8-seg veri kümesi üzerinde doğrula. model, eğitim data değerini ve bağımsız değişkenlerini model öznitelikleri olarak koruduğundan bağımsız değişken belirtmek gerekmez.

Örnek
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95(B)
metrics.box.map50  # map50(B)
metrics.box.map75  # map75(B)
metrics.box.maps  # a list containing mAP50-95(B) for each category
metrics.box.image_metrics  # per-image metrics dictionary for det with precision, recall, F1, TP, FP, and FN
metrics.seg.map  # map50-95(M)
metrics.seg.map50  # map50(M)
metrics.seg.map75  # map75(M)
metrics.seg.maps  # a list containing mAP50-95(M) for each category
metrics.seg.image_metrics  # per-image metrics dictionary for seg with precision, recall, F1, TP, FP, and FN

Tahmin#

Görüntüler üzerinde tahminler çalıştırmak için eğitilmiş bir YOLO26n-seg modeli kullan.

Örnek
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.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:
    xy = result.masks.xy  # mask polygons in pixel coordinates
    xyn = result.masks.xyn  # normalized mask polygons
    masks = result.masks.data  # binary masks, shape (N,H,W), dtype torch.uint8

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

Sonuç çıktısı#

YOLO örnek segmentasyonu, görüntü başına bir Results nesnesi döndürür. Her sonuç, nesne düzeyinde tahminleri depolar; burada tespit edilen her örneğin kendine ait ikili maskesi, sınıfı, güven skoru ve kutusu bulunur.

ÖznitelikTürŞekilAçıklama
result.masksMasks(N)Örnek maskeleri.
result.masks.datatorch.uint8(N,H,W)0 veya 1 değerlerine sahip ikili maskeler.
result.masks.xynp.float32list[(P,2)]Piksel poligonları.
result.masks.xynnp.float32list[(P,2)]Normalleştirilmiş poligonlar.
result.boxesBoxes(N)Örnek kutuları/sınıfları/güvenleri.
result.boxes.clstorch.float32(N,)Sınıf kimlikleri; adlar için int türüne dönüştür.

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 Segmentasyondan Farkı#

Örnek segmentasyonu nesne düzeyinde segmentasyondur: iki araba, iki maske, iki kutu ve iki güven skoru üretir. Semantik segmentasyon piksel düzeyinde sınıflandırmadır: aynı arabalar, nesne başına kutu, güven skoru veya varsayılan poligon listesi olmadan, tek bir görüntü boyutundaki sınıf haritasında aynı sınıf kimliğine sahip piksellere dönüşür.

Dışa aktarma#

Bir YOLO26n-seg modelini ONNX, CoreML vb. farklı bir formata aktar.

Örnek
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")

Kullanılabilir YOLO26-seg dışa aktarma formatları aşağıdaki tabloda yer alır. format bağımsız değişkenini kullanarak herhangi bir formata aktarabilirsin; örneğin format='onnx' veya format='engine'. Dışa aktarılan modeller üzerinde doğrudan tahmin yapabilir veya doğrulama gerçekleştirebilirsin; örneğin yolo predict model=yolo26n-seg.onnx. Dışa aktarma tamamlandıktan sonra modelin için kullanım örnekleri gösterilir.

Not

CoreML, statik şekillerle algılama, örnek bölütleme ve poz tahmini için gömülü NMS (nms=True) desteği sunar. Varsayılan bölütleme dışarı aktarımları (nms=None), NMS işlemlerini tüketiciye bırakır.

Biçimformat bağımsız değişkeniModelMeta verilerBağımsız değişkenler
PyTorch-yolo26n-seg.pt-
TorchScripttorchscriptyolo26n-seg.torchscriptimgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-seg.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-seg_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-seg.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-seg.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n-seg_saved_model/imgsz, keras, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-seg.pbimgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-seg_edgetpu.tfliteimgsz, quantize, opset, data, fraction, device
PaddlePaddlepaddleyolo26n-seg_paddle_model/imgsz, batch, device
MNNmnnyolo26n-seg.mnnimgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-seg_ncnn_model/imgsz, quantize, batch, device
IMX500imxyolo26n-seg_imx_model/imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-seg_rknn_model/imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-seg_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-seg_axelera_model/imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-seg_deepx_model/imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-seg_qnn.onnximgsz, batch, name, quantize, simplify, opset, data, fraction, device
LiteRTlitertyolo26n-seg.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n-seg_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou
Huawei Ascendascendyolo26n-seg_ascend_model/imgsz, batch, name, quantize, opset, simplify, nms
Apple Core AIcoreaiyolo26n-seg.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 bir YOLO26 segmentasyon modeli eğitmek için, öncelikle veri kümeni YOLO segmentasyon biçiminde hazırlaman gerekir. COCO JSON veri kümelerini dönüştürmek için yerleşik convert_coco aracını kullanabilirsin. Veri kümen hazır olduğunda, modeli Python veya CLI komutlarını kullanarak eğitebilirsin:

    Örnek
    from ultralytics import YOLO
    
    # Load a pretrained YOLO26 segment model
    model = YOLO("yolo26n-seg.pt")
    
    # Train the model
    results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)

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

  • Nesne algılama, nesnelerin çevresine sınırlayıcı kutular çizerek bir görüntüdeki nesneleri belirler ve konumlarını tespit eder; örnek segmentasyonu ise yalnızca sınırlayıcı kutuları belirlemekle kalmaz, her nesnenin tam şeklini de sınırlarıyla ortaya koyar. YOLO26 örnek segmentasyonu modelleri, tespit edilen her nesnenin sınırlarını belirleyen maskeler veya konturlar sağlar; bu da tıbbi görüntüleme veya otonom sürüş gibi nesnelerin kesin şeklini bilmenin önemli olduğu görevler için özellikle kullanışlıdır.

  • Ultralytics YOLO26, yüksek doğruluğu ve gerçek zamanlı performansıyla tanınan son teknoloji bir modeldir ve bu özellikleri onu örnek segmentasyonu görevleri için ideal kılar. YOLO26 Segment modelleri COCO veri kümesi üzerinde önceden eğitilmiş olarak gelir ve çeşitli nesnelerde güçlü performans sağlar. Ayrıca YOLO; eğitim, doğrulama, tahmin ve dışa aktarma işlevlerini sorunsuz entegrasyonla destekleyerek hem araştırma hem de endüstriyel uygulamalar için son derece çok yönlüdür.

  • Önceden eğitilmiş bir YOLO segmentasyon modelini yüklemek ve doğrulamak oldukça basittir. Bunu hem Python hem de CLI kullanarak şu şekilde yapabilirsin:

    Örnek
    from ultralytics import YOLO
    
    # Load a pretrained model
    model = YOLO("yolo26n-seg.pt")
    
    # Validate the model
    metrics = model.val()
    print("Mean Average Precision for boxes:", metrics.box.map)
    print("Mean Average Precision for masks:", metrics.seg.map)

    Bu adımlar, model performansını değerlendirmek için kritik olan Ortalama Kesinlik (mAP) gibi doğrulama metriklerini sağlar.

  • Bir YOLO segmentasyon modelini ONNX formatına aktarmak basittir ve Python veya CLI komutları kullanılarak gerçekleştirilebilir:

    Örnek
    from ultralytics import YOLO
    
    # Load a pretrained model
    model = YOLO("yolo26n-seg.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