Ultralytics YOLO27:

Ultralytics YOLO ile Model Doğrulama#

Ultralytics YOLO ecosystem and integrations

Giriş#

Doğrulama, makine öğrenimi işlem hattında kritik bir adımdır ve eğittiğin modellerin kalitesini değerlendirmeni sağlar. Ultralytics YOLO26'daki Val modu, nesne algılama modellerinin performansını değerlendirmek için güçlü bir araç ve metrik paketi sunar. Bu kılavuz, modellerinin hem doğru hem de güvenilir olmasını sağlamak üzere Val modunu etkili bir şekilde nasıl kullanacağını anlaman için kapsamlı bir kaynaktır.

Ön hazırlık doğrulama sonuçları için yayınlanmamış YOLO27 önizlemesine göz at.



Watch: Ultralytics Modes Tutorial: Validation

Neden Ultralytics YOLO ile Doğrulama Yapmalısın?#

YOLO26'nın Val modunu kullanmanın avantajları şunlardır:

  • Kesinlik: Modelini kapsamlı şekilde değerlendirmek için mAP50, mAP75 ve mAP50-95 gibi doğru metrikleri elde et.
  • Kolaylık: Eğitim ayarlarını hatırlayan yerleşik özelliklerden yararlanarak doğrulama sürecini basitleştir.
  • Esneklik: Modelini aynı veya farklı veri kümeleri ve görüntü boyutlarıyla doğrula.
  • Hiperparametre Ayarlama: Daha iyi performans elde etmek üzere modelinde ince ayar yapmak için doğrulama metriklerini kullan.

Val Modunun Temel Özellikleri#

YOLO26'nın Val modu tarafından sunulan dikkat çekici işlevler şunlardır:

  • Otomatik Ayarlar: Modeller, kolay doğrulama için eğitim yapılandırmalarını hatırlar.
  • Çoklu Metrik Desteği: Modelini çeşitli doğruluk metriklerine göre değerlendir.
  • CLI ve Python API: Doğrulama için tercihine göre komut satırı arayüzü veya Python API arasından seçim yap.
  • Veri Uyumluluğu: Eğitim aşamasında kullanılan veri kümelerinin yanı sıra özel veri kümeleriyle de sorunsuz çalışır.
İpucu
  • YOLO26 modelleri eğitim ayarlarını otomatik olarak hatırlar; böylece bir modeli aynı görüntü boyutunda ve orijinal veri kümesinde yalnızca yolo val model=yolo26n.pt veya YOLO("yolo26n.pt").val() ile kolayca doğrulayabilirsin.

Kullanım Örnekleri#

COCO8 veri kümesinde eğitilmiş bir YOLO26n modelinin doğruluğunu doğrula. model, eğitim data değerini ve bağımsız değişkenlerini model öznitelikleri olarak koruduğundan herhangi bir bağımsız değişken gerekmez. Doğrulama bağımsız değişkenlerinin tam listesi için aşağıdaki Arguments bölümüne bak.

Windows Çoklu İşleme Hatası

Windows'ta doğrulamayı bir betik olarak başlatırken RuntimeError alabilirsin. Sorunu çözmek için doğrulama kodundan önce bir if __name__ == "__main__": bloğu ekle.

Örnek
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.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
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # a list containing mAP50-95 for each category
metrics.box.image_metrics  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

YOLO Modeli Doğrulama Bağımsız Değişkenleri#

YOLO modellerini doğrularken değerlendirme sürecini iyileştirmek için çeşitli bağımsız değişkenlerde ince ayar yapılabilir. Bu bağımsız değişkenler; giriş görüntüsü boyutu, toplu işleme ve performans eşikleri gibi unsurları kontrol eder. Aşağıda, doğrulama ayarlarını etkili bir şekilde özelleştirmene yardımcı olmak için her bağımsız değişkenin ayrıntılı açıklaması verilmiştir.

