Ultralytics YOLO27: Bekleme listesine katıl.
Get Started
Bilgisayarlı Görünün Temelleri·Ölçümleri Oku·Ders 9/10
Dersbaşlangıç düzeyi

Tespit Metriklerini Dürüstçe Okuma

Doğrulamayı çalıştır; precision, recall, mAP50-95, sınıf başına AP ve karmaşıklık matrisini birlikte oku; ardından bir hedefe göre dağıtım eşiği belirle.

Tek bir sayı rahatlatıcı gelir: mAP 0,83, tamam. Ancak aynı mAP; zamanın yarısında başarısız olan bir sınıfı, sürekli gevşek kutuları ya da her dakika birine uyarı gönderen bir eşiği gizleyebilir. Gerçek bir doğrulama çalıştıracak ve neyi düzeltmen, eşiği nerede belirlemen gerektiğini gösterene kadar sonuçları satır satır okuyacaksın.

Sonuç

Doğrulamayı çalıştır, sınıf başına AP'ye göre darboğaz sınıfını belirle, precision veya recall hedefine göre bir güven eşiği seç ve yayına alma, yineleme ya da yeniden düşünme kararı ver.

Hızlı Başlangıç
Nasıl ilerleyeceğini zaten biliyorsan, işte kısa sürüm.
  1. Precision: çizilen kutuların ne kadarının doğru olduğu. Recall: gerçek nesnelerin ne kadarının bulunduğu.

  2. mAP50-95'i raporla; mAP50 gevşek kutuları görmezden gelir.

  3. Sınıf başına AP'yi incele; ortalama en zayıf sınıfı gizler.

  4. P ve R sütunları tek bir çalışma noktasındaki değerleri gösterir; dağıtım eşiğindeki değerleri değil.

  5. Eşiği bir hedefe göre belirle: precision ≥ X veya recall ≥ Y.

Uygulamalı

Her tahmin nasıl puanlanır?#

Doğrulama, tahmin edilen her kutuyu gerçek değerle eşleştirir. Bir tahmin, doğru sınıfa aitse ve henüz eşleşmemiş bir gerçek değer kutusuyla IoU değeri eşiği aşıyorsa doğru pozitif (TP) olur; aksi hâlde yanlış pozitif (FP) olur. Eşleşmeyen her gerçek değer nesnesi yanlış negatif (FN) olur.

ÖlçütFormülYanıtladığı soru
PrecisionTP / (TP + FP)Model bir kutu çizdiğinde, ne sıklıkla doğru sonuç verir?
RecallTP / (TP + FN)Gerçek nesnelerin kaçını buldu?
F12 × P × R / (P + R)İkisini dengeleyen tek bir sayı

Güven eşiğini düşürmek daha fazla kutu ekler: recall yükselir, precision düşer. Precision-recall eğrisi, tüm eşiklerde bu ödünleşimi gösterir; eğrinin altındaki alan, tek bir sınıf için ortalama precision (AP) değeridir. mAP50, IoU 0,5 değerinde sınıflar genelindeki AP ortalamasını alır; bu eşikte belirgin ölçüde gevşek bir kutu bile sayılır. mAP50-95, 0,5 ile 0,95 arasındaki on IoU eşiğinin ortalamasını alır ve bu nedenle sıkı kutuları ödüllendirir; Ultralytics model tablolarındaki öne çıkan metriktir.

Bir doğrulama çalıştır#

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
metrics = model.val(data="coco8.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}")
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95)
                   all          4         17      0.551      0.962      0.943      0.669
                person          3         10      0.551        0.8      0.848      0.387
                   dog          1          1       0.36          1      0.995      0.597
                 horse          1          2       0.36          1      0.995      0.696
              elephant          1          2      0.656      0.969      0.828      0.545
              umbrella          1          1      0.543          1      0.995      0.895
          potted plant          1          1      0.833          1      0.995      0.895

