Link to this sectionUltralytics YOLO ile Model Doğrulama#
Link to this sectionGiriş#
Doğrulama, makine öğrenimi hattında eğitilmiş modellerinin kalitesini değerlendirmeni sağlayan kritik bir adımdır. Ultralytics YOLO26 içindeki 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ı sağlayacak eksiksiz bir kaynak görevi görür.
Watch: Ultralytics Modes Tutorial: Validation
Link to this sectionNeden 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.
- Hiperparametre Ayarı: Daha iyi performans için modeline ince ayar yapmak amacıyla doğrulama metriklerini kullan.
Link to this sectionVal 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
yolo val model=yolo26n.ptveyaYOLO("yolo26n.pt").val()komutlarıyla bir modeli aynı görüntü boyutunda ve orijinal veri setinde kolayca doğrulayabilirsin.
Link to this sectionKullanım Örnekleri#
Eğitilmiş bir YOLO26n modelinin doğruluğunu COCO8 veri setinde doğrula. model, eğitim data'sını ve argümanlarını model öznitelikleri olarak koruduğu için herhangi 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'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.
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 FNLink to this sectionYOLO 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ına (örneğin coco8.yaml) giden yolu belirtir. Bu dosya, doğrulama verilerine giden yolu 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 | 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 ayarlar. Daha düşük değerler geri çağırmayı (recall) 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ı için varsayılan olarak 0.01 değerindedir. |
iou | float | 0.7 | Sets the Intersection Over Union threshold for Non-Maximum Suppression. Controls duplicate detection elimination. |
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 niceleme, 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. |
device | str | None | Doğrulama için cihazı belirtir (cpu, cuda:0, npu, npu:0 vb.). None olduğunda, otomatik olarak mevcut en iyi cihazı seçer. Birden çok CUDA cihazı virgülle ayrılarak belirtilebilir. |
dnn | bool | False | True değerine ayarlandığında, ONNX model çıkarımı için OpenCV DNN modülünü kullanır ve PyTorch çıkarım yöntemlerine bir alternatif sunar. |
plots | bool | True | True değerine ayarlandığında, model performansının görsel değerlendirmesi için tahminlerin gerçek değerlere karşı çizimlerini, 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 değerine ayarlandığında, toplu işlemler için dikdörtgen çıkarım kullanır; bu da görüntüleri orijinal en-boy oranlarında işleyerek dolguyu azaltır ve hız ile verimliliği potansiyel olarak artırır. |
split | str | 'val' | Doğrulama için kullanılacak veri kümesi bölümünü (val, test veya train) belirler. 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 | True değerine ayarlandığında, doğrulama süreci boyunca sınıf başına metrikler, toplu ilerleme ve ek hata ayıklama bilgileri dahil olmak üzere ayrıntılı bilgileri görüntüler. |
save_txt | bool | False | True değerine ayarlandığında, tespit sonuçlarını her görüntü için bir dosya olacak şekilde metin dosyalarına kaydeder; bu, ileri analiz, özel son işlem veya diğer sistemlerle entegrasyon için kullanışlıdır. |
save_conf | bool | False | True değerine ayarlandığında, save_txt etkinleştirildiğinde kaydedilen metin dosyalarına güven değerlerini dahil eder ve analiz ile 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 | Sınıf bağımsız Non-Maximum Suppression özelliğini etkinleştirir; bu, tahmin edilen sınıfına bakılmaksızın çakışan kutuları birleştirir. Örnek odaklı uygulamalar için yararlıdır. Uçtan uca modeller (YOLO26, YOLOv10) için bu, yalnızca aynı tespitin birden fazla sınıf etiketiyle görünmesini engeller (IoU=1.0 kopyaları) ve farklı kutular arasında IoU eşiğine dayalı eleme 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 net 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 puanlarını görüntüler. Eşleşmelerin ve hataların daha net 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ırakır veya "default", "reduce-overhead", "max-autotune-no-cudagraphs" gibi bir dize modu kabul eder. Desteklenmiyorsa bir uyarı ile eager moduna geri döner. |
end2end | bool | None | NMS içermeyen çıkarımı destekleyen YOLO modellerindeki (YOLO26, YOLOv10) uçtan uca modu 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ğ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.
Link to this sectionArgü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 hariç tüm görevler için (IoU eşiği 0.5'te) görüntü başına hassasiyet, geri çağırma, F1, TP, FP ve FN metriklerini saklar. Doğrulama tamamlandıktan sonra algılama ve OBB için results.box.image_metrics üzerinden, segmentasyon için results.seg.image_metrics üzerinden ve poz için results.pose.image_metrics üzerinden 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:
| Anahtar | Açıklama |
|---|---|
precision | Görüntü için hassasiyet skoru (tp / (tp + fp)). |
recall | Görüntü için geri çağırma 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 sınıf dokümantasyonuna bak.
Link to this sectionSSS#
Link to this sectionYOLO26 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ı ayarlayabilirsin. Parametrelerin tam listesi için YOLO Model Doğrulama Argümanları bölümüne göz at.
Link to this sectionYOLO26 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 Val Modunun Temel Özellikleri kısmına başvur.
Link to this sectionUltralytics YOLO'yu doğrulama için kullanmanın avantajları nelerdir?#
Ultralytics YOLO'yu doğrulama için kullanmak çeşitli avantajlar sağlar:
- 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 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, modellerinin kapsamlı bir şekilde değerlendirilmesini ve üstün sonuçlar için optimize edilebilmesini sağlar. Bu avantajlar hakkında daha fazla bilgiyi Neden Ultralytics YOLO ile Doğrulama Yapmalısın bölümünde öğren.
Link to this sectionYOLO26 modelimi özel bir veri seti kullanarak doğrulayabilir miyim?#
Evet, YOLO26 modelini bir özel veri seti kullanarak doğrulayabilirsin. data argümanını veri seti yapılandırma dosyanın yolu ile belirt. Bu dosya, doğrulama verisine giden yolu içermelidir.
Doğrulama, model.names kullanarak görüntüleyebileceğin 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 özelleştirilebilir seçenekler için Argümanlarla Örnek Doğrulama bölümüne bak.
Link to this sectionYOLO26'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ğrulama çalıştırırken save_json argümanını True olarak ayarlayabilirsin. 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, ileri analizler veya diğer araçlarla entegrasyon için özellikle kullanışlıdır. Daha fazla ayrıntı için YOLO Model Doğrulama Argümanları bölümüne göz at.