Bağımsız değişkenTürVarsayılanAçıklama
datastrNoneDoğrulama verilerinin yolunu içermesi gereken veri kümesi YAML dosyasının yolunu belirtir (ör. coco8.yaml). Sınıflandırma ise bir veri kümesi dizini veya yerleşik veri kümesi adı alır (ör. imagenet10).
imgszint640Giriş görüntülerinin boyutunu belirler. İşlenmeden önce tüm görüntüler bu boyuta yeniden boyutlandırılır. Daha büyük boyutlar küçük nesneler için doğruluğu artırabilir ancak hesaplama süresini uzatır.
batchint16Toplu iş başına görüntü sayısını ayarlar. Daha yüksek değerler GPU belleğini daha verimli kullanır ancak daha fazla VRAM gerektirir. Kullanılabilir donanım kaynaklarına göre ayarla.
save_jsonboolFalseEğer True ise, sonuçları ileri düzey analiz, diğer araçlarla entegrasyon veya COCO gibi değerlendirme sunucularına gönderim için bir JSON dosyasına kaydeder. Tespit veri setlerinde ayrıca tahminleri faster-coco-eval ile değerlendirir ve eğitim sırasında metrics/mAP_small(B), metrics/mAP_medium(B) ve metrics/mAP_large(B) olarak results.csv içinde kaydedilen küçük, orta ve büyük nesne mAP değerlerini raporlar.
conffloat0.001Algılamalar için minimum güven eşiğini ayarlar. Daha düşük değerler geri çağırmayı artırır ancak daha fazla yanlış pozitif oluşturabilir. Kesinlik-geri çağırma eğrileri varsayılan olarak 0.001 kullanır; algılama karmaşıklık matrisleri açıkça belirtilen conf değerini veya belirtilmediğinde 0.25 değerini kullanır. Özet kesinlik ve geri çağırma, maksimum F1 güven değerini kullanır; bu nedenle confusion_matrix.png değerinden türetilen değerlerden farklı olabilir. Bellek kullanımını azaltmak için OBB doğrulamasında varsayılan değer 0.01 olur.
ioufloat0.7Maksimum Olmayan Bastırma için Kesişim-Birleşim Oranı eşiğini ayarlar. Yinelenen algılamaların elenmesini kontrol eder.
max_detint300Görsel başına maksimum algılama sayısını sınınrlar. detect, segment, pose ve OBB için, 300 olarak bırakıldığında, bir görsel bu değeri aştığında doğrulanmış bölmedeki en büyük etiketli nesne sayısına yükseltilir ve bir uyarı verilir; diğer tüm değerler korunur ve bir görsel bu değeri aştığında geri çağrının (recall) sınırlandırılabileceğine dair bir uyarı verilir.
quantizeint veya strNoneDoğrulama hassasiyeti: 16/"fp16" ve 32/"fp32"/ayarlanmamış, PyTorch ve TorchScript modelleri için FP16 veya FP32 hesaplamasını seçer; diğer formatlar, yapılarının ve çalışma zamanlarının seçtiği hassasiyette hesaplama yapar. 16 seviyesinde OpenVINO, çalışma zamanının hesaplama yaptığı yeri değiştirmeden, girdiyi istemci tarafında hâlâ FP16 olarak yuvarlar ve tekrar FP32'ye genişletir. INT8/PTQ nicelemesi, export sırasında yapılandırılır ve ardından dışarı aktarılan model doğrulanarak kullanılır. Kullanımdan kaldırılan half bayrağının yerini alır.
devicestrNoneDoğrulama için cihazı belirtir (cpu, cuda:0, npu, npu:0 vb.). None olduğunda kullanılabilir en iyi cihazı otomatik olarak seçer. Birden fazla CUDA cihazı virgülle ayrılarak belirtilebilir.
dnnboolFalseTrue ise ONNX model çıkarımı için OpenCV DNN modülünü kullanır ve PyTorch çıkarım yöntemlerine alternatif sunar.
plotsboolTrueTrue olarak ayarlandığında model performansını görsel olarak değerlendirmek için tahminlerle gerçek değerleri, karmaşıklık matrislerini ve PR eğrilerini gösteren grafikler oluşturur ve kaydeder.
classeslist[int]NoneDeğerlendirilecek sınıf kimliklerinin listesini belirtir. Değerlendirme sırasında belirli sınıfları filtrelemek ve yalnızca bunlara odaklanmak için kullanışlıdır.
rectboolTrueTrue ise toplu işleme için dikdörtgen çıkarım kullanır; dolguyu azaltır ve görüntüleri özgün en-boy oranlarında işleyerek hızı ve verimliliği artırabilir. Her görüntüyü doldurmak yerine sabit bir imgsz karesine gerdiği için depth doğrulamasında yok sayılır.
splitstr'val'Doğrulamada kullanılacak veri kümesi bölümünü belirler (val, test veya train). Performans değerlendirmesi için veri bölümünü seçme esnekliği sağlar.
fractionfloat, int veya list1.0Doğrulanmış veri kümesi bölümünün bir alt kümesi. Bir [train, val, test] listesi ile split ile eşleşen girdi geçerli olur (1 = tam bölüm, 1 üzerindeki tamsayılar = görüntü sayıları; atlanan girdiler tamdır). Bir skaler yalnızca split=train ile geçerli olur; val ve test daha sonra tam bölümü kullanır.
projectstrNoneDoğrulama çıktılarının kaydedildiği proje dizininin adı. Farklı deneylerden veya modellerden elde edilen sonuçları düzenlemeye yardımcı olur.
namestrNoneDoğrulama çalıştırmasının adı. Doğrulama günlüklerinin ve çıktılarının depolandığı proje klasörü içinde bir alt dizin oluşturmak için kullanılır.
verboseboolTrueTrue ise sınıf başına metrikler, toplu iş ilerlemesi ve ek hata ayıklama bilgileri dahil olmak üzere doğrulama süreci sırasında ayrıntılı bilgileri görüntüler.
save_txtboolFalseTrue ise algılama sonuçlarını, görüntü başına bir dosya olacak şekilde metin dosyalarına kaydeder; bu, daha ileri analiz, özel son işleme veya diğer sistemlerle entegrasyon için kullanışlıdır.
save_confboolFalseTrue ise ve save_txt etkinse, kaydedilen metin dosyalarına güven değerlerini dahil ederek analiz ve filtreleme için daha ayrıntılı çıktı sağlar.
workersint8Veri yükleme için çalışan iş parçacığı sayısı. Daha yüksek değerler veri ön işleme hızını artırabilir ancak CPU kullanımını yükseltebilir. 0 olarak ayarlanması, bazı ortamlarda daha kararlı olabilen ana iş parçacığını kullanır.
augmentboolFalseDoğrulama sırasında test zamanı artırmayı (TTA) etkinleştirir; girdinin dönüştürülmüş sürümleri üzerinde çıkarım çalıştırarak çıkarım hızı karşılığında algılama doğruluğunu potansiyel olarak artırır. Yalnızca Ultralytics PyTorch modellerinde kullanılabilir.
agnostic_nmsboolFalseSınıftan bağımsız Non-Maximum Suppression özelliğini etkinleştirir; bu, tahmin edilen sınıflarına bakılmaksızın daha düşük puanlı çakışan kutuları bastırır. Örnek odaklı uygulamalar için yararlıdır. NMS içermeyen çıkarımla (nms=False YOLO26 veya YOLOv10 üzerinde), bu yalnızca aynı algılamanın birden fazla sınıf etiketiyle görünmesini engeller (IoU=1.0 kopyaları) ve farklı kutular arasında IoU eşiğine dayalı bastırma gerçekleştirmez.
single_clsboolFalseDoğrulama sırasında tüm sınıfları tek bir sınıf olarak ele alır. Model performansını ikili algılama görevlerinde değerlendirmek veya sınıf ayrımlarının önemli olmadığı durumlarda kullanışlıdır.
visualizeboolFalseHer görüntü için gerçek değerleri, doğru pozitifleri, yanlış pozitifleri ve yanlış negatifleri görselleştirir. Hata ayıklama ve model yorumlama için kullanışlıdır.
show_labelsboolTruevisualize=True olduğunda doğrulama görselleştirmelerinde sınıf etiketlerini görüntüler. Eşleşmelerin ve hataların daha sade görünmesi için False olarak ayarla.
show_confboolTruevisualize=True olduğunda doğrulama görselleştirmelerinde güven skorlarını görüntüler. Eşleşmelerin ve hataların daha sade görünmesi için False olarak ayarla.
compilebool veya strFalsePyTorch 2.x torch.compile grafik derlemesini backend='inductor' ile etkinleştirir. True"default", False → devre dışı veya "default", "reduce-overhead", "max-autotune-no-cudagraphs" gibi bir dize modu kabul eder. Desteklenmiyorsa bir uyarıyla eager moda geri döner.
channels_lastboolNoneYerel PyTorch doğrulaması için channels_last (NHWC) bellek biçimini kullanır. None, PyTorch 1.13 veya daha yeni sürümle oneDNN etkinleştirilmiş Linux ve Windows x86 CPU'larda bunu otomatik olarak etkinleştirir; False devre dışı bırakır ve True, desteklenen x86 CPU veya CUDA cihazlarında kullanılmasını ister. ARM64, MPS, eski PyTorch sürümleri, oneDNN içermeyen CPU'lar ve dışa aktarılan biçimler değişmeden kalır; eğitim sırasındaki doğrulama, eğitim modeli düzenini korur.
nmsbool, isteğe bağlıNoneVarsayılan olarak NMS ile bire-çok çıkarım çalıştırır (None veya True). Mevcut olduğunda NMS içermeyen bire-bir başlığı kullanmak için False değerini ayarla. Ayrıntılar için Uçtan Uca Algılama kılavuzuna göz at.

