Ultralytics YOLO ile Model Karşılaştırması#
Karşılaştırma Görselleştirmesi#
Giriş#
Modelin eğitilip doğrulandıktan sonra, sonraki mantıklı adım performansını çeşitli gerçek dünya senaryolarında değerlendirmektir. Ultralytics YOLO26'daki Benchmark modu, modelinin hızını ve doğruluğunu çeşitli dışa aktarma biçimlerinde değerlendirmek için güçlü bir çerçeve sunar.
İlk hız karşılaştırmaları için yayımlanmamış YOLO27 önizlemesine göz at.
İzle: Ultralytics YOLO26 Modellerini Karşılaştır | Farklı Donanımlarda Model Performansı Nasıl Karşılaştırılır?
Karşılaştırma Neden Önemlidir?#
- Bilinçli Kararlar: Hız ve doğruluk arasındaki ödünleşimler hakkında bilgi edin.
- Kaynak Tahsisi: Farklı dışa aktarma biçimlerinin farklı donanımlarda nasıl performans gösterdiğini anla.
- Optimizasyon: Belirli kullanım senaryon için en iyi performansı hangi dışa aktarma biçiminin sunduğunu öğren.
- Maliyet Verimliliği: Karşılaştırma sonuçlarına göre donanım kaynaklarını daha verimli kullan.
Karşılaştırma Modundaki Temel Ölçütler#
- mAP50-95: Nesne tespiti, örnek segmentasyonu, poz tahmini ve OBB için.
- mIoU: Anlamsal segmentasyon için.
- delta1: Derinlik tahmini için.
- accuracy_top1: Görüntü sınıflandırma için.
- Çıkarım Süresi: Her görüntü için geçen süre, milisaniye cinsinden.
Desteklenen Dışa Aktarma Biçimleri#
- ONNX: En iyi CPU performansı için
- TensorRT: En yüksek GPU verimliliği için
- OpenVINO: Intel donanım optimizasyonu için
- CoreML, TensorFlow SavedModel ve Daha Fazlası: Çeşitli dağıtım ihtiyaçları için.
- CPU hızını 3 kata kadar artırmak için ONNX veya OpenVINO biçimine aktar.
- GPU hızını 5 kata kadar artırmak için TensorRT biçimine aktar.
Kullanım Örnekleri#
Eksik paketlerle karşılaşmamak için karşılaştırma yapmadan önce Ultralytics'i dışa aktarma bağımlılıklarıyla birlikte yükle.
pip install ultralytics[export]YOLO26n modellerini desteklenen tüm dışa aktarma biçimlerinde (ONNX, TensorRT vb.) karşılaştır. Dışa aktarma seçeneklerinin tam listesi için aşağıdaki Argümanlar bölümüne bak.
from ultralytics.utils.benchmarks import benchmark
# GPU'da karşılaştırma yap
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)
# Belirli bir dışa aktarma biçimini karşılaştır
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, format="onnx")Bağımsız değişkenler#
model, data, imgsz, quantize, device, verbose ve format gibi argümanlar, kullanıcıların karşılaştırmaları kendi ihtiyaçlarına göre ince ayarlamasına ve farklı dışa aktarma biçimlerinin performansını kolayca karşılaştırmasına olanak tanır.
| Anahtar | Varsayılan Değer | Açıklama |
|---|---|---|
model | None | Model dosyasının yolunu belirtir. Hem .pt hem de .yaml biçimlerini kabul eder; örneğin, önceden eğitilmiş modeller veya yapılandırma dosyaları için "yolo26n.pt". |
data | None | Karşılaştırma için veri kümesi YAML dosyasının yolu; genellikle doğrulama verilerinin yollarını ve ayarlarını içerir. Örnek: "coco8.yaml". Sınıflandırma için bunun yerine bir veri kümesi dizini veya yerleşik veri kümesi adı kullanılır (ör. imagenet10). |
imgsz | 640 | Modelin girdi görüntüsü boyutu. Kare görüntüler için tek bir tam sayı olmalıdır (ör. 640); benchmark() yalnızca kare görüntü boyutlarını destekler. |
quantize | None | İstenen hassasiyet: 16 (FP16) veya 8 (INT8; PTQ şemaları için kalibrasyon data/fraction gerekir, yalnızca ağırlık kullanan şemalar için gerekmez); biçimin desteklediği durumlarda 32/ayarlanmamış değer FP32 anlamına gelir — FP32 dışa aktaramayan bir biçim, açıkça belirtilen 32 değerini reddeder veya gerektirdiği hassasiyete döner. Yerel PyTorch satırı dışa aktarılmaz: yalnızca 16 bu satırı etkileyerek FP16 çıkarımı seçer; 8, 32 ve ayarlanmamış değer ise FP32 çalıştırır. Her biçim daha sonra kendi çalışma zamanı hassasiyetinde çıkarım yapar. Kullanımdan kaldırılan half/int8 bayraklarının yerini alır. |
device | None | Karşılaştırma için hesaplama cihazını belirtir; örneğin "cpu" veya "cuda:0"; değer ayarlanmamışsa ilk kullanılabilir GPU'yu, yoksa CPU'yu kullanır. |
verbose | False | Değer True veya bir kayan noktalı sayıysa, karşılaştırma hataları (assertion hataları dışında) hata kaydı oluşturmak yerine istisna yükseltir; 0.25 gibi bir kayan noktalı sayı, ayrıca başarılı olan her biçimin ölçütünün bu eşik değeri aşmasını doğrular. |
eps | 0.001 | Sıfıra bölmeyi önlemek için FPS'ye dönüştürmeden önce görüntü başına çıkarım süresine eklenen küçük epsilon (milisaniye). Nadiren değiştirilir. |
format | '' | Yalnızca belirtilen dışa aktarma biçimini karşılaştırır (ör. format=onnx). Desteklenen tüm biçimleri otomatik olarak test etmek için boş bırak. |
Tek başına kullanılan benchmark() işlevi (from ultralytics.utils.benchmarks import benchmark), yukarıdaki tablodaki değerler yerine kendi imza varsayılanlarını kullanır; özellikle model="yolo26n.pt", imgsz=160 ve device="cpu" değerlerini. yolo benchmark CLI ile eşleşmesi için imgsz ve device değerlerini açıkça ilet.
Dışa Aktarma Biçimleri#
Karşılaştırmalar, aşağıda listelenen tüm olası dışa aktarma biçimlerinde otomatik olarak çalıştırılmaya çalışılır. Alternatif olarak, aşağıdaki biçimlerden herhangi birini kabul eden format argümanını kullanarak belirli bir biçim için karşılaştırma çalıştırabilirsin.
| Biçim | format bağımsız değişkeni | Model | Üst veriler | Bağımsız değişkenler |
|---|---|---|---|---|
| PyTorch | - | yolo26n.pt | ✅ | - |
| TorchScript | torchscript | yolo26n.torchscript | ✅ | imgsz, quantize, dynamic, nms, batch, device |
| ONNX | onnx | yolo26n.onnx | ✅ | imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n_openvino_model/ | ✅ | imgsz, quantize, dynamic, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n.engine | ✅ | imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n.mlpackage | ✅ | imgsz, dynamic, quantize, nms, batch, device |
| Apple Core AI | coreai | yolo26n.aimodel | ✅ | imgsz, batch, quantize |
| TF SavedModel | saved_model | yolo26n_saved_model/ | ✅ | imgsz, quantize, opset, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n.pb | ❌ | imgsz, opset, batch, device |
| TF Edge TPU | edgetpu | yolo26n_edgetpu.tflite | ✅ | imgsz, quantize, opset, data, fraction, device |
| LiteRT | litert | yolo26n.tflite | ✅ | imgsz, quantize, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n.mnn | ✅ | imgsz, batch, dynamic, quantize, simplify, opset, nms, device |
| NCNN | ncnn | yolo26n_ncnn_model/ | ✅ | imgsz, quantize, batch, device |
| IMX500 | imx | yolo26n_imx_model/ | ✅ | imgsz, quantize, data, fraction, nms, device |
| RKNN | rknn | yolo26n_rknn_model/ | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| ExecuTorch | executorch | yolo26n_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n_axelera_model/ | ✅ | imgsz, batch, quantize, data, fraction, device |
| DEEPX | deepx | yolo26n_deepx_model/ | ✅ | imgsz, quantize, simplify, opset, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n_qnn.onnx | ✅ | imgsz, batch, name, quantize, simplify, opset, data, fraction, device |
| Hailo | hailo | yolo26n_hailo_model/ | ✅ | imgsz, name, quantize, data, fraction, simplify, conf, iou, device |
| Huawei Ascend | ascend | yolo26n_ascend_model/ | ✅ | imgsz, batch, name, quantize, opset, simplify, nms, device |
| AMD Xilinx | xilinx | yolo26n_xilinx_model/ | ✅ | imgsz, name, quantize, data, fraction, opset, simplify, device |
nms=None, harici NMS için varsayılan olarak ham çıktılar üretir. Kullanılabilir bir NMS içermeyen başlık seçmek için nms=False değerini ayarla; desteklenmeyen biçimler yerel çıktı yoluna döner. Yukarıdaki nms girdileri, nms=True ile NMS içerebilen biçimleri tanımlar.
Ayrıntılı export bilgileri için Dışa Aktarma sayfasına bak.
Sık Sorulan Sorular#
Ultralytics YOLO26, modelinin farklı dışa aktarma biçimlerindeki performansını değerlendirmek için bir Benchmark modu sunar. Bu mod, ortalama Ortalama Kesinlik (mAP50-95), doğruluk ve milisaniye cinsinden çıkarım süresi gibi temel ölçütler hakkında bilgi sağlar. Karşılaştırmaları Python veya CLI komutlarıyla çalıştırabilirsin. Örneğin, GPU'da karşılaştırma yapmak için:
Örnekfrom ultralytics.utils.benchmarks import benchmark # GPU'da karşılaştırma yap benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)Karşılaştırma argümanları hakkında daha fazla bilgi için Argümanlar bölümünü ziyaret et.
YOLO26 modellerini ONNX, TensorRT ve OpenVINO gibi farklı biçimlere aktarmak, dağıtım ortamına göre performansı optimize etmene olanak tanır. Örneğin:
- ONNX: CPU hızını 3 kata kadar artırır.
- TensorRT: GPU hızını 5 kata kadar artırır.
- OpenVINO: Özellikle Intel donanımı için optimize edilmiştir.
Bu biçimler, hedef donanımlarında çıkarım hızını artırarak modellerini çeşitli gerçek dünya uygulamalarında daha verimli hâle getirir. Tüm ayrıntılar için Dışa Aktarma sayfasını ziyaret et.
YOLO26 modellerini karşılaştırmak çeşitli nedenlerle önemlidir:
- Bilinçli Kararlar: Hız ve doğruluk arasındaki ödünleşimleri anla.
- Kaynak Tahsisi: Farklı donanım seçeneklerindeki performansı değerlendir.
- Optimizasyon: Belirli kullanım senaryoları için en iyi performansı hangi dışa aktarma biçiminin sunduğunu belirle.
- Maliyet Verimliliği: Karşılaştırma sonuçlarına göre donanım kullanımını optimize et.
mAP50-95, Top-1 doğruluğu ve çıkarım süresi gibi temel ölçütler bu değerlendirmeleri yapmaya yardımcı olur. Daha fazla bilgi için Temel Ölçütler bölümüne bak.
YOLO26, her biri belirli donanım ve kullanım senaryolarına göre uyarlanmış çeşitli dışa aktarma biçimlerini destekler:
- ONNX: CPU performansı için en iyisi.
- TensorRT: GPU verimliliği için ideal.
- OpenVINO: Intel donanımı için optimize edilmiştir.
- CoreML ve TensorFlow: iOS ve genel ML uygulamaları için kullanışlıdır.
Desteklenen biçimlerin ve ilgili avantajlarının tam listesi için Desteklenen Dışa Aktarma Biçimleri bölümüne göz at.
Karşılaştırma çalıştırırken, belirli ihtiyaçlara uyacak şekilde çeşitli argümanlar özelleştirilebilir:
- model: Model dosyasının yolu (ör. "yolo26n.pt").
- data: Veri kümesi YAML dosyasının yolu (ör.
"coco8.yaml"); sınıflandırma için bunun yerine bir veri kümesi dizini veya yerleşik veri kümesi adı kullanılır (ör.imagenet10). - imgsz: Kare girdi görüntüsünün boyutunu belirten tek bir tam sayı; örneğin
640. Adil bir karşılaştırma için Benchmark modu, PyTorch ve dışa aktarılmış biçimlerde aynı kare görüntü boyutunu kullanır. - quantize: İstenen hassasiyet: FP16 için
16, INT8 için (uç cihazlarda kullanışlıdır)8; biçimin desteklediği durumlarda32/ayarlanmamış değer FP32 anlamına gelir — FP32 dışa aktaramayan bir biçim, açıkça belirtilen32değerini reddeder veya gerektirdiği hassasiyete döner. Yerel PyTorch satırı dışa aktarılmaz: yalnızca16bu satırı etkileyerek FP16 çıkarımını seçer;8,32ve ayarlanmamış değer ise FP32 çalıştırır. Her biçim daha sonra kendi çalışma zamanı hassasiyetinde çıkarım yapar. - device: Hesaplama cihazını belirt (ör. "cpu", "cuda:0").
- verbose: Karşılaştırma hatalarını kaydetmek yerine hata yükselt; her biçimin ölçütünün bu eşiği aşmasını da zorunlu kılmak için kayan noktalı bir sayı ilet.
Argümanların tam listesi için Argümanlar bölümüne bak.