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 | Veri kümesi yapılandırma dosyasının yolunu belirtir (örn. coco8.yaml). Bu dosya doğrulama verilerinin yolunu içermelidir. |
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 | Tespitler 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 getirebilir. Hassasiyet-geri çağırma eğrilerini hesaplamak için doğrulama sırasında kullanılır. Bellek kullanımını azaltmak için OBB doğrulaması varsayılan olarak 0.01 değerindedir. |
iou | float | 0.7 | Non-Maximum Suppression için Intersection Over Union eşiğini belirler. Yinelenen tespitlerin elemesini 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 | Eğer True ise, toplu işlem için dikdörtgen çıkarım kullanır, dolguyu azaltır ve görüntüleri orijinal en-boy oranında işleyerek potansiyel olarak hızı ve verimliliği artırı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ırmayı (TTA) etkinleştirir. Girdinin dönüştürülmüş sürümleri üzerinde çıkarım çalıştırarak, çıkarım hızı maliyetiyle tespit doğruluğunu potansiyel olarak artırır. |
agnostic_nms | bool | False | Tahmin edilen sınıflarından bağımsız olarak örtüşen kutuları birleştiren sınıftan bağımsız Maksimum Olmayan Bastırma özelliğini etkinleştirir. Örnek odaklı uygulamalar için kullanışlıdır. Uçtan uca modeller için (YOLO26, YOLOv10) bu yalnızca aynı deteksiyonun 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_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 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-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, batch ve conf gibi ç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ından hangi metrikleri alabilirim?#
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 kullanmanın avantajları nelerdir?#
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.
YOLO26 modelimi özel bir veri seti kullanarak doğrulayabilir miyim?#
Evet, custom dataset kullanarak YOLO26 modelinizi doğrulayabilirsiniz. Veri seti yapılandırma dosyanızın yoluyla birlikte data argümanını belirtin. Bu dosya validation data yolunu içermelidir.
Doğrulama, model.names kullanarak görüntüleyebileceğiniz ve veri seti 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-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.
YOLO26'da doğrulama sonuçlarını nasıl JSON dosyasına kaydederim?#
Doğrulama sonuçlarını bir JSON dosyasına kaydetmek için doğrulamayı çalıştırırken save_json argümanını True olarak 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.