Meet YOLO26: next-gen vision AI.

Link to this sectionUltralytics YOLO ile Model Dışa Aktarımı#

Ultralytics YOLO ecosystem and integrations

Link to this sectionGiriş#

Bir modeli eğitmenin nihai amacı, onu gerçek dünya uygulamalarında kullanıma sunmaktır. Ultralytics YOLO26'daki dışa aktarma modu (Export mode), eğitilmiş modelini farklı formatlara dönüştürmen için çok yönlü seçenekler sunar; böylece modelini çeşitli platformlarda ve cihazlarda çalıştırabilirsin. Bu kapsamlı kılavuz, model dışa aktarmanın inceliklerini sana anlatmayı ve maksimum uyumluluk ile performansa nasıl ulaşacağını göstermeyi amaçlamaktadır.



Watch: How to Export Ultralytics YOLO26 in different formats for Deployment | ONNX, TensorRT, CoreML 🚀

Link to this sectionNeden YOLO26'nın Dışa Aktarma Modunu Seçmelisin?#

  • Çok Yönlülük: ONNX, TensorRT, CoreML ve daha fazlası dahil olmak üzere birçok formata dışa aktarım yapabilirsin.
  • Performans: TensorRT ile 5 kata kadar GPU hızlandırması ve ONNX veya OpenVINO ile 3 kata kadar CPU hızlandırması elde edebilirsin.
  • Uyumluluk: Modelini sayısız donanım ve yazılım ortamında evrensel olarak kullanılabilir hale getirebilirsin.
  • Kullanım Kolaylığı: Hızlı ve doğrudan model dışa aktarımı için basit CLI ve Python API'si mevcuttur.

Link to this sectionDışa Aktarma Modunun Temel Özellikleri#

İşte öne çıkan bazı işlevler:

  • Tek Tıkla Dışa Aktarım: Farklı formatlara dışa aktarmak için basit komutlar kullanabilirsin.
  • Toplu Dışa Aktarım: Toplu çıkarım (batch-inference) yapabilen modelleri dışa aktarabilirsin.
  • Optimize Edilmiş Çıkarım: Dışa aktarılan modeller, daha hızlı çıkarım süreleri için optimize edilir.
  • Eğitim Videoları: Sorunsuz bir dışa aktarma deneyimi için derinlemesine kılavuzlar ve eğitimler mevcuttur.
İpucu
  • 3 kata kadar CPU hızlandırması için ONNX veya OpenVINO formatına dışa aktarabilirsin.
  • 5 kata kadar GPU hızlandırması için TensorRT formatına dışa aktarabilirsin.

Link to this sectionKullanım Örnekleri#

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

Ö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")

Link to this sectionArgümanlar#

Bu tablo, YOLO modellerini farklı formatlara dışa aktarmak için mevcut olan yapılandırmaları ve seçenekleri detaylandırır. Bu ayarlar, dışa aktarılan modelin performansını, boyutunu ve çeşitli platformlardaki uyumluluğunu optimize etmek için kritiktir. Doğru yapılandırma, modelin amaçlanan uygulamada en iyi verimlilikle dağıtıma hazır olmasını sağlar.

ArgümanTipVarsayılanAçıklama
formatstr'torchscript'Dışa aktarılan model için hedef format; 'onnx', 'torchscript', 'engine' (TensorRT) veya diğerleri olabilir. Her format, farklı dağıtım ortamları ile uyumluluk sağlar.
imgszint veya tuple640Desired image size for the model input. Can be an integer for square images (e.g., 640 for 640×640) or a tuple (height, width) for specific dimensions.
kerasboolFalseTensorFlow SavedModel için Keras formatına dışa aktarımı etkinleştirir; bu da TensorFlow sunumu ve API'leri ile uyumluluk sağlar.
optimizeboolFalseTorchScript formatına dışa aktarırken mobil cihazlar için optimizasyonu uygular, bu da model boyutunu azaltabilir ve çıkarım performansını artırabilir. NCNN formatı veya CUDA cihazları ile uyumlu değildir. DEEPX için, çıkarım gecikmesini azaltan ve derleme süresini artıran daha yüksek bir derleyici optimizasyonunu etkinleştirir.
halfboolFalseFP16 (yarı hassasiyetli) nicemlemeyi etkinleştirir; bu da model boyutunu küçültür ve desteklenen donanımlarda çıkarımı hızlandırabilir. INT8 nicemleme veya sadece CPU dışa aktarımlarıyla uyumlu değildir. Yalnızca belirli formatlar için kullanılabilir (örn. ONNX, aşağıya bak).
int8boolFalseINT8 nicemlemeyi etkinleştirir; bu da modeli daha fazla sıkıştırır ve doğruluk kaybını minimumda tutarak çıkarımı hızlandırır, özellikle uç cihazlar için uygundur. TensorRT ile kullanıldığında, eğitim sonrası nicemleme (PTQ) gerçekleştirir.
dynamicboolFalseTorchScript, ONNX, OpenVINO, TensorRT ve CoreML dışa aktarımları için dinamik girdi boyutlarına izin vererek değişen görüntü boyutlarını işleme esnekliğini artırır.
simplifyboolTrueONNX dışa aktarımları için model grafiğini onnxslim ile basitleştirir, bu da performansı ve çıkarım motorlarıyla uyumluluğu artırabilir.
opsetintNoneFarklı ONNX ayrıştırıcıları ve çalışma zamanları ile uyumluluk için ONNX opset sürümünü belirtir. Ayarlanmazsa, desteklenen en son sürümü kullanır.
workspacefloat veya NoneNoneTensorRT optimizasyonları için GiB cinsinden maksimum çalışma alanı boyutunu ayarlar, bellek kullanımı ve performans arasında denge kurar. TensorRT tarafından cihaz maksimumuna kadar otomatik tahsis için None değerini kullanabilirsin.
nmsboolFalseDesteklendiğinde (bkz. Dışa Aktarma Formatları), dışa aktarılan modele Non-Maximum Suppression (NMS) ekleyerek tespit sonrası işleme verimliliğini artırır. Uçtan uca (end2end) modeller için kullanılamaz.
batchint1Dışa aktarılan modelin toplu çıkarım boyutunu veya dışa aktarılan modelin predict modunda eş zamanlı olarak işleyeceği maksimum görüntü sayısını belirtir. Edge TPU dışa aktarımları için bu otomatik olarak 1'e ayarlanır.
devicestrNoneDışa aktarma için cihazı belirtir: GPU (device=0), CPU (device=cpu), Apple silikon için MPS (device=mps), Huawei Ascend NPU (device=npu veya device=npu:0) veya NVIDIA Jetson için DLA (device=dla:0 veya device=dla:1). TensorRT dışa aktarımları otomatik olarak GPU kullanır.
datastr'coco8.yaml'INT8 nicemleme kalibrasyonu için gerekli olan veri kümesi yapılandırma dosyasının yolu. INT8 etkinleştirildiğinde belirtilmezse, kalibrasyon için yedek olarak coco8.yaml kullanılır.
fractionfloat1.0INT8 nicemleme kalibrasyonu için kullanılacak veri kümesi oranını belirtir. Tam veri kümesinin bir alt kümesinde kalibrasyon yapmana olanak tanır, bu da deneyler için veya kaynaklar sınırlı olduğunda kullanışlıdır. INT8 etkinleştirildiğinde belirtilmezse, tüm veri kümesi kullanılır.
end2endboolNoneNMS içermeyen çıkarımı (YOLO26, YOLOv10) destekleyen YOLO modellerinde uçtan uca modu geçersiz kılar. Bunu False olarak ayarlarsan, bu modelleri geleneksel NMS tabanlı işleme sonrası hattı ile uyumlu olacak şekilde dışa aktarabilirsin. Ayrıntılar için Uçtan Uca Tespit kılavuzuna bakabilirsin.

Adjusting these parameters allows for customization of the export process to fit specific requirements, such as deployment environment, hardware constraints, and performance targets. Selecting the appropriate format and settings is essential for achieving the best balance between model size, speed, and accuracy.

Link to this sectionDışa Aktarma Formatları#

Mevcut YOLO26 dışa aktarma formatları aşağıdaki tablodadır. format argümanını kullanarak, örneğin format='onnx' veya format='engine' şeklinde herhangi bir formata dışa aktarabilirsin. Dışa aktarılan modeller üzerinde doğrudan tahmin veya doğrulama yapabilirsin, örneğin yolo predict model=yolo26n.onnx. Kullanım örnekleri, dışa aktarma tamamlandıktan sonra modelin için gösterilir. Modeller ayrıca herhangi bir yerel kurulum gerektirmeden Ultralytics Platformu üzerinden doğrudan tarayıcıdan da dışa aktarılabilir.

Formatformat ArgümanıModelMeta verilerArgümanlar
PyTorch-yolo26n.pt-
TorchScripttorchscriptyolo26n.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n.onnximgsz, half, int8, dynamic, simplify, opset, nms, batch, data, fraction, 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, data, fraction, device
TF GraphDefpbyolo26n.pbimgsz, batch, device
TF Litetfliteyolo26n.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n_web_model/imgsz, half, int8, nms, batch, data, fraction, 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, nms, device
RKNNrknnyolo26n_rknn_model/imgsz, batch, name, int8, data, fraction, device
ExecuTorchexecutorchyolo26n_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n_axelera_model/imgsz, batch, int8, data, fraction, device
DEEPXdeepxyolo26n_deepx_model/imgsz, int8, data, optimize, device
Qualcomm QNNqnnyolo26n_qnn_model/imgsz, batch, name, int8, data, fraction, device

Link to this sectionSSS#

Link to this sectionBir YOLO26 modelini ONNX formatına nasıl dışa aktarırım?#

Bir YOLO26 modelini ONNX formatına dışa aktarmak, Ultralytics ile oldukça kolaydır. 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")

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

Link to this sectionModel 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 dışa aktarılan YOLO26 modelleri, 5 kata kadar GPU hızlandırmasına ulaşabilir ve bu da onları 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 edebilirsin.
  • Hız: Gelişmiş optimizasyonlar sayesinde daha hızlı çıkarım elde edebilirsin.
  • Uyumluluk: NVIDIA donanımı ile sorunsuz bir şekilde entegre edebilirsin.

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

Link to this sectionYOLO26 modelimi dışa aktarırken INT8 nicemlemeyi nasıl etkinleştiririm?#

INT8 nicemleme, modeli sıkıştırmak ve çıkarımı hızlandırmak için, özellikle uç cihazlarda, harika bir yoldur. İşte INT8 nicemlemeyi nasıl etkinleştirebileceğin:

Örnek
from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # Load a model
model.export(format="onnx", int8=True, data="coco8.yaml")

INT8 quantization can be applied to various formats, such as ONNX, TensorRT, OpenVINO, CoreML, and Rockchip RKNN. For optimal quantization results, provide a representative dataset using the data parameter.

Link to this sectionModel dışa aktarırken dinamik girdi boyutu neden önemlidir?#

Dinamik girdi boyutu, dışa aktarılan modelin değişen görüntü boyutlarını işlemesine olanak tanır; bu da esneklik sağlar ve farklı kullanım durumları için işlem verimliliğini optimize eder. ONNX veya TensorRT gibi formatlara dışa aktarırken, dinamik girdi boyutunu etkinleştirmek, modelin farklı girdi şekillerine sorunsuz bir şekilde uyum sağlamasını garantiler.

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

Örnek
from ultralytics import YOLO

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

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

Link to this sectionModel 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 format (örn. onnx, torchscript, tensorflow).
  • imgsz: Desired image size for the model input (e.g., 640 or (height, width)).
  • half: FP16 nicemlemeyi etkinleştirir, bu da model boyutunu küçültür ve çıkarımı hızlandırabilir.
  • optimize: Mobil veya kısıtlı ortamlar için özel optimizasyonlar uygular.
  • int8: Enables INT8 quantization, highly beneficial for edge AI deployments.

Belirli donanım platformlarında dağıtım yapmak 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üşünebilirsin.

Link to this sectionDışa aktarılan YOLO modellerindeki çıktı tensörleri neyi temsil eder?#

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

Tespit modelleri (örn. yolo26n.pt) için çıktı, genellikle (batch_size, 4 + num_classes, num_predictions) şeklinde tek bir tensördür; burada kanallar kutu koordinatlarını ve sınıf başına puanları temsil eder ve num_predictions dışa aktarma girdi çözünürlüğüne bağlıdır (ve dinamik olabilir).

Segmentasyon modelleri (örn. yolo26n-seg.pt) için genellikle iki çıktı alırsın: ilki (batch_size, 4 + num_classes + mask_dim, num_predictions) şeklinde (kutular, sınıf puanları ve maske katsayıları) ve ikincisi (batch_size, mask_dim, proto_h, proto_w) şeklinde örnek maskeler oluşturmak için katsayılarla kullanılan maske prototiplerini içeren tensör. Boyutlar, dışa aktarma girdi çözünürlüğüne bağlıdır (ve dinamik olabilir).

Poz modelleri (örn. yolo26n-pose.pt) için çıktı tensörü genellikle (batch_size, 4 + num_classes + keypoint_dims, num_predictions) şeklindedir; burada keypoint_dims poz özelliklerine (örn. anahtar nokta sayısı ve güven skorunun dahil olup olmadığına) bağlıdır ve num_predictions dışa aktarma girdi çözünürlüğüne bağlıdır (ve dinamik olabilir).

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

Link to this sectionWhy is output0 FP32 when exporting with half=True and end2end=True?#

half=True (veya int8=True) ile dışa aktarırken, model boyutunu küçültmek ve performansı artırmak için çoğu tensör daha düşük hassasiyete dönüştürülür. Ancak, end2end=True etkinleştirildiğinde, işleme sonrası (sınıf dizinleri dahil) doğrudan dışa aktarılan grafiğe gömülür.

output0 tensörü, dahili olarak kayan noktalı değerler olarak temsil edilen sınıf dizinlerini içerir. FP16, sınırlı mantis hassasiyeti nedeniyle 2048'in üzerindeki tamsayı değerlerini güvenilir bir şekilde temsil edemez. Potansiyel hassasiyet kaybını veya yanlış sınıf kimliklerini önlemek için output0 kasıtlı olarak FP32'de tutulur.

Bu davranış beklenendir ve sınıf dizini sadakatinin korunması gereken düşük hassasiyetli veya nicelenmiş dışa aktarımlar için de geçerlidir.

Tam FP16 çıktıları gerekiyorsa, end2end=False ile dışa aktar ve işleme sonrasını harici olarak gerçekleştir.

Yorumlar