Vai al contenuto

Esportazione del modello con Ultralytics YOLO

Ultralytics YOLO ecosistema e integrazioni

Introduzione

L'obiettivo finale della formazione di un modello è quello di utilizzarlo per applicazioni reali. La modalità di esportazione di Ultralytics YOLOv8 offre una gamma versatile di opzioni per esportare il modello addestrato in diversi formati, rendendolo utilizzabile su varie piattaforme e dispositivi. Questa guida completa si propone di guidarti attraverso le sfumature dell'esportazione dei modelli, mostrandoti come ottenere la massima compatibilità e le migliori prestazioni.



Guarda: Come esportare un modello addestrato personalizzato Ultralytics YOLOv8 ed eseguire l'inferenza in diretta sulla webcam.

Perché scegliere la modalità di esportazione di YOLOv8?

  • Versatilità: Esporta in diversi formati, tra cui ONNX, TensorRT, CoreML e altri ancora.
  • Prestazioni: Ottieni un aumento della velocità della GPU fino a 5 volte con TensorRT e un aumento della velocità della CPU fino a 3 volte con ONNX o OpenVINO.
  • Compatibilità: Rendi il tuo modello universalmente distribuibile in numerosi ambienti hardware e software.
  • Facilità d'uso: semplici API CLI e Python per esportare i modelli in modo rapido e semplice.

Caratteristiche principali della modalità di esportazione

Ecco alcune delle funzionalità più importanti:

  • Esportazione con un solo clic: Semplici comandi per esportare in diversi formati.
  • Esportazione in batch: Esportazione di modelli in grado di fare interferenza in batch.
  • Inferenza ottimizzata: I modelli esportati sono ottimizzati per velocizzare i tempi di inferenza.
  • Video tutorial: Guide e tutorial approfonditi per un'esperienza di esportazione senza problemi.

Suggerimento

  • Esportazione in ONNX o OpenVINO per una velocizzazione della CPU fino a 3 volte.
  • Esportazione in TensorRT per una velocizzazione della GPU fino a 5 volte.

Esempi di utilizzo

Esporta un modello YOLOv8n in un formato diverso come ONNX o TensorRT. Vedi la sezione Argomenti qui sotto per un elenco completo degli argomenti di esportazione.

Esempio

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.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=yolov8n.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

Argomenti

Questa tabella illustra le configurazioni e le opzioni disponibili per esportare i modelli di YOLO in diversi formati. Queste impostazioni sono fondamentali per ottimizzare le prestazioni, le dimensioni e la compatibilità del modello esportato su diverse piattaforme e ambienti. Una configurazione adeguata garantisce che il modello sia pronto per essere utilizzato nell'applicazione prevista con un'efficienza ottimale.

Argomento Tipo Predefinito Descrizione
format str 'torchscript' Formato di destinazione del modello esportato, ad esempio 'onnx', 'torchscript', 'tensorflow', o altri, che definiscono la compatibilità con vari ambienti di distribuzione.
imgsz int o tuple 640 Dimensione dell'immagine desiderata per l'input del modello. Può essere un numero intero per le immagini quadrate o una tupla (height, width) per le dimensioni specifiche.
keras bool False Consente l'esportazione in formato Keras per TensorFlow SavedModel , garantendo la compatibilità con i servizi e le API di TensorFlow .
optimize bool False Applica l'ottimizzazione per i dispositivi mobili durante l'esportazione in TorchScript, riducendo potenzialmente le dimensioni del modello e migliorando le prestazioni.
half bool False Abilita la quantizzazione FP16 (mezza precisione), riducendo le dimensioni del modello e potenzialmente accelerando l'inferenza sull'hardware supportato.
int8 bool False Attiva la quantizzazione INT8, comprimendo ulteriormente il modello e velocizzando l'inferenza con una perdita minima di precisione, soprattutto per i dispositivi edge.
dynamic bool False Permette di inserire dimensioni dinamiche per le esportazioni di ONNX e TensorRT , migliorando la flessibilità nella gestione di immagini di dimensioni diverse.
simplify bool False Semplifica il grafico del modello per le esportazioni di ONNX , migliorando potenzialmente le prestazioni e la compatibilità.
opset int None Specifica la versione dell'opset di ONNX per la compatibilità con i diversi parser e runtime di ONNX . Se non è impostata, utilizza l'ultima versione supportata.
workspace float 4.0 Imposta la dimensione massima dello spazio di lavoro in GiB per le ottimizzazioni di TensorRT , bilanciando l'uso della memoria e le prestazioni.
nms bool False Aggiunge la Soppressione Non Massima (NMS) all'esportazione di CoreML , essenziale per una post-elaborazione accurata ed efficiente del rilevamento.
batch int 1 Specifica la dimensione del batch di inferenza del modello esportato o il numero massimo di immagini che il modello esportato elaborerà contemporaneamente in predict modalità.

La regolazione di questi parametri consente di personalizzare il processo di esportazione per adattarlo a requisiti specifici, come l'ambiente di distribuzione, i vincoli hardware e gli obiettivi di prestazione. La selezione del formato e delle impostazioni appropriate è essenziale per ottenere il miglior equilibrio tra dimensioni del modello, velocità e precisione.

Formati di esportazione

I formati di esportazione disponibili su YOLOv8 sono riportati nella tabella seguente. Puoi esportare in qualsiasi formato utilizzando l'opzione format argomento, vale a dire format='onnx' o format='engine'. Puoi prevedere o convalidare direttamente i modelli esportati, ad es. yolo predict model=yolov8n.onnx. Al termine dell'esportazione vengono mostrati degli esempi di utilizzo per il tuo modello.

Formato format Argomento Modello Metadati Argomenti
PyTorch - yolov8n.pt -
TorchScript torchscript yolov8n.torchscript imgsz, optimize, batch
ONNX onnx yolov8n.onnx imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolov8n_openvino_model/ imgsz, half, int8, batch
TensorRT engine yolov8n.engine imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolov8n.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolov8n_saved_model/ imgsz, keras, int8, batch
TF GraphDef pb yolov8n.pb imgsz, batch
TF Lite tflite yolov8n.tflite imgsz, half, int8, batch
TF Bordo TPU edgetpu yolov8n_edgetpu.tflite imgsz, batch
TF.js tfjs yolov8n_web_model/ imgsz, half, int8, batch
PaddlePaddle paddle yolov8n_paddle_model/ imgsz, batch
NCNN ncnn yolov8n_ncnn_model/ imgsz, half, batch


Creato 2023-11-12, Aggiornato 2024-05-08
Autori: Burhan-Q (3), glenn-jocher (11)

Commenti