Ultralytics YOLO ile Model Doğrulama

Ultralytics YOLO ecosystem and integrations

Giriş

Doğrulama, makine öğrenimi işlem hattında eğitilmiş modellerinin kalitesini değerlendirmeni sağlayan kritik bir adımdır. 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 olduğundan emin olmak için Val modunu nasıl etkin bir şekilde kullanacağını anlaman için eksiksiz bir kaynak görevi görür.



Watch: Ultralytics Modes Tutorial: Validation

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

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

  • Hassasiyet: Modelini kapsamlı bir şekilde değerlendirmek için mAP50, mAP75 ve mAP50-95 gibi doğru metrikler elde et.
  • Kolaylık: Doğrulama sürecini basitleştiren ve eğitim ayarlarını hatırlayan yerleşik özelliklerden faydalan.
  • Esneklik: Modelini aynı veya farklı veri kümeleri ve görüntü boyutları ile doğrula.
  • Hiperparametre Ayarı: Daha iyi performans için modeline ince ayar yapmak adına doğrulama metriklerini kullan.

Val Modunun Temel Özellikleri

Bunlar, YOLO26'nın Val modu tarafından sunulan önemli işlevlerdir:

  • Otomatik Ayarlar: Modeller, basit bir doğrulama için eğitim yapılandırmalarını hatırlar.
  • Çoklu Metrik Desteği: Modelini bir dizi doğruluk metriğine göre değerlendir.
  • CLI ve Python API: Doğrulama için tercihe bağlı olarak 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ümeleriyle ve özel veri kümeleriyle sorunsuz bir şekilde ç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 sadece yolo val model=yolo26n.pt veya YOLO("yolo26n.pt").val() ile kolayca doğrulayabilirsin.

Kullanım Örnekleri

Eğitilmiş bir YOLO26n modelini COCO8 veri kümesi üzerinde doğruluk açısından doğrula. model, eğitim data ayarlarını ve argümanlarını model öznitelikleri olarak koruduğundan hiçbir argümana gerek yoktur. Doğrulama argümanlarının tam listesi için aşağıdaki Argümanlar bölümüne bak.

Windows Çoklu İşlem Hatası

Windows'ta, doğrulamayı bir betik olarak başlatırken RuntimeError alabilirsin. Bunu çö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 Model Doğrulaması için Argümanlar

YOLO modellerini doğrulerken, değerlendirme sürecini optimize etmek için çeşitli argümanlar üzerinde ince ayar yapılabilir. Bu argümanlar giriş görüntüsü boyutu, toplu işleme ve performans eşikleri gibi yönleri kontrol eder. Doğrulama ayarlarını etkili bir şekilde özelleştirmene yardımcı olması için her bir argümanın ayrıntılı dökümü aşağıdadır.

