ONNX (Open Neural Network Exchange)
Açık Sinir Ağı Değişim (ONNX) formatını keşfet. Hızlı, platformlar arası dağıtım ve donanım optimizasyonu için Ultralytics YOLO26'yı ONNX'e nasıl dışa aktaracağını öğren.
ONNX (Open Neural Network Exchange), makine öğrenmesi modellerini temsil etmek üzere tasarlanmış açık kaynaklı bir biçimdir ve çeşitli AI çerçeveleri ile araçları arasında birlikte çalışabilirlik sağlar. Derin öğrenme için evrensel bir çevirmen olarak görev yapar; geliştiricilerin PyTorch, TensorFlow veya Scikit-learn gibi tek bir çerçevede modeller oluşturmasına ve bunları çıkarım için optimize edilmiş başka bir ortamda sorunsuz bir şekilde dağıtmasına olanak tanır. Ortak bir operatör kümesi ve standart bir dosya biçimi tanımlayarak ONNX, modelleri araştırmadan üretime taşımak için geçmişte gereken karmaşık, özel dönüştürme betiklerine olan ihtiyacı ortadan kaldırır. Bu esneklik, eğitimin güçlü bulut GPU'larında gerçekleştirilebileceği, dağıtımın ise uç cihazlar, cep telefonları veya web tarayıcıları gibi çeşitli donanımları hedefleyebileceği modern AI iş akışları için çok önemlidir.
ONNX'in Modern Yapay Zekadaki Rolü#
Hızla evrilen artificial intelligence ekosisteminde araştırmacılar ve mühendisler genellikle geliştirme yaşam döngüsünün farklı aşamaları için farklı araçlar kullanırlar. Bir veri bilimci deney ve eğitim için PyTorch'un esnekliğini tercih edebilirken, bir üretim mühendisi dağıtım için TensorRT veya OpenVINO'nun optimize edilmiş performansına ihtiyaç duyar. Standart bir değişim biçimi olmadan, bir modeli bu ekosistemler arasında taşımak zor ve hata eğilimlidir.
ONNX, hesaplama grafiğinin paylaşılan bir tanımını sağlayarak bu boşluğu kapatır. Bir model ONNX'e dışarı aktarıldığında, ağ yapısını (katmanlar, bağlantılar) ve parametreleri (ağırlıklar, sapmalar) çerçeveden bağımsız bir şekilde yakalayan bir biçimde serileştirilir. Bu, ONNX Runtime gibi donanım hızlandırma için özel olarak ayarlanmış çıkarım motorlarının, Linux, Windows, macOS, Android ve iOS dahil olmak üzere birden fazla platformda modeli verimli bir şekilde yürütmesini sağlar.
ONNX Kullanmanın Temel Avantajları#
Open Neural Network Exchange formatını benimsemek, yapay zeka projeleri için çeşitli stratejik avantajlar sunar:
- Çerçeve Birlikte Çalışabilirliği: Geliştiriciler, tek bir ekosisteme bağlı kalmadan çerçeveler arasında geçiş yapabilirler. Kullanıcı dostu Ultralytics Python API kullanarak bir model eğitebilir ve bunu bir C++ uygulamasında veya web tabanlı bir JavaScript ortamında kullanım için dışarı aktarabilirsiniz.
- Donanım Optimizasyonu: Birçok donanım üreticisi, ONNX ile arayüz oluşturan özel yürütme sağlayıcıları sağlar. Bu, tek bir
.onnxdosyasının OpenVINO veya CoreML gibi araçlar kullanılarak NVIDIA GPU'larda, Intel CPU'larda veya mobil NPU'larda (Nöral İşleme Birimleri) hızlandırılabileceği anlamına gelir. - Daha Hızlı Çıkarım: ONNX Runtime, çıkarım gecikmesini önemli ölçüde azaltabilen düğüm birleştirme (node fusion) ve sabit katlama (constant folding) gibi grafik optimizasyonları uygular. Bu, otonom araçlar veya yüksek hızlı üretim hatları gibi gerçek zamanlı uygulamalar için esastır.
- Basitleştirilmiş Dağıtım: Mühendislik ekipleri, her eğitim çerçevesi için ayrı dağıtım boru hatları sürdürmek yerine ModelOps süreçlerini kolaylaştırarak teslimat biçimi olarak ONNX'i standartlaştırabilir.
Gerçek Dünya Uygulamaları#
ONNX'in çok yönlülüğü onu farklı endüstrilerde temel bir unsur haline getirir. İşte uygulama alanına dair iki somut örnek:
Mobil Cihazlarda Uç Yapay Zeka#
Gerçek zamanlı mahsul sağlığı izleme için tasarlanmış bir mobil uygulamayı düşünün. Model, büyük bir bitki görüntüsü veri kümesi kullanılarak güçlü bir bulut sunucusunda eğitilebilir. Ancak uygulamanın bir çiftçinin akıllı telefonunda çevrimdışı çalışması gerekir. Geliştiriciler, eğitilmiş modeli ONNX'e aktararak bunu ONNX Runtime Mobile kullanarak mobil uygulamaya entegre edebilirler. Bu, telefonun işlemcisinin nesne tespiti işlemini yerel olarak çalıştırmasına izin vererek zararlıları veya hastalıkları internet bağlantısına ihtiyaç duymadan anında tanımlar.
Platformlar Arası Web Çıkarımı#
E-ticarette "sanal deneme" özelliği, kıyafetleri kullanıcının web kamerası akışı üzerine yerleştirmek için poz tahmini kullanabilir. Bu modelin eğitimi Python'da gerçekleşebilir, ancak dağıtım hedefi bir web tarayıcısıdır. ONNX kullanarak model dönüştürülebilir ve doğrudan kullanıcının tarayıcısında ONNX Runtime Web aracılığıyla çalıştırılabilir. Bu, video verileri hiçbir zaman kullanıcının bilgisayarından ayrılmadığı için sorunsuz, gizliliği koruyan bir deneyim sağlayarak computer vision görevlerini gerçekleştirmek için istemcinin cihaz özelliklerinden (WebGL veya WebAssembly) yararlanır.
İlgili Terimlerle Karşılaştırma#
ONNX'i diğer model formatlarından ve araçlarından ayırmak faydalıdır:
- vs. TensorRT: ONNX bir değişim biçimi iken, TensorRT özellikle NVIDIA GPU'lar için bir çıkarım motoru ve optimize edicidir. Yaygın bir iş akışı, bir modeli önce ONNX'e aktarmayı ve ardından NVIDIA donanımında maksimum iş hacmi elde etmek için bu ONNX dosyasını TensorRT'ye ayrıştırmayı içerir.
- vs. TensorFlow SavedModel: SavedModel, TensorFlow için yerel serileştirme biçimidir. Google ekosistemi içinde sağlam olsa da, ONNX'ten daha az evrensel olarak uyumludur. SavedModel'leri daha geniş platform desteği kazanmak üzere ONNX'e dönüştürmek için genellikle araçlar mevcuttur.
- vs. CoreML: CoreML, Apple'ın cihaz üzerinde makine öğrenmesi çerçevesidir. Farklı olmalarına rağmen modeller sıklıkla PyTorch'tan ONNX'e ve ardından ONNX'ten CoreML'e (veya doğrudan) dönüştürülerek iPhone ve iPad'lerde verimli bir şekilde çalıştırılır.
Ultralytics ile ONNX'e Dışa Aktarma#
Ultralytics ekosistemi, YOLO26 gibi son teknoloji modelleri ONNX biçimine dönüştürme sürecini basitleştirir. Dışarı aktarma işlevi doğrudan kitaplığın içinde yer alır ve karmaşık grafik geçişini ve operatör eşlemesini otomatik olarak yönetir.
Aşağıdaki örnek, önceden eğitilmiş bir Ultralytics YOLO26 modelinin dağıtım için ONNX formatına nasıl dışarı aktarılacağını göstermektedir:
from ultralytics import YOLO
# Load the YOLO26n model (Nano version recommended for edge deployment)
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
# The 'dynamic' argument enables variable input sizes
path = model.export(format="onnx", dynamic=True)
print(f"Model exported successfully to: {path}")Dışarı aktarıldıktan sonra, bu .onnx dosyası yönetim için Ultralytics Platform içinde kullanılabilir veya ONNX Runtime kullanılarak doğrudan uç cihazlara dağıtılabilir; böylece neredeyse her ortamda yüksek performanslı computer vision erişilebilir hale gelir.






