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 öğrenimi modellerini temsil etmek üzere tasarlanmış, çeşitli yapay zeka çerçeveleri ve araçları arasında birlikte çalışabilirliğe olanak tanıyan açık kaynaklı bir formattır. Derin öğrenme için evrensel bir çevirmen görevi görerek geliştiricilerin bir çerçevede—PyTorch, TensorFlow veya Scikit-learn gibi—modeller oluşturmasına ve bunları çıkarım için optimize edilmiş başka bir ortamda sorunsuz bir şekilde dağıtmasına imkan tanır. Ortak bir operatör kümesi ve standart bir dosya formatı tanımlayan ONNX, modelleri araştırmadan üretime taşımak için geçmişte ihtiyaç duyulan karmaşık, özel dönüştürme betiklerine olan gereksinimi ortadan kaldırır. Bu esneklik, eğitimin güçlü bulut GPU'larında gerçekleşebildiği, dağıtımın ise uç cihazlar, cep telefonları veya web tarayıcıları gibi çeşitli donanımları hedeflediği modern yapay zeka iş akışları için hayati öneme sahiptir.
Link to this sectionONNX'in Modern Yapay Zekadaki Rolü#
Yapay zeka dünyasının hızla gelişen ortamında, araştırmacılar ve mühendisler genellikle geliştirme yaşam döngüsünün farklı aşamalarında farklı araçlar kullanırlar. Bir veri bilimci deney ve eğitim için PyTorch'un esnekliğini tercih ederken, bir üretim mühendisi dağıtım için TensorRT veya OpenVINO'nun optimize edilmiş performansına ihtiyaç duyar. Standart bir değişim formatı olmadan, bir modeli bu ekosistemler arasında taşımak zordur ve hataya açıktır.
ONNX, hesaplama grafiğinin paylaşılan bir tanımını sağlayarak bu boşluğu doldurur. Bir model ONNX'e dışa 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 formata dönüştürülür. Bu, donanım hızlandırma için özel olarak ayarlanmış çıkarım motorlarının—ONNX Runtime gibi—modeli Linux, Windows, macOS, Android ve iOS dahil olmak üzere birden fazla platformda verimli bir şekilde çalıştırmasını sağlar.
Link to this sectionONNX 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ı JavaScript ortamında kullanmak üzere dışa aktarabilirsin.
- Donanım Optimizasyonu: Birçok donanım üreticisi, ONNX ile arayüz 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'larda, Intel CPU'larda veya mobil NPU'larda (Sinir İş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 ve sabit katlama gibi grafik optimizasyonları uygular. 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 hatları sürdürmek yerine, teslimat formatı olarak ONNX üzerinde standartlaşarak ModelOps süreçlerini kolaylaştırabilirler.
Link to this sectionGerç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:
Link to this sectionMobil Cihazlarda Uç Yapay Zeka#
Gerçek zamanlı ürün sağlığı takibi için tasarlanmış bir mobil uygulamayı düşün. Model, geniş bir bitki görüntüleri veri kümesi kullanılarak güçlü bir bulut sunucusunda eğitilebilir. Ancak uygulama, bir çiftçinin akıllı telefonunda çevrimdışı çalışmak zorundadır. Geliştiriciler, eğitilmiş modeli ONNX'e dışa aktararak bunu ONNX Runtime Mobile kullanarak mobil uygulamaya entegre edebilirler. Bu, telefonun işlemcisinin nesne algılamayı yerel olarak çalıştırmasına ve internet bağlantısına gerek duymadan zararlıları veya hastalıkları anında tanımlamasına olanak tanır.
Link to this sectionPlatformlar Arası Web Çıkarımı#
E-ticarette, "sanal deneme" özelliği, kullanıcının web kamerası akışındaki giysileri üst üste bindirmek 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 ONNX Runtime Web aracılığıyla doğrudan kullanıcının tarayıcısında çalıştırılabilir. Bu, bilgisayarlı görü görevlerini gerçekleştirmek için istemcinin cihaz yeteneklerini (WebGL veya WebAssembly) kullanarak, video verileri asla kullanıcının bilgisayarından çıkmadığı için sorunsuz ve gizliliği koruyan bir deneyim sağlar.
Link to this sectionİlgili Terimlerle Karşılaştırma#
ONNX'i diğer model formatlarından ve araçlarından ayırmak faydalıdır:
- TensorRT ile karşılaştırma: ONNX bir değişim formatı iken, TensorRT özellikle NVIDIA GPU'lar için bir çıkarım motoru ve optimize edicidir. Yaygın bir iş akışı, modeli önce ONNX'e dışa aktarmayı ve ardından NVIDIA donanımında maksimum verimlilik elde etmek için bu ONNX dosyasını TensorRT'ye ayrıştırmayı içerir.
- TensorFlow SavedModel ile karşılaştırma: SavedModel, TensorFlow için yerel serileştirme formatıdır. Google ekosistemi içinde sağlam olsa da, ONNX'ten daha az evrensel uyumluluğa sahiptir. SavedModel'leri ONNX'e dönüştürerek daha geniş platform desteği kazanmak için araçlar mevcuttur.
- CoreML ile karşılaştırma: CoreML, Apple'ın cihaz içi makine öğrenimi çerçevesidir. Farklı olsalar da, modeller genellikle PyTorch'tan ONNX'e ve ardından (veya doğrudan) ONNX'ten CoreML'e dönüştürülerek iPhone ve iPad'lerde verimli bir şekilde çalıştırılır.
Link to this sectionUltralytics ile ONNX'e Dışa Aktarma#
Ultralytics ekosistemi, YOLO26 gibi en son teknoloji modelleri ONNX formatına dönüştürme sürecini basitleştirir. Dışa aktarma işlevi doğrudan kitaplığın içinde yer alır ve karmaşık grafik geçişlerini ve operatör eşlemeyi otomatik olarak yönetir.
Aşağıdaki örnek, dağıtım için önceden eğitilmiş bir YOLO26 modelinin ONNX formatına nasıl dışa 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ışa aktarıldıktan sonra, bu .onnx dosyası yönetim için Ultralytics Platform'da kullanılabilir veya ONNX Runtime kullanılarak doğrudan uç cihazlara dağıtılabilir; bu da yüksek performanslı bilgisayarlı görüyü hemen hemen her ortamda erişilebilir kılar.






