Ultralytics YOLO27:
Get Started

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ğitilmiş modellerinin kalitesini değerlendirmeni sağlar. Ultralytics YOLO26'daki Val modu, nesne algılama modellerinin performansını değerlendirmek için kapsamlı bir araç ve metrik seti sunar. Bu kılavuz, modellerinin hem doğru hem de güvenilir olmasını sağlamak üzere Val modunu etkili biçimde kullanmayı anlaman için eksiksiz bir kaynaktır.

İlk doğrulama sonuçları için yayımlanmamış YOLO27 önizlemesine bak.



İzle: Ultralytics Modları Eğitimi: Doğrulama

Neden Ultralytics YOLO ile doğrulama yapmalısın?#

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

  • Hassasiyet: Modelini kapsamlı biçimde değerlendirmek için mAP50, mAP75 ve mAP50-95 gibi doğru metrikler 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ümeleriyle ve görüntü boyutlarıyla doğrula.
  • Hiperparametre Ayarı: Daha iyi performans elde etmek için doğrulama metriklerini kullanarak modelinde ince ayar yap.

Val Modunun Önemli Özellikleri#

YOLO26'nın Val modunun sunduğu dikkat çekici işlevler şunlardır:

  • Otomatik Ayarlar: Modeller, doğrulamayı kolaylaştırmak 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 tercihlerine göre komut satırı arayüzünü veya Python API'yi seç.
  • 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; bu nedenle yolo val model=path/to/best.pt veya YOLO("path/to/best.pt").val(), özgün veri kümesinde eğitim görüntüsü boyutuyla doğrulama yapar. Resmî ağırlıklar, görev için varsayılan veri kümesini kullanır; bunu değiştirmek için data değerini belirt.

Kullanım Örnekleri#

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 sakladığı için bağımsız değişken belirtmen gerekmez: path/to/best.pt, modelin eğitildiği veri kümesinde doğrulama yapar. Resmî ağırlıklar, makinenizde bulunmayan bir eğitim veri kümesi yolunu kaydeder; bu nedenle bir uyarıyla görev için varsayılan coco8.yaml değerine geri döner. Başka bir veri kümesinde doğrulama yapmak için data değerini belirt. Doğrulama bağımsız değişkenlerinin tam listesi için aşağıdaki Bağımsız Değişkenler bölümüne bak.

Windows Çoklu İşlem Hatası

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

Örnek
from ultralytics import YOLO

# Bir model yükle
model = YOLO("yolo26n.pt")  # Resmî bir modeli yükle
model = YOLO("path/to/best.pt")  # özel bir model yükle

# Modeli doğrula
metrics = model.val()  # Bağımsız değişken gerekmez; veri kümesi ve ayarlar hatırlanır
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # Her kategori için mAP50-95 içeren bir liste
metrics.box.image_metrics  # Hassasiyet, geri çağırma, F1, TP, FP ve FN değerlerini içeren görüntü başına metrik sözlüğü

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 yapabilirsin. Bu bağımsız değişkenler; giriş görüntüsü boyutu, toplu işleme ve performans eşikleri gibi unsurları kontrol eder. Doğrulama ayarlarını etkili biçimde özelleştirmene yardımcı olmak için her bağımsız değişkenin ayrıntılı açıklaması aşağıda verilmiştir.

