İçeriğe geç

Ultralytics YOLO ile Model Dışa Aktarma

Ultralytics YOLO ekosistemi ve entegrasyonları

Giriş

Bir modeli eğitmenin nihai amacı, onu gerçek dünya uygulamaları için dağıtmaktır. Ultralytics YOLO26'daki dışa aktarma modu, eğitilmiş modelinizi farklı formatlara aktarmak için çok yönlü seçenekler sunarak çeşitli platformlarda ve cihazlarda dağıtılabilir hale getirir. Bu kapsamlı kılavuz, model dışa aktarımının inceliklerini size anlatmayı ve maksimum uyumluluk ile performansın nasıl elde edileceğini göstermeyi amaçlamaktadır.



İzle: Özel Eğitilmiş Ultralytics YOLO Modelini Nasıl Dışa Aktarırım ve Web Kamerasında Canlı Çıkarım Nasıl Çalıştırırım.

YOLO26'nın Dışa Aktarma Modunu Neden Seçmelisiniz?

  • Çok Yönlülük: ONNX, TensorRT, CoreML ve daha fazlası dahil olmak üzere birden çok formata aktarın.
  • Performans: TensorRT ile 5 kata kadar GPU hızlandırması ve ONNX veya OpenVINO ile 3 kata kadar CPU hızlandırması elde edin.
  • Uyumluluk: Modelinizi çok sayıda donanım ve yazılım ortamında evrensel olarak dağıtılabilir hale getirin.
  • Kullanım Kolaylığı: Hızlı ve basit model dışa aktarımı için basit CLI ve Python API'si.

Dışa Aktarım Modunun Temel Özellikleri

İşte öne çıkan işlevlerden bazıları:

  • Tek Tıkla Dışa Aktarma: Farklı formatlara dışa aktarmak için basit komutlar.
  • Toplu Dışa Aktarma: Toplu çıkarım özellikli modelleri dışa aktarın.
  • Optimize Edilmiş Çıkarım: Dışa aktarılan modeller, daha hızlı çıkarım süreleri için optimize edilmiştir.
  • Eğitim Videoları: Sorunsuz bir dışa aktarım deneyimi için derinlemesine kılavuzlar ve eğitimler.

İpucu

  • 3 kata kadar CPU hızlandırması için ONNX veya OpenVINO'ya aktarın.
  • 5 kata kadar GPU hızlandırması için TensorRT'ye aktarın.

Kullanım Örnekleri

Bir YOLO26n modelini ONNX veya TensorRT gibi farklı bir formata aktarın. Dışa aktarma argümanlarının tam listesi için aşağıdaki Argümanlar bölümüne bakın.

Örnek

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")
yolo export model=yolo26n.pt format=onnx      # export official model
yolo export model=path/to/best.pt format=onnx # export custom-trained model

Argümanlar

Bu tablo, YOLO modellerini farklı formatlara aktarmak için mevcut yapılandırmaları ve seçenekleri ayrıntılı olarak açıklamaktadır. Bu ayarlar, dışa aktarılan modelin performansını, boyutunu ve çeşitli platformlar ve ortamlardaki uyumluluğunu optimize etmek için kritik öneme sahiptir. Doğru yapılandırma, modelin amaçlanan uygulamada optimum verimlilikle dağıtıma hazır olmasını sağlar.

ArgümanTürVarsayılanAçıklama
formatstr'torchscript'Dışa aktarılan model için hedef biçim, örneğin 'onnx', 'torchscript', 'engine' (TensorRT) veya diğerleri. Her format, farklı ile uyumluluk sağlar dağıtım ortamları.
imgszint veya tuple640Model girişi için istenen görüntü boyutu. Kare görüntüler için bir tamsayı olabilir (örn. 640 640×640 için) veya bir demet (height, width) belirli boyutlar için.
kerasboolFalseTensorFlow SavedModel için Keras formatına dışa aktarmayı etkinleştirir ve TensorFlow serving ve API'lerle uyumluluk sağlar.
optimizeboolFalseTorchScript'e aktarılırken mobil cihazlar için optimizasyon uygular, bu da model boyutunu potansiyel olarak küçültür ve çıkarım performansını artırır. NCNN formatı veya CUDA cihazlarıyla uyumlu değildir.
halfboolFalseFP16 (yarım duyarlıklı) nicelemeyi etkinleştirerek model boyutunu küçültür ve desteklenen donanımda çıkarımı potansiyel olarak hızlandırır. INT8 niceleme veya yalnızca CPU'ya yönelik dışa aktarmalarla uyumlu değildir. Yalnızca belirli formatlar için kullanılabilir, örneğin ONNX (aşağıya bakın).
int8boolFalseÖncelikle uç cihazlar için olmak üzere, INT8 nicelemesini etkinleştirir, modeli daha da sıkıştırır ve minimum doğruluk kaybıyla çıkarımı hızlandırır. TensorRT ile kullanıldığında, eğitim sonrası niceleme (PTQ) gerçekleştirir.
dynamicboolFalseONNX, TensorRT ve OpenVINO dışa aktarımları için dinamik giriş boyutlarına izin vererek, değişen görüntü boyutlarını işleme esnekliğini artırır. Otomatik olarak şuna ayarlanır: True INT8 ile TensorRT kullanırken.
simplifyboolTrueONNX dışa aktarımları için model grafiğini basitleştirir onnxslim, performansı ve çıkarım motorlarıyla uyumluluğu potansiyel olarak artırır.
opsetintNoneFarklı 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ılır.
workspacefloat veya NoneNoneiçin maksimum çalışma alanı boyutunu GiB cinsinden ayarlar TensorRT optimizasyonları, bellek kullanımını ve performansı dengeleme. Şunu kullanın: None TensorRT tarafından cihazın maksimumuna kadar otomatik tahsis için.
nmsboolFalseDesteklendiğinde dışa aktarılan modele Non-Maximum Suppression'ı (NMS) ekler (bkz. Dışa Aktarma Biçimleri), detect etme işlem sonrası verimliliğini artırır. end2end modelleri için kullanılamaz.
batchint1Dışa aktarma modelinin toplu çıkarım boyutunu veya dışa aktarılan modelin eşzamanlı olarak işleyeceği maksimum görüntü sayısını belirtir predict modu. Edge TPU dışa aktarımları için bu, otomatik olarak 1 olarak ayarlanır.
devicestrNoneDışa aktarma için cihazı belirtir: GPU (device=0), CPU (device=cpu), Apple silikon için MPS (device=mps) veya NVIDIA Jetson için DLA (device=dla:0 veya device=dla:1). TensorRT dışa aktarımları otomatik olarak GPU'yu kullanır.
datastr'coco8.yaml'Şuraya giden yol: veri kümesi yapılandırma dosyası, INT8 niceleme kalibrasyonu için gerekli. INT8 etkinleştirilmişken belirtilmezse, coco8.yaml kalibrasyon için yedek olarak kullanılacaktır.
fractionfloat1.0Veri kümesinin INT8 niceleme kalibrasyonu için kullanılacak kısmını belirtir. Tam veri kümesinin bir alt kümesi üzerinde kalibrasyon yapılmasına olanak tanır, bu da deneyler için veya kaynaklar sınırlı olduğunda kullanışlıdır. INT8 etkinleştirilmişse belirtilmezse, tam veri kümesi kullanılır.
end2endboolNoneNMS çıkarımını destekleyen YOLO (YOLO26, YOLOv10) uçtan uca modunu geçersiz kılar. Bunu False bu modelleri geleneksel NMS son işlem boru hattıyla uyumlu olacak şekilde dışa aktarmanıza olanak tanır.

Bu parametrelerin ayarlanması, dışa aktarma işleminin dağıtım ortamı, donanım kısıtlamaları ve performans hedefleri gibi belirli gereksinimlere uyacak şekilde özelleştirilmesine olanak tanır. Uygun formatı ve ayarları seçmek, model boyutu, hız ve doğruluk arasında en iyi dengeyi sağlamak için çok önemlidir.

Dışa Aktarma Biçimleri

Mevcut YOLO26 aktarım formatları aşağıdaki tabloda yer almaktadır. Herhangi bir formata şu şekilde aktarabilirsiniz: format argümanı, yani format='onnx' veya format='engine'. Dışa aktarılan modeller üzerinde doğrudan tahmin veya doğrulama yapabilirsiniz, yani, yolo predict model=yolo26n.onnx. Kullanım örnekleri, dışa aktarma tamamlandıktan sonra modeliniz için gösterilir.

Formatformat ArgümanModelMeta VeriArgümanlar
PyTorch-yolo26n.pt-
TorchScripttorchscriptyolo26n.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n_saved_model/imgsz, keras, int8, nms, batch, device
TF GraphDefpbyolo26n.pbimgsz, batch, device
TF Litetfliteyolo26n.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n_edgetpu.tfliteimgsz, device
TF.jstfjsyolo26n_web_model/imgsz, half, int8, nms, batch, device
PaddlePaddlepaddleyolo26n_paddle_model/imgsz, batch, device
MNNmnnyolo26n.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n_imx_model/imgsz, int8, data, fraction, device
RKNNrknnyolo26n_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n_executorch_model/imgsz, device
Axeleraaxelerayolo26n_axelera_model/imgsz, int8, data, fraction, device

SSS

Bir YOLO26 modelini ONNX formatına nasıl aktarırım?

Bir YOLO26 modelini ONNX formatına aktarmak Ultralytics ile basittir. Modelleri dışa aktarmak için hem Python hem de CLI yöntemleri sunar.

Örnek

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")
yolo export model=yolo26n.pt format=onnx      # export official model
yolo export model=path/to/best.pt format=onnx # export custom-trained model

Farklı girdi boyutlarını işleme gibi gelişmiş seçenekler de dahil olmak üzere süreç hakkında daha fazla ayrıntı için ONNX entegrasyon kılavuzuna bakın.

Model dışa aktarımı için TensorRT kullanmanın faydaları nelerdir?

Model dışa aktarımı için TensorRT kullanmak önemli performans iyileştirmeleri sunar. TensorRT'ye aktarılan YOLO26 modelleri, 5 kata kadar GPU hızlandırması sağlayabilir, bu da onu gerçek zamanlı çıkarım uygulamaları için ideal kılar.

  • Çok Yönlülük: Modelleri belirli bir donanım kurulumu için optimize edin.
  • Hız: Gelişmiş optimizasyonlar sayesinde daha hızlı çıkarım elde edin.
  • Uyumluluk: NVIDIA donanımıyla sorunsuz entegre olur.

TensorRT entegrasyonu hakkında daha fazla bilgi edinmek için TensorRT entegrasyon kılavuzuna bakın.

YOLO26 modelimi dışa aktarırken INT8 nicelemeyi nasıl etkinleştiririm?

INT8 nicelemesi, özellikle uç cihazlarda modeli sıkıştırmak ve çıkarımı hızlandırmak için mükemmel bir yoldur. INT8 nicelemesini nasıl etkinleştirebileceğiniz aşağıda açıklanmıştır:

Örnek

from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # Load a model
model.export(format="engine", int8=True)
yolo export model=yolo26n.pt format=engine int8=True # export TensorRT model with INT8 quantization

INT8 nicelemesi gibi çeşitli formatlara uygulanabilir, TensorRT, OpenVINOve CoreML. Optimum niceleme sonuçları için temsili bir veri kümesi kullanarak data parametresi.

Modelleri dışa aktarırken dinamik girdi boyutu neden önemlidir?

Dinamik giriş boyutu, dışa aktarılan modelin farklı görüntü boyutlarını işlemesini sağlayarak esneklik sağlar ve farklı kullanım durumları için işlem verimliliğini optimize eder. ONNX veya TensorRT gibi formatlara aktarırken, dinamik giriş boyutunu etkinleştirmek, modelin farklı giriş şekillerine sorunsuz bir şekilde uyum sağlamasını sağlar.

Bu özelliği etkinleştirmek için şunu kullanın: dynamic=True işareti ile dışa aktarma sırasında:

Örnek

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.export(format="onnx", dynamic=True)
yolo export model=yolo26n.pt format=onnx dynamic=True

Dinamik giriş boyutlandırması, özellikle video işleme veya farklı kaynaklardan gelen görüntüleri işleme gibi giriş boyutlarının değişebileceği uygulamalar için kullanışlıdır.

Model performansını optimize etmek için dikkate alınması gereken temel dışa aktarma argümanları nelerdir?

Dışa aktarma argümanlarını anlamak ve yapılandırmak, model performansını optimize etmek için çok önemlidir:

  • format: Dışa aktarılan model için hedef biçim (örneğin, onnx, torchscript, tensorflow).
  • imgsz: Model girişi için istenen görüntü boyutu (örneğin, 640 veya (height, width)).
  • half: FP16 nicelemesini etkinleştirir, model boyutunu küçültür ve potansiyel olarak çıkarımı hızlandırır.
  • optimize: Mobil veya kısıtlı ortamlar için özel optimizasyonlar uygular.
  • int8: INT8 nicelemesini etkinleştirir, özellikle şu amaçlar için çok faydalıdır: uç nokta yapay zekası dağıtımlar.

Belirli donanım platformlarında dağıtım için, NVIDIA GPU'lar için TensorRT, Apple cihazları için CoreML veya Google Coral cihazları için Edge TPU gibi özel dışa aktarma formatlarını kullanmayı düşünebilirsiniz.

Dışa aktarılan YOLO modellerindeki çıktı tensor'ları neyi temsil eder?

Bir YOLO modelini ONNX veya TensorRT gibi formatlara dışa aktardığınızda, çıktı tensor yapısı modelin görevine bağlıdır. Bu çıktıları anlamak, özel çıkarım uygulamaları için önemlidir.

İçin detect modelleri (örneğin, yolo26n.pt), çıktı tipik olarak şu şekilde tek bir tensor'dur: (batch_size, 4 + num_classes, num_predictions) burada kanallar kutu koordinatlarını ve sınıf başına skorları temsil eder ve num_predictions dışa aktarma giriş çözünürlüğüne bağlıdır (ve dinamik olabilir).

İçin segment modelleri (örneğin, yolo26n-seg.pt), tipik olarak iki çıktı alırsınız: birincisi şu şekilde bir tensor: (batch_size, 4 + num_classes + mask_dim, num_predictions) (kutular, sınıf skorları ve maske katsayıları) ve ikincisi şu şekilde bir tensor: (batch_size, mask_dim, proto_h, proto_w) örnek maskeleri oluşturmak için katsayılarla birlikte kullanılan maske prototiplerini içerir. Boyutlar dışa aktarma giriş çözünürlüğüne bağlıdır (ve dinamik olabilir).

İçin poz modelleri (örneğin, yolo26n-pose.pt), çıktı tensor'u tipik olarak şu şekildedir: (batch_size, 4 + num_classes + keypoint_dims, num_predictions), nerede keypoint_dims poz spesifikasyonuna (örn. anahtar nokta sayısı ve güvenin dahil olup olmadığı) bağlıdır ve num_predictions dışa aktarma giriş çözünürlüğüne bağlıdır (ve dinamik olabilir).

Kapsamlı ONNX çıkarım örneklerindeki örnekler, bu çıktıların her model türü için nasıl işleneceğini gösterir.



📅 2 yıl önce oluşturuldu ✏️ 2 gün önce güncellendi
glenn-jocherBurhan-QUltralyticsAssistantambitious-octopusKayzwerraimbekovmpderrengerY-T-Gjk4eMatthewNoyceRizwanMunawar

Yorumlar