Ultralytics YOLO27: Bekleme listesine katıl.
Get Started
İlk YOLO modelini eğit·Eğit·Ders 7/10
Dersbaşlangıç düzeyi

Doğrula ve Teşhis Et

best.pt dosyasını bir başlangıç değeriyle karşılaştırarak doğrula, karışıklık matrisini, sınıf başına değerleri ve tahmin görüntülerini incele ve bunları belirli bir düzeltme listesine dönüştür.

Tek bir mAP değeri, modelin ne kadar yanlış yaptığını söyler; neyi yanlış yaptığını değil. Küçük nesnelerin kaçırılması, iki sınıfın birbiriyle karıştırılması ve gevşek kutular mAP'i düşürür; her biri farklı bir düzeltme gerektirir. Yanlış tahminde bulunursan bir haftanı yanlış verileri toplamaya harcarsın.

Bu derste best.pt üzerinde Val modunu çalıştıracak, başlangıç değeriyle karşılaştıracak ve bir sonraki tur için düzeltme listesini yazabilene kadar karışıklık matrisini ve tahmin görüntülerini inceleyeceksin. Performans metrikleri kılavuzu, konunun kapsamlı açıklamasını sunar.

Sonuç

Bir modeli eşleşen ayarlarla doğrulayabilir, en zayıf sınıfı ve hata türünü bulmak için karışıklık matrisini ve sınıf başına tabloyu okuyabilir ve bir sonraki tur için üç belirli değişiklik yazabilirsin.

Hızlı Başlangıç
Nasıl ilerleyeceğini zaten biliyorsan, işte kısa sürüm.
  1. yolo val model=runs/detect/pills_v1/weights/best.pt data=my_dataset/data.yaml çalıştır.

  2. mAP50 ve mAP50-95 değerlerini başlangıç değeriyle karşılaştır: aralarında büyük fark olması, kutuların gevşek olduğu anlamına gelir.

  3. confusion_matrix_normalized.png dosyasını oku: sütunlar gerçek sınıfları, satırlar tahminleri gösterir.

  4. val_batch0_labels.jpg ile val_batch0_pred.jpg dosyasını karşılaştır ve hata örüntülerini listele.

Uygulamalı

Uygulamalı Örnek: best.pt Dosyasını Doğrula#

from ultralytics import YOLO

model = YOLO("runs/detect/pills_v1/weights/best.pt")
metrics = model.val(data="my_dataset/data.yaml")

print(f"precision {metrics.box.mp:.3f}  recall {metrics.box.mr:.3f}")
print(f"mAP50 {metrics.box.map50:.3f}  mAP50-95 {metrics.box.map:.3f}")

val.py komutundan gerçek çıktı:

precision 0.970  recall 0.957
mAP50 0.977  mAP50-95 0.659

Grafikler yeni bir runs/detect/val klasörüne kaydedilir (ardından val-2, ...). Değerleri başlangıç değerinin yanına yaz:

ModelmAP50mAP50-95
Önceden eğitilmiş yolo26n.pt (hap sınıfı yok)0.0010.0002
pills_v1 (10 epoch, imgsz 320, CPU)0.9770.659

Sayılar ne söylüyor:

  • Precision 0.970, recall 0.957: dengeli. Az sayıda yanlış alarm ve az sayıda kaçırma var.
  • mAP50 0.977: örtüşme koşulu gevşek olduğunda model neredeyse tüm hapları buluyor.
  • mAP50-95 0.659: örtüşme koşulu katı olduğunda kutuların çoğu yeterince sıkı değil. Bu kadar büyük bir fark, veri eksikliğinden ziyade konumlandırma sorununa işaret ediyor — daha fazla epoch, daha büyük bir imgsz veya daha sıkı etiketler.

precision, recall ve mAP arasındaki ödünleşimleri öğrenmek için Tespit Metriklerini Dürüstçe Okuma sayfasına bak.

Hangi Sorunun Yanıtını Hangi Dosyanın Verdiğini Öğren#

SoruDosya
Hangi sınıflar birbiriyle karıştırılıyor, hangileri kaçırılıyor?confusion_matrix_normalized.png
Her sınıf precision ile recall arasında nasıl bir ödünleşim gösteriyor?BoxPR_curve.png
Hangi confidence eşiğiyle dağıtıma almalısın?BoxF1_curve.png: zirve noktası iyi bir başlangıç conf değeridir
Hatalar nasıl görünüyor?val_batch0_labels.jpg ile val_batch0_pred.jpg
Model aşırı öğreniyor mu?Eğitim klasöründeki results.png