Bağımsız değişkenTürVarsayılanAçıklama
datastrNoneVeri kümesi YAML dosyasının yolunu belirtir (örn. coco8.yaml); dosyada doğrulama verilerinin yolu bulunmalıdır. Sınıflandırma için bunun yerine bir veri kümesi dizini veya yerleşik veri kümesi adı (örn. imagenet10) kullanılır.
imgszint640Girdi görüntülerinin boyutunu tanımlar. İşlemden önce tüm görüntüler bu boyuta getirilir. Daha büyük boyutlar küçük nesnelerde 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_jsonboolFalseTrue ise sonuçları daha ileri analiz, diğer araçlarla entegrasyon veya COCO gibi değerlendirme sunucularına gönderim için bir JSON dosyasına kaydeder. Algılama veri kümelerinde ayrıca tahminleri faster-coco-eval ile değerlendirir ve küçük, orta ve büyük nesneler için mAP değerlerini raporlar; eğitim sırasında bu değerler results.csv içindeki metrics/mAP_small(B), metrics/mAP_medium(B) ve metrics/mAP_large(B) olarak günlüğe kaydedilir.
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, mAP ve algılama karmaşıklık matrisleri bu değeri kullanır; conf değerinin 0.25 gibi daha yüksek olması, matrisi tahmin çıktısına daha çok yaklaştırır, ancak mAP değerini düşürebilir. Özet kesinlik ve geri çağırma, maksimum F1 güvenini kullanır; bu nedenle confusion_matrix.png değerinden elde edilen 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 eşiğini ayarlar. Yinelenen algılamaların elenmesini denetler.
max_detint300Görüntü başına en yüksek algılama sayısını sınırlar. Detect, segment, pose ve OBB görevlerinde bu değer 300 olarak bırakılırsa doğrulanan bölümde bir görüntünün etiketli nesne sayısı bu değeri aştığında, uyarı verilerek sınır en yüksek etiketli nesne sayısına çıkarılır; diğer tüm değerler korunur ve bir görüntü bu değeri aşarsa geri çağırmanın sınırlanabileceğine dair uyarı verilir.
quantizeint veya strNoneDoğrulama hassasiyeti: 16/"fp16" ve 32/"fp32"/unset, PyTorch ve TorchScript modelleri için FP16 veya FP32 hesaplamayı seçer (CPU'da FP32); diğer biçimler, model yapıtının ve çalışma zamanının seçtiği hassasiyeti kullanır. 16 için OpenVINO, istemcide girdiyi hâlâ FP16'ya yuvarlar ve çalışma zamanı hassasiyetini değiştirmeden tekrar FP32'ye genişletir. INT8/PTQ nicemlemesi dışa aktarma sırasında yapılandırılır ve ardından dışa 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 seçer. Birden fazla CUDA cihazı virgülle ayrılarak belirtilebilir.
dnnboolFalseTrue ise ONNX model çıkarımında OpenCV DNN modülünü kullanarak PyTorch çıkarım yöntemlerine alternatif sunar.
plotsboolTrueTrue olarak ayarlandığında, model performansını görsel olarak değerlendirmek için tahminler ile gerçek değerlerin grafiklerini, karmaşıklık matrislerini ve PR eğrilerini oluşturup kaydeder.
classeslist[int]NoneDeğerlendirilecek sınıf kimliklerinin listesini belirtir. Değerlendirme sırasında sınıfları filtreleyerek yalnızca belirli sınıflara odaklanmak için kullanışlıdır.
rectboolTrueTrue ise benzer en-boy oranlarına sahip görüntüleri dikdörtgen biçimli gruplar halinde toplar. Her boyutu stride katının yukarısına yuvarlamadan önce yarım stride ekler (semantic için ekstra yarım stride eklenmez). Stride 32 olduğunda, imgsz=640 değerindeki 640×640 boyutlu görüntü, 16 px ofsetle 672×672 boyutuna dönüşür; predict ise 640×640 kullanır, bu nedenle metrikler farklılık gösterebilir. rect=False, kare görüntüler için predict ile eşleşir. Görüntüleri imgsz boyutunda kareye esneten depth için bu ayar yok sayılır.
splitstr'val'Doğrulama için kullanılacak veri kümesi bölümünü belirler (val, test veya train). Performansı değerlendirmek için veri bölümünü seçme esnekliği sağlar.
fractionfloat, int veya list1.0Doğrulanan bölümün alt kümesi. [train, val, test] listesi verildiğinde, split ile eşleşen girdi uygulanır (1 = bölümün tamamı, 1 üzerindeki tam sayılar = görüntü sayıları; belirtilmeyen girdiler bölümün tamamını kullanır). Skaler değer yalnızca split=train için geçerlidir; val ve test bu durumda bölümün tamamını kullanır.
projectstrNoneDoğrulama çıktılarının kaydedileceği proje dizininin adı. Farklı deneylerin veya modellerin sonuçlarını düzenlemeye yardımcı olur.
namestrNoneDoğrulama çalıştırmasının adı. Doğrulama günlüklerinin ve çıktılarının saklandığı proje klasöründe bir alt dizin oluşturmak için kullanılır.
verboseboolTrueTrue ise doğrulama sürecinde sınıf başına metrikler, toplu iş ilerlemesi ve ek hata ayıklama bilgileri dahil ayrıntılı bilgileri gösterir.
save_txtboolFalseTrue ise algılama sonuçlarını, görüntü başına bir dosya olacak şekilde metin dosyalarına kaydeder; bu dosyalar daha ileri analiz, özel son işleme veya diğer sistemlerle entegrasyon için kullanışlıdır.
save_confboolFalseTrue ise save_txt etkin olduğunda kaydedilen metin dosyalarına güven değerlerini ekleyerek 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şlemeyi hızlandırabilir, ancak CPU kullanımını artırabilir. 0 olarak ayarlandığında ana iş parçacığı kullanılır; bu, bazı ortamlarda daha kararlı olabilir.
augmentboolFalseDoğrulama sırasında test zamanı artırmayı (TTA) etkinleştirir; girdinin dönüştürülmüş sürümlerinde çıkarım yaparak çıkarım hızından ödün verme pahasına algılama doğruluğunu artırabilir. Yalnızca Ultralytics PyTorch modellerinde kullanılabilir.
agnostic_nmsboolFalseSınıftan bağımsız Maksimum Olmayan Bastırmayı etkinleştirir; tahmin edilen sınıfları ne olursa olsun, örtüşen kutular arasında puanı daha düşük olanları bastırır. Örnek odaklı uygulamalarda kullanışlıdır. NMS'siz çıkarımda (YOLO26 veya YOLOv10'da nms=False), bu ayar yalnızca aynı algılamanın birden fazla sınıf etiketiyle görünmesini önler (IoU=1.0 yinelenenleri); farklı kutular arasında IoU eşiğine dayalı bastırma yapmaz.
single_clsboolFalseDoğrulama sırasında tüm sınıfları tek bir sınıf olarak ele alır. İkili algılama görevlerinde veya sınıf ayrımlarının önemli olmadığı durumlarda model performansını değerlendirmek için 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österir. Eşleşmeleri ve hataları daha sade görüntülemek için False olarak ayarla.
show_confboolTruevisualize=True olduğunda doğrulama görselleştirmelerinde güven puanlarını gösterir. Eşleşmeleri ve hataları daha sade görüntülemek için False olarak ayarla.
compilebool veya strFalsePyTorch 2.x torch.compile grafik derlemesini backend='inductor' ile etkinleştirir. True → "default", devre dışı bırakmak için False veya "default", "reduce-overhead", "max-autotune-no-cudagraphs" gibi bir dize modu kabul eder. Desteklenmiyorsa uyarı vererek 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ümlerin yüklü olduğu, oneDNN etkin 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 olmayan CPU'lar ve dışa aktarılmış biçimler değişmeden kalır; eğitim sırasındaki doğrulama, eğitim modelinin düzenini korur.
nmsbool, isteğe bağlıNoneVarsayılan olarak NMS ile bire-çok çıkarım yapar (None veya True). Kullanılabiliyorsa NMS'siz bire-bir başlığı kullanmak için False değerini ayarla. Ayrıntılar için Uçtan Uca Algılama kılavuzuna bak.

