YOLO26 Modelleri için ONNX Dışa Aktarımı#
CPU'da ONNX çıkarımı yaklaşık %43 daha hızlı: YOLO26n ve YOLO11n karşılaştırması
- YOLO26n, CPU'da ONNX çıkarımı sırasında YOLO11n'den %43'e kadar daha hızlı çalışır (Intel Xeon CPU @ 2.00 GHz). Karşılaştırmanın tamamı için YOLO26 model sayfasına göz at.
Genellikle bilgisayarlı görü modellerini dağıtırken hem esnek hem de birden fazla platformla uyumlu bir model biçimine ihtiyaç duyarsın.
Ultralytics YOLO26 modellerini ONNX biçimine aktarmak, dağıtımı kolaylaştırır ve farklı ortamlarda en iyi performansı sağlar. Bu kılavuz, YOLO26 modellerini ONNX'e kolayca nasıl dönüştüreceğini ve gerçek dünya uygulamalarında ölçeklenebilirliklerini ve etkililiklerini nasıl artıracağını gösterecek.
İzle: Ultralytics YOLO26 ve Ultralytics YOLO11 ONNX çıkarım testi | YOLO26 ile yaklaşık %43 daha hızlı çıkarım 🚀
ONNX ve ONNX Runtime#
Açık Sinir Ağı Değişimi anlamına gelen ONNX, ilk olarak Facebook ve Microsoft tarafından geliştirilen bir topluluk projesidir. ONNX'in devam eden geliştirme çalışmaları IBM, Amazon (AWS aracılığıyla) ve Google gibi çeşitli kuruluşların katkılarıyla yürütülür. Proje, makine öğrenimi modellerini farklı AI çerçeveleri ve donanımlarda kullanılabilecek şekilde temsil etmek için tasarlanmış açık bir dosya biçimi oluşturmayı amaçlar.
ONNX modelleri, farklı çerçeveler arasında sorunsuz geçiş yapmanı sağlar. Örneğin, PyTorch'ta eğitilmiş bir derin öğrenme modeli ONNX biçimine aktarılabilir ve ardından TensorFlow'a kolayca alınabilir.
Alternatif olarak ONNX modelleri ONNX Runtime ile kullanılabilir. ONNX Runtime, PyTorch, TensorFlow, scikit-learn vb. çerçevelerle uyumlu, çok yönlü ve platformlar arası bir makine öğrenimi hızlandırıcısıdır.
ONNX Runtime, donanıma özgü yeteneklerden yararlanarak ONNX modellerinin çalıştırılmasını 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, tek başına ya da 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 farklı biçimleri işleyebilmesi aşağıdaki temel özelliklerine dayanır:
-
Ortak Model Gösterimi: ONNX, ortak bir operatör kümesi (evrişimler, katmanlar vb.) ve standart bir veri biçimi tanımlar. Bir model ONNX biçimine dönüştürüldüğünde mimarisi ve ağırlıkları bu ortak gösterime çevrilir. Bu tutarlılık, ONNX'i destekleyen her çerçevenin modeli anlayabilmesini sağlar.
-
Sürümleme ve Geriye Dönük Uyumluluk: ONNX, operatörleri için bir sürümleme sistemi kullanır. Bu sistem, standart geliştikçe eski sürümlerde oluşturulan modellerin kullanılabilir kalmasını sağlar. Geriye dönük uyumluluk, modellerin hızla kullanılamaz hâle gelmesini önleyen önemli bir özelliktir.
-
Graf Tabanlı Model Gösterimi: ONNX, modelleri hesaplama grafikleri olarak gösterir. 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 biçim, modelleri grafikler olarak gösteren çeşitli çerçevelere kolayca uyarlanabilir.
-
Araçlar ve Ekosistem: ONNX çevresinde model dönüştürme, görselleştirme ve optimizasyona yardımcı olan zengin bir araç ekosistemi bulunur. Bu araçlar, geliştiricilerin ONNX modelleriyle çalışmasını ve modelleri farklı çerçeveler arasında sorunsuz biçimde dönüştürmesini kolaylaştırır.
ONNX'in Yaygın Kullanım Alanları#
YOLO26 modellerini ONNX biçimine nasıl aktaracağımıza geçmeden önce ONNX modellerinin genellikle nerelerde kullanıldığına göz atalım.
CPU'da Dağıtım#
ONNX modelleri, ONNX Runtime ile uyumlu oldukları için sıklıkla CPU'larda 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 CPU'da gerçek zamanlı dağıtımı mümkün kılar.
Desteklenen Dağıtım Seçenekleri#
ONNX modelleri yaygın olarak CPU'larda kullanılsa da aşağıdaki platformlarda da dağıtılabilir:
-
GPU Hızlandırma: ONNX, CUDA aracılığıyla NVIDIA GPU'larda ve ROCm ile MIGraphX aracılığıyla AMD GPU'larda GPU hızlandırmayı tam olarak destekler.
-
Uç ve Mobil Cihazlar: ONNX, cihaz üzerinde ve gerçek zamanlı çıkarım senaryoları için ideal olan uç ve mobil cihazlarda da kullanılabilir. Hafiftir, uç donanımlarıyla uyumludur ve Huawei Ascend, Snapdragon cihazları için Qualcomm QNN ve Rockchip NPU'ları için RKNN gibi üreticiye özgü NPU biçimlerinin 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 aktarımı, Ultralytics'in yedi görevinin tümünü destekler. Anlamsal bölümleme ve derinlik tahmini yalnızca bu başlıkları içeren tek model ailesi olan YOLO26'da kullanılabilir.
| Görev | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Algılama | ✅ | ✅ | ✅ |
| Segmentasyon | ✅ | ✅ | ✅ |
| Anlamsal | ❌ | ❌ | ✅ |
| Derinlik | ❌ | ❌ | ✅ |
| Sınıflandırma | ✅ | ✅ | ✅ |
| Poz | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
YOLO26 Modellerini ONNX'e Aktarma#
YOLO26 modellerini ONNX biçimine dönüştürerek model uyumluluğunu ve dağıtım esnekliğini artırabilirsin. Ultralytics YOLO26, farklı platformlarda model performansını önemli ölçüde artırabilecek basit bir dışa aktarma süreci sunar.
Kurulum#
Gerekli paketi yüklemek için şu komutu çalıştır:
# Install the required package for YOLO26
pip install ultralyticsKurulum sürecine ilişkin ayrıntılı talimatlar ve en iyi uygulamalar için YOLO26 Kurulum kılavuzumuza göz at. YOLO26 için gerekli paketleri yüklerken sorun yaşarsan çözüm ve ipuçları için Yaygın Sorunlar kılavuzumuza başvur.
Kullanım#
Kullanım yönergelerine geçmeden önce Ultralytics'in sunduğu YOLO26 model çeşitlerine göz at. Bu, proje gereksinimlerine en uygun modeli seçmene yardımcı olur.
ONNX biçimi Dışa Aktarma, Tahmin ve Doğrulama modlarını destekler. Modelini dışa aktar, ardından çıkarım yapmak veya doğruluğunu doğrulamak için dışa aktarılan modeli yükle.
from ultralytics import YOLO
# YOLO26 modelini yükle
model = YOLO("yolo26n.pt")
# Modeli ONNX biçimine aktar
model.export(format="onnx") # 'yolo26n.onnx' oluşturur
# Kalibrasyon verileriyle INT8 nicemlemeli ONNX modeli dışa aktar
model.export(format="onnx", quantize=8, data="coco8.yaml") # 'yolo26n_int8.onnx' dosyasını oluştururfrom ultralytics import YOLO
# Dışa aktarılan ONNX modelini yükle
model = YOLO("yolo26n.onnx")
# Çıkarımı çalıştır
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Dışa aktarılan ONNX modelini yükle
model = YOLO("yolo26n.onnx")
# COCO8 veri kümesinde doğruluğu doğrula
metrics = model.val(data="coco8.yaml")Dışa Aktarma Bağımsız Değişkenleri#
YOLO26 modelini ONNX biçimine aktarırken belirli dağıtım gereksinimlerine göre optimizasyon yapmak için çeşitli bağımsız değişkenlerle süreci özelleştirebilirsin:
| Bağımsız değişken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
format | str | 'onnx' | Dışa aktarılan modelin hedef biçimi; çeşitli dağıtım ortamlarıyla uyumluluğu tanımlar. |
imgsz | int veya tuple | 640 | Model girişi için istenen görüntü boyutu. Kare görüntüler için bir tam sayı, belirli boyutlar içinse (height, width) demeti kullanılabilir. |
quantize | int veya str | None | Nicemleme hassasiyeti: 16 (FP16) veya 8 ( data içindeki kalibrasyon görüntülerini kullanan ONNX Runtime ile INT8 statik nicemleme; sonuçta _int8.onnx modeli oluşturulur); 32/ayarlanmamış değer FP32'dir. quantize=8 ile eğitilmiş bir kontrol noktası, kalibrasyon kullanmadan ve yalnızca .onnx adıyla, taşıdığı aralıklardan Q/DQ düğümleri olarak her zaman INT8 dışa aktarılı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ırmada ise bir veri kümesi dizini veya yerleşik veri kümesi adı kullanılır. quantize=8 belirtilmediğinde Ultralytics, model görevi için varsayılan kalibrasyon veri kümesini seçer; quantize=8 ile eğitilmiş bir kontrol noktası için buna gerek 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 kalır; 0 ise onu atlar. |
dynamic | bool | False | Dinamik giriş boyutlarına izin vererek farklı görüntü boyutlarını işleme esnekliğini artırır. |
simplify | bool | True | Model grafiğini onnxslim ile sadeleştirerek performansı ve uyumluluğu 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 güncel 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 başlığı (False) seç. |
batch | int | 1 | Dışa aktarılan modelin toplu çıkarım boyutunu veya predict kipinde eşzamanlı işleyeceği en fazla görüntü sayısını belirtir. |
device | str | None | Dışa aktarma aygıtını belirtir: GPU (device=0), CPU (device=cpu), Apple silikon için MPS (device=mps). |
Dışa aktarma süreci hakkında daha fazla bilgi için Ultralytics dışa aktarma belgeleri sayfasını ziyaret et.
Dışa Aktarılan YOLO26 ONNX Modellerini Dağıtma#
Ultralytics YOLO26 modellerini ONNX biçimine başarıyla aktardıktan sonraki adım, bu modelleri farklı ortamlara dağıtmaktır. ONNX modellerinin dağıtımına ilişkin ayrıntılı talimatlar için aşağıdaki kaynaklara göz at:
-
ONNX Runtime Python API Belgeleri: Bu kılavuz, ONNX Runtime kullanarak ONNX modellerini yükleme ve çalıştırma hakkında temel bilgiler sunar.
-
Uç Cihazlarda Dağıtım: ONNX modellerini uç cihazlarda dağıtmaya yönelik çeşitli örnekler için bu dokümantasyon sayfasına göz at.
-
GitHub'daki ONNX Eğitimleri: Farklı senaryolarda ONNX modellerini kullanmanın ve uygulamanın çeşitli yönlerini kapsayan kapsamlı eğitim koleksiyonu.
-
Triton Inference Server: Yüksek performanslı ve ölçeklenebilir dağıtımlar için ONNX modellerini NVIDIA Triton Inference Server ile nasıl dağıtacağını öğren.
MIGraphX ile AMD GPU Çıkarımı#
Ultralytics, dışa aktarılan ONNX modellerini ONNX Runtime MIGraphX yürütme sağlayıcısı aracılığıyla AMD GPU'larda çalıştırır. ROCm (HIP) sisteminde ONNX arka ucu ilk kullanımda onnxruntime-ep-migraphx eklentisini yükler ve kod değişikliği gerektirmeden MIGraphXExecutionProvider seçeneğini otomatik olarak belirler; tüm YOLO26 görevleri desteklenir. Gereksinimler, kurulum, kullanım, karşılaştırma testleri ve derlenmiş program önbelleği hakkında bilgi için AMD GPU çıkarım kılavuzuna göz at.
Özet#
Bu kılavuzda, farklı platformlarda birlikte çalışabilirliği ve performansı artırmak için Ultralytics YOLO26 modellerini ONNX biçimine nasıl aktaracağını öğrendin. Ayrıca ONNX Runtime ve ONNX dağıtım seçenekleriyle tanıştın.
ONNX dışa aktarımı, Ultralytics YOLO26'nın desteklediği birçok dışa aktarma biçiminden yalnızca biridir ve modellerini neredeyse her ortamda dağıtmana olanak tanır. Özel ihtiyaçlarına bağlı olarak en yüksek GPU performansı için TensorRT veya Apple cihazları için CoreML gibi diğer dışa aktarma seçeneklerini de değerlendirebilirsin.
Kullanım hakkında daha fazla bilgi için ONNX'in resmi belgelerini ziyaret et.
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 bilgi bulabilirsin.
Sık Sorulan Sorular#
Ultralytics'i kullanarak YOLO26 modellerini ONNX biçimine aktarmak için şu adımları izle:
Kullanımfrom ultralytics import YOLO # YOLO26 modelini yükle model = YOLO("yolo26n.pt") # Modeli ONNX biçimine aktar model.export(format="onnx") # 'yolo26n.onnx' oluşturur # Dışa aktarılan ONNX modelini yükle onnx_model = YOLO("yolo26n.onnx") # Çıkarımı çalıştır results = onnx_model("https://ultralytics.com/images/bus.jpg")Daha fazla bilgi için dışa aktarma belgelerini ziyaret et.
YOLO26 modellerini dağıtmak için ONNX Runtime kullanmanın çeşitli avantajları vardır:
- 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, yüksek performanslı çıkarım sağlamak için CPU'lara, GPU'lara ve özel hızlandırıcılara yönelik donanım odaklı optimizasyonlardan yararlanabilir.
- Çerçeveler arası birlikte çalışabilirlik: PyTorch veya TensorFlow gibi yaygın çerçevelerde eğitilen modeller kolayca ONNX biçimine dönüştürülebilir ve ONNX Runtime kullanılarak çalıştırılabilir.
- Performans optimizasyonu: ONNX Runtime, yerel PyTorch modellerine kıyasla CPU'da 3 kata kadar hız artışı sağlayabilir; bu da GPU kaynaklarının kısıtlı olduğu dağıtım senaryoları için onu ideal kılar.
Daha fazla bilgi için ONNX Runtime belgelerine göz at.
ONNX'e aktarılan YOLO26 modelleri aşağıdakiler dâhil çeşitli platformlarda dağıtılabilir:
- CPU'lar: Optimize edilmiş CPU çıkarımı için ONNX Runtime kullanılır.
- NVIDIA GPU'ları: Yüksek performanslı GPU hızlandırması için NVIDIA CUDA'dan yararlanılır.
- AMD GPU'ları: Linux'ta yüksek performanslı GPU hızlandırması için AMD ROCm ve MIGraphX yürütme sağlayıcısı kullanılır.
- Uç cihazlar: Gerçek zamanlı, cihaz üzerinde çıkarım için uç ve mobil cihazlarda hafif modeller çalıştırılır.
- Web tarayıcıları: Etkileşimli web tabanlı uygulamalar için modeller doğrudan web tarayıcılarında çalıştırılır.
- Bulut hizmetleri: Ölçeklenebilir çıkarım için ONNX biçimini destekleyen bulut platformlarında dağıtım yapılır.
Daha fazla bilgi için model dağıtım seçenekleri kılavuzumuzu incele.
Ultralytics YOLO26 modellerinde ONNX biçimini 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; böylece aynı modeli değiştirmeden farklı platformlarda kullanabilirsin.
- Standartlaştırma: ONNX, sektör genelinde yaygın olarak desteklenen standart bir biçim sunarak uzun vadeli uyumluluk sağlar.
YOLO26 modellerini ONNX'e aktarma hakkındaki kapsamlı kılavuza başvur.
YOLO26 modellerini ONNX'e aktarırken bağımlılıkların uyuşmaması 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ümlerinin yüklü olduğunu doğrula.
- Desteklenen operatörler ve özellikler için resmi ONNX belgelerine bak.
- İ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ü değiştirmeyi dene.- Dinamik girdi boyutuyla ilgili sorunlarda dışa aktarma sırasında
dynamic=Truedeğerini ayarla.
Sorunlar devam ederse daha fazla yardım için Ultralytics destek ekibiyle iletişime geç.