Karışıklık Matrisini Oku#

Ultralytics Platform model sayfasında, gerçek sınıfların sütunlarda ve tahmin edilen sınıfların satırlarda gösterildiği normalize edilmiş bir karışıklık matrisi

Karışıklık matrisi, en yararlı tek tanı aracıdır. Ultralytics grafiklerinde sütunlar gerçek sınıfı, satırlar ise tahmin edilen sınıfı gösterir; ayrıca bir background satırı ve sütunu bulunur. Normalize edilmiş sürüm, her sütunu toplamına böler; böylece her sütun o sınıfa ait nesnelerin nereye gittiğini gösterir. Hap veri kümesinde tek bir sınıf var, bu yüzden alıştırma için üç sınıflı şu depo örneğini kullan (temsili sayılar):

Tahmin ↓ / Gerçek →forkliftkişipaletarka plan
forklift0.780.030.180.45
kişi0.040.910.000.20
palet0.100.000.650.35
arka plan0.080.060.17—
  • Köşegen: doğru algılanan her sınıfın oranı. 0.65 ile palet, zayıf sınıftır.
  • Köşegen dışı: karışıklıklar. Gerçek paletlerin %18'i forklift, forkliftlerin %10'u palet olarak tahmin edildi.
  • Arka plan satırı: kaçırmalar. Paletlerin %17'si hiç algılanmadı.
  • Arka plan sütunu: boş alana çizilen kutular, yani yanlış pozitifler. Bunların %45'i forklift olarak sınıflandırıldı.

Her hücre türü, uygulanacak bir düzeltmeye karşılık gelir:

ÖrüntüÇözüm
İki sınıf birbirini karıştırıyorBu sınıfları birbirinden ayıran örnekler ekle: palet taşıyan forkliftler, forkliftlerin yanında istiflenmiş paletler
Arka plan satırı yüksek (kaçırmalar)Kaçırıldığı koşullarda o sınıftan daha fazla örnek ekle
Arka plan sütunu yüksek (yanlış alarmlar)Boş koridorlar gibi, bu yanlış alarmları tetikleyen sahnelerin arka plan görüntülerini ekle

Sınıf Başına Sayıları Oku#

Birden fazla sınıf varsa doğrulama günlüğünde her sınıf için bir satır yazdırılır; metrics.box.maps ise kodda sınıf başına mAP50-95 değerlerini içerir. Depo örneğine devam edelim:

                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95)
                   all         50        102       0.78       0.71       0.74       0.51
              forklift         30         45       0.85       0.78       0.81       0.58
                person         40         50       0.92       0.88       0.91       0.64
                pallet          5          7       0.58       0.48       0.51       0.31

pallet diğerlerinden çok daha düşük ve doğrulama kümesinde yalnızca 7 örneği var. Ya model paletleri iyi algılayamıyor ya da bunu anlayabilmek için doğrulama verisi çok az. Her iki durumda da atılacak adım aynı: eğitim ve doğrulama için daha fazla palet topla.

Hataları İncele#

val_batch0_labels.jpg ile val_batch0_pred.jpg dosyalarını yan yana aç. Aralarındaki farklar, hatalarının görsel hâlidir; bu görsellerdeki örüntüler ise tanıyı ortaya koyar: görüntü kenarındaki kaçırmalar, küçük nesneler, belirli bir ışık koşulu veya birbirine benzeyen nesneler. Bu tür veri kümesi örüntüleri, neredeyse her zaman hiperparametre ayarından daha etkilidir.

Hap modelinin doğrulama görüntülerinde açıkça görünen hapların güven puanı 1.0'a yakındır. Yaklaşık 0.3–0.5 puan alan düşük güvenli kutular, kısmen başka bir blister ambalajın altında kalan ve görüntü kenarında kesilen haplarda yoğunlaşıyor. Bu, conf ile ayar yaparak çözülecek bir sorun değil; etiketleme politikasıyla ilgili bir soru. Yarı gizli bir hap sayılmalı mı? Karar ver, kuralı yaz ve her görüntüyü aynı şekilde etiketle.

Ardından results.png dosyasını aç. Eğitim ve doğrulama kayıpları birlikte düşmeli. Eğitim kaybı düşmeye devam ederken doğrulama kaybı yükseliyorsa model aşırı öğreniyordur; her ikisi de yüksek kalıyorsa model yetersiz öğreniyordur. Her iki durumu anlamak için bias-varyans ödünleşimi çerçevesini kullan.

