Ultralytics YOLO ile Model Doğrulama
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.
- 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.ptveyaYOLO("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'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 FNYOLO 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üman | Tür | Varsayılan | Açıklama |
|---|---|---|---|
data | str | None | Veri seti yapılandırma dosyasına (ör. coco8.yaml) giden yolu belirtir. Bu dosya, doğrulama verisine giden yolu içermelidir. |
imgsz | int | 640 | Giriş 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. |
batch | int | 16 | Yığı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_json | bool | False | Eğ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. |
conf | float | 0.001 | Tespitler 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. |
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 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. |
half | bool | False | Yarı hassasiyetli (FP16) hesaplamayı etkinleştirir; bellek kullanımını azaltır ve doğruluk üzerinde minimum etki ile hızı artırabilir. |
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. Birden fazla CUDA cihazı virgülle ayrılarak belirtilebilir. |
dnn | bool | False | Eğ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. |
plots | bool | True | True 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. |
classes | list[int] | None | Değ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. |
rect | bool | True | Eğ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. |
split | str | '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. |
project | str | None | Doğrulama çıktılarının kaydedileceğ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 saklandığı bir alt dizin oluşturmak için kullanılır. |
verbose | bool | True | Eğ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_txt | bool | False | Eğ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_conf | bool | False | Eğ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. |
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 ayarlamak, bazı ortamlarda daha kararlı olabilen ana iş parçacığını kullanır. |
augment | bool | False | Doğ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_nms | bool | False | Sı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_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 model performansını değerlendirmek veya sınıf ayrımlarının önemli olmadığı durumlar için kullanışlıdır. |
visualize | bool | False | Her 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. |
compile | bool veya str | False | PyTorch 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. |
end2end | bool | None | NMS 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
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 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())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:
| Anahtar | Açıklama |
|---|---|
precision | Görüntü için hassasiyet puanı (tp / (tp + fp)). |
recall | Görüntü için duyarlılık puanı (tp / (tp + fn)). |
f1 | Hassasiyet ve duyarlılığı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 dizesini döndürür. |
to_json() | str | Doğ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-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ğ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 FNEksiksiz 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.
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-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 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=TrueBu 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.