Bu ayarların her biri doğrulama sürecinde önemli bir rol oynar ve YOLO modellerinin özelleştirilebilir, verimli biçimde 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#



İzle: Model Doğrulama Sonuçları CSV, JSON, SQL, Polars DataFrame ve Daha Fazlasına Nasıl Aktarılır

Explore model validation and different export methods in Google Colab

Aşağıdaki örneklerde, özel bağımsız değişkenlerle bir YOLO modelinin Python ve CLI kullanılarak nasıl doğrulanacağı gösterilmektedir.

Örnek
from ultralytics import YOLO

# Bir model yükle
model = YOLO("yolo26n.pt")

# Doğrulama ayarlarını özelleştir
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.7, device="0")
ConfusionMatrix'i dışa aktar

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 Hassasiyet, Geri Çağırma ve F1

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

from ultralytics import YOLO

# Bir model yükle
model = YOLO("yolo26n.pt")

# Doğrulama yap ve görüntü başına metriklere eriş
results = model.val(data="coco8.yaml")

# image_metrics, anahtar olarak görüntü dosyası adlarını kullanan bir sözlüktür
print(results.box.image_metrics)
# Output: {'image1.jpg': {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}, ...}

# Belirli bir görüntünün metriklerine eriş
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 girdi şu anahtarları içerir:

AnahtarAçıklama
precisionGörüntünün hassasiyet puanı (tp / (tp + fp)).
recallGörüntünün geri çağırma puanı (tp / (tp + fn)).
f1Hassasiyet ve geri çağırmanın harmonik ortalaması.
tpGörüntüdeki doğru pozitiflerin sayısı.
fpGörüntüdeki yanlış pozitiflerin sayısı.
fnGörüntüdeki yanlış negatiflerin sayısı.

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