Bu ayarların her biri doğrulama sürecinde hayati bir rol oynayarak YOLO modellerinin özelleştirilebilir ve verimli şekilde değerlendirilmesini sağlar. Bu parametreleri özel ihtiyaçlarına ve kaynaklarına göre ayarlamak, doğruluk ile performans arasında en iyi dengeyi kurmana yardımcı olabilir.

Bağımsız Değişkenlerle Doğrulama Örneği#



Watch: How to Export Model Validation Results in CSV, JSON, SQL, Polars DataFrame & More

Explore model validation and different export methods in Google Colab

Aşağıdaki örnekler, özel bağımsız değişkenlerle Python ve CLI üzerinden YOLO modeli doğrulamasını gösterir.

Örnek
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Customize validation settings
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.7, device="0")
ConfusionMatrix'i Dışa Aktarma

Sağlanan kodu kullanarak ConfusionMatrix sonuçlarını farklı biçimlerde de kaydedebilirsin.

from ultralytics import YOLO

model = YOLO("yolo26n.pt")

results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())
Görüntü Başına Kesinlik, Geri Çağırma ve F1

Doğrulama, sınıflandırma dışındaki tüm görevler için görüntü başına kesinlik, geri çağırma, F1, TP, FP ve FN metriklerini (0,5 IoU eşiğinde) depolar. Doğrulama tamamlandıktan sonra bunlara algılama ve OBB için results.box.image_metrics, segmentasyon için results.seg.image_metrics ve poz için results.pose.image_metrics üzerinden erişebilirsin.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Validate and access per-image metrics
results = model.val(data="coco8.yaml")

