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, CoreMLe altro ancora.
- Prestazioni: Ottieni una velocità della GPU fino a 5 volte con TensorRT e 3 volte con ONNX o CPU . 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' , 'engine' TensorRT) o altri. Ogni formato consente la compatibilità con diversi 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 (ad esempio, 640 per 640×640) 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 quando si esporta in TorchScript, riducendo potenzialmente le dimensioni del modello e migliorando le prestazioni dell'inferenza. Non è compatibile con il formato NCNN o con i dispositivi CUDA . |
half |
bool |
False |
Abilita la quantizzazione FP16 (mezza precisione), riducendo le dimensioni del modello e potenzialmente accelerando l'inferenza sull'hardware supportato. Non è compatibile con la quantizzazione INT8 o con le esportazioni CPU per ONNX. |
int8 |
bool |
False |
Attiva la quantizzazione INT8, comprimendo ulteriormente il modello e accelerando l'inferenza con una perdita minima di precisione, soprattutto per i dispositivi edge. Se usato con TensorRT, esegue la quantizzazione post-training (PTQ). |
dynamic |
bool |
False |
Consente dimensioni di input dinamiche per le esportazioni ONNX, TensorRT e OpenVINO , migliorando la flessibilità nella gestione di immagini di dimensioni diverse. Imposta automaticamente su True quando si usa TensorRT con INT8. |
simplify |
bool |
True |
Semplifica il grafico del modello per le esportazioni di ONNX con onnxslim potenzialmente migliorando le prestazioni e la compatibilità con i motori di inferenza. |
opset |
int |
None |
Specifica la versione dell'opset ONNX per la compatibilità con i vari ONNX e runtime diversi. Se non è impostata, utilizza l'ultima versione supportata. |
workspace |
float o None |
None |
Imposta la dimensione massima dell'area di lavoro in GiB per i file TensorRT ottimizzazioni, bilanciando l'uso della memoria e le prestazioni. Utilizzo None per l'assegnazione automatica da parte di TensorRT fino al massimo del dispositivo. |
nms |
bool |
False |
Aggiunge la soppressione non massima (NMS) al modello esportato, se supportata (vedere Formati di esportazione), migliorando l'efficienza della post-elaborazione del rilevamento. Non disponibile per i modelli end2end. |
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à. Per le esportazioni di Edge TPU , questo valore è automaticamente impostato su 1. |
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 ). Le esportazioni di TensorRT utilizzano automaticamente la GPU. |
data |
str |
'coco8.yaml' |
Percorso verso il set di dati file di configurazione (predefinito: coco8.yaml ), essenziale per la calibrazione della quantizzazione INT8. Se non viene specificato con INT8 abilitato, verrà assegnato un set di dati predefinito. |
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 , nms , batch |
ONNX | onnx |
yolo11n.onnx |
✅ | imgsz , half , dynamic , simplify , opset , nms , batch |
OpenVINO | openvino |
yolo11n_openvino_model/ |
✅ | imgsz , half , dynamic , int8 , nms , batch , data |
TensorRT | engine |
yolo11n.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , nms , batch , data |
CoreML | coreml |
yolo11n.mlpackage |
✅ | imgsz , half , int8 , nms , batch |
TF SavedModel | saved_model |
yolo11n_saved_model/ |
✅ | imgsz , keras , int8 , nms , batch |
TF GraphDef | pb |
yolo11n.pb |
❌ | imgsz , batch |
TF Lite | tflite |
yolo11n.tflite |
✅ | imgsz , half , int8 , nms , batch , data |
TF Bordo TPU | edgetpu |
yolo11n_edgetpu.tflite |
✅ | imgsz |
TF.js | tfjs |
yolo11n_web_model/ |
✅ | imgsz , half , int8 , nms , 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 , data |
RKNN | rknn |
yolo11n_rknn_model/ |
✅ | imgsz , batch , name |
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 maggiori dettagli sul processo, comprese le opzioni avanzate come la gestione di input di dimensioni diverse, consultare la guida all'integrazione diONNX .
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 ad esempio TensorRT, OpenVINO, e CoreML. Per ottenere risultati ottimali di quantizzazione, fornire un'immagine rappresentativa set di dati utilizzando il data
parametro.
Perché la dimensione dell'input dinamico è importante quando si esportano i modelli?
La dimensione dinamica dell'input consente al modello esportato di gestire immagini di dimensioni diverse, garantendo flessibilità e ottimizzando l'efficienza dell'elaborazione per diversi casi d'uso. Quando si esporta in formati come ONNX o TensorRTl'abilitazione della dimensione di input dinamica garantisce che il modello possa adattarsi senza problemi a forme di input diverse.
Per abilitare questa funzione, utilizzare il comando dynamic=True
durante l'esportazione:
Esempio
Il dimensionamento dinamico dell'ingresso è particolarmente utile per le applicazioni in cui le dimensioni dell'ingresso possono variare, come l'elaborazione video o la gestione di immagini provenienti da fonti diverse.
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, estremamente utile per bordo AI distribuzioni.
Per l'implementazione su piattaforme hardware specifiche, si consiglia di utilizzare formati di esportazione specializzati, come ad esempio TensorRT per le GPU NVIDIA , CoreML per i dispositivi Apple o Edge TPU per i dispositivi Google Coral.