ArgümanTürVarsayılanAçıklama
datastrNoneVeri seti yapılandırma dosyasına (ör. coco8.yaml) giden yolu belirtir. Bu dosya, doğrulama verisine giden yolu içermelidir.
imgszint640Giriş görüntülerinin boyutunu tanımlar. İş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.
batchint16Yığın başına düşen 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ı daha fazla analiz, diğer araçlarla entegrasyon veya COCO gibi değerlendirme sunucularına gönderim için bir JSON dosyasına kaydeder.
conffloat0.001Tespitler için minimum güven eşiğini ayarlar. Daha düşük değerler geri çağırmayı (recall) artırır ancak daha fazla yanlış pozitif (false positive) ortaya çıkarabilir. Hassasiyet-geri çağırma eğrilerini hesaplamak için doğrulama sırasında kullanılır.
ioufloat0.7Sets the Intersection Over Union threshold for Non-Maximum Suppression. Controls duplicate detection elimination.
max_detint300Görüntü başına maksimum tespit sayısını sınırlar. Yoğun sahnelerde aşırı tespiti önlemek ve hesaplama kaynaklarını yönetmek için kullanışlıdır.
halfboolFalseYarı hassasiyetli (FP16) hesaplamayı etkinleştirir; bellek kullanımını azaltır ve doğruluk üzerinde minimum etki ile hızı artırabilir.
devicestrNoneDoğrulama için cihazı belirtir (cpu, cuda:0, npu, npu:0 vb.). None olduğunda, mevcut en iyi cihazı otomatik olarak seçer. Birden fazla CUDA cihazı virgülle ayrılarak belirtilebilir.
dnnboolFalseEğer True ise, ONNX model çıkarımı için OpenCV DNN modülünü kullanır ve PyTorch çıkarım yöntemlerine bir alternatif sunar.
plotsboolTrueTrue olarak ayarlandığında, model performansının görsel değerlendirmesi için tahminlere karşı temel doğruluk (ground truth), karışıklık matrisleri ve PR eğrileri oluşturur ve kaydeder.
classeslist[int]NoneDeğerlendirilecek sınıf kimliklerinin bir listesini belirtir. Değerlendirme sırasında belirli sınıfları filtrelemek ve yalnızca onlara odaklanmak için kullanışlıdır.
rectboolTrueEğer True ise, yığın oluşturma için dikdörtgensel çıkarım kullanır; dolguyu (padding) azaltır ve görüntüleri orijinal en boy oranlarında işleyerek hızı ve verimliliği potansiyel olarak artırır.
splitstr'val'Doğrulama için kullanılacak veri seti bölümünü belirler (val, test veya train). Performans değerlendirmesi için veri segmenti seçiminde esneklik sağlar.
projectstrNoneDoğrulama çıktılarının kaydedileceği proje dizininin adı. Farklı deneylerden veya modellerden gelen sonuçları düzenlemeye yardımcı olur.
namestrNoneDoğrulama çalıştırmasının adı. Proje klasörü içinde doğrulama günlüklerinin ve çıktılarının saklandığı bir alt dizin oluşturmak için kullanılır.
verboseboolTrueEğer True ise, sınıf bazlı metrikler, yığın 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_txtboolFalseEğer True ise, tespit sonuçlarını görüntü başına bir dosya olacak şekilde metin dosyalarına kaydeder; ileri analiz, özel işlem sonrası veya diğer sistemlerle entegrasyon için kullanışlıdır.
save_confboolFalseEğer True ise, save_txt etkinleştirildiğinde kaydedilen metin dosyalarına güven değerlerini dahil eder; 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şlemesini hızlandırabilir ancak CPU kullanımını artırabilir. 0 olarak ayarlamak, bazı ortamlarda daha kararlı olabilen ana iş parçacığını kullanır.
augmentboolFalseDoğrulama sırasında test zamanı artırmayı (TTA) etkinleştirir; girişin dönüştürülmüş sürümleri üzerinde çıkarım çalıştırarak, çıkarım hızından ödün verip tespit doğruluğunu potansiyel olarak artırır.
agnostic_nmsboolFalseSınıftan bağımsız Non-Maximum Suppression yöntemini etkinleştirir; bu, tahmin edilen sınıftan bağımsız olarak çakışan kutuları birleştirir. Örnek odaklı uygulamalar için kullanışlıdır. Uçtan uca modeller için (YOLO26, YOLOv10), bu özellik yalnızca aynı tespitin birden fazla sınıf etiketiyle (IoU=1.0 kopyaları) görünmesini engeller ve farklı kutular arasında IoU eşik tabanlı bir bastırma işlemi gerçekleştirmez.
single_clsboolFalseDoğrulama sırasında tüm sınıfları tek bir sınıf olarak ele alır. İkili tespit görevlerinde model performansını değerlendirmek veya sınıf ayrımlarının önemli olmadığı durumlar için kullanışlıdır.
visualizeboolFalseHer görüntü için temel doğrulukları (ground truths), gerçek pozitifleri, yanlış pozitifleri ve yanlış negatifleri görselleştirir. Hata ayıklama ve model yorumlama için kullanışlıdır.
compilebool veya strFalsePyTorch 2.x torch.compile grafik derlemesini backend='inductor' ile etkinleştirir. True"default" kabul eder, False devre dışı bırakır veya "default", "reduce-overhead", "max-autotune-no-cudagraphs" gibi bir dize modu alır. Desteklenmiyorsa uyarı vererek eager moduna döner.
end2endboolNoneNMS içermeyen çıkarımı destekleyen YOLO modellerinde (YOLO26, YOLOv10) uçtan uca modunu geçersiz kılar. False olarak ayarlamak, doğrulamayı geleneksel NMS hattını kullanarak çalıştırmanıza ve ayrıca iou argümanını kullanmanıza olanak tanır.

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