Baştan sona oku:

  • Instances 17, Images 4. COCO8 bir hızlı kontroldür. Dört görsel, yayına alma kararı vermek için yeterli değildir; tüm sayıları örnek olarak değerlendir.
  • mAP50 0.943, mAP50-95 0.669. Nesnelerin çoğu bulunuyor, ancak birçok kutu gevşek. Aradaki büyük fark, zayıf noktanın tespit değil konumlandırma olduğunu gösterir.
  • person AP50-95 0.387. En yaygın sınıf en zayıf sınıf. Darboğazın bu.
  • P 0.551, R 0.962. Bu sütunlar, tahmin yaptığın 0.25 eşiğinde değil, sınıflar genelinde F1 değerini en üst düzeye çıkaran tek güven eşiğinde — burada düşük bir eşikte — okunur. Bunları "modelin precision değeri" diye aktarma.

Sınıf başına AP ve dağıtım eşiği#

Aynı çalıştırma, sınıf başına AP ile her güven eşiğindeki precision ve recall değerlerini içerir; böylece tahmine göre değil, bir hedefe göre eşik seçebilirsin:

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
metrics = model.val(data="coco8.yaml", plots=False, verbose=False)
box = metrics.box

# Per-class AP from the same run: the average hides the weakest class
for i, c in enumerate(box.ap_class_index):
    print(f"{model.names[int(c)]:13} AP50={box.ap50[i]:.3f}  AP50-95={box.ap[i]:.3f}")

# Precision and recall at every confidence threshold for one class
row = list(box.ap_class_index).index(0)  # class 0 = person
for conf in (0.1, 0.25, 0.5, 0.75):
    j = int(conf * (len(box.px) - 1))
    print(f"person @ conf {conf:.2f}: precision {box.p_curve[row, j]:.2f}, recall {box.r_curve[row, j]:.2f}")
                   all          4         17      0.551      0.962      0.943      0.669
person        AP50=0.848  AP50-95=0.387
dog           AP50=0.995  AP50-95=0.597
horse         AP50=0.995  AP50-95=0.696
elephant      AP50=0.828  AP50-95=0.545
umbrella      AP50=0.995  AP50-95=0.895
potted plant  AP50=0.995  AP50-95=0.895
person @ conf 0.10: precision 0.63, recall 0.80
person @ conf 0.25: precision 1.00, recall 0.54
person @ conf 0.50: precision 1.00, recall 0.40
person @ conf 0.75: precision 1.00, recall 0.14

Artık eşik bir his değil, karar kuralı:

Karar ölçütündeki hedefSeçimBu çalıştırmadaki sonuç
Uyarıların en fazla %5'i yanlış olabilir (precision ≥ 0.95)En fazla recall değerini korumak için hedefi karşılayan en düşük eşik0.25: precision 1.00, recall 0.54
En fazla 5 kişiden 1'ini kaçır (recall ≥ 0.80)En fazla precision değerini korumak için hedefi karşılayan en yüksek eşik0.10: precision 0.63, recall 0.80

Burada ikisi de yeterince iyi değil: yüksek precision, insanların yarısına mal oluyor; yüksek recall ise uyarıların üçte birine. Bu, eşik sorunundan ziyade "yinele" kararı için kanıttır. Doğrulama ayrıca BoxPR_curve.png, BoxP_curve.png, BoxR_curve.png, BoxF1_curve.png ve confusion_matrix.png dosyalarını çalıştırma klasörüne kaydeder; böylece aynı ödünleşimi grafiklerden de okuyabilirsin. Performans metrikleri kılavuzu her birini açıklar.

Sonraki düzeltmeler#

Karmaşıklık matrisi, zayıf bir sınıfın neyle karıştırıldığını gösterir. forklift AP değeri düşükse ve forkliftler pallet_jack olarak tahmin ediliyorsa sorun konumlandırma değil, sınıf karışıklığıdır: görsel farkı gösteren örnekler ekle veya ayrı sınıflara ihtiyaç duyan bir sonraki aşama kodu yoksa sınıfları birleştir. Model değerlendirme içgörüleri kılavuzu iş akışını açıklar.

mAP değerini iyileştirmenin üç yolu: veri kalitesi, model optimizasyonu ve etiketleme süreci

Düzeltmelerin çoğu ilk ve üçüncü panellere girer: darboğaz sınıfı için daha iyi veri ve daha iyi etiketler. Modeli veya eğitim ayarlarını ancak önceki üç dersteki veri kontrollerini geçtikten sonra değiştir.

Dondurulmuş bir test kümesinden elde edilen kanıtKarar
İş açısından kritik her sınıf, precision ve recall hedefini karşılıyorYayına al ve izle
Bir sınıf veya koşul hedefini karşılamıyorYinele: bu açığı kapatmaya yönelik veri ve etiketler kullan
Her sınıf hedeften çok uzak veya sınıflar görsel olarak örtüşüyorGörev tanımını, sınıfları veya kamera kurulumunu yeniden düşün

Yaygın Hatalar#

Sınıf başına AP, ortalamadan daha önemlidir

0,83 mAP, bir sınıfın 0,40 değerinde olduğunu gizleyebilir. İş değeri o sınıfa bağlıysa elinde 0,83'lük bir model yoktur — göz boyayan bir ortalamaya sahip, bozuk bir model vardır.

Yalnızca mAP50 değerini vermek

Belirti: "0,94 puan alan" bir modelin ölçüm veya kırpma için fazla gevşek kutular çizmesi. Çözüm: mAP50-95 değerini raporla ve mAP50 ile arasındaki farkı konumlandırma göstergesi olarak yorumla.

Küçük veya sızıntılı bir doğrulama kümesine güvenmek

Belirti: birkaç düzine görüntüden veya eğitim kümesinin neredeyse kopyalarından elde edilen kusursuz görünen sonuçlar. Çözüm: doğrulamayı önemli her sınıf için birkaç yüz örneğe çıkar ve herhangi bir metriği yorumlamadan önce önceki derste anlatılan yakın yinelenenleri kontrol et.

Dene

Yukarıdaki iki betiği de çalıştır. Bu modelle oluşturulmuş bir kişi sayacı için tek paragraflık bir değerlendirme yaz: darboğaz sınıfını ve AP50-95 değerini, mAP50 ile mAP50-95 arasındaki farkın ne söylediğini, precision ≥ 0.95 için yayına alacağın eşiği ve bunun maliyetini oluşturan recall değerini, ayrıca yayına alma, yineleme veya yeniden düşünme kararını belirt.

Tamamlanma ölçütü
Aşağıdakilerin tümü doğru olduğunda dersi tamamlamış olursun.
  • Değerlendirmen, AP50-95 değeriyle birlikte darboğaz sınıfını belirtiyor.

  • Sonuç raporun bir dağıtım eşiğini, bu eşiği sağlayan hedefi ve bunun bedeli olan recall ya da precision değerini belirtir.

  • Sonuç raporun, sayılarla desteklenen dağıtıma alma, yineleme veya yaklaşımı yeniden düşünme kararıyla biter.

Çözümü göster

yolo26n.pt üzerinde kişi sayacı: COCO8 doğrulama sonuçları

Darboğaz person; AP50-95 değeri 0.387, genel değer ise 0.669. Ayrıca en çok örneğe sahip sınıf da bu (17 örneğin 10'u); dolayısıyla hem en zayıf sınıf hem de kişi sayacı için en önemli sınıf. AP50 değeri 0.848 olduğundan model kişilerin çoğunu buluyor, ancak kutuları gevşek çiziyor. Bu durum sayım için, konumu veya boyutu ölçen görevlerde olduğu kadar önemli değil.

Precision ≥ 0.95 için koşulu sağlayan en düşük eşik conf 0.25; bu eşikte precision 1.00, ancak recall yalnızca 0.54: sayaç kişilerin neredeyse yarısını kaçırır. Recall ≥ 0.80 için conf 0.10 gerekir; bu eşikte sayımların üçte biri yanlış olur.

Karar: yinele. Dağıtım kamerasından kişiler topla ve etiketle — özellikle küçük, örtülmüş ve kare kenarındaki kişileri — ardından birkaç yüz kişiden oluşan sabit bir test kümesiyle yeniden doğrula. Dört doğrulama görseli, dağıtıma alma kararı vermek için yeterli değil.

Sırada ne var

Son ders: YOLO26'yı kendi görsellerinde çalıştır ve çıktıyı görev tanımına göre kontrol et.

İlerlemeni kaydetmek için giriş yap