Ultralytics YOLO ile Model Doğrulama#
Giriş#
Doğrulama, eğitilmiş modellerinizin kalitesini değerlendirmenize olanak tanıyan machine learning işlem hattında kritik bir adımdır. Ultralytics YOLO26 içindeki Val modu, object detection modellerinizin performansını değerlendirmek için güçlü araçlar ve metrikler sunar. Bu kılavuz, modellerinizin hem doğru hem de güvenilir olmasını sağlamak için Val modunu nasıl etkili bir şekilde kullanacağınızı anlamanız adına 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 özellikleri kullan.
- Esneklik: Modelini aynı veya farklı veri setleri ve görüntü boyutlarıyla doğrula.
- Hyperparameter Tuning: Daha iyi performans için modelinizi ince ayarlarla optimize etmek üzere doğrulama metriklerini kullanın.
Val Modunun Temel Özellikleri#
Bunlar, YOLO26'nın Val modunun sunduğu kayda değer işlevlerdir:
- Otomatik Ayarlar: Modeller, basit bir 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 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 setleriyle ve özel veri setleriyle sorunsuz çalışır.
- YOLO26 modelleri eğitim ayarlarını otomatik olarak hatırlar; böylece yalnızca
yolo val model=yolo26n.ptveyaYOLO("yolo26n.pt").val()kullanarak bir modeli aynı görüntü boyutunda ve orijinal veri setinde kolayca doğrulayabilirsiniz.
Kullanım Örnekleri#
COCO8 veri seti üzerinde eğitilmiş bir YOLO26n modelinin accuracy değerini doğrulayın. model, eğitim data değerlerini ve argümanlarını model özellikleri 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ın.
Windows'ta, doğrulamayı bir betik olarak başlatırken RuntimeError alabilirsiniz. Bunu çözmek için doğrulama kodunuzdan önce bir if __name__ == "__main__": bloğu ekleyin.
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 FNYOLO Model Doğrulama Argümanları#
YOLO modellerini doğrulerken, değerlendirme sürecini optimize etmek için çeşitli argümanlara ince ayar yapılabilir. Bu argümanlar; girdi 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ı olmak için her bir argümanın ayrıntılı dökümü aşağıdadır.
| Argüman | Tip | Varsayılan | Açıklama |
|---|---|---|---|
data | str | None | validation data yolunu içermesi gereken veri seti YAML dosyasına (ör. coco8.yaml) giden yolu belirtir. Sınıflandırma için bunun yerine bir veri seti dizini veya yerleşik bir veri seti adı (ör. imagenet10) kullanılır. |
imgsz | int | 640 | Girdi görüntülerinin boyutunu tanımlar. Tüm görüntüler işlenmeden önce bu boyuta yeniden boyutlandırılır. Daha büyük boyutlar küçük nesneler için doğruluğu artırabilir ancak işlem süresini uzatır. |
batch | int | 16 | Yığın 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_json | bool | False | Eğer True ise, daha fazla analiz, diğer araçlarla entegrasyon veya COCO gibi değerlendirme sunucularına gönderim için sonuçları bir JSON dosyasına kaydeder. |
conf | float | 0.001 | Algılamalar için minimum güven eşiğini belirler. Daha düşük değerler geri çağırmayı artırır ancak daha fazla yanlış pozitif getirebilir. Kesinlik-geri çağırma eğrileri varsayılan olarak 0.001 değerini kullanır; algılama karışıklık matrisleri açık bir conf değeri veya atlandığında 0.25 değerini kullanır. Özet kesinlik ve geri çağırma, maksimum F1 güvenini kullandığından, confusion_matrix.png değerinden türetilen değerlerden farklı olabilir. Bellek kullanımını azaltmak için OBB doğrulamasında varsayılan olarak 0.01 değerine ayarlanır. |
iou | float | 0.7 | Non-Maximum Suppression için Intersection Over Union eşiğini ayarlar. Yinelenen tespitlerin ortadan kaldırılmasını kontrol eder. |
max_det | int | 300 | Görüntü başına maksimum algılama sayısını sınırlar. Aşırı algılamaları önlemek ve bilgi işlem kaynaklarını yönetmek için yoğun sahnelerde kullanışlıdır. |
quantize | int veya str | None | Doğrulama hassasiyeti: 16/"fp16" desteklenen GPU'larda FP16 doğrulamasını etkinleştirir; 32/"fp32"/ayarlanmamış ise FP32'dir. INT8/PTQ nicelemesi dışa aktarma sırasında yapılandırılır, ardından dışa aktarılan model doğrulanarak kullanılır. Kullanımdan kaldırılan half bayrağının yerini alır. |
device | str | None | Doğrulama için cihazı belirtir (cpu, cuda:0, npu, npu:0 vb.). None olduğunda, mevcut en iyi cihazı otomatik olarak seçer. Virgülle ayırarak birden fazla CUDA cihazı belirtilebilir. |
dnn | bool | False | Eğer True ise, ONNX modeli çıkarımı için OpenCV DNN modülünü kullanarak PyTorch çıkarım yöntemlerine bir alternatif sunar. |
plots | bool | True | True olarak ayarlandığında, model performansının görsel olarak değerlendirilmesi için yertruth'a karşı tahminlerin grafiklerini, karışıklık matrislerini ve PR eğrilerini oluşturur ve kaydeder. |
classes | list[int] | None | Değerlendirilecek sınıf kimliklerinin listesini belirtir. Değerlendirme sırasında sadece belirli sınıflara odaklanmak ve diğerlerini filtrelemek için kullanışlıdır. |
rect | bool | True | True kullanıyorsan, toplu işleme için dikdörtgen çıkarım kullanır, dolguyu azaltır ve görüntüleri orijinal en-boy oranında işleyerek hızı ve verimliliği potansiyel olarak artırır. Dolgu yapmak yerine her görüntüyü sabit bir imgsz kareye uzatan depth doğrulaması için yok sayılır. |
split | str | 'val' | Doğrulama için kullanılacak veri kümesi bölümünü belirler (val, test veya train). Performans değerlendirmesi için veri segmenti seçiminde esneklik sağlar. |
project | str | None | Doğrulama çıktılarının kaydedildiği proje dizininin adı. Farklı deneylerden veya modellerden gelen sonuçları düzenlemeye yardımcı olur. |
name | str | None | Doğrulama çalıştırmasının adı. Proje klasörü içinde doğrulama günlüklerinin ve çıktılarının depolandığı bir alt dizin oluşturmak için kullanılır. |
verbose | bool | True | Eğer True ise, sınıf başına metrikler, yığın ilerlemesi ve ek hata ayıklama bilgileri dahil olmak üzere doğrulama süreci sırasında ayrıntılı bilgi görüntüler. |
save_txt | bool | False | Eğer True ise, tespit sonuçlarını görüntü başına bir dosya olacak şekilde metin dosyalarına kaydeder; bu, daha ileri analiz, özel son işlem veya diğer sistemlerle entegrasyon için faydalıdır. |
save_conf | bool | False | Eğer True ise, save_txt etkinleştirildiğinde kaydedilen metin dosyalarına güven değerlerini dahil ederek analiz ve filtreleme için daha ayrıntılı çıktı sağlar. |
workers | int | 8 | Veri 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 ayarlanması ana iş parçacığını kullanır, bu da bazı ortamlarda daha kararlı olabilir. |
augment | bool | False | Doğrulama sırasında test zamanı artırmasını (TTA) etkinleştirir; girdinin dönüştürülmüş sürümleri üzerinde çıkarım çalıştırarak çıkarım hızı pahasına algılama doğruluğunu potansiyel olarak artırır. Yalnızca Ultralytics PyTorch modelleri için kullanılabilir. |
agnostic_nms | bool | False | Öngörülen sınıflarından bağımsız olarak daha düşük puanlı çakışan kutuları bastıran sınıf bağımsız Non-Maximum Suppression özelliğini etkinleştirir. Örnek odaklı uygulamalar için kullanışlıdır. Uçtan uca modeller (YOLO26, YOLOv10) için 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şik tabanlı bastırma gerçekleştirmez. |
single_cls | bool | False | Doğrulama sırasında tüm sınıfları tek bir sınıf olarak ele alır. İkili tespit görevlerinde veya sınıf ayrımlarının önemli olmadığı durumlarda model performansını değerlendirmek için yararlıdır. |
visualize | bool | False | Her 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_labels | bool | True | visualize=True olduğunda doğrulama görselleştirmelerinde sınıf etiketlerini görüntüler. Eşleşmelerin ve hataların daha temiz bir görünümü için False olarak ayarlayın. |
show_conf | bool | True | visualize=True olduğunda doğrulama görselleştirmelerinde güven skorlarını görüntüler. Eşleşmelerin ve hataların daha temiz bir görünümü için False olarak ayarlayın. |
compile | bool veya str | False | PyTorch 2.x torch.compile grafik derlemesini backend='inductor' ile etkinleştirir. True → "default", False → devre dışı bırakma veya "default", "reduce-overhead", "max-autotune-no-cudagraphs" gibi bir dize modu kabul eder. Desteklenmiyorsa bir uyarı ile eager moduna geri döner. |
channels_last | bool | False | Doğrulama sırasındaki evrişimler için channels_last (NHWC) bellek biçimini kullanır, sonuçlarda hiçbir değişiklik olmadan CUDA Tensor Core GPU'ları hızlandırır. Yalnızca yerel PyTorch modelleri için geçerlidir; CPU, MPS ve TensorRT ile ONNX gibi dışarı aktarılan biçimler için yok sayılır. |
end2end | bool | None | NMS içermeyen çıkarımı destekleyen YOLO modellerinde uçtan uca modu geçersiz kılar (YOLO26, YOLOv10). Bunu False olarak ayarlamak, geleneksel NMS boru hattını kullanarak doğrulama çalıştırmanıza olanak tanır ve ayrıca iou argümanını kullanmanıza imkan sağlar. |
Bu ayarların her biri doğrulama sürecinde hayati bir rol oynar ve YOLO modellerinin özelleştirilebilir ve verimli bir şekilde değerlendirilmesine olanak tanır. Bu parametreleri özel ihtiyaçlarına ve kaynaklarına göre ayarlamak, doğruluk ve performans arasında en iyi dengeyi yakalamana yardımcı olabilir.
Argümanlarla Örnek Doğrulama#
Watch: How to Export Model Validation Results in CSV, JSON, SQL, Polars DataFrame & More
Aşağıdaki örnekler, Python ve CLI'da özel argümanlarla YOLO modeli doğrulamasını göstermektedir.
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")Ayrıca ConfusionMatrix sonuçlarını sağlanan kodu kullanarak 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())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) saklar. 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 üzerinden bunlara erişin.
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 bir girdi şu anahtarları içerir:
| Anahtar | Açıklama |
|---|---|
precision | Görüntü için hassasiyet (precision) skoru (tp / (tp + fp)). |
recall | Görüntü için geri çağırma (recall) skoru (tp / (tp + fn)). |
f1 | Hassasiyet ve geri çağırmanın harmonik ortalaması. |
tp | Görüntü için doğru pozitif sayısı. |
fp | Görüntü için yanlış pozitif sayısı. |
fn | Görüntü için yanlış negatif sayısı. |
Bu özellik; algılama, segmentasyon, poz ve OBB görevleri için kullanılabilir.
| Yöntem | Dö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() | DataFrame | Doğrulama sonuçlarını yapılandırılmış bir Polars DataFrame olarak döndürür. |
to_csv() | str | Doğrulama sonuçlarını CSV formatında dışa aktarır ve CSV dizisini döndürür. |
to_json() | str | Doğrulama sonuçlarını JSON formatında dışa aktarır ve JSON dizisini döndürür. |
Daha fazla ayrıntı için DataExportMixin class documentation sayfasına bakın.
Sırada ne var#
Metriklerden memnun musun? Modeli bir dağıtım formatına dışa aktar. Doğruluk düşükse, farklı hiperparametreler veya daha fazla eğitim verisiyle geri dön ve yeniden eğit.
SSS#
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-95Alternatif olarak, komut satırı arayüzünü (CLI) kullanabilirsin:
yolo val model=yolo26n.ptDaha fazla özelleştirme için hem Python hem de CLI modlarında
imgsz,batchveconfgibi çeşitli argümanları ayarlayabilirsiniz. Parametrelerin tam listesi için Arguments for YOLO Model Validation bölümünü kontrol edin.YOLO26 modeli doğrulaması, model performansını değerlendirmek için birkaç temel metrik 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ği boyunca 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 FNEksiksiz bir performans değerlendirmesi için tüm bu metrikleri gözden geçirmek çok önemlidir. Daha fazla ayrıntı için Key Features of Val Mode bölümüne bakın.
Ultralytics YOLO'yu doğrulama için kullanmak çeşitli avantajlar sağlar:
- Precision: 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 setleri 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, modellerinizin kapsamlı bir şekilde değerlendirilmesini ve üstün sonuçlar için optimize edilebilmesini sağlar. Bu avantajlar hakkında daha fazla bilgi edinmek için Why Validate with Ultralytics YOLO bölümünü inceleyin.
Evet, YOLO26 modelini özel veri seti kullanarak doğrulayabilirsin. Doğrulama verilerinin yolunu içermesi gereken veri seti YAML dosyasının yolunu
dataargümanıyla belirt. Sınıflandırma ise bunun yerine bir veri seti dizini veya yerleşik bir veri seti adı (ör.imagenet10) alır.NotDoğrulama,
model.nameskullanarak görüntüleyebileceğin ve veri setinin kendi tanımladığı sınıflardan 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-95CLI kullanarak örnek:
yolo val model=yolo26n.pt data=path/to/your/custom_dataset.yamlDoğrulama sırasında daha fazla özelleştirilebilir seçenek için Example Validation with Arguments bölümüne bakın.
Doğrulama sonuçlarını bir JSON dosyasına kaydetmek için doğrulamayı çalıştırırken
save_jsonargümanınıTrueolarak ayarlayabilirsiniz. Bu işlem hem Python API 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=TrueBu işlevsellik, daha ileri analizler veya diğer araçlarla entegrasyon için özellikle yararlıdır. Daha fazla ayrıntı için Arguments for YOLO Model Validation bölümünü kontrol edin.