# image_metrics is a dictionary with image filenames as keys
print(results.box.image_metrics)
# Output: {'image1.jpg': {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}, ...}

# Access metrics for a specific image
results.box.image_metrics["image1.jpg"]  # {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}

image_metrics içindeki her giriş aşağıdaki anahtarları içerir:

AnahtarAçıklama
precisionGörüntünün kesinlik skoru (tp / (tp + fp)).
recallGörüntünün geri çağırma skoru (tp / (tp + fn)).
f1Kesinlik ve geri çağırmanın harmonik ortalaması.
tpGörüntü için doğru pozitif sayısı.
fpGörüntü için yanlış pozitif sayısı.
fnGörüntü için yanlış negatif sayısı.

Bu özellik algılama, segmentasyon, poz ve OBB görevlerinde kullanılabilir.

Döndürülen metrik nesnesi, aşağı akış analizi için dışa aktarma yardımcılarını da ortaya çıkarır:

YöntemDöndürülen TürAçıklama
summary()List[Dict[str, Any]]Doğrulama sonuçlarını özetlenmiş bir sözlüğe dönüştürür.
to_df()DataFrameDoğrulama sonuçlarını yapılandırılmış bir Polars DataFrame olarak döndürür.
to_csv()strDoğrulama sonuçlarını CSV biçiminde dışa aktarır ve CSV dizesini döndürür.
to_json()strDoğrulama sonuçlarını JSON biçiminde dışa aktarır ve JSON dizesini döndürür.

Daha fazla ayrıntı için DataExportMixin sınıfı belgelerine bak.

Sırada Ne Var?#

Metriklerden memnun musun? Modeli bir dağıtım biçimine dışa aktar. Doğruluk beklentileri karşılamıyorsa farklı hiperparametrelerle veya daha fazla eğitim verisiyle geri dönüp yeniden eğit.

