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