Argümanlarla Örnek Doğrulama



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

Google Colab'da model doğrulamasını ve farklı dışa aktarma yöntemlerini keşfet

Aşağıdaki örnekler, Python ve CLI'da özel argümanlarla YOLO modeli doğrulamasını göstermektedir.

Ö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 Aktar

Ayrıca sağlanan kodu kullanarak ConfusionMatrix sonuçlarını farklı formatlarda 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, Duyarlılık ve F1

Doğrulama, sınıflandırma hariç tüm görevler için görüntü başına hassasiyet, duyarlılık, F1, TP, FP ve FN metriklerini (IoU eşiği 0.5'te) depolar. Doğrulama tamamlandıktan sonra 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 aracılığıyla bunlara 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 girdi aşağıdaki anahtarları içerir:

AnahtarAçıklama
precisionGörüntü için hassasiyet puanı (tp / (tp + fp)).
recallGörüntü için duyarlılık puanı (tp / (tp + fn)).
f1Hassasiyet ve duyarlılığı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örevleri için kullanılabilir.

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 formatında dışa aktarır ve CSV dizesini döndürür.
to_json()strDoğrulama sonuçlarını JSON formatında dışa aktarır ve JSON dizesini döndürür.

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

SSS

YOLO26 modelimi Ultralytics ile nasıl doğrularım?

YOLO26 modelini doğrulamak için Ultralytics tarafından sağlanan Val modunu kullanabilirsin. Örneğin, Python API'sini kullanarak bir model 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 argümanları ayarlayabilirsin. Parametrelerin tam listesi için YOLO Model Doğrulaması için Argümanlar bölümüne göz at.

YOLO26 model doğrulamasından hangi metrikleri alabilirim?

YOLO26 model doğrulaması, model performansını değerlendirmek için çeşitli önemli metrikler sağlar. Bunlar şunları içerir:

  • mAP50 (IoU eşiği 0.5'te ortalama Hassasiyet)
  • mAP75 (IoU eşiği 0.75'te ortalama Hassasiyet)
  • mAP50-95 (0.5'ten 0.95'e kadar birden fazla IoU eşiğinde ortalama Hassasiyet)

Python API'sini 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 incelemen çok önemlidir. Daha fazla ayrıntı için Val Modunun Temel Özellikleri bölümüne bak.

Doğrulama için Ultralytics YOLO kullanmanın avantajları nelerdir?

Doğrulama için Ultralytics YOLO kullanmanın çeşitli avantajları vardır:

  • Hassasiyet: YOLO26, mAP50, mAP75 ve mAP50-95 dahil olmak üzere doğru performans metrikleri sunar.
  • Kolaylık: Modeller eğitim ayarlarını hatırlar, bu da doğrulamayı basit hale getirir.
  • Esneklik: Aynı veya farklı veri kümelerine ve görüntü boyutlarına göre doğrulama yapabilirsin.
  • Hiperparametre Ayarı: Doğrulama metrikleri, daha iyi performans için modellerin ince ayarının yapılmasına yardımcı olur.

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

YOLO26 modelimi özel bir veri kümesi kullanarak doğrulayabilir miyim?

Evet, YOLO26 modelini özel bir veri kümesi kullanarak doğrulayabilirsin. data argümanını veri kümesi yapılandırma dosyanın yoluyla belirt. Bu dosya, doğrulama verilerine giden yolu içermelidir.

Not

Doğrulama, model.names kullanarak görüntüleyebileceğin ve veri kümesi yapılandırma dosyasında belirtilenlerden farklı olabilecek modelin kendi sınıf adları kullanılarak gerçekleştirilir.

Python'da ö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 Argümanlarla Örnek Doğrulama bölümüne bak.

YOLO26'da doğrulama sonuçlarını nasıl JSON dosyasına kaydedebilirim?

Doğrulama sonuçlarını bir JSON dosyasına kaydetmek için, doğrulama çalıştırırken save_json argümanını True olarak ayarlayabilirsin. Bu, hem Python API'sinde hem de CLI'da yapılabilir.

Python'da ö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

Bu işlev, daha fazla analiz veya diğer araçlarla entegrasyon için özellikle kullanışlıdır. Daha fazla ayrıntı için YOLO Model Doğrulaması için Argümanlar bölümünü kontrol et.

Yorumlar