İç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 YOLO11'deki Dışa Aktarma modu, eğitilmiş modelinizi farklı formatlara aktarmak için çok çeşitli seçenekler sunarak çeşitli platformlarda ve cihazlarda dağıtılabilir hale getirir. Bu kapsamlı kılavuz, maksimum uyumluluk ve performansı nasıl elde edeceğinizi göstererek model dışa aktarımının nüansları konusunda size yol 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.

Neden YOLO11'in Dışa Aktarım Modunu 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 YOLO11n modelini ONNX veya TensorRT gibi farklı bir biçime 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("yolo11n.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=yolo11n.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üman Tür Varsayılan Açıklama
format str '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ı.
imgsz int veya tuple 640 Model 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.
keras bool False TensorFlow SavedModel için Keras formatına dışa aktarmayı etkinleştirir ve TensorFlow serving ve API'lerle uyumluluk sağlar.
optimize bool False TorchScript'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.
half bool False Model boyutunu küçülten ve desteklenen donanımda çıkarımı potansiyel olarak hızlandıran FP16 (yarım duyarlıklı) nicelemeyi etkinleştirir. ONNX için INT8 niceleme veya yalnızca CPU dışa aktarmalarıyla uyumlu değildir.
int8 bool False Ö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.
dynamic bool False ONNX, TensorRT ve OpenVINO dışa aktarımları için dinamik giriş boyutlarına izin vererek, değişen görüntü boyutlarını işlemede esnekliği artırır. Otomatik olarak şu şekilde ayarlanır: True INT8 ile TensorRT kullanırken.
simplify bool True ONNX 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.
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ılır.
workspace float veya None None iç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.
nms bool False Desteklendiğinde (bkz. Dışa Aktarma Biçimleri), dışa aktarılan modele Non-Maximum Suppression (NMS) ekleyerek algılama sonrası işleme verimliliğini artırır. Uçtan uca modeller için mevcut değildir.
batch int 1 Dış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.
device str None Dış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.
data str 'coco8.yaml' Şuraya giden yol: veri kümesi yapılandırma dosyası (varsayılan: coco8.yaml), INT8 nicelemesi kalibrasyonu için önemlidir. INT8 etkinleştirilmişken belirtilmezse, varsayılan bir veri kümesi atanır.
fraction float 1.0 Veri 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.

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 YOLO11 dışa aktarma formatları aşağıdaki tabloda yer almaktadır. Herhangi bir formata format argümanını kullanarak dışa aktarabilirsiniz, örneğin format='onnx' veya format='engine'. Dışa aktarılan modeller üzerinde doğrudan tahmin veya doğrulama yapabilirsiniz, örneğin yolo predict model=yolo11n.onnx. Kullanım örnekleri, dışa aktarma tamamlandıktan sonra modeliniz için gösterilir.

Format format Argüman Model Meta Veri Argümanlar
PyTorch - yolo11n.pt -
TorchScript torchscript yolo11n.torchscript imgsz, half, optimize, nms, batch, device
ONNX onnx yolo11n.onnx imgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINO openvino yolo11n_openvino_model/ imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRT engine yolo11n.engine imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreML coreml yolo11n.mlpackage imgsz, half, int8, nms, batch, device
TF SavedModel saved_model yolo11n_saved_model/ imgsz, keras, int8, nms, batch, device
TF GraphDef pb yolo11n.pb imgsz, batch, device
TF Lite tflite yolo11n.tflite imgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPU edgetpu yolo11n_edgetpu.tflite imgsz, device
TF.js tfjs yolo11n_web_model/ imgsz, half, int8, nms, batch, device
PaddlePaddle paddle yolo11n_paddle_model/ imgsz, batch, device
MNN mnn yolo11n.mnn imgsz, batch, int8, half, device
NCNN ncnn yolo11n_ncnn_model/ imgsz, half, batch, device
IMX500 imx yolo11n_imx_model/ imgsz, int8, data, fraction, device
RKNN rknn yolo11n_rknn_model/ imgsz, batch, name, device

SSS

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

Bir YOLO11 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("yolo11n.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=yolo11n.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 YOLO11 modelleri, 5 kata kadar GPU hızlanması elde edebilir, bu da onu gerçek zamanlı çıkarım uygulamaları için ideal hale getirir.

  • Ç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.

YOLO11 modelimi dışa aktarırken INT8 nicelemesini 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("yolo11n.pt")  # Load a model
model.export(format="engine", int8=True)
yolo export model=yolo11n.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("yolo11n.pt")
model.export(format="onnx", dynamic=True)
yolo export model=yolo11n.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.



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

Yorumlar