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 una velocità fino a 5x GPU con TensorRT e 3x CPU 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 velocità fino a 3 volte superiore a CPU .
  • Esportazione in TensorRT per una velocità fino a 5 volte superiore a GPU .

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 ONNX Esportazioni con onnxslim, 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 le dimensioni dell'inferenza batch del modello di esportazione o il numero massimo di immagini che il modello esportato elaborerà contemporaneamente 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
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

DOMANDE FREQUENTI

Come faccio a esportare un modello YOLOv8 in formato ONNX ?

L'esportazione di un modello YOLOv8 in formato ONNX è semplice con Ultralytics, che fornisce i metodi Python e CLI per l'esportazione dei modelli.

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

Per maggiori dettagli sul processo, comprese le opzioni avanzate come la gestione di input di dimensioni diverse, consulta la sezione ONNX sezione.

Quali sono i vantaggi dell'utilizzo di TensorRT per l'esportazione dei modelli?

L'utilizzo di TensorRT per l'esportazione dei modelli offre miglioramenti significativi delle prestazioni. I modelli di YOLOv8 esportati in TensorRT possono ottenere una velocità fino a 5 volte superiore a GPU , rendendolo ideale per le applicazioni di inferenza in tempo reale.

  • Versatilità: Ottimizza i modelli per una specifica configurazione hardware.
  • Velocità: Ottieni un'inferenza più veloce grazie a ottimizzazioni avanzate.
  • Compatibilità: Si integra perfettamente con l'hardware di NVIDIA .

Per saperne di più sull'integrazione di TensorRT, consulta la guida all'integrazione. TensorRT guida all'integrazione.

Come posso abilitare la quantizzazione INT8 quando esporto il mio modello YOLOv8 ?

La quantizzazione INT8 è un modo eccellente per comprimere il modello e velocizzare l'inferenza, soprattutto sui dispositivi edge. Ecco come abilitare la quantizzazione INT8:

Esempio

from ultralytics import YOLO

model = YOLO("yolov8n.pt")  # Load a model
model.export(format="onnx", int8=True)
yolo export model=yolov8n.pt format=onnx int8=True   # export model with INT8 quantization

La quantizzazione INT8 può essere applicata a vari formati, come TensorRT e CoreML. Maggiori dettagli sono disponibili nella sezione Esportazione.

Perché la dimensione dell'input dinamico è importante quando si esportano i modelli?

La dimensione dinamica dell'input permette al modello esportato di gestire le diverse dimensioni dell'immagine, garantendo flessibilità e ottimizzando l'efficienza dell'elaborazione per diversi casi d'uso. Quando si esporta in formati come ONNX o TensorRT, l'abilitazione delle dimensioni dinamiche di input garantisce che il modello possa adattarsi alle diverse forme di input senza problemi.

Per abilitare questa funzione, usa il comando dynamic=True durante l'esportazione:

Esempio

from ultralytics import YOLO

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

Per un ulteriore contesto, fai riferimento alla configurazione delle dimensioni dell'ingresso dinamico.

Quali sono i principali argomenti di esportazione da considerare per ottimizzare le prestazioni del modello?

La comprensione e la configurazione degli argomenti di esportazione è fondamentale per ottimizzare le prestazioni del modello:

  • format: Il formato di destinazione del modello esportato (ad es, onnx, torchscript, tensorflow).
  • imgsz: Dimensione dell'immagine desiderata per l'input del modello (ad es, 640 o (height, width)).
  • half: Abilita la quantizzazione FP16, riducendo le dimensioni del modello e potenzialmente accelerando l'inferenza.
  • optimize: Applica ottimizzazioni specifiche per ambienti mobili o vincolati.
  • int8: Abilita la quantizzazione INT8, molto utile per le implementazioni edge.

Per un elenco dettagliato e una spiegazione di tutti gli argomenti di esportazione, visita la sezione Argomenti di esportazione.



Creato 2023-11-12, Aggiornato 2024-07-04
Autori: glenn-jocher (17), Burhan-Q (4), Kayzwer (2)

Commenti