Ultralytics YOLO ile Model Doğrulama#
Giriş#
Doğrulama, makine öğrenimi işlem hattında kritik bir adımdır ve eğitilmiş modellerinin kalitesini değerlendirmeni sağlar. Ultralytics YOLO26'daki Val modu, nesne algılama modellerinin performansını değerlendirmek için kapsamlı bir araç ve metrik seti sunar. Bu kılavuz, modellerinin hem doğru hem de güvenilir olmasını sağlamak üzere Val modunu etkili biçimde kullanmayı anlaman için eksiksiz bir kaynaktır.
İlk doğrulama sonuçları için yayımlanmamış YOLO27 önizlemesine bak.
İzle: Ultralytics Modları Eğitimi: Doğrulama
Neden Ultralytics YOLO ile doğrulama yapmalısın?#
YOLO26'nın Val modunu kullanmanın avantajları şunlardır:
- Hassasiyet: Modelini kapsamlı biçimde değerlendirmek için mAP50, mAP75 ve mAP50-95 gibi doğru metrikler elde et.
- Kolaylık: Eğitim ayarlarını hatırlayan yerleşik özelliklerden yararlanarak doğrulama sürecini basitleştir.
- Esneklik: Modelini aynı veya farklı veri kümeleriyle ve görüntü boyutlarıyla doğrula.
- Hiperparametre Ayarı: Daha iyi performans elde etmek için doğrulama metriklerini kullanarak modelinde ince ayar yap.
Val Modunun Önemli Özellikleri#
YOLO26'nın Val modunun sunduğu dikkat çekici işlevler şunlardır:
- Otomatik Ayarlar: Modeller, doğrulamayı kolaylaştırmak 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 tercihlerine göre komut satırı arayüzünü veya Python API'yi seç.
- Veri Uyumluluğu: Eğitim aşamasında kullanılan veri kümelerinin yanı sıra özel veri kümeleriyle de sorunsuz çalışır.
- YOLO26 modelleri eğitim ayarlarını otomatik olarak hatırlar; bu nedenle
yolo val model=path/to/best.ptveyaYOLO("path/to/best.pt").val(), özgün veri kümesinde eğitim görüntüsü boyutuyla doğrulama yapar. Resmî ağırlıklar, görev için varsayılan veri kümesini kullanır; bunu değiştirmek içindatadeğerini belirt.
Kullanım Örnekleri#
Eğitilmiş bir YOLO26n modelinin doğruluğunu doğrula. model, eğitim data değerini ve bağımsız değişkenlerini model öznitelikleri olarak sakladığı için bağımsız değişken belirtmen gerekmez: path/to/best.pt, modelin eğitildiği veri kümesinde doğrulama yapar. Resmî ağırlıklar, makinenizde bulunmayan bir eğitim veri kümesi yolunu kaydeder; bu nedenle bir uyarıyla görev için varsayılan coco8.yaml değerine geri döner. Başka bir veri kümesinde doğrulama yapmak için data değerini belirt. Doğrulama bağımsız değişkenlerinin tam listesi için aşağıdaki Bağımsız Değişkenler bölümüne bak.
Windows'ta doğrulamayı bir betik olarak başlatırken RuntimeError hatası alabilirsin. Bu sorunu çözmek için doğrulama kodundan önce bir if __name__ == "__main__": bloğu ekle.
from ultralytics import YOLO
# Bir model yükle
model = YOLO("yolo26n.pt") # Resmî bir modeli yükle
model = YOLO("path/to/best.pt") # özel bir model yükle
# Modeli doğrula
metrics = model.val() # Bağımsız değişken gerekmez; veri kümesi ve ayarlar hatırlanır
metrics.box.map # map50-95
metrics.box.map50 # map50
metrics.box.map75 # map75
metrics.box.maps # Her kategori için mAP50-95 içeren bir liste
metrics.box.image_metrics # Hassasiyet, geri çağırma, F1, TP, FP ve FN değerlerini içeren görüntü başına metrik sözlüğüYOLO Modeli Doğrulama Bağımsız Değişkenleri#
YOLO modellerini doğrularken değerlendirme sürecini iyileştirmek için çeşitli bağımsız değişkenlerde ince ayar yapabilirsin. Bu bağımsız değişkenler; giriş görüntüsü boyutu, toplu işleme ve performans eşikleri gibi unsurları kontrol eder. Doğrulama ayarlarını etkili biçimde özelleştirmene yardımcı olmak için her bağımsız değişkenin ayrıntılı açıklaması aşağıda verilmiştir.
| Bağımsız değişken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
data | str | None | Veri kümesi YAML dosyasının yolunu belirtir (örn. coco8.yaml); dosyada doğrulama verilerinin yolu bulunmalıdır. Sınıflandırma için bunun yerine bir veri kümesi dizini veya yerleşik veri kümesi adı (örn. imagenet10) kullanılır. |
imgsz | int | 640 | Girdi görüntülerinin boyutunu tanımlar. İşlemden önce tüm görüntüler bu boyuta getirilir. Daha büyük boyutlar küçük nesnelerde doğruluğu artırabilir, ancak hesaplama süresini uzatır. |
batch | int | 16 | Toplu iş 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 sonuçları daha ileri analiz, diğer araçlarla entegrasyon veya COCO gibi değerlendirme sunucularına gönderim için bir JSON dosyasına kaydeder. Algılama veri kümelerinde ayrıca tahminleri faster-coco-eval ile değerlendirir ve küçük, orta ve büyük nesneler için mAP değerlerini raporlar; eğitim sırasında bu değerler results.csv içindeki metrics/mAP_small(B), metrics/mAP_medium(B) ve metrics/mAP_large(B) olarak günlüğe kaydedilir. |
conf | float | 0.001 | Algılamalar 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 oluşturabilir. Kesinlik-geri çağırma eğrileri, mAP ve algılama karmaşıklık matrisleri bu değeri kullanır; conf değerinin 0.25 gibi daha yüksek olması, matrisi tahmin çıktısına daha çok yaklaştırır, ancak mAP değerini düşürebilir. Özet kesinlik ve geri çağırma, maksimum F1 güvenini kullanır; bu nedenle confusion_matrix.png değerinden elde edilen değerlerden farklı olabilir. Bellek kullanımını azaltmak için OBB doğrulamasında varsayılan değer 0.01 olur. |
iou | float | 0.7 | Maksimum Olmayan Bastırma için Kesişim-Birleşim eşiğini ayarlar. Yinelenen algılamaların elenmesini denetler. |
max_det | int | 300 | Görüntü başına en yüksek algılama sayısını sınırlar. Detect, segment, pose ve OBB görevlerinde bu değer 300 olarak bırakılırsa doğrulanan bölümde bir görüntünün etiketli nesne sayısı bu değeri aştığında, uyarı verilerek sınır en yüksek etiketli nesne sayısına çıkarılır; diğer tüm değerler korunur ve bir görüntü bu değeri aşarsa geri çağırmanın sınırlanabileceğine dair uyarı verilir. |
quantize | int veya str | None | Doğrulama hassasiyeti: 16/"fp16" ve 32/"fp32"/unset, PyTorch ve TorchScript modelleri için FP16 veya FP32 hesaplamayı seçer (CPU'da FP32); diğer biçimler, model yapıtının ve çalışma zamanının seçtiği hassasiyeti kullanır. 16 için OpenVINO, istemcide girdiyi hâlâ FP16'ya yuvarlar ve çalışma zamanı hassasiyetini değiştirmeden tekrar FP32'ye genişletir. INT8/PTQ nicemlemesi 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 kullanılabilir en iyi cihazı otomatik seçer. Birden fazla CUDA cihazı virgülle ayrılarak belirtilebilir. |
dnn | bool | False | True ise ONNX model çıkarımında OpenCV DNN modülünü kullanarak PyTorch çıkarım yöntemlerine alternatif sunar. |
plots | bool | True | True olarak ayarlandığında, model performansını görsel olarak değerlendirmek için tahminler ile gerçek değerlerin grafiklerini, karmaşıklık matrislerini ve PR eğrilerini oluşturup kaydeder. |
classes | list[int] | None | Değerlendirilecek sınıf kimliklerinin listesini belirtir. Değerlendirme sırasında sınıfları filtreleyerek yalnızca belirli sınıflara odaklanmak için kullanışlıdır. |
rect | bool | True | True ise benzer en-boy oranlarına sahip görüntüleri dikdörtgen biçimli gruplar halinde toplar. Her boyutu stride katının yukarısına yuvarlamadan önce yarım stride ekler (semantic için ekstra yarım stride eklenmez). Stride 32 olduğunda, imgsz=640 değerindeki 640×640 boyutlu görüntü, 16 px ofsetle 672×672 boyutuna dönüşür; predict ise 640×640 kullanır, bu nedenle metrikler farklılık gösterebilir. rect=False, kare görüntüler için predict ile eşleşir. Görüntüleri imgsz boyutunda kareye esneten depth için bu ayar 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ğerlendirmek için veri bölümünü seçme esnekliği sağlar. |
fraction | float, int veya list | 1.0 | Doğrulanan bölümün alt kümesi. [train, val, test] listesi verildiğinde, split ile eşleşen girdi uygulanır (1 = bölümün tamamı, 1 üzerindeki tam sayılar = görüntü sayıları; belirtilmeyen girdiler bölümün tamamını kullanır). Skaler değer yalnızca split=train için geçerlidir; val ve test bu durumda bölümün tamamını kullanır. |
project | str | None | Doğrulama çıktılarının kaydedileceği proje dizininin adı. Farklı deneylerin veya modellerin sonuçlarını düzenlemeye yardımcı olur. |
name | str | None | Doğrulama çalıştırmasının adı. Doğrulama günlüklerinin ve çıktılarının saklandığı proje klasöründe bir alt dizin oluşturmak için kullanılır. |
verbose | bool | True | True ise doğrulama sürecinde sınıf başına metrikler, toplu iş ilerlemesi ve ek hata ayıklama bilgileri dahil ayrıntılı bilgileri gösterir. |
save_txt | bool | False | True ise algılama sonuçlarını, görüntü başına bir dosya olacak şekilde metin dosyalarına kaydeder; bu dosyalar daha ileri analiz, özel son işleme veya diğer sistemlerle entegrasyon için kullanışlıdır. |
save_conf | bool | False | True ise save_txt etkin olduğunda kaydedilen metin dosyalarına güven değerlerini ekleyerek 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şlemeyi hızlandırabilir, ancak CPU kullanımını artırabilir. 0 olarak ayarlandığında ana iş parçacığı kullanılır; bu, 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ümlerinde çıkarım yaparak çıkarım hızından ödün verme pahasına algılama doğruluğunu artırabilir. Yalnızca Ultralytics PyTorch modellerinde kullanılabilir. |
agnostic_nms | bool | False | Sınıftan bağımsız Maksimum Olmayan Bastırmayı etkinleştirir; tahmin edilen sınıfları ne olursa olsun, örtüşen kutular arasında puanı daha düşük olanları bastırır. Örnek odaklı uygulamalarda kullanışlıdır. NMS'siz çıkarımda (YOLO26 veya YOLOv10'da nms=False), bu ayar yalnızca aynı algılamanın birden fazla sınıf etiketiyle görünmesini önler (IoU=1.0 yinelenenleri); farklı kutular arasında IoU eşiğine dayalı bastırma yapmaz. |
single_cls | bool | False | Doğrulama sırasında tüm sınıfları tek bir sınıf olarak ele alır. İkili algılama görevlerinde veya sınıf ayrımlarının önemli olmadığı durumlarda model performansını değerlendirmek için kullanışlı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österir. Eşleşmeleri ve hataları daha sade görüntülemek için False olarak ayarla. |
show_conf | bool | True | visualize=True olduğunda doğrulama görselleştirmelerinde güven puanlarını gösterir. Eşleşmeleri ve hataları daha sade görüntülemek için False olarak ayarla. |
compile | bool veya str | False | PyTorch 2.x torch.compile grafik derlemesini backend='inductor' ile etkinleştirir. True → "default", devre dışı bırakmak için False veya "default", "reduce-overhead", "max-autotune-no-cudagraphs" gibi bir dize modu kabul eder. Desteklenmiyorsa uyarı vererek eager moda geri döner. |
channels_last | bool | None | Yerel PyTorch doğrulaması için channels_last (NHWC) bellek biçimini kullanır. None, PyTorch 1.13 veya daha yeni sürümlerin yüklü olduğu, oneDNN etkin Linux ve Windows x86 CPU'larda bunu otomatik olarak etkinleştirir; False devre dışı bırakır ve True desteklenen x86 CPU veya CUDA cihazlarında kullanılmasını ister. ARM64, MPS, eski PyTorch sürümleri, oneDNN olmayan CPU'lar ve dışa aktarılmış biçimler değişmeden kalır; eğitim sırasındaki doğrulama, eğitim modelinin düzenini korur. |
nms | bool, isteğe bağlı | None | Varsayılan olarak NMS ile bire-çok çıkarım yapar (None veya True). Kullanılabiliyorsa NMS'siz bire-bir başlığı kullanmak için False değerini ayarla. Ayrıntılar için Uçtan Uca Algılama kılavuzuna bak. |
Bu ayarların her biri doğrulama sürecinde önemli bir rol oynar ve YOLO modellerinin özelleştirilebilir, verimli biçimde değerlendirilmesini sağlar. Bu parametreleri özel ihtiyaçlarına ve kaynaklarına göre ayarlamak, doğruluk ile performans arasında en iyi dengeyi kurmana yardımcı olabilir.
Bağımsız Değişkenlerle Doğrulama Örneği#
İzle: Model Doğrulama Sonuçları CSV, JSON, SQL, Polars DataFrame ve Daha Fazlasına Nasıl Aktarılır
Aşağıdaki örneklerde, özel bağımsız değişkenlerle bir YOLO modelinin Python ve CLI kullanılarak nasıl doğrulanacağı gösterilmektedir.
from ultralytics import YOLO
# Bir model yükle
model = YOLO("yolo26n.pt")
# Doğrulama ayarlarını özelleştir
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.7, device="0")Sağlanan kodu kullanarak ConfusionMatrix sonuçlarını farklı biçimlerde de 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) kaydeder. Doğrulama tamamlandıktan sonra tespit ve OBB için results.box.image_metrics, segmentasyon için results.seg.image_metrics ve poz için results.pose.image_metrics üzerinden bu metriklere erişebilirsin.
from ultralytics import YOLO
# Bir model yükle
model = YOLO("yolo26n.pt")
# Doğrulama yap ve görüntü başına metriklere eriş
results = model.val(data="coco8.yaml")
# image_metrics, anahtar olarak görüntü dosyası adlarını kullanan bir sözlüktür
print(results.box.image_metrics)
# Output: {'image1.jpg': {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}, ...}
# Belirli bir görüntünün metriklerine eriş
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 şu anahtarları içerir:
| Anahtar | Açıklama |
|---|---|
precision | Görüntünün hassasiyet puanı (tp / (tp + fp)). |
recall | Görüntünün geri çağırma puanı (tp / (tp + fn)). |
f1 | Hassasiyet ve geri çağırmanın harmonik ortalaması. |
tp | Görüntüdeki doğru pozitiflerin sayısı. |
fp | Görüntüdeki yanlış pozitiflerin sayısı. |
fn | Görüntüdeki yanlış negatiflerin sayısı. |
Bu özellik tespit, segmentasyon, poz ve OBB görevlerinde kullanılabilir.
Döndürülen metrik nesnesi, sonraki analizler için dışa aktarma yardımcılarını da sunar:
| 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 biçiminde dışa aktarır ve CSV dizgesini döndürür. |
to_json() | str | Doğrulama sonuçlarını JSON biçiminde dışa aktarır ve JSON dizgesini döndürür. |
Daha fazla bilgi için DataExportMixin sınıf belgelerine bak.
Sırada ne var?#
Metriklerden memnun musun? Dağıtım biçimine modeli aktar. Doğruluk istediğin gibi değilse, farklı hiperparametrelerle veya daha fazla eğitim verisiyle geri dönüp yeniden eğit.
Sık Sorulan Sorular#
YOLO26 modelini doğrulamak için Ultralytics'in sunduğu Val modunu kullanabilirsin. Örneğin, Python API'yi kullanarak bir modeli yükleyebilir ve şu şekilde doğrulama çalıştırabilirsin:
from ultralytics import YOLO # Bir model yükle model = YOLO("yolo26n.pt") # Modeli doğrula metrics = model.val() print(metrics.box.map) # map50-95Alternatif olarak komut satırı arayüzünü (CLI) kullanabilirsin:
yolo detect val model=yolo26n.pt data=coco8.yamlDaha fazla özelleştirme için hem Python hem de CLI modlarında
imgsz,batchveconfgibi çeşitli bağımsız değişkenleri ayarlayabilirsin. Parametrelerin tam listesi için YOLO Modeli Doğrulama Bağımsız Değişkenleri bölümüne bak.YOLO26 modeli doğrulaması, model performansını değerlendirmek için birkaç önemli metrik sunar. Bunlar şunlardır:
- mAP50 (0.5 IoU eşiğinde ortalama Ortalama Hassasiyet)
- mAP75 (0.75 IoU eşiğinde ortalama Ortalama Hassasiyet)
- mAP50-95 (0.5 ile 0.95 arasındaki birden fazla IoU eşiğinde ortalama Ortalama Hassasiyet)
Python API'yi kullanarak bu metriklere şu şekilde erişebilirsin:
metrics = model.val() # `model` öğesinin yüklendiği varsayılır print(metrics.box.map) # mAP50-95 print(metrics.box.map50) # mAP50 print(metrics.box.map75) # mAP75 print(metrics.box.maps) # Her kategori için mAP50-95 listesi print(metrics.box.image_metrics) # Hassasiyet, geri çağırma, F1, TP, FP ve FN değerlerini içeren görüntü başına metrik sözlüğüPerformansı eksiksiz değerlendirmek için bu metriklerin tümünü incelemek çok önemlidir. Daha fazla bilgi için Val Modunun Önemli Özellikleri bölümüne bak.
Ultralytics YOLO'yu doğrulama için kullanmak çeşitli avantajlar sunar:
- Hassasiyet: YOLO26; mAP50, mAP75 ve mAP50-95 dahil olmak üzere doğru performans metrikleri sunar.
- Kolaylık: Modeller eğitim ayarlarını hatırlar, böylece doğrulama kolaylaşır.
- Esneklik: Aynı veya farklı veri kümeleri ve görüntü boyutlarıyla doğrulama yapabilirsin.
- Hiperparametre Ayarı: Doğrulama metrikleri, daha iyi performans için modellerde ince ayar yapmaya yardımcı olur.
Bu avantajlar, modellerinin kapsamlı biçimde değerlendirilmesini ve daha iyi sonuçlar için iyileştirilmesini sağlar. Bu avantajlar hakkında daha fazla bilgi için Neden Ultralytics YOLO ile doğrulama yapmalısın bölümüne bak.
Evet, YOLO26 modelini bir özel veri kümesi kullanarak doğrulayabilirsin. Veri kümesi YAML dosyanın yolunu
databağımsız değişkeniyle belirt; bu dosyada doğrulama verilerinin yolu bulunmalıdır. Sınıflandırma içinse bir veri kümesi dizini veya yerleşik bir veri kümesi adı (ör.imagenet10) kullanılır.NotDoğrulama,
model.namesile görüntüleyebileceğin ve veri kümesinin tanımladığı sınıf adlarından farklı olabilecek modelin kendi sınıf adlarıyla yapılır.Python örneği:
from ultralytics import YOLO # Bir model yükle model = YOLO("yolo26n.pt") # Özel bir veri kümesiyle doğrula 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ştirme seçeneği için Bağımsız Değişkenlerle Doğrulama Örneği bölümüne bak.
Doğrulama sonuçlarını JSON dosyasına kaydetmek için doğrulamayı çalıştırırken
save_jsonbağımsız değişkeniniTrueolarak ayarlayabilirsin. Bunu hem Python API hem de CLI ile yapabilirsin.Python örneği:
from ultralytics import YOLO # Bir model yükle model = YOLO("yolo26n.pt") # Doğrulama sonuçlarını JSON'a kaydet metrics = model.val(save_json=True)CLI kullanarak örnek:
yolo val model=yolo26n.pt save_json=TrueTespit veri kümelerinde
save_json=True,faster-coco-evalaracılığıyla küçük, orta ve büyük nesneler için mAP değerlerini de raporlar. Daha fazla bilgi için YOLO Modeli Doğrulama Bağımsız Değişkenleri bölümüne bak.