YOLO26 Modelleri için ONNX Dışa Aktarma#
~%43 daha hızlı CPU ONNX çıkarımı: YOLO26n ve YOLO11n karşılaştırması
- YOLO26n, CPU ONNX çıkarımında (Intel Xeon CPU @ 2.00 GHz) YOLO11n'den %43'e kadar daha hızlı çalışır. Tam karşılaştırma için YOLO26 model sayfasına göz at.
Bilgisayarlı görü modellerini dağıtırken genellikle hem esnek hem de birden fazla platformla uyumlu bir model formatına ihtiyaç duyarsın.
Ultralytics YOLO26 modellerini ONNX formatına aktarmak, dağıtımı kolaylaştırır ve çeşitli ortamlarda optimum performans sağlar. Bu kılavuzda YOLO26 modellerini ONNX'e nasıl kolayca dönüştürebileceğini ve gerçek dünya uygulamalarında ölçeklenebilirliklerini ve etkililiklerini nasıl artırabileceğini öğreneceksin.
Watch: Ultralytics YOLO26 vs Ultralytics YOLO11 ONNX Inference Test | ~43% Faster Inference with YOLO26 🚀
ONNX ve ONNX Runtime#
Açık Sinir Ağı Değişimi anlamına gelen ONNX, başlangıçta Facebook ve Microsoft tarafından geliştirilen bir topluluk projesidir. ONNX'in devam eden geliştirilmesi IBM, Amazon (AWS aracılığıyla) ve Google gibi çeşitli kuruluşların desteklediği ortak bir çalışmadır. Projenin amacı, makine öğrenimi modellerini farklı AI çerçeveleri ve donanımlarda kullanılabilecek şekilde temsil eden açık bir dosya formatı oluşturmaktır.
ONNX modelleri, farklı çerçeveler arasında sorunsuz geçiş yapmak için kullanılabilir. Örneğin, PyTorch'ta eğitilen bir derin öğrenme modeli ONNX formatına aktarılabilir ve ardından kolayca TensorFlow'a içe aktarılabilir.
Alternatif olarak ONNX modellerini ONNX Runtime ile kullanabilirsin. ONNX Runtime, PyTorch, TensorFlow, scikit-learn vb. çerçevelerle uyumlu, makine öğrenimi modelleri için çok yönlü bir platformlar arası hızlandırıcıdır.
ONNX Runtime, donanıma özgü yeteneklerden yararlanarak ONNX modellerinin yürütülmesini optimize eder. Bu optimizasyon, modellerin CPU'lar, GPU'lar ve özel hızlandırıcılar dahil olmak üzere çeşitli donanım platformlarında verimli ve yüksek performansla çalışmasını sağlar.
ONNX, bağımsız olarak veya ONNX Runtime ile birlikte kullanıldığında makine öğrenimi model dağıtımı ve uyumluluğu için esnek bir çözüm sunar.
ONNX Modellerinin Temel Özellikleri#
ONNX'in çeşitli formatları işleyebilmesi şu temel özelliklere bağlanabilir:
-
Ortak Model Gösterimi: ONNX, ortak bir işleç kümesi (evrişimler, katmanlar vb.) ve standart bir veri formatı tanımlar. Bir model ONNX formatına dönüştürüldüğünde mimarisi ve ağırlıkları bu ortak gösterime çevrilir. Bu tekdüzelik, modelin ONNX'i destekleyen tüm çerçeveler tarafından anlaşılabilmesini sağlar.
-
Sürümleme ve Geriye Dönük Uyumluluk: ONNX, işleçleri için bir sürümleme sistemi kullanır. Bu sayede standart gelişse bile eski sürümlerde oluşturulan modeller kullanılmaya devam eder. Geriye dönük uyumluluk, modellerin hızla geçersiz hâle gelmesini önleyen kritik bir özelliktir.
-
Grafik Tabanlı Model Gösterimi: ONNX, modelleri hesaplama grafikleri olarak temsil eder. Bu grafik tabanlı yapı, makine öğrenimi modellerini temsil etmenin evrensel bir yoludur; düğümler işlemleri veya hesaplamaları, kenarlar ise aralarında akan tensörleri temsil eder. Bu format, modelleri grafik olarak temsil eden çeşitli çerçevelere kolayca uyarlanabilir.
-
Araçlar ve Ekosistem: ONNX çevresinde model dönüştürme, görselleştirme ve optimizasyon konularında yardımcı olan zengin bir araç ekosistemi vardır. Bu araçlar, geliştiricilerin ONNX modelleriyle çalışmasını ve modelleri farklı çerçeveler arasında sorunsuzca dönüştürmesini kolaylaştırır.
ONNX'in Yaygın Kullanım Alanları#
YOLO26 modellerini ONNX formatına nasıl aktaracağını incelemeden önce ONNX modellerinin genellikle nerelerde kullanıldığına göz atalım.
CPU Dağıtımı#
ONNX modelleri, ONNX Runtime ile uyumlulukları nedeniyle genellikle CPU'lara dağıtılır. Bu çalışma zamanı CPU yürütmesi için optimize edilmiştir. Çıkarım hızını önemli ölçüde artırır ve gerçek zamanlı CPU dağıtımlarını uygulanabilir hâle getirir.
Desteklenen Dağıtım Seçenekleri#
ONNX modelleri yaygın olarak CPU'larda kullanılsa da şu platformlara da dağıtılabilir:
-
GPU Hızlandırma: ONNX, özellikle NVIDIA CUDA olmak üzere GPU hızlandırmasını tamamen destekler. AMD GPU'larda yerel eğitim ve çıkarım için PyTorch ROCm kullan; bir ONNX dosyası yine de AMD uyumlu bir çalışma zamanı gerektirir.
-
Kenar ve Mobil Cihazlar: ONNX, uç cihaz ve gerçek zamanlı çıkarım senaryoları için ideal olan kenar ve mobil cihazlara da uzanır. Hafiftir, kenar donanımlarıyla uyumludur ve Huawei Ascend, Snapdragon cihazları için Qualcomm QNN ve Rockchip NPU'ları için RKNN gibi üretici NPU formatlarının temelini oluşturur.
-
Web Tarayıcıları: ONNX doğrudan web tarayıcılarında çalışarak etkileşimli ve dinamik web tabanlı AI uygulamalarına güç verebilir.
Desteklenen Görevler#
ONNX dışa aktarma, yedi Ultralytics görevinin tamamını destekler. Anlamsal segmentasyon ve derinlik tahmini yalnızca bu başlıkları sunan tek aile olan YOLO26 ile kullanılabilir.
| Görev | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Algılama | ✅ | ✅ | ✅ |
| Segmentasyon | ✅ | ✅ | ✅ |
| Semantik | ❌ | ❌ | ✅ |
| Derinlik | ❌ | ❌ | ✅ |
| Sınıflandırma | ✅ | ✅ | ✅ |
| Poz | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
YOLO26 Modellerini ONNX'e Aktarma#
YOLO26 modellerini ONNX formatına dönüştürerek model uyumluluğunu ve dağıtım esnekliğini artırabilirsin. Ultralytics YOLO26, modelinin farklı platformlardaki performansını önemli ölçüde artırabilecek basit bir dışa aktarma süreci sunar.
Kurulum#
Gerekli paketi yüklemek için şunu çalıştır:
# Install the required package for YOLO26
pip install ultralyticsYükleme süreciyle ilgili ayrıntılı talimatlar ve en iyi uygulamalar için YOLO26 Yükleme kılavuzumuza bak. YOLO26 için gerekli paketleri yüklerken herhangi bir sorunla karşılaşırsan çözümler ve ipuçları için Yaygın Sorunlar kılavuzumuza başvur.
Kullanım#
Kullanım talimatlarına geçmeden önce Ultralytics tarafından sunulan YOLO26 modellerine göz atmayı unutma. Bu, proje gereksinimlerin için en uygun modeli seçmene yardımcı olur.
ONNX formatı Dışa Aktarma, Tahmin ve Doğrulama modlarını destekler. Modelini dışa aktar, ardından çıkarım çalıştırmak veya doğruluğunu doğrulamak için dışa aktarılan modeli yükle.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo26n.onnx'
# Export an INT8-quantized ONNX model with calibration data
model.export(format="onnx", quantize=8, data="coco8.yaml") # creates 'yolo26n_int8.onnx'from ultralytics import YOLO
# Load the exported ONNX model
model = YOLO("yolo26n.onnx")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported ONNX model
model = YOLO("yolo26n.onnx")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Dışa Aktarma Bağımsız Değişkenleri#
YOLO26 modelini ONNX formatına aktarırken süreci, belirli dağıtım ihtiyaçlarına göre optimize etmek için çeşitli bağımsız değişkenlerle özelleştirebilirsin:
| Bağımsız değişken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
format | str | 'onnx' | Dışa aktarılan model için hedef formatı belirtir ve çeşitli dağıtım ortamlarıyla uyumluluğu tanımlar. |
imgsz | int veya tuple | 640 | Model girdisi için istenen görüntü boyutu. Kare görüntüler için bir tam sayı veya belirli boyutlar için (height, width) tuple'ı olabilir. |
quantize | int veya str | None | Nicefisem hassasiyeti: 16 (FP16) veya 8 (data konumundan kalibrasyon görüntüleri kullanan ONNX Runtime ile INT8 statik niceleme, bir _int8.onnx modeli üretir); 32/tanımsız ise FP32'dir. quantize=8 ile eğitilmiş bir kontrol noktası, kalibrasyon olmaksızın ve düz .onnx adı altında, taşıdığı aralıklardan her zaman Q/DQ düğümleri olarak INT8 dışarı aktarır. Kullanımdan kaldırılan half/int8 bayraklarının yerini alır. |
data | str | None | INT8 kalibrasyonu için kullanılan Veri Kümesi YAML dosyası; sınıflandırma bunun yerine bir veri kümesi dizini veya yerleşik bir veri kümesi adı alır. quantize=8 ile atlanırsa Ultralytics, model görevi için varsayılan kalibrasyon veri kümesini seçer; quantize=8 ile eğitilmiş bir kontrol noktasının hiçbirine ihtiyacı yoktur. |
fraction | float, int veya list | 1.0 | Oran, görüntü sayısı veya [train, val, test] oranları/sayıları olarak kalibrasyon alt kümesi. İki öğeli listelerde test tam bırakılırken 0 atlanır. |
dynamic | bool | False | Dinamik giriş boyutlarına izin vererek farklı görüntü boyutlarının işlenmesinde esnekliği artırır. |
simplify | bool | True | onnxslim ile model grafiğini sadeleştirir; bu da performansı ve uyumluluğu potansiyel olarak artırabilir. |
opset | int | None | Farklı ONNX ayrıştırıcıları ve çalışma zamanlarıyla uyumluluk için ONNX opset sürümünü belirtir. Ayarlanmazsa desteklenen en son sürüm kullanılır. |
nms | bool, isteğe bağlı | None | Ham çıktıyı (None, varsayılan), gömülü NMS'yi (True) veya NMS'siz kafayı (False) seç. |
batch | int | 1 | Dışa aktarma modelinin toplu çıkarım boyutunu veya dışa aktarılan modelin predict modunda eşzamanlı olarak işleyeceği maksimum görüntü sayısını belirtir. |
device | str | None | Dışa aktarma cihazını belirtir: GPU (device=0), CPU (device=cpu), Apple silicon için MPS (device=mps). |
Dışa aktarma süreci hakkında daha fazla ayrıntı için Ultralytics'in dışa aktarma dokümantasyonu sayfasını ziyaret et.
Dışa Aktarılan YOLO26 ONNX Modellerini Dağıtma#
Ultralytics YOLO26 modellerini ONNX formatına başarıyla aktardıktan sonra sıradaki adım, bu modelleri çeşitli ortamlarda dağıtmaktır. ONNX modellerini dağıtma hakkında ayrıntılı talimatlar için şu kaynaklara göz at:
-
ONNX Runtime Python API Belgeleri: Bu kılavuz, ONNX modellerini ONNX Runtime kullanarak yükleme ve çalıştırma hakkında temel bilgiler sağlar.
-
Kenar Cihazlarda Dağıtım: ONNX modellerini kenar cihazlarda dağıtmaya yönelik farklı örnekler için bu belgeler sayfasına göz at.
-
GitHub'da ONNX Eğitimleri: ONNX modellerinin farklı senaryolarda kullanılması ve uygulanmasının çeşitli yönlerini kapsayan kapsamlı eğitimler koleksiyonu.
-
Triton Inference Server: Yüksek performanslı ve ölçeklenebilir dağıtımlar için ONNX modellerini NVIDIA'nın Triton Inference Server'ı ile nasıl dağıtacağını öğren.
Özet#
Bu kılavuzda, Ultralytics YOLO26 modellerini çeşitli platformlardaki birlikte çalışabilirliklerini ve performanslarını artırmak için ONNX formatına nasıl aktaracağını öğrendin. Ayrıca ONNX Runtime ve ONNX dağıtım seçenekleriyle tanıştın.
ONNX dışa aktarma, Ultralytics YOLO26 tarafından desteklenen birçok dışa aktarma formatından yalnızca biridir ve modellerini neredeyse her ortamda dağıtmana olanak tanır. Özel ihtiyaçlarına bağlı olarak maksimum GPU performansı için TensorRT veya Apple cihazları için CoreML gibi diğer dışa aktarma seçeneklerini de incelemek isteyebilirsin.
Kullanım hakkında daha fazla bilgi için ONNX resmi belgelerini ziyaret et.
Ayrıca diğer Ultralytics YOLO26 entegrasyonları hakkında daha fazla bilgi edinmek istersen entegrasyon kılavuzu sayfamızı ziyaret et. Orada birçok yararlı kaynak ve içgörü bulacaksın.
SSS#
YOLO26 modellerini Ultralytics kullanarak ONNX formatına aktarmak için şu adımları izle:
Kullanımfrom ultralytics import YOLO # Load a YOLO26 model model = YOLO("yolo26n.pt") # Export the model to ONNX format model.export(format="onnx") # creates 'yolo26n.onnx' # Load the exported ONNX model onnx_model = YOLO("yolo26n.onnx") # Run inference results = onnx_model("https://ultralytics.com/images/bus.jpg")Daha fazla ayrıntı için dışa aktarma belgelerini ziyaret et.
YOLO26 modellerini dağıtmak için ONNX Runtime kullanmak çeşitli avantajlar sunar:
- Platformlar arası uyumluluk: ONNX Runtime, Windows, macOS ve Linux gibi çeşitli platformları destekleyerek modellerinin farklı ortamlarda sorunsuz çalışmasını sağlar.
- Donanım hızlandırma: ONNX Runtime, CPU'lar, GPU'lar ve özel hızlandırıcılar için donanıma özgü optimizasyonlardan yararlanarak yüksek performanslı çıkarım sağlar.
- Çerçeveler arası birlikte çalışabilirlik: PyTorch veya TensorFlow gibi popüler çerçevelerde eğitilen modeller kolayca ONNX formatına dönüştürülebilir ve ONNX Runtime kullanılarak çalıştırılabilir.
- Performans optimizasyonu: ONNX Runtime, yerel PyTorch modellerine kıyasla CPU hızında 3 kata kadar artış sağlayabilir; bu da onu GPU kaynaklarının sınırlı olduğu dağıtım senaryoları için ideal kılar.
ONNX Runtime belgelerini inceleyerek daha fazla bilgi edin.
ONNX'e aktarılan YOLO26 modelleri şu platformlar da dahil olmak üzere çeşitli platformlarda dağıtılabilir:
- CPU'lar: Optimize edilmiş CPU çıkarımı için ONNX Runtime'dan yararlanma.
- GPU'lar: Yüksek performanslı GPU hızlandırması için NVIDIA CUDA'dan yararlanma.
- Kenar cihazlar: Gerçek zamanlı, cihaz üzerinde çıkarım için kenar ve mobil cihazlarda hafif modeller çalıştırma.
- Web tarayıcıları: Etkileşimli web tabanlı uygulamalar için modelleri doğrudan web tarayıcılarında çalıştırma.
- Bulut hizmetleri: Ölçeklenebilir çıkarım için ONNX formatını destekleyen bulut platformlarında dağıtım.
Daha fazla bilgi için model dağıtım seçenekleri kılavuzumuzu incele.
Ultralytics YOLO26 modelleri için ONNX formatını kullanmak birçok avantaj sağlar:
- Birlikte çalışabilirlik: ONNX, modellerin farklı makine öğrenimi çerçeveleri arasında sorunsuzca aktarılmasını sağlar.
- Performans Optimizasyonu: ONNX Runtime, donanıma özgü optimizasyonlardan yararlanarak model performansını artırabilir.
- Esneklik: ONNX çeşitli dağıtım ortamlarını destekler ve aynı modeli değişiklik yapmadan farklı platformlarda kullanmana olanak tanır.
- Standardizasyon: ONNX, sektör genelinde yaygın olarak desteklenen standartlaştırılmış bir format sunarak uzun vadeli uyumluluk sağlar.
YOLO26 modellerini ONNX'e aktarma hakkındaki kapsamlı kılavuza başvur.
YOLO26 modellerini ONNX'e aktarırken uyumsuz bağımlılıklar veya desteklenmeyen işlemler gibi yaygın sorunlarla karşılaşabilirsin. Bu sorunları gidermek için:
- Gerekli bağımlılıkların doğru sürümünün yüklü olduğunu doğrula.
- Desteklenen işleçler ve özellikler için resmi ONNX belgelerini kontrol et.
- İpuçları için hata mesajlarını incele ve Ultralytics Yaygın Sorunlar kılavuzuna başvur.
simplify=Truegibi farklı dışa aktarma bağımsız değişkenlerini kullanmayı veyaopsetsürümünü ayarlamayı dene.- Dinamik giriş boyutu sorunları için dışa aktarma sırasında
dynamic=Truedeğerini ayarla.
Sorunlar devam ederse daha fazla yardım için Ultralytics desteğiyle iletişime geç.