Esportazione del modello YOLO11 in TorchScript per un'implementazione rapida
Per distribuire modelli di computer vision in diversi ambienti, inclusi sistemi embedded, browser web o piattaforme con supporto Python limitato, è necessaria una soluzione flessibile e portabile. TorchScript si concentra sulla portabilità e sulla capacità di eseguire modelli in ambienti in cui l'intero framework Python non è disponibile. Questo lo rende ideale per scenari in cui è necessario distribuire le proprie capacità di computer vision su vari dispositivi o piattaforme.
Esporta in TorchScript per serializzare i tuoi modelli Ultralytics YOLO11 per la compatibilità multipiattaforma e una distribuzione semplificata. In questa guida, ti mostreremo come esportare i tuoi modelli YOLO11 nel formato TorchScript, rendendo più facile il loro utilizzo in una gamma più ampia di applicazioni.
Perché dovresti esportare in TorchScript?
Sviluppato dai creatori di PyTorch, TorchScript è un potente strumento per ottimizzare e distribuire modelli PyTorch su una varietà di piattaforme. L'esportazione di modelli YOLO11 in TorchScript è fondamentale per passare dalla ricerca alle applicazioni nel mondo reale. TorchScript, parte del framework PyTorch, aiuta a rendere questa transizione più agevole consentendo l'utilizzo di modelli PyTorch in ambienti che non supportano Python.
Il processo prevede due tecniche: tracing e scripting. Il tracing registra le operazioni durante l'esecuzione del modello, mentre lo scripting consente la definizione di modelli utilizzando un sottoinsieme di Python. Queste tecniche assicurano che modelli come YOLO11 possano comunque fare la loro magia anche al di fuori del loro solito ambiente Python.
I modelli TorchScript possono anche essere ottimizzati attraverso tecniche come la fusione di operatori e perfezionamenti nell'utilizzo della memoria, garantendo un'esecuzione efficiente. Un altro vantaggio dell'esportazione in TorchScript è il suo potenziale per accelerare l'esecuzione del modello su varie piattaforme hardware. Crea una rappresentazione standalone e pronta per la produzione del tuo modello PyTorch che può essere integrata in ambienti C++, sistemi embedded o distribuita in applicazioni web o mobile.
Caratteristiche principali dei modelli TorchScript
TorchScript, una parte fondamentale dell'ecosistema PyTorch, fornisce potenti funzionalità per l'ottimizzazione e la distribuzione di modelli di deep learning.
Ecco le caratteristiche principali che rendono TorchScript uno strumento prezioso per gli sviluppatori:
-
Esecuzione di grafi statici: TorchScript utilizza una rappresentazione a grafo statico del calcolo del modello, che è diversa dall'esecuzione a grafo dinamico di PyTorch. Nell'esecuzione a grafo statico, il grafo computazionale viene definito e compilato una volta prima dell'esecuzione effettiva, il che si traduce in prestazioni migliorate durante l'inferenza.
-
Serializzazione del modello: TorchScript consente di serializzare i modelli PyTorch in un formato indipendente dalla piattaforma. I modelli serializzati possono essere caricati senza richiedere il codice Python originale, consentendo la distribuzione in diversi ambienti di runtime.
-
Compilazione JIT: TorchScript utilizza la compilazione Just-In-Time (JIT) per convertire i modelli PyTorch in una rappresentazione intermedia ottimizzata. JIT compila il grafo computazionale del modello, consentendo un'esecuzione efficiente sui dispositivi di destinazione.
-
Integrazione cross-language: Con TorchScript, puoi esportare modelli PyTorch in altri linguaggi come C++, Java e JavaScript. Ciò semplifica l'integrazione dei modelli PyTorch in sistemi software esistenti scritti in linguaggi diversi.
-
Conversione graduale: TorchScript fornisce un approccio di conversione graduale, consentendo di convertire in modo incrementale parti del modello PyTorch in TorchScript. Questa flessibilità è particolarmente utile quando si ha a che fare con modelli complessi o quando si desidera ottimizzare porzioni specifiche del codice.
Opzioni di implementazione in TorchScript
Prima di esaminare il codice per l'esportazione di modelli YOLO11 nel formato TorchScript, cerchiamo di capire dove vengono normalmente utilizzati i modelli TorchScript.
TorchScript offre varie opzioni di distribuzione per i modelli di machine learning, come:
-
API C++: Il caso d'uso più comune per TorchScript è la sua API C++, che consente di caricare ed eseguire modelli TorchScript ottimizzati direttamente all'interno di applicazioni C++. Questo è l'ideale per ambienti di produzione in cui Python potrebbe non essere adatto o disponibile. L'API C++ offre un basso overhead e un'esecuzione efficiente dei modelli TorchScript, massimizzando il potenziale di prestazioni.
-
Distribuzione mobile: TorchScript offre strumenti per convertire i modelli in formati facilmente distribuibili su dispositivi mobili. PyTorch Mobile fornisce un runtime per l'esecuzione di questi modelli all'interno di app iOS e Android. Ciò consente funzionalità di inferenza offline a bassa latenza, migliorando l'esperienza utente e la privacy dei dati.
-
Distribuzione cloud: I modelli TorchScript possono essere distribuiti su server basati su cloud utilizzando soluzioni come TorchServe. Fornisce funzionalità come il versioning del modello, il batching e il monitoraggio delle metriche per una distribuzione scalabile in ambienti di produzione. La distribuzione cloud con TorchScript può rendere i tuoi modelli accessibili tramite API o altri servizi web.
Esportare in TorchScript: Convertire il tuo modello YOLO11
L'esportazione di modelli YOLO11 in TorchScript semplifica il loro utilizzo in diversi contesti e aiuta a farli funzionare più velocemente e in modo più efficiente. Questo è ottimo per chiunque cerchi di utilizzare modelli di deep learning in modo più efficace in applicazioni reali.
Installazione
Per installare il pacchetto richiesto, esegui:
Installazione
# Install the required package for YOLO11
pip install ultralytics
Per istruzioni dettagliate e best practice relative al processo di installazione, consulta la nostra guida all'installazione di Ultralytics. Durante l'installazione dei pacchetti richiesti per YOLO11, in caso di difficoltà, consulta la nostra guida ai problemi comuni per soluzioni e suggerimenti.
Utilizzo
Tutti i modelli Ultralytics YOLO11 sono progettati per supportare l'export out-of-the-box, rendendo facile la loro integrazione nel tuo flusso di lavoro di deployment preferito. Puoi visualizzare l'elenco completo dei formati di export supportati e le opzioni di configurazione per scegliere la configurazione migliore per la tua applicazione.
Utilizzo
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to TorchScript format
model.export(format="torchscript") # creates 'yolo11n.torchscript'
# Load the exported TorchScript model
torchscript_model = YOLO("yolo11n.torchscript")
# Run inference
results = torchscript_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to TorchScript format
yolo export model=yolo11n.pt format=torchscript # creates 'yolo11n.torchscript'
# Run inference with the exported model
yolo predict model=yolo11n.torchscript source='https://ultralytics.com/images/bus.jpg'
Argomenti di esportazione
Argomento | Tipo | Predefinito | Descrizione |
---|---|---|---|
format |
str |
'torchscript' |
Formato di destinazione per il modello esportato, che definisce la compatibilità con vari ambienti di distribuzione. |
imgsz |
int oppure tuple |
640 |
Dimensione dell'immagine desiderata per l'input del modello. Può essere un numero intero per immagini quadrate o una tupla (height, width) per dimensioni specifiche. |
dynamic |
bool |
False |
Consente dimensioni di input dinamiche, migliorando la flessibilità nella gestione di diverse dimensioni delle immagini. |
optimize |
bool |
False |
Applica l'ottimizzazione per dispositivi mobili, riducendo potenzialmente le dimensioni del modello e migliorando le prestazioni. |
nms |
bool |
False |
Aggiunge la Non-Maximum Suppression (NMS), essenziale per una post-elaborazione del rilevamento accurata ed efficiente. |
batch |
int |
1 |
Specifica la dimensione del batch di inferenza del modello di esportazione o il numero massimo di immagini che il modello esportato elaborerà contemporaneamente in modalità predict . |
device |
str |
None |
Specifica il dispositivo per l'esportazione: GPU (device=0 ), CPU (device=cpu ), MPS per Apple silicon (device=mps ). |
Per maggiori dettagli sul processo di esportazione, visita la pagina della documentazione di Ultralytics sull'esportazione.
Implementazione di modelli TorchScript YOLO11 esportati
Dopo aver esportato con successo i tuoi modelli Ultralytics YOLO11 in formato TorchScript, ora puoi distribuirli. Il primo passo principale e raccomandato per l'esecuzione di un modello TorchScript è utilizzare il metodo YOLO("model.torchscript"), come indicato nel precedente snippet di codice di utilizzo. Tuttavia, per istruzioni approfondite sulla distribuzione dei tuoi modelli TorchScript in varie altre impostazioni, dai un'occhiata alle seguenti risorse:
-
Esplora la distribuzione mobile: La documentazione di PyTorch Mobile fornisce linee guida complete per la distribuzione di modelli su dispositivi mobili, garantendo che le tue applicazioni siano efficienti e reattive.
-
Padroneggia la distribuzione lato server: Scopri come distribuire modelli lato server con TorchServe, offrendo un tutorial passo-passo per un servizio di modelli scalabile ed efficiente.
-
Implementa la distribuzione C++: Approfondisci il tutorial sul caricamento di un modello TorchScript in C++, facilitando l'integrazione dei tuoi modelli TorchScript in applicazioni C++ per prestazioni e versatilità migliorate.
Riepilogo
In questa guida, abbiamo esplorato il processo di esportazione dei modelli Ultralytics YOLO11 nel formato TorchScript. Seguendo le istruzioni fornite, puoi ottimizzare i modelli YOLO11 per le prestazioni e ottenere la flessibilità necessaria per distribuirli su varie piattaforme e ambienti.
Per ulteriori dettagli sull'utilizzo, visita la documentazione ufficiale di TorchScript.
Inoltre, se desideri saperne di più su altre integrazioni di Ultralytics YOLO11, visita la nostra pagina della guida all'integrazione. Lì troverai molte risorse e approfondimenti utili.
FAQ
Cos'è l'esportazione del modello Ultralytics YOLO11 in TorchScript?
L'esportazione di un modello Ultralytics YOLO11 in TorchScript consente un'implementazione flessibile e multipiattaforma. TorchScript, una parte dell'ecosistema PyTorch, facilita la serializzazione dei modelli, che possono poi essere eseguiti in ambienti che non supportano python. Questo lo rende ideale per l'implementazione di modelli su sistemi embedded, ambienti C++, applicazioni mobili e persino browser web. L'esportazione in TorchScript consente prestazioni efficienti e una più ampia applicabilità dei tuoi modelli YOLO11 su diverse piattaforme.
Come posso esportare il mio modello YOLO11 in TorchScript utilizzando Ultralytics?
Per esportare un modello YOLO11 in TorchScript, puoi utilizzare il seguente codice di esempio:
Utilizzo
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to TorchScript format
model.export(format="torchscript") # creates 'yolo11n.torchscript'
# Load the exported TorchScript model
torchscript_model = YOLO("yolo11n.torchscript")
# Run inference
results = torchscript_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to TorchScript format
yolo export model=yolo11n.pt format=torchscript # creates 'yolo11n.torchscript'
# Run inference with the exported model
yolo predict model=yolo11n.torchscript source='https://ultralytics.com/images/bus.jpg'
Per maggiori dettagli sul processo di esportazione, consulta la documentazione di Ultralytics sull'esportazione.
Perché dovrei usare TorchScript per l'implementazione di modelli YOLO11?
L'utilizzo di TorchScript per la distribuzione di modelli YOLO11 offre diversi vantaggi:
- Portabilità: i modelli esportati possono essere eseguiti in ambienti senza la necessità di python, come applicazioni C++, sistemi embedded o dispositivi mobili.
- Ottimizzazione: TorchScript supporta l'esecuzione statica del grafo e la compilazione Just-In-Time (JIT), che possono ottimizzare le prestazioni del modello.
- Integrazione cross-language: i modelli TorchScript possono essere integrati in altri linguaggi di programmazione, migliorando la flessibilità e l'espandibilità.
- Serializzazione: i modelli possono essere serializzati, consentendo il caricamento e l'inferenza indipendenti dalla piattaforma.
Per ulteriori approfondimenti sulla distribuzione, visita la Documentazione di PyTorch Mobile, la Documentazione di TorchServe e la Guida alla distribuzione in C++.
Quali sono i passaggi di installazione per l'esportazione di modelli YOLO11 in TorchScript?
Per installare il pacchetto richiesto per l'esportazione dei modelli YOLO11, usa il seguente comando:
Installazione
# Install the required package for YOLO11
pip install ultralytics
Per istruzioni dettagliate, visita la guida all'installazione di Ultralytics. In caso di problemi durante l'installazione, consulta la guida ai problemi comuni.
Come posso implementare i miei modelli TorchScript YOLO11 esportati?
Dopo aver esportato i modelli YOLO11 nel formato TorchScript, puoi distribuirli su una varietà di piattaforme:
- API C++: ideale per ambienti di produzione a basso overhead e altamente efficienti.
- Distribuzione mobile: usa PyTorch Mobile per applicazioni iOS e Android.
- Distribuzione cloud: utilizza servizi come TorchServe per una distribuzione scalabile lato server.
Esplora le linee guida complete per la distribuzione di modelli in queste impostazioni per sfruttare appieno le capacità di TorchScript.