Aynı veriye ait üç uyum yan yana: yetersiz uyum gösteren düz çizgi, veriye iyi uyan eğri ve her noktadan geçen aşırı uyumlu eğri

Aşırı öğrenmeyi gidermek için, işe yarama sıklığına göre düzeltmeler: daha çeşitli veri; daha az epoch veya daha sıkı bir patience; ve veri artırma (hsv_h, degrees, translate, scale, fliplr, mosaic, ...). Veri artırma varsayılanları zaten güçlü; yalnızca sol ve sağ yönlerin önemli olduğu durumlarda fliplr özelliğini kapatmak gibi geçerli bir nedenin varsa değiştir.

Bulguları Bir Düzeltme Listesine Dönüştür#

Hiperparametreleri ayarlamadan önce veriyi düzelt ve neyin işe yaradığını anlayabilmek için her turda tek bir şeyi değiştir. Bu döngünün veri kümesi tarafı İlk İnce Ayar ve Yineleme Döngüsü sayfasında ele alınıyor.

Bu Hatalardan Kaçın#

Farklı bir görüntü boyutunda doğrulama yapmak

Belirti: 0.659 mAP50-95 puanı alan model aniden 0.403 puan alıyor. Neden: pills_v1, imgsz=320 boyutunda eğitildi ve imgsz=640 ile doğrulandı; nesneler, modelin öğrendiği her şeye kıyasla iki kat büyük görünüyor. Çözüm: Eğitimde kullanılan imgsz boyutunda doğrulama yap ve dağıt; çalıştırmaları yalnızca aynı boyutta karşılaştır.

Doğrulama tespitlerini dağıtım tespitleri sanmak

Doğrulama, tam kesinlik-duyarlılık eğrisini çıkarabilmek için conf=0.001 değerinde çalışır; bu nedenle val_batch0_pred.jpg, uygulamanın hiçbir zaman raporlamayacağı kutuları gösterir. Dağıtım eşiğini BoxF1_curve.png üzerinden seç, ardından predict ile denetle.

Küçük doğrulama kümelerinde sonuçlar oynaktır

23 görüntüyle bir epoch'taki kesinlik 0.93'ten 0.80'e düşüp tekrar yükseldi. Eğilimleri epoch'lar ve çalıştırmalar genelinde değerlendir; bir iki puanlık farklara güvenmeden önce doğrulama kümesini büyüt.

Dene

pills_v1/weights/best.pt modelini doğrula. Tek sayfalık bir tanı raporu hazırla: mAP50 ve mAP50-95 değerlerini içeren başlangıç ve eğitim sonrası karşılaştırma tablosu; val_batch0_labels.jpg ile val_batch0_pred.jpg karşılaştırmasında bulduğun iki somut hata (ne ve nerede); results.png verilerine dayalı bir aşırı öğrenme değerlendirmesi; ve ikinci tur için üç belirli değişiklik.

Tamamlanma ölçütü
Aşağıdakilerin tümü doğru olduğunda dersi tamamlamış olursun.
  • Başlangıç ve eğitim sonrası mAP50 ile mAP50-95 değerlerini içeren bir tablon var; her iki değer de eğitim imgsz düzeyinde.

  • Doğrulama görüntülerinde en az iki somut hata belirledin.

  • Bir sonraki tur için veri veya eğitimle ilgili üç belirli değişiklik yazdın.

Çözümü göster
Baseline mAP50-95 0.0002 -> pills_v1 0.659 (mAP50 0.977), both at imgsz=320

Failures:
- Low-confidence boxes (about 0.3-0.5) on pills half-hidden under another pack.
- Low-confidence or missing boxes on pills cut off at the image edge.

Overfitting: none. val/box_loss flattened near 1.05; val/cls_loss spiked at epochs 4-6
and then fell to its lowest value (1.08) at epoch 10.

Fix list:
1. Write a labeling rule for partly hidden and edge pills, then relabel the val set to match.
2. Train longer and larger: epochs=50, imgsz=640 (mAP50-95 lags mAP50, so box tightness is the gap).
3. Add 20 frames with overlapping packs, labeled under the new rule.
Sırada ne var

Neyi değiştireceğini biliyorsun. Şimdi sonraki turu verimli biçimde çalıştır: kesintiye uğrayan çalıştırmaları sürdür ve en iyi ağırlıklarından başlayarak yeni çalıştırma başlat.

İlerlemeni kaydetmek için giriş yap