Döndürülen metrik nesnesi, sonraki analizler için dışa aktarma yardımcılarını da sunar:

YöntemDönüş TürüAçı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 dizgesini döndürür.
to_json()strDoğrulama sonuçlarını JSON biçiminde dışa aktarır ve JSON dizgesini döndürür.

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

Sırada ne var?#

Metriklerden memnun musun? Dağıtım biçimine modeli aktar. Doğruluk istediğin gibi değilse, farklı hiperparametrelerle veya daha fazla eğitim verisiyle geri dönüp yeniden eğit.

Sık Sorulan Sorular#

  • YOLO26 modelini doğrulamak için Ultralytics'in sunduğu 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
    
    # Bir model yükle
    model = YOLO("yolo26n.pt")
    
    # Modeli doğrula
    metrics = model.val()
    print(metrics.box.map)  # map50-95

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

    yolo detect val model=yolo26n.pt data=coco8.yaml

    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ç önemli metrik sunar. Bunlar şunlardır:

    • mAP50 (0.5 IoU eşiğinde ortalama Ortalama Hassasiyet)
    • mAP75 (0.75 IoU eşiğinde ortalama Ortalama Hassasiyet)
    • mAP50-95 (0.5 ile 0.95 arasındaki birden fazla IoU eşiğinde ortalama Ortalama Hassasiyet)

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

    metrics = model.val()  # `model` öğesinin yüklendiği varsayılır
    print(metrics.box.map)  # mAP50-95
    print(metrics.box.map50)  # mAP50
    print(metrics.box.map75)  # mAP75
    print(metrics.box.maps)  # Her kategori için mAP50-95 listesi
    print(metrics.box.image_metrics)  # Hassasiyet, geri çağırma, F1, TP, FP ve FN değerlerini içeren görüntü başına metrik sözlüğü

    Performansı eksiksiz değerlendirmek için bu metriklerin tümünü incelemek çok önemlidir. Daha fazla bilgi için Val Modunun Önemli Özellikleri bölümüne bak.

  • Ultralytics YOLO'yu doğrulama için kullanmak çeşitli avantajlar sunar:

    • Hassasiyet: YOLO26; mAP50, mAP75 ve mAP50-95 dahil olmak üzere doğru performans metrikleri sunar.
    • Kolaylık: Modeller eğitim ayarlarını hatırlar, böylece doğrulama kolaylaşır.
    • Esneklik: Aynı veya farklı veri kümeleri ve görüntü boyutlarıyla doğrulama yapabilirsin.
    • Hiperparametre Ayarı: Doğrulama metrikleri, daha iyi performans için modellerde ince ayar yapmaya yardımcı olur.

    Bu avantajlar, modellerinin kapsamlı biçimde değerlendirilmesini ve daha iyi sonuçlar için iyileştirilmesini sağlar. Bu avantajlar hakkında daha fazla bilgi için Neden Ultralytics YOLO ile doğrulama yapmalısın bölümüne bak.

  • Evet, YOLO26 modelini bir özel veri kümesi kullanarak doğrulayabilirsin. Veri kümesi YAML dosyanın yolunu data bağımsız değişkeniyle belirt; bu dosyada doğrulama verilerinin yolu bulunmalıdır. Sınıflandırma içinse bir veri kümesi dizini veya yerleşik bir veri kümesi adı (ör. imagenet10) kullanılır.

    Not

    Doğrulama, model.names ile görüntüleyebileceğin ve veri kümesinin tanımladığı sınıf adlarından farklı olabilecek modelin kendi sınıf adlarıyla yapılır.

    Python örneği:

    from ultralytics import YOLO
    
    # Bir model yükle
    model = YOLO("yolo26n.pt")
    
    # Özel bir veri kümesiyle doğrula
    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ştirme seçeneği için Bağımsız Değişkenlerle Doğrulama Örneği 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. Bunu hem Python API hem de CLI ile yapabilirsin.

    Python örneği:

    from ultralytics import YOLO
    
    # Bir model yükle
    model = YOLO("yolo26n.pt")
    
    # Doğrulama sonuçlarını JSON'a kaydet
    metrics = model.val(save_json=True)

    CLI kullanarak örnek:

    yolo val model=yolo26n.pt save_json=True

    Tespit veri kümelerinde save_json=True, faster-coco-eval aracılığıyla küçük, orta ve büyük nesneler için mAP değerlerini de raporlar. Daha fazla bilgi için YOLO Modeli Doğrulama Bağımsız Değişkenleri bölümüne bak.

Yorumlar