Vai al contenuto

Esportazione del modello con Ultralytics YOLO

Ultralytics YOLO ecosistema e integrazioni

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

  • 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 YOLO11n in un formato diverso, come ONNX o TensorRT. Per un elenco completo degli argomenti di esportazione, consultare la sezione Argomenti.

Esempio

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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=yolo11n.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 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 onnxslimpotenzialmente 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 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 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

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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=yolo11n.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

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

from ultralytics import YOLO

model = YOLO("yolo11n.pt")  # Load a model
model.export(format="engine", int8=True)
yolo export model=yolo11n.pt format=engine int8=True   # export TensorRT 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 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

from ultralytics import YOLO

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

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.

📅C reato 1 anno fa ✏️ Aggiornato 27 giorni fa

Commenti