Ultralytics YOLO ile Model Dışa Aktarma
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
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.