SSS#

  • YOLO26 modelini doğrulamak için Ultralytics tarafından sağlanan Val modunu kullanabilirsin. Örneğin Python API'yi kullanarak bir modeli yükleyebilir ve şu şekilde doğrulama çalıştırabilirsin:

    from ultralytics import YOLO
    
    # Load a model
    model = YOLO("yolo26n.pt")
    
    # Validate the model
    metrics = model.val()
    print(metrics.box.map)  # map50-95

    Alternatif olarak komut satırı arayüzünü (CLI) kullanabilirsin:

    yolo val model=yolo26n.pt

    Daha fazla özelleştirme için hem Python hem de CLI modlarında imgsz, batch ve conf gibi çeşitli bağımsız değişkenleri ayarlayabilirsin. Parametrelerin tam listesi için YOLO Modeli Doğrulama Bağımsız Değişkenleri bölümüne bak.

  • YOLO26 modeli doğrulaması, model performansını değerlendirmek için birkaç temel metrik sağlar. Bunlar şunlardır:

    • mAP50 (0,5 IoU eşiğindeki ortalama kesinlik)
    • mAP75 (0,75 IoU eşiğindeki ortalama kesinlik)
    • mAP50-95 (0,5 ile 0,95 arasındaki birden çok IoU eşiğinde ortalama kesinlik)

    Python API'yi kullanarak bu metriklere şu şekilde erişebilirsin:

    metrics = model.val()  # assumes `model` has been loaded
    print(metrics.box.map)  # mAP50-95
    print(metrics.box.map50)  # mAP50
    print(metrics.box.map75)  # mAP75
    print(metrics.box.maps)  # list of mAP50-95 for each category
    print(metrics.box.image_metrics)  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

    Eksiksiz bir performans değerlendirmesi için tüm bu metrikleri incelemek çok önemlidir. Daha fazla ayrıntı için Val Modunun Temel Özellikleri bölümüne bak.

  • Doğrulama için Ultralytics YOLO kullanmak çeşitli avantajlar sağlar:

    • Kesinlik: YOLO26, mAP50, mAP75 ve mAP50-95 dahil olmak üzere doğru performans metrikleri sunar.
    • Kolaylık: Modeller eğitim ayarlarını hatırladığından doğrulama işlemi kolayca gerçekleştirilir.
    • Esneklik: Aynı veya farklı veri kümeleri ve görüntü boyutlarıyla doğrulama yapabilirsin.
    • Hiperparametre Ayarlama: Doğrulama metrikleri, daha iyi performans için modellerde ince ayar yapmana yardımcı olur.

    Bu avantajlar, modellerinin kapsamlı şekilde değerlendirilmesini ve üstün sonuçlar için optimize edilmesini sağlar. Bu avantajlar hakkında daha fazla bilgi için Ultralytics YOLO ile Neden Doğrulama Yapmalısın bölümüne bak.

  • Evet, YOLO26 modelini özel bir veri kümesi kullanarak doğrulayabilirsin. Veri kümenin yolunu içeren YAML dosyasının yolunu data bağımsız değişkeniyle belirt; bu dosya doğrulama verilerinin yolunu da içermelidir. Sınıflandırma ise bunun yerine bir veri kümesi dizini veya yerleşik bir veri kümesi adı (ör. imagenet10) alır.

    Not

    Doğrulama, model.names kullanılarak görüntülenebilen modelin kendi sınıf adlarıyla gerçekleştirilir; bu adlar, veri kümesinin kendisinde tanımlananlardan farklı olabilir.

    Python ile örnek:

    from ultralytics import YOLO
    
    # Load a model
    model = YOLO("yolo26n.pt")
    
    # Validate with a custom dataset
    metrics = model.val(data="path/to/your/custom_dataset.yaml")
    print(metrics.box.map)  # map50-95

    CLI kullanarak örnek:

    yolo val model=yolo26n.pt data=path/to/your/custom_dataset.yaml

    Doğrulama sırasında daha fazla özelleştirilebilir seçenek için Bağımsız Değişkenlerle Örnek Doğrulama bölümüne bak.

  • Doğrulama sonuçlarını JSON dosyasına kaydetmek için doğrulamayı çalıştırırken save_json bağımsız değişkenini True olarak ayarlayabilirsin. Bu işlem hem Python API hem de CLI ile yapılabilir.

    Python ile örnek:

    from ultralytics import YOLO
    
    # Load a model
    model = YOLO("yolo26n.pt")
    
    # Save validation results to JSON
    metrics = model.val(save_json=True)

    CLI kullanarak örnek:

    yolo val model=yolo26n.pt save_json=True

    Nesne tespiti veri kümelerinde save_json=True, faster-coco-eval aracılığıyla küçük, orta ve büyük nesne mAP değerlerini de rapor eder. Daha fazla ayrıntı için Arguments for YOLO Model Validation bölümünü kontrol et.

Yorumlar