İçeriğe geç

YOLO11 Modelleri için ONNX Dışa Aktarımı

Çoğu zaman, bilgisayar görüşü modellerini dağıtırken, hem esnek hem de birden çok platformla uyumlu bir model formatına ihtiyacınız olacaktır.

Ultralytics YOLO11 modellerini ONNX formatına aktarmak, dağıtımı kolaylaştırır ve çeşitli ortamlarda optimum performans sağlar. Bu kılavuz, YOLO11 modellerinizi ONNX'e nasıl kolayca dönüştüreceğinizi ve gerçek dünya uygulamalarındaki ölçeklenebilirliğini ve etkinliğini nasıl artıracağınızı gösterecektir.

ONNX ve ONNX Çalışma Zamanı

Open Neural Network Exchange anlamına gelen ONNX, ilk olarak 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 tarafından desteklenen ortak bir çabadır. Proje, makine öğrenimi modellerini farklı AI çerçeveleri ve donanımları arasında kullanılmalarına olanak sağlayacak şekilde temsil etmek için tasarlanmış açık bir dosya formatı oluşturmayı amaçlamaktadır.

ONNX modelleri, farklı çerçeveler arasında sorunsuz bir şekilde geçiş yapmak için kullanılabilir. Örneğin, PyTorch'ta eğitilmiş bir derin öğrenme modeli ONNX formatına aktarılabilir ve ardından TensorFlow'a kolayca aktarılabilir.

ONNX

Alternatif olarak, ONNX modelleri ONNX Runtime ile kullanılabilir. ONNX Runtime, PyTorch, TensorFlow, TFLite, scikit-learn vb. gibi çerçevelerle uyumlu, makine öğrenimi modelleri için çok yönlü, platformlar arası bir hızlandırıcıdır.

ONNX Runtime, donanım özelliklerine ö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 ve ONNX Runtime

İster bağımsız olarak ister ONNX Runtime ile birlikte kullanılsın, ONNX, 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şleme yeteneği, aşağıdaki temel özelliklere bağlanabilir:

  • Ortak Model Temsili: ONNX, ortak bir operatör kümesi (evrişimler, katmanlar vb. gibi) 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 temsile çevrilir. Bu tekdüzelik, modelin ONNX'i destekleyen herhangi bir çerçeve tarafından anlaşılabileceğini garanti eder.

  • Sürüm Oluşturma ve Geriye Dönük Uyumluluk: ONNX, operatörleri için bir sürüm oluşturma sistemi sürdürür. Bu, standart geliştikçe bile eski sürümlerde oluşturulan modellerin kullanılabilir kalmasını sağlar. Geriye dönük uyumluluk, modellerin hızla eskimesini önleyen önemli 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; burada düğümler işlemleri veya hesaplamaları temsil eder ve kenarlar aralarında akan tensörleri temsil eder. Bu format, modelleri grafik olarak da temsil eden çeşitli çerçevelere kolayca uyarlanabilir.

  • Araçlar ve Ekosistem: Model dönüştürme, görselleştirme ve optimizasyona yardımcı olan ONNX etrafında zengin bir araç ekosistemi bulunmaktadır. Bu araçlar, geliştiricilerin ONNX modelleriyle çalışmasını ve modelleri farklı çerçeveler arasında sorunsuz bir şekilde dönüştürmesini kolaylaştırır.

ONNX'in Yaygın Kullanımı

YOLO11 modellerini ONNX formatına nasıl aktaracağımıza geçmeden önce, ONNX modellerinin genellikle nerede kullanıldığına bir göz atalım.

CPU Dağıtımı

ONNX modelleri, ONNX Çalışma Zamanı ile uyumlulukları nedeniyle genellikle 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 gerçek zamanlı CPU dağıtımlarını mümkün kılar.

Desteklenen Dağıtım Seçenekleri

ONNX modelleri genellikle CPU'larda kullanılırken, aşağıdaki platformlarda da dağıtılabilir:

  • GPU Hızlandırması: ONNX, özellikle NVIDIA CUDA olmak üzere GPU hızlandırmasını tam olarak destekler. Bu, yüksek işlem gücü gerektiren görevler için NVIDIA GPU'larda verimli yürütme sağlar.

  • Uç ve Mobil Cihazlar: ONNX, cihaz üzerinde ve gerçek zamanlı çıkarım senaryoları için mükemmel olan uç ve mobil cihazlara kadar uzanır. Hafiftir ve uç donanımıyla uyumludur.

  • Web Tarayıcıları: ONNX, etkileşimli ve dinamik web tabanlı yapay zeka uygulamalarına güç vererek doğrudan web tarayıcılarında çalışabilir.

YOLO11 Modellerini ONNX'e Aktarma

YOLO11 modellerini ONNX formatına dönüştürerek model uyumluluğunu ve dağıtım esnekliğini genişletebilirsiniz. Ultralytics YOLO11, modelinizin farklı platformlardaki performansını önemli ölçüde artırabilecek basit bir dışa aktarma süreci sağlar.

Kurulum

Gerekli paketi yüklemek için şunu çalıştırın:

Kurulum

# Install the required package for YOLO11
pip install ultralytics

Kurulum süreciyle ilgili ayrıntılı talimatlar ve en iyi uygulamalar için YOLO11 Kurulum kılavuzumuza göz atın. YOLO11 için gerekli paketleri kurarken herhangi bir zorlukla karşılaşırsanız, çözümler ve ipuçları için Sık Karşılaşılan Sorunlar kılavuzumuza başvurun.

Kullanım

Kullanım talimatlarına geçmeden önce, Ultralytics tarafından sunulan YOLO11 modelleri yelpazesine göz atmayı unutmayın. Bu, proje gereksinimleriniz için en uygun modeli seçmenize yardımcı olacaktır.

Kullanım

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to ONNX format
model.export(format="onnx")  # creates 'yolo11n.onnx'

# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")

# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to ONNX format
yolo export model=yolo11n.pt format=onnx # creates 'yolo11n.onnx'

# Run inference with the exported model
yolo predict model=yolo11n.onnx source='https://ultralytics.com/images/bus.jpg'

Dışa Aktarma Argümanları

YOLO11 modelinizi ONNX biçimine aktarırken, belirli dağıtım ihtiyaçlarınız için optimize etmek üzere çeşitli argümanlar kullanarak süreci özelleştirebilirsiniz:

Argüman Tür Varsayılan Açıklama
format str 'onnx' Çeşitli dağıtım ortamlarıyla uyumluluğu tanımlayan, dışa aktarılan modelin hedef formatı.
imgsz int veya tuple 640 Model girişi için istenen görüntü boyutu. Kare görüntüler için bir tamsayı veya bir demet olabilir (height, width) belirli boyutlar için.
half bool False FP16 (yarı duyarlıklı) nicelemeyi etkinleştirir, model boyutunu küçültür ve desteklenen donanımda çıkarımı potansiyel olarak hızlandırır.
dynamic bool False Değişken görüntü boyutlarını işlemede esnekliği artırarak dinamik giriş boyutlarına olanak tanır.
simplify bool True Model grafiğini şunlarla basitleştirir: onnxslim, potansiyel olarak performansı ve uyumluluğu artırır.
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ır.
nms bool False Doğru ve verimli algılama sonrası işleme için gerekli olan Non-Maximum Suppression (NMS) ekler.
batch int 1 Dışa aktarma modeli toplu çıkarım boyutunu veya dışa aktarılan modelin aynı anda işleyeceği maksimum görüntü sayısını belirtir. predict modu.
device str None Dışa aktarma için cihazı 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'in dışa aktarma hakkındaki dokümantasyon sayfasını ziyaret edin.

Dışa Aktarılmış YOLO11 ONNX Modellerini Dağıtma

Ultralytics YOLO11 modellerinizi ONNX formatına başarıyla aktardıktan sonraki adım, bu modelleri çeşitli ortamlarda dağıtmaktır. ONNX modellerinizi dağıtma hakkında ayrıntılı talimatlar için aşağıdaki kaynaklara göz atın:

  • ONNX Runtime Python API Belgeleri: Bu kılavuz, ONNX Runtime kullanılarak ONNX modellerini yüklemek ve çalıştırmak için temel bilgiler sağlar.

  • Uç Cihazlarda Dağıtım: ONNX modellerini uçta dağıtmaya ilişkin farklı örnekler için bu doküman sayfasına göz atın.

  • GitHub'da ONNX Eğitimleri: Farklı senaryolarda ONNX modellerini kullanmanın ve uygulamanın çeşitli yönlerini kapsayan kapsamlı eğitimlerden oluşan bir koleksiyon.

  • Triton Inference Server: Yüksek performanslı, ölçeklenebilir dağıtımlar için ONNX modellerinizi NVIDIA'nın Triton Inference Server'ı ile nasıl dağıtabileceğinizi öğrenin.

Özet

Bu kılavuzda, Ultralytics YOLO11 modellerini çeşitli platformlarda birlikte çalışabilirliğini ve performansını artırmak için ONNX formatına nasıl aktaracağınızı öğrendiniz. Ayrıca ONNX Runtime ve ONNX dağıtım seçenekleriyle de tanıştınız.

ONNX dışa aktarma, Ultralytics YOLO11 tarafından desteklenen birçok dışa aktarma biçiminden yalnızca biridir ve modellerinizi neredeyse her ortamda dağıtmanıza olanak tanır. Belirli ihtiyaçlarınıza bağlı olarak, maksimum GPU performansı için TensorRT veya Apple cihazları için CoreML gibi diğer dışa aktarma seçeneklerini de keşfetmek isteyebilirsiniz.

Kullanım hakkında daha fazla bilgi için ONNX resmi belgelerini ziyaret edin.

Ayrıca, diğer Ultralytics YOLO11 entegrasyonları hakkında daha fazla bilgi edinmek isterseniz, entegrasyon kılavuzu sayfamızı ziyaret edin. Orada birçok faydalı kaynak ve içgörü bulacaksınız.

SSS

Ultralytics kullanarak YOLO11 modellerini ONNX formatına nasıl aktarırım?

Ultralytics kullanarak YOLO11 modellerinizi ONNX formatına aktarmak için şu adımları izleyin:

Kullanım

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to ONNX format
model.export(format="onnx")  # creates 'yolo11n.onnx'

# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")

# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to ONNX format
yolo export model=yolo11n.pt format=onnx # creates 'yolo11n.onnx'

# Run inference with the exported model
yolo predict model=yolo11n.onnx source='https://ultralytics.com/images/bus.jpg'

Daha fazla ayrıntı için dışa aktarma belgelerini ziyaret edin.

YOLO11 modellerini dağıtmak için ONNX Runtime kullanmanın avantajları nelerdir?

YOLO11 modellerini dağıtmak için ONNX Runtime kullanmak çeşitli avantajlar sunar:

  • Çapraz platform uyumluluğu: ONNX Runtime, Windows, macOS ve Linux gibi çeşitli platformları destekleyerek modellerinizin farklı ortamlarda sorunsuz çalışmasını sağlar.
  • Donanım hızlandırması: ONNX Runtime, yüksek performanslı çıkarım sağlayarak CPU'lar, GPU'lar ve özel hızlandırıcılar için donanıma özgü optimizasyonlardan yararlanabilir.
  • Çerçeve birlikte çalışabilirliği: PyTorch veya TensorFlow gibi popüler çerçevelerde eğitilmiş modeller, ONNX formatına kolayca dönüştürülebilir ve ONNX Runtime kullanılarak çalıştırılabilir.
  • Performans optimizasyonu: ONNX Runtime, yerel PyTorch modellerine kıyasla 3 kata kadar CPU hızlandırması sağlayarak GPU kaynaklarının sınırlı olduğu dağıtım senaryoları için idealdir.

ONNX Runtime belgelerini inceleyerek daha fazla bilgi edinin.

ONNX'e aktarılan YOLO11 modelleri için hangi dağıtım seçenekleri mevcuttur?

ONNX'e aktarılan YOLO11 modelleri, aşağıdakiler dahil olmak üzere çeşitli platformlarda dağıtılabilir:

  • CPU'lar: Optimize edilmiş CPU çıkarımı için ONNX Runtime'ı kullanma.
  • GPU'lar: Yüksek performanslı GPU hızlandırması için NVIDIA CUDA'dan yararlanma.
  • Uç cihazlar: Gerçek zamanlı, cihaz üzerinde çıkarım için uç 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 inceleyin.

Ultralytics YOLO11 modelleri için neden ONNX formatını kullanmalıyım?

Ultralytics YOLO11 modelleri için ONNX formatını kullanmak çok sayıda avantaj sağlar:

  • Birlikte Çalışabilirlik: ONNX, modellerin farklı makine öğrenimi çerçeveleri arasında sorunsuz bir şekilde aktarılmasını sağlar.
  • Performans Optimizasyonu: ONNX Runtime, donanıma özgü optimizasyonları kullanarak model performansını artırabilir.
  • Esneklik: ONNX, çeşitli dağıtım ortamlarını destekleyerek aynı modeli farklı platformlarda değişiklik yapmadan kullanmanızı sağlar.
  • Standardizasyon: ONNX, endüstri genelinde yaygın olarak desteklenen, uzun vadeli uyumluluğu sağlayan standartlaştırılmış bir format sağlar.

YOLO11 modellerini ONNX'e aktarma hakkındaki kapsamlı kılavuza bakın.

YOLO11 modellerini ONNX'e aktarırken karşılaşılan sorunları nasıl giderebilirim?

YOLO11 modellerini ONNX'e aktarırken, uyumsuz bağımlılıklar veya desteklenmeyen işlemler gibi yaygın sorunlarla karşılaşabilirsiniz. Bu sorunları gidermek için:

  1. Gerekli bağımlılıkların doğru sürümünün yüklü olduğundan emin olun.
  2. Desteklenen operatörler ve özellikler için resmi ONNX dokümantasyonuna bakın.
  3. İpuçları için hata mesajlarını inceleyin ve Ultralytics Sık Karşılaşılan Sorunlar kılavuzuna başvurun.
  4. Farklı dışa aktarma argümanları kullanmayı deneyin, örneğin simplify=True veya şunu ayarlayarak opset sürüm.
  5. Dinamik giriş boyutu sorunları için şunu ayarlayın: dynamic=True dışa aktarma sırasında.

Sorunlar devam ederse, daha fazla yardım için Ultralytics desteğiyle iletişime geçin.



📅 1 yıl önce oluşturuldu ✏️ 3 ay önce güncellendi

Yorumlar