ONNX (Open Neural Network Exchange)
Açık Sinir Ağı Değişimi (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 aktaracağını öğren.
ONNX (Açık Sinir Ağı Değişimi), makine öğrenimi modellerini temsil etmek üzere tasarlanmış ve farklı yapay zekâ çerçeveleri ile araçları arasında birlikte çalışabilirlik sağlayan açık kaynaklı bir formattır. Derin öğrenme için evrensel bir çevirmen görevi görerek geliştiricilerin PyTorch, TensorFlow veya Scikit-learn gibi bir çerçevede model oluşturmasına ve bu modeli çıkarım için optimize edilmiş başka bir ortamda sorunsuzca dağıtmasına olanak tanır. ONNX, ortak bir operatör kümesi ve standart bir dosya formatı tanımlayarak modelleri araştırmadan üretime taşımak için geçmişte gereken karmaşık, özel dönüştürme betiklerine duyulan ihtiyacı ortadan kaldırır. Bu esneklik, eğitimin güçlü bulut GPU'larında gerçekleştirilirken dağıtım hedeflerinin uç cihazlar, mobil telefonlar veya web tarayıcıları gibi çeşitli donanımlar olabildiği modern yapay zekâ iş akışları için kritik öneme sahiptir.
Modern Yapay Zekâda ONNX'in Rolü#
Hızla gelişen yapay zekâ dünyasında araştırmacılar ve mühendisler, geliştirme yaşam döngüsünün farklı aşamalarında genellikle farklı araçlar kullanır. Bir veri bilimcisi deneme ve eğitim için PyTorch'un sunduğu esnekliği tercih edebilirken üretim mühendisi dağıtım için TensorRT veya OpenVINO'nun optimize edilmiş performansına ihtiyaç duyar. Standart bir değişim formatı olmadığında bir modeli bu ekosistemler arasında taşımak zor ve hataya açıktır.
ONNX, hesaplama grafiğinin ortak bir tanımını sağlayarak bu boşluğu doldurur. Bir model ONNX'e aktarıldığında ağ yapısını (katmanlar, bağlantılar) ve parametreleri (ağırlıklar, bias'lar) çerçeveden bağımsız bir şekilde yakalayan bir formatta serileştirilir. Bu sayede donanım hızlandırma için özel olarak ayarlanmış ONNX Runtime gibi çıkarım motorları, modeli Linux, Windows, macOS, Android ve iOS dahil olmak üzere birden fazla platformda verimli şekilde çalıştırabilir.
ONNX Kullanmanın Temel Avantajları#
Açık Sinir Ağı Değişimi formatını benimsemek, yapay zekâ projeleri için çeşitli stratejik avantajlar sunar:
- Çerçeveler Arası Birlikte Çalışabilirlik: Geliştiriciler tek bir ekosisteme bağımlı kalmadan çerçeveler arasında geçiş yapabilir. Kullanıcı dostu Ultralytics Python API ile bir model eğitebilir ve bu modeli bir C++ uygulamasında veya web tabanlı bir JavaScript ortamında kullanılmak üzere dışa aktarabilirsin.
- Donanım Optimizasyonu: Birçok donanım üreticisi ONNX ile arabirim oluşturan özel yürütme sağlayıcıları sunar. Bu, tek bir
.onnxdosyasının OpenVINO veya CoreML gibi araçlar kullanılarak NVIDIA GPU'larında, Intel CPU'larında ya da mobil NPU'larda hızlandırılabileceği anlamına gelir. - Daha Hızlı Çıkarım: ONNX Runtime, düğüm birleştirme ve sabit katlama gibi grafik optimizasyonları uygulayarak çıkarım gecikmesini önemli ölçüde azaltabilir. Bu, otonom araçlar veya yüksek hızlı üretim hatları gibi gerçek zamanlı uygulamalar için gereklidir.
- Basitleştirilmiş Dağıtım: Mühendislik ekipleri, her eğitim çerçevesi için ayrı dağıtım işlem hatlarını sürdürmek yerine teslimat formatı olarak ONNX'i standartlaştırabilir ve ModelOps süreçlerini kolaylaştırabilir.
Gerçek Dünya Uygulamaları#
ONNX'in çok yönlülüğü, onu çeşitli sektörlerde temel bir araç hâline getirir. Uygulamalarına dair iki somut örneği aşağıda bulabilirsin:
1. Mobil Cihazlarda Uç Yapay Zekâ#
Gerçek zamanlı ürün sağlığı izleme için tasarlanmış bir mobil uygulama düşün. Model, büyük bir bitki görüntüsü veri kümesi kullanılarak güçlü bir bulut sunucusunda eğitilmiş olabilir. Ancak uygulamanın bir çiftçinin akıllı telefonunda çevrimdışı çalışması gerekir. Geliştiriciler, eğitilmiş modeli ONNX'e aktararak ONNX Runtime Mobile kullanımıyla mobil uygulamaya entegre edebilir. Bu sayede telefonun işlemcisi nesne algılama işlemini yerel olarak gerçekleştirip internet bağlantısına ihtiyaç duymadan zararlıları veya hastalıkları anında tespit edebilir.
2. Platformlar Arası Web Çıkarımı#
E-ticarette bir "sanal deneme" özelliği, kullanıcının web kamerası görüntüsünün üzerine kıyafet yerleştirmek için poz tahmini kullanabilir. Bu model Python'da eğitilebilir, ancak dağıtım hedefi bir web tarayıcısıdır. ONNX kullanılarak model, ONNX Runtime Web aracılığıyla doğrudan kullanıcının tarayıcısına dönüştürülebilir ve burada çalıştırılabilir. Bu yaklaşım, bilgisayarlı görü görevlerini gerçekleştirmek için istemci cihazının özelliklerinden (WebGL veya WebAssembly) yararlanır ve video verileri kullanıcının bilgisayarından hiç ayrılmadığı için akıcı, gizliliği koruyan bir deneyim sağlar.
İlgili Terimlerle Karşılaştırma#
ONNX'i diğer model formatlarından ve araçlarından ayırt etmek faydalıdır:
- TensorRT'ye karşı: ONNX bir değişim formatıyken, TensorRT özellikle NVIDIA GPU'ları için geliştirilmiş bir çıkarım motoru ve optimize edicidir. Yaygın bir iş akışında model önce ONNX'e aktarılır, ardından NVIDIA donanımında maksimum aktarım hızına ulaşmak için bu ONNX dosyası TensorRT'ye ayrıştırılır.
- TensorFlow SavedModel'e karşı: SavedModel, TensorFlow için yerel serileştirme formatıdır. Google ekosistemi içinde güçlü olsa da ONNX kadar evrensel uyumluluğa sahip değildir. Daha geniş platform desteği elde etmek için SavedModel'leri ONNX'e dönüştüren araçlar sıklıkla bulunur.
- CoreML'e karşı: CoreML, Apple'ın cihaz üzerinde makine öğrenimi için geliştirdiği çerçevedir. Farklı olmalarına rağmen modeller, iPhone'larda ve iPad'lerde verimli şekilde çalıştırılmak üzere sıklıkla PyTorch'tan ONNX'e, ardından ONNX'ten CoreML'e (veya doğrudan) dönüştürülür.
Ultralytics ile ONNX'e Dışa Aktarma#
Ultralytics ekosistemi, YOLO26 gibi son teknoloji modellerin ONNX formatına dönüştürülmesi sürecini basitleştirir. Dışa aktarma işlevi doğrudan kütüphaneye yerleşiktir ve karmaşık grafik geçişi ile operatör eşlemesini otomatik olarak gerçekleştirir.
Aşağıdaki örnek, önceden eğitilmiş bir Ultralytics YOLO26 modelinin dağıtım için ONNX formatına nasıl aktarılacağını gösterir:
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ışa aktarıldıktan sonra bu .onnx dosyası, yönetim amacıyla Ultralytics Platform içinde kullanılabilir veya ONNX Runtime kullanılarak doğrudan uç cihazlara dağıtılabilir; böylece yüksek performanslı bilgisayarlı görü neredeyse her ortamda erişilebilir hâle gelir.









