Esportazione del modello con Ultralytics YOLO
Introduzione
L'obiettivo finale dell'addestramento di un modello è quello di utilizzarlo per applicazioni reali. La modalità di esportazione di Ultralytics YOLO11 offre una gamma versatile di opzioni per esportare il modello addestrato in diversi formati, rendendolo distribuibile su varie piattaforme e dispositivi. Questa guida completa si propone di guidarvi attraverso le sfumature dell'esportazione del modello, mostrandovi come ottenere la massima compatibilità e le migliori prestazioni.
Guarda: Come esportare un modello addestrato personalizzato Ultralytics YOLO ed eseguire l'inferenza in diretta sulla webcam.
Perché scegliere la modalità di esportazione di YOLO11?
- Versatilità: Esportazione in più formati, tra cui ONNX, TensorRT, CoreML e altri ancora.
- Prestazioni: Guadagna fino a 5 volte la velocità di GPU con TensorRT e 3 volte la velocità di CPU con ONNX o OpenVINO.
- Compatibilità: Rendete il vostro modello universalmente distribuibile in numerosi ambienti hardware e software.
- Facilità d'uso: semplici API CLI e Python per un'esportazione rapida e semplice dei modelli.
Caratteristiche principali della modalità di esportazione
Ecco alcune delle funzionalità più importanti:
- Esportazione con un solo clic: Semplici comandi per l'esportazione 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 ed esercitazioni approfondite per un'esperienza di esportazione senza problemi.
Suggerimento
Esempi di utilizzo
Esporta un modello YOLO11n in un formato diverso, come ONNX o TensorRT. Per un elenco completo degli argomenti di esportazione, consultare la sezione Argomenti.
Esempio
Argomenti
Questa tabella illustra le configurazioni e le opzioni disponibili per l'esportazione dei modelli YOLO in diversi formati. Queste impostazioni sono fondamentali per ottimizzare le prestazioni, le dimensioni e la compatibilità del modello esportato su varie piattaforme e ambienti. Una configurazione adeguata garantisce che il modello sia pronto per essere distribuito nell'applicazione prevista con un'efficienza ottimale.
Argomento | Tipo | Predefinito | Descrizione |
---|---|---|---|
format |
str |
'torchscript' |
Formato di destinazione per il modello esportato, ad esempio 'onnx' , 'torchscript' , 'tensorflow' o altri, che definiscono la compatibilità con vari ambienti di distribuzione. |
imgsz |
int o tuple |
640 |
Dimensione desiderata dell'immagine 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 (a 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 |
Consente di inserire dimensioni dinamiche per le esportazioni di ONNX, TensorRT e OpenVINO , migliorando la flessibilità nella gestione di immagini di dimensioni diverse. |
simplify |
bool |
True |
Semplifica il grafico del modello per le esportazioni di ONNX con onnxslim potenzialmente in grado di migliorare 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 o None |
None |
Imposta la dimensione massima dell'area di lavoro in GiB per le ottimizzazioni di TensorRT , bilanciando l'uso della memoria e le prestazioni; usare None per l'assegnazione automatica da parte di TensorRT fino al massimo del dispositivo. |
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 dell'inferenza batch del modello di esportazione o il numero massimo di immagini che il modello esportato elaborerà contemporaneamente in predict modalità. |
device |
str |
None |
Specifica il dispositivo da esportare: GPU (device=0 ), CPU (device=cpu ), MPS per il silicio Apple (device=mps ) o DLA per NVIDIA Jetson (device=dla:0 o device=dla:1 ). |
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 scelta 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 in YOLO11 sono riportati nella tabella seguente. È possibile esportare in qualsiasi formato utilizzando l'opzione format
cioè l'argomento format='onnx'
o format='engine'
. È possibile prevedere o convalidare direttamente i modelli esportati, ad es. yolo predict model=yolo11n.onnx
. Al termine dell'esportazione vengono mostrati esempi di utilizzo del modello.
Formato | format Argomento |
Modello | Metadati | Argomenti |
---|---|---|---|---|
PyTorch | - | yolo11n.pt |
✅ | - |
TorchScript | torchscript |
yolo11n.torchscript |
✅ | imgsz , optimize , batch |
ONNX | onnx |
yolo11n.onnx |
✅ | imgsz , half , dynamic , simplify , opset , batch |
OpenVINO | openvino |
yolo11n_openvino_model/ |
✅ | imgsz , half , int8 , batch |
TensorRT | engine |
yolo11n.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , batch |
CoreML | coreml |
yolo11n.mlpackage |
✅ | imgsz , half , int8 , nms , batch |
TF SavedModel | saved_model |
yolo11n_saved_model/ |
✅ | imgsz , keras , int8 , batch |
TF GraphDef | pb |
yolo11n.pb |
❌ | imgsz , batch |
TF Lite | tflite |
yolo11n.tflite |
✅ | imgsz , half , int8 , batch |
TF Bordo TPU | edgetpu |
yolo11n_edgetpu.tflite |
✅ | imgsz |
TF.js | tfjs |
yolo11n_web_model/ |
✅ | imgsz , half , int8 , batch |
PaddlePaddle | paddle |
yolo11n_paddle_model/ |
✅ | imgsz , batch |
MNN | mnn |
yolo11n.mnn |
✅ | imgsz , batch , int8 , half |
NCNN | ncnn |
yolo11n_ncnn_model/ |
✅ | imgsz , half , batch |
IMX500 | imx |
yolov8n_imx_model/ |
✅ | imgsz , int8 |
FAQ
Come si esporta un modello YOLO11 in formato ONNX ?
L'esportazione di un modello YOLO11 in formato ONNX è semplice con Ultralytics. Esso fornisce sia i metodi Python che CLI per l'esportazione dei modelli.
Esempio
Per ulteriori dettagli sul processo, comprese le opzioni avanzate come la gestione di input di dimensioni diverse, consultare la sezioneONNX .
Quali sono i vantaggi dell'utilizzo di TensorRT per l'esportazione dei modelli?
L'uso di TensorRT per l'esportazione dei modelli offre miglioramenti significativi delle prestazioni. I modelli di YOLO11 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à: Ottimizzare i modelli per una specifica configurazione hardware.
- Velocità: Ottenere 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, consultare la guida all'integrazione diTensorRT .
Come si abilita la quantizzazione INT8 quando si esporta il modello YOLO11 ?
La quantizzazione INT8 è un modo eccellente per comprimere il modello e accelerare 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 consente al modello esportato di gestire dimensioni diverse 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 di input dinamiche garantisce che il modello possa adattarsi senza problemi alle diverse forme di input.
Per abilitare questa funzione, utilizzare il comando dynamic=True
durante l'esportazione:
Esempio
Per un ulteriore contesto, consultare la configurazione delle dimensioni di ingresso dinamiche.
Quali sono i principali argomenti di esportazione da considerare per ottimizzare le prestazioni del modello?
La comprensione e la configurazione degli argomenti di esportazione sono fondamentali 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, visitare la sezione Argomenti di esportazione.