Esportazione del modello con Ultralytics YOLO
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
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
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 |