Una guida sull'esportazione del modello YOLO11 in TFLite per la distribuzione
La distribuzione di modelli di computer vision su dispositivi edge o embedded richiede un formato che possa garantire prestazioni ottimali.
Il formato di esportazione TensorFlow Lite o TFLite consente di ottimizzare i modelli Ultralytics YOLO11 per attività come il rilevamento di oggetti e la classificazione delle immagini in applicazioni basate su dispositivi edge. In questa guida, esamineremo i passaggi per convertire i tuoi modelli nel formato TFLite, rendendo più semplice per i tuoi modelli funzionare bene su vari dispositivi edge.
Perché dovresti esportare in TFLite?
Introdotto da Google a maggio 2017 come parte del framework TensorFlow, TensorFlow Lite, o TFLite in breve, è un framework di deep learning open-source progettato per l'inferenza on-device, noto anche come edge computing. Fornisce agli sviluppatori gli strumenti necessari per eseguire i loro modelli addestrati su dispositivi mobili, embedded e IoT, nonché su computer tradizionali.
TensorFlow Lite è compatibile con una vasta gamma di piattaforme, tra cui embedded Linux, Android, iOS e MCU. L'esportazione del tuo modello in TFLite rende le tue applicazioni più veloci, più affidabili e in grado di funzionare offline.
Caratteristiche principali dei modelli TFLite
I modelli TFLite offrono una vasta gamma di funzionalità chiave che consentono l'apprendimento automatico on-device, aiutando gli sviluppatori a eseguire i propri modelli su dispositivi mobili, embedded e edge:
-
Ottimizzazione On-device: TFLite ottimizza per ML on-device, riducendo la latenza elaborando i dati localmente, migliorando la privacy non trasmettendo dati personali e riducendo al minimo le dimensioni del modello per risparmiare spazio.
-
Supporto Multi-Piattaforma: TFLite offre un'ampia compatibilità con le piattaforme, supportando Android, iOS, embedded Linux e microcontrollori.
-
Supporto Linguistico Diversificato: TFLite è compatibile con vari linguaggi di programmazione, tra cui Java, Swift, Objective-C, C++ e Python.
-
Alte Prestazioni: Ottiene prestazioni superiori grazie all'accelerazione hardware e all'ottimizzazione del modello.
Opzioni di distribuzione in TFLite
Prima di esaminare il codice per l'esportazione dei modelli YOLO11 nel formato TFLite, cerchiamo di capire come vengono normalmente utilizzati i modelli TFLite.
TFLite offre varie opzioni di implementazione on-device per i modelli di machine learning, tra cui:
- Distribuzione con Android e iOS: Sia le applicazioni Android che iOS con TFLite possono analizzare i feed di telecamere e sensori basati su edge per rilevare e identificare oggetti. TFLite offre anche librerie iOS native scritte in Swift e Objective-C. Il diagramma dell'architettura seguente mostra il processo di distribuzione di un modello addestrato su piattaforme Android e iOS utilizzando TensorFlow Lite.
-
Implementazione con Embedded Linux: Se l'esecuzione di inferenze su un Raspberry Pi utilizzando la Guida Ultralytics non soddisfa i requisiti di velocità per il tuo caso d'uso, puoi utilizzare un modello TFLite esportato per accelerare i tempi di inferenza. Inoltre, è possibile migliorare ulteriormente le prestazioni utilizzando un dispositivo Coral Edge TPU.
-
Distribuzione con Microcontrollori: I modelli TFLite possono anche essere distribuiti su microcontrollori e altri dispositivi con solo pochi kilobyte di memoria. Il runtime core si adatta perfettamente a 16 KB su un Arm Cortex M3 e può eseguire molti modelli di base. Non richiede il supporto del sistema operativo, librerie C o C++ standard o allocazione dinamica della memoria.
Esporta in TFLite: conversione del tuo modello YOLO11
Puoi migliorare l'efficienza dell'esecuzione del modello sul dispositivo e ottimizzare le prestazioni convertendo i tuoi modelli in formato TFLite.
Installazione
Per installare i pacchetti richiesti, 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 TFLite format
model.export(format="tflite") # creates 'yolo11n_float32.tflite'
# Load the exported TFLite model
tflite_model = YOLO("yolo11n_float32.tflite")
# Run inference
results = tflite_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to TFLite format
yolo export model=yolo11n.pt format=tflite # creates 'yolo11n_float32.tflite'
# Run inference with the exported model
yolo predict model='yolo11n_float32.tflite' source='https://ultralytics.com/images/bus.jpg'
Argomenti di esportazione
Argomento | Tipo | Predefinito | Descrizione |
---|---|---|---|
format |
str |
'tflite' |
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. |
half |
bool |
False |
Abilita la quantizzazione FP16 (mezza precisione), riducendo le dimensioni del modello e potenzialmente accelerando l'inferenza su hardware supportato. |
int8 |
bool |
False |
Attiva la quantizzazione INT8, comprimendo ulteriormente il modello e accelerando l'inferenza con una perdita di accuratezza minima, principalmente per i dispositivi edge. |
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 . |
data |
str |
'coco8.yaml' |
Percorso del dataset file di configurazione (predefinito: coco8.yaml ), essenziale per la quantizzazione. |
fraction |
float |
1.0 |
Specifica la frazione del dataset da utilizzare per la calibrazione della quantizzazione INT8. Consente la calibrazione su un sottoinsieme del dataset completo, utile per esperimenti o quando le risorse sono limitate. Se non specificato con INT8 abilitato, verrà utilizzato l'intero dataset. |
device |
str |
None |
Specifica il dispositivo per l'esportazione: 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.
Distribuzione di modelli YOLO11 TFLite esportati
Dopo aver esportato con successo i tuoi modelli Ultralytics YOLO11 in formato TFLite, ora puoi distribuirli. Il primo passo principale e raccomandato per l'esecuzione di un modello TFLite è utilizzare il YOLO("model.tflite")
metodo, come indicato nel precedente snippet di codice di utilizzo. Tuttavia, per istruzioni approfondite sulla distribuzione dei tuoi modelli TFLite in varie altre impostazioni, dai un'occhiata alle seguenti risorse:
-
Android: Una guida rapida per l'integrazione di TensorFlow Lite nelle applicazioni Android, che fornisce passaggi facili da seguire per la configurazione e l'esecuzione di modelli di machine learning.
-
iOS: Dai un'occhiata a questa guida dettagliata per gli sviluppatori sull'integrazione e la distribuzione di modelli TensorFlow Lite in applicazioni iOS, che offre istruzioni e risorse dettagliate.
-
Esempi End-To-End: Questa pagina fornisce una panoramica di vari esempi di TensorFlow Lite, mostrando applicazioni pratiche e tutorial progettati per aiutare gli sviluppatori a implementare TensorFlow Lite nei loro progetti di machine learning su dispositivi mobili e edge.
Riepilogo
In questa guida, ci siamo concentrati su come esportare nel formato TFLite. Convertendo i tuoi modelli Ultralytics YOLO11 nel formato modello TFLite, puoi migliorare l'efficienza e la velocità dei modelli YOLO11, rendendoli più efficaci e adatti agli ambienti di edge computing.
Per ulteriori dettagli sull'utilizzo, visitare la documentazione ufficiale di TFLite.
Inoltre, se sei curioso di conoscere altre integrazioni di Ultralytics YOLO11, assicurati di consultare la nostra pagina della guida all'integrazione. Troverai tantissime informazioni utili e approfondimenti che ti aspettano lì.
FAQ
Come posso esportare un modello YOLO11 in formato TFLite?
Per esportare un modello YOLO11 in formato TFLite, puoi utilizzare la libreria Ultralytics. Innanzitutto, installa il pacchetto richiesto utilizzando:
pip install ultralytics
Quindi, utilizza il seguente frammento di codice per esportare il tuo modello:
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to TFLite format
model.export(format="tflite") # creates 'yolo11n_float32.tflite'
Per gli utenti CLI, è possibile farlo con:
yolo export model=yolo11n.pt format=tflite # creates 'yolo11n_float32.tflite'
Per maggiori dettagli, visita la guida all'esportazione di Ultralytics.
Quali sono i vantaggi dell'utilizzo di TensorFlow Lite per la distribuzione di modelli YOLO11?
TensorFlow Lite (TFLite) è un framework di deep learning open-source progettato per l'inferenza on-device, il che lo rende ideale per il deployment di modelli YOLO11 su dispositivi mobili, embedded e IoT. I vantaggi principali includono:
- Ottimizzazione on-device: riduci al minimo la latenza e migliora la privacy elaborando i dati localmente.
- Compatibilità della piattaforma: supporta Android, iOS, Linux embedded e MCU.
- Prestazioni: utilizza l'accelerazione hardware per ottimizzare la velocità e l'efficienza del modello.
Per saperne di più, consulta la guida a TFLite.
È possibile eseguire modelli YOLO11 TFLite su Raspberry Pi?
Sì, puoi eseguire modelli YOLO11 TFLite su Raspberry Pi per migliorare la velocità di inferenza. Per prima cosa, esporta il tuo modello in formato TFLite come spiegato sopra. Poi, usa uno strumento come TensorFlow Lite Interpreter per eseguire il modello sul tuo Raspberry Pi.
Per ulteriori ottimizzazioni, si potrebbe considerare l'utilizzo di Coral Edge TPU. Per i passaggi dettagliati, consultare la nostra guida alla distribuzione su Raspberry Pi e la guida all'integrazione di Edge TPU.
Posso utilizzare modelli TFLite su microcontrollori per le previsioni YOLO11?
Sì, TFLite supporta il deployment su microcontrollori con risorse limitate. Il runtime core di TFLite richiede solo 16 KB di memoria su un Arm Cortex M3 e può eseguire modelli YOLO11 di base. Questo lo rende adatto per il deployment su dispositivi con potenza di calcolo e memoria minime.
Per iniziare, visita la guida a TFLite Micro per microcontrollori.
Quali piattaforme sono compatibili con i modelli YOLO11 esportati in TFLite?
TensorFlow Lite offre un'ampia compatibilità con le piattaforme, consentendoti di eseguire il deployment di modelli YOLO11 su una vasta gamma di dispositivi, tra cui:
- Android e iOS: supporto nativo tramite le librerie TFLite Android e iOS.
- Embedded Linux: ideale per computer a scheda singola come Raspberry Pi.
- Microcontrollori: adatto per MCU con risorse limitate.
Per ulteriori informazioni sulle opzioni di deployment, consulta la nostra guida al deployment dettagliata.
Come posso risolvere i problemi comuni durante l'esportazione del modello YOLO11 in TFLite?
Se riscontri errori durante l'esportazione di modelli YOLO11 in TFLite, le soluzioni comuni includono:
- Verifica la compatibilità dei pacchetti: assicurati di utilizzare versioni compatibili di Ultralytics e TensorFlow. Consulta la nostra guida all'installazione.
- Supporto del modello: Verificare che lo specifico modello YOLO11 supporti l'esportazione TFLite controllando la pagina della documentazione sull'esportazione di Ultralytics.
- Problemi di quantizzazione: Quando si utilizza la quantizzazione INT8, assicurarsi che il percorso del dataset sia specificato correttamente nel
data
parametro.
Per ulteriori suggerimenti per la risoluzione dei problemi, visita la nostra guida ai problemi comuni.