Her Görevi Değerlendir ve Dağıtıma Al
Her görevi kendi metriğine ve dağıtım boyutuna göre değerlendir, tüm görevleri tek bir döngüde doğrula ve her görevi doğrulanmış bir tahminle ONNX'e aktar.
Her görevin doğruluk tanımı farklıdır: piksel örtüşmesi, anahtar nokta benzerliği, döndürülmüş kutu IoU'su, top-1 isabeti veya derinlik oranı. Tespit kontrol listesini başka görevlerde de kullanan ekipler, kutu mAP değerine göre eşiklenen segmentasyon modellerini ve ürünün parçası olmayan kutulara göre eşiklenen poz modellerini dağıtıma alır. Eşik değerini geçen bir model de dışa aktarımdan sonra başarısız olabilir: bu derste aynı poz ağırlıkları bir girdi boyutunda 5, diğerinde 3 kişi buluyor; derinlik modelinin mesafeleri ise neredeyse iki katına çıkıyor.
Uygulamalı
Her görev için bir eşik#
| Görev | Eşik metriği | results_dict anahtarı | Python özniteliği | Ölçüm ölçütü |
|---|---|---|---|---|
| segmentasyon | maske mAP50-95 | metrics/mAP50-95(M) | metrics.seg.map | örnek başına piksel IoU'su |
| anlamsal segmentasyon | mIoU (+ sınıf başına IoU) | metrics/mIoU | metrics.miou | sınıf başına piksel IoU'su |
| poz | poz mAP50-95 | metrics/mAP50-95(P) | metrics.pose.map | OKS |
| obb | OBB mAP50-95 | metrics/mAP50-95(B) | metrics.box.map | döndürülmüş kutu IoU'su |
| sınıflandırma | top-1 doğruluğu | metrics/accuracy_top1 | metrics.top1 | doğru en üst sınıf |
| derinlik | δ1 (+ AbsRel) | metrics/delta1 | metrics.delta1 | gerçek derinliğin 1,25×'i içindeki piksellerin oranı |
performans metrikleri kılavuzu her puanı açıklar. Segmentasyon ve poz çalıştırmaları kutu metriklerini de raporlar; bunları tanılama amacıyla kullan — kutu ile maske arasındaki fark, dış hat kalitesine işaret eder — ancak bunlar ürünün kendisi değildir. Eşik taramaları ve karmaşıklık matrisi gibi tespite özgü inceleme yöntemleri Doğrulama ve Tanılama bölümünden kullanılabilir.
Tüm görevleri tek bir döngüde doğrula#
Val modu, eşleşen veri kümesiyle her görevin ağırlıklarını kabul eder; böylece tek bir döngü sürüm tablosunun sayılarını üretir:
from ultralytics import YOLO
runs = {
"yolo26n-seg.pt": ("coco8-seg.yaml", "metrics/mAP50-95(M)"),
"yolo26n-sem.pt": ("cityscapes8.yaml", "metrics/mIoU"),
"yolo26n-pose.pt": ("coco8-pose.yaml", "metrics/mAP50-95(P)"),
"yolo26n-obb.pt": ("dota8.yaml", "metrics/mAP50-95(B)"),
"yolo26n-depth.pt": ("depth8.yaml", "metrics/delta1"),
}
for weights, (data, key) in runs.items():
metrics = YOLO(weights).val(data=data, device="cpu", plots=False, verbose=False)
print(f"{weights:17s} {key:22s} {metrics.results_dict[key]:.3f}")yolo26n-seg.pt metrics/mAP50-95(M) 0.538
yolo26n-sem.pt metrics/mIoU 0.610
yolo26n-pose.pt metrics/mAP50-95(P) 0.419
yolo26n-obb.pt metrics/mAP50-95(B) 0.857
yolo26n-depth.pt metrics/delta1 0.377Açıkça bir imgsz belirtilmediğinde her model, eğitildiği boyutta doğrulanır: segmentasyon ve poz için 640, derinlik için 768, anlamsal segmentasyon ve OBB için 1024. Bu önceden eğitilmiş sayıların değeri, kursta daha önceki 320 piksel eğitim çalışmalarınınkinden yüksektir; bunda hem eğitim hem de çözünürlük etkili olmuştur. Dört doğrulama görüntüsü, buradaki tüm sayıları hızlı birer kontrolden ibaret kılar; örneğin derinlik görevi sayfası, tam NYU kıyaslama veri kümesindeki δ1 değerini raporlar. Sınıflandırma özellikle dışarıda bırakılmıştır: sınıflandırıcı dersinde olduğu gibi, ince ayar yaptığın sınıflandırıcıyı kendi klasörlerinde doğrula.
Aynı ağırlıklar, farklı imgsz değerlerinde farklı puan alır. Her sayının yanında imgsz değerini kaydet, dağıtacağın boyutta doğrula ve farklı boyutlarda ölçülen sayıları asla karşılaştırma.
Her görevi dışa aktar#
Her görev, aynı Dışa Aktarma modu çağrısıyla ONNX biçimine aktarılır. Görev model meta verilerinde saklandığından YOLO("model.onnx") doğru son işlemeyi uygular. Çalışma zamanı seçenekleri, eşdeğerlik kontrolleri ve TensorRT veya OpenVINO ayarları ONNX'e Aktarma (ve Eşdeğerliği Doğrulama) bölümünde ele alınır; bu döngü her görevin gidiş-dönüş aktarımından sağ çıktığını denetler:
from ultralytics import YOLO
for weights in ["yolo26n-seg.pt", "yolo26n-sem.pt", "yolo26n-pose.pt", "yolo26n-obb.pt", "yolo26n-cls.pt", "yolo26n-depth.pt"]:
onnx_path = YOLO(weights).export(format="onnx", imgsz=320)
onnx_model = YOLO(onnx_path) # task comes from the ONNX metadata
result = onnx_model("https://ultralytics.com/images/bus.jpg", imgsz=320, verbose=False)[0]
print(f"{onnx_model.task:9s} {result.verbose()}")segment 4 persons, 1 bus,
semantic
pose 3 persons,
obb (no detections),
classify minibus 0.38, police_van 0.21, trolleybus 0.05, amphibian 0.05, bullet_train 0.03,
depth depth 4.67-26.91m,Her dışa aktarım, doğru görevle yeniden yüklendi. Üç sonuç daha yakından incelenmeli:
- Poz, 320 pikselde 3 kişi buldu; aynı boyutta 640 piksel kullanan PyTorch çalıştırması 5 kişi bulmuştu.
- Derinlik modeli sahneyi 4,7–26,9 m olarak okudu; aynı ağırlıklar doğal boyutları olan 768 pikselde 2,1–14,9 m değerlerini vermişti.
- OBB, bir sokak fotoğrafında hiçbir şey bulmadı — bu, hava görüntüleri üzerinde eğitilmiş bir model için beklenen davranıştır; dışa aktarım hatası değildir.
imgsz=320 boyutunda PyTorch, ONNX ile aynı poz ve derinlik sayılarını verir; dolayısıyla ikisi de dışa aktarım hatası değildir: sonucu değiştiren girdi boyutudur. Doğruladığın imgsz boyutunda dışa aktar. Anlamsal sonuçlarda nesne başına özet satırı bulunmadığından bunun yerine result.semantic_mask değerini kontrol et.
Bir dışa aktarımın bozuk olduğuna karar vermeden veya onu kullanıma sunmadan önce, dışa aktarılan her modelle eğitildiği verilere benzeyen bir görüntü üzerinde bir kez tahmin yap — COCO modelleri için sokak sahneleri, OBB için hava görüntüleri, derinlik için doğru ölçekte iç veya sokak sahneleri.
Kendi son işlem kodunu yazıyorsan, dışa aktarım günlüğündeki imgsz=320 boyutunda ONNX'in ham çıktıları şunlardır:
| Görev | ONNX çıktı boyutları | İçerik |
|---|---|---|
| segmentasyon | (1, 116, 2100) ve (1, 32, 80, 80) | kutular + 80 sınıf puanı + 32 maske katsayısı; maske prototipleri |
| anlamsal segmentasyon | (1, 320, 320) | sınıf haritası; argmax zaten grafikte uygulanmıştır |
| poz | (1, 56, 2100) | kutular + 1 puan + 17 × 3 anahtar nokta değeri |
| obb | (1, 20, 2100) | kutular + 15 sınıf puanı + 1 açı |
| sınıflandırma | (1, 1000) | sınıf olasılıkları |
| derinlik | (1, 1, 320, 320) | piksel başına metre cinsinden derinlik |
Ultralytics Platform'da model sayfası, aynı biçimleri oluşturan Dışa Aktarma sekmesinin üzerinde, göreve özgü metrikleri (segmentasyon modeli için maske mAP gibi) gösterir:

ONNX, farklı sistemler arasında aktarım noktasıdır: dışa aktarılan tek bir dosya ONNX Runtime'ta çalışır veya başka çalışma zamanlarına dönüştürülebilir.

Dağıtım kontrol listesi#
- Yukarıdaki tablodaki eşik metriği, ayrılmış bir veri kümesinde dağıtım
imgszdeğerinde hedefini karşılıyor. - Dışa aktarılan model beklenen
taskile yeniden yükleniyor ve sabit bir görüntü kümesindeki tahminleri PyTorch tahminleriyle eşleşiyor. - Her göreve özgü kod yolu boş sonuçları işliyor:
masks is None, sıfır anahtar nokta, sıfır OBB. - Aşağı akıştaki sayılar (alanlar, açılar, mesafeler, sınıf olasılıkları) kaydediliyor; böylece Gözlemlenebilirlik ve Kayma bölümünde açıklandığı gibi bu değerlerdeki değişimi izleyebilirsin.
Eşik karşılanmadığında, "veriye geri dönmek" genellikle şu üç kaldıraçtan birini kullanmak anlamına gelir:

Önce veri kalitesini ve etiketleme sürecini düzelt — 2. ve 6. derslerdeki etiket kontrolleri başlamak için en düşük maliyetli seçenektir — ve modeli ancak veriler temiz olduğunda değiştir.
Çözümü göster
from ultralytics import YOLO
checks = {
"runs/segment/train/weights/best.pt": ("coco8-seg.yaml", "metrics/mAP50-95(M)", "https://ultralytics.com/images/bus.jpg"),
"runs/obb/train/weights/best.pt": ("dota8.yaml", "metrics/mAP50-95(B)", "https://ultralytics.com/images/boats.jpg"),
}
for weights, (data, key, image) in checks.items():
model = YOLO(weights)
gate = model.val(data=data, imgsz=320, plots=False, verbose=False).results_dict[key]
onnx_model = YOLO(model.export(format="onnx", imgsz=320))
result = onnx_model(image, imgsz=320, verbose=False)[0]
print(f"{onnx_model.task:8s} {key} @320 = {gate:.3f} | ONNX: {result.verbose()}")runs/... yollarını eğitim çalıştırmalarının yazdırdığı klasörlere (Results saved to ...) göre ayarla. 2. ve 7. derslerdeki tek dönemlik çalıştırmalarla:
segment metrics/mAP50-95(M) @320 = 0.377 | ONNX: 4 persons, 1 bus,
obb metrics/mAP50-95(B) @320 = 0.832 | ONNX: 185 ships, 3 harbors,| Model | Eşik metriği | Değer | görüntü boyutu | ONNX |
|---|---|---|---|---|
| segmentasyon | maske mAP50-95 | 0.377 | 320 | segment olarak yeniden yüklenir; otobüsü ve 4 kişiyi bulur |
| obb | OBB mAP50-95 | 0.832 | 320 | obb olarak yeniden yüklenir; 185 gemi ve 3 liman bulur |
Her kontrol, kendi alanından bir görüntü kullanır: OBB modeline sokak sahnesi değil, hava görüntüsünden liman fotoğrafı verilir. Her iki satır da dışa aktarım kontrolünü geçer; ancak modellerden hiçbiri dağıtıma hazır değildir, çünkü dört doğrulama görüntüsüyle yapılan tek dönemlik eğitim bir hızlı kontroldür, eşik değerlendirmesi değildir.