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.

Chiave Valore predefinito Descrizione
format 'torchscript' Specifica il formato di esportazione. I valori supportati sono 'torchscript', 'onnx', 'coreml', 'engine' (TensorRT), 'saved_model' (TensorFlow SavedModel ), ecc.
imgsz 640 Definisce le dimensioni dell'immagine da esportare. Accetta un numero intero per le immagini quadrate o una tupla (height, width) per le immagini non quadrate.
keras False Quando si esporta in TensorFlow SavedModel , impostare questo valore su True utilizza Keras per il processo di esportazione.
optimize False Si applica alle esportazioni di TorchScript , consentendo l'ottimizzazione per le distribuzioni mobili.
half False Abilita la quantizzazione a mezza precisione (FP16) per il modello esportato, riducendo le dimensioni e potenzialmente aumentando la velocità di inferenza su hardware compatibile.
int8 False Attiva la quantizzazione INT8, riducendo ulteriormente le dimensioni del modello e aumentando la velocità di inferenza al costo della precisione. Utile per i dispositivi edge.
dynamic False Per i formati ONNX e TensorRT , abilita gli assi dinamici, consentendo dimensioni di input variabili per l'inferenza.
simplify False Semplifica la struttura del modello per i formati ONNX e TensorRT , migliorando potenzialmente l'efficienza e la compatibilità.
opset None Specifica la versione dell'opset ONNX da esportare. Se non è impostata, utilizza l'ultima versione supportata. Utile per garantire la compatibilità con i vecchi parser di ONNX .
workspace 4 Definisce la dimensione massima dello spazio di lavoro in GB per le esportazioni di TensorRT , influenzando il processo di ottimizzazione e l'utilizzo della memoria.
nms False Quando si esporta in CoreML, aggiunge al modello un livello Non-Maximum Suppression (NMS), utile per filtrare i rilevamenti che si sovrappongono.

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'.

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


Creato 2023-11-12, Aggiornato 2024-02-17
Autori: glenn-jocher (9)

Commenti