Esportazione di modelli TFLite per la distribuzione (deprecata)#
A partire da Ultralytics 8.4.83, il formato di esportazione autonomo tflite è stato rimosso e sostituito dal formato unificato Google LiteRT. LiteRT (Lite Runtime) è la nuova generazione e il nuovo nome di TensorFlow Lite ed esporta lo stesso modello .tflite, che ora copre la distribuzione su dispositivi mobili, embedded, edge e browser in un unico formato.
format="tflite" continua a funzionare, ma genera un avviso di deprecazione ed esporta invece un modello LiteRT. D'ora in poi usa format="litert"; per le istruzioni e le opzioni di esportazione aggiornate, consulta la guida all'esportazione LiteRT.
La distribuzione di modelli di computer vision su dispositivi edge o embedded richiede un formato in grado di garantire prestazioni uniformi.
Il precedente formato di esportazione TensorFlow Lite o TFLite ottimizzava i modelli Ultralytics YOLO26 per attività come il rilevamento degli oggetti e la classificazione delle immagini nelle applicazioni edge. Questa guida conserva il contesto della distribuzione TFLite legacy; per le nuove esportazioni usa LiteRT.
Perché TFLite veniva usato per l'esportazione?#
Introdotto da Google nel maggio 2017 come parte del framework TensorFlow, TensorFlow Lite, o TFLite in breve, era un framework open source di deep learning progettato per l'inferenza sul dispositivo, noto anche come edge computing. Forniva agli sviluppatori gli strumenti per eseguire modelli addestrati su dispositivi mobili, embedded e IoT, oltre che sui computer tradizionali.
TensorFlow Lite supportava un'ampia gamma di piattaforme, tra cui Linux embedded, Android, iOS e i microcontrollori (MCU). Le esportazioni TFLite consentivano alle applicazioni di eseguire i modelli localmente e offline.
Funzionalità principali dei modelli TFLite#
I modelli TFLite offrono numerose funzionalità chiave che abilitano il machine learning sul dispositivo, aiutandoti a eseguire i tuoi modelli su dispositivi mobili, embedded ed edge:
-
Ottimizzazione sul dispositivo: TFLite ottimizza i modelli per il machine learning sul dispositivo, riducendo la latenza elaborando i dati localmente, migliorando la privacy senza trasmettere dati personali e riducendo al minimo le dimensioni del modello per risparmiare spazio.
-
Supporto per più piattaforme: TFLite offre un'ampia compatibilità con le piattaforme, supportando Android, iOS, Linux embedded e i microcontrollori.
-
Supporto per diversi linguaggi: TFLite è compatibile con diversi linguaggi di programmazione, tra cui Java, Swift, Objective-C, C++ e Python.
-
Prestazioni elevate: offre prestazioni superiori grazie all'accelerazione hardware e all'ottimizzazione del modello.
Prestazioni misurate (storiche)#
Questi risultati sono stati registrati con il plugin Flutter di Ultralytics 0.6.8 e LiteRT 2.1.5 su Android 16/API 36
su uno Xiaomi 17 con 12 GB di memoria LPDDR5X. Il suo
Snapdragon 8 Elite Gen 5 a 3 nm
(SM8850) dispone di una CPU Qualcomm Oryon a 8 core (2 core Prime fino a 4,6 GHz e 6 core Performance fino a 3,62 GHz),
GPU Adreno e NPU Hexagon. Queste tabelle confrontano gli asset TFLite INT8 legacy generati da onnx2tf con gli export
litert-torch candidati valutati durante la migrazione. Gli asset della release sono stati successivamente sovrascritti con gli export
standardizzati, quindi questi numeri non descrivono i byte dell'asset v0.6.6 corrente. Consulta le
tabelle delle prestazioni LiteRT per le misurazioni aggiornate.
Entrambi i formati sono stati eseguiti nella stessa sequenza di test GPU consecutiva alle dimensioni di input mostrate. Ogni cella indica il tempo totale
(preelaborazione + inferenza + postelaborazione), con la suddivisione per fase riportata sotto; i log nativi hanno confermato che entrambi
i formati delegavano il grafo completo a LiteRT OpenCL (LITERT_CL) sulla GPU Adreno.
| Modello | Attività | dimensione (pixel) | Legacy onnx2tf INT8 TFLite (ms) | Candidato w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | Detect | 640 | 14.0 1.8 / 8.1 / 4.2 | 13.5 1.9 / 8.1 / 3.5 |
| YOLO26n-seg | Segment | 640 | 30.1 1.9 / 20.3 / 8.0 | 28.6 1.8 / 20.1 / 6.7 |
| YOLO26n-sem | Semantica | 640 | 26.4 1.9 / 16.4 / 8.1 | 32.9 1.8 / 23.0 / 8.2 |
| YOLO26n-cls | Classificazione | 224 | 3.5 0.9 / 2.2 / 0.4 | 3.2 1.0 / 2.2 / 0.1 |
| YOLO26n-pose | Posa | 640 | 17.4 2.4 / 9.9 / 5.1 | 14.0 1.9 / 9.3 / 2.8 |
| YOLO26n-obb | OBB | 640 | 13.9 3.0 / 8.3 / 2.7 | 13.0 2.9 / 7.9 / 2.3 |
La stessa esecuzione della migrazione ha inoltre confrontato i formati di quantizzazione per il rilevamento con YOLO26n. L'inferenza è la metrica confrontabile e dipendente dal formato:
| Formato Android | Inferenza GPU (ms) | Compilazione GPU |
|---|---|---|
| onnx2tf INT8 (TFLite legacy) | 8.6 | sì |
| LiteRT w8a32 (candidato) | 8.4 | sì |
LiteRT INT8 (quantize=8) | 11.0 | sì |
| LiteRT FP32 | 8.8 | sì |
LiteRT w8a16 (quantize="w8a16") | Fallback CPU | no |
In questa esecuzione, w8a16 è passato alla CPU, con un tempo totale di circa 660 ms rispetto ai circa 17 ms dei formati GPU. Questi risultati
hanno motivato la distribuzione di w8a32, ma la compatibilità e le prestazioni del delegate dipendono dal dispositivo e dalla versione del runtime.
Esegui il benchmark sul dispositivo di destinazione e verifica il posizionamento dell'acceleratore nei log del runtime.
Opzioni di distribuzione in TFLite#
Prima di esaminare l'esempio di esportazione sostitutivo di LiteRT, vediamo come vengono normalmente usati i modelli TFLite.
TFLite offre diverse opzioni di distribuzione sul dispositivo per i modelli di machine learning, tra cui:
- Distribuzione con Android e iOS: le applicazioni Android e iOS con TFLite possono analizzare flussi video e sensori basati su edge per rilevare e identificare gli oggetti. TFLite offre inoltre librerie iOS native scritte in Swift e Objective-C. Il diagramma dell'architettura riportato di seguito mostra il processo di distribuzione di un modello addestrato sulle piattaforme Android e iOS usando TensorFlow Lite.
-
Implementazione con Linux embedded: se l'esecuzione delle inferenze su una Raspberry Pi usando la guida di Ultralytics non soddisfa i requisiti di velocità del tuo caso d'uso, puoi usare un modello TFLite esportato per accelerare i tempi di inferenza. Inoltre, puoi migliorare ulteriormente le prestazioni utilizzando un dispositivo Coral Edge TPU.
-
Distribuzione con microcontrollori: i modelli TFLite possono essere distribuiti anche su microcontrollori e altri dispositivi con appena pochi kilobyte di memoria. Il runtime principale occupa solo 16 KB su un Arm Cortex M3 e può eseguire molti modelli di base. Non richiede il supporto di un sistema operativo, librerie C o C++ standard né l'allocazione dinamica della memoria.
Sostituisci l'esportazione TFLite con LiteRT#
Per le nuove esportazioni, converti il modello in LiteRT. Il modello risultante mantiene l'estensione di file .tflite.
Installazione#
Per installare i pacchetti richiesti, esegui:
# Install the required package for YOLO26
pip install ultralyticsPer istruzioni dettagliate e best practice relative al processo di installazione, consulta la nostra guida all'installazione di Ultralytics. Se durante l'installazione dei pacchetti necessari per YOLO26 riscontri difficoltà, consulta la nostra guida ai problemi comuni per trovare soluzioni e suggerimenti.
Utilizzo#
Tutti i modelli Ultralytics YOLO26 sono progettati per supportare l'esportazione senza configurazioni aggiuntive, semplificando l'integrazione nel flusso di distribuzione che preferisci. Puoi consultare l'elenco completo dei formati di esportazione supportati e delle opzioni di configurazione per scegliere la configurazione migliore per la tua applicazione.
Il formato LiteRT sostitutivo supporta le modalità Export, Predict e Validate. Esporta il modello, quindi carica il modello .tflite esportato per eseguire l'inferenza o convalidarne l'accuratezza.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to LiteRT format
model.export(format="litert", imgsz=640) # use imgsz=224 for classificationfrom ultralytics import YOLO
# Load the exported TFLite model
model = YOLO("yolo26n.tflite")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported TFLite model
model = YOLO("yolo26n.tflite")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Argomenti di esportazione#
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
format | str | 'litert' | Formato di destinazione del modello esportato, che definisce 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 immagini quadrate o una tupla (height, width) per dimensioni specifiche. |
quantize | int o str | None | Precisione della quantizzazione: 8 (INT8 statico, pesi int8 + attivazioni int8; richiede la calibrazione data/fraction), 'w8a16' (statico, pesi int8 + attivazioni int16; richiede la calibrazione data/fraction), 'w8a32' (INT8 dinamico, pesi int8 + attivazioni FP32; non richiede calibrazione) oppure 32/non impostato (FP32). FP16 non viene esportato separatamente: un modello FP32 viene eseguito automaticamente in FP16 sui delegate GPU. Sostituisce i flag deprecati half/int8. |
batch | int | 1 | Specifica la dimensione del batch di inferenza del modello esportato o il numero massimo di immagini che il modello esportato elaborerà simultaneamente in modalità predict. |
data | str | None | Percorso del file YAML del dataset, essenziale per la quantizzazione; la classificazione richiede invece una directory del dataset o il nome di un dataset integrato. Se omesso con quantize=8 o 'w8a16', Ultralytics seleziona il dataset di calibrazione predefinito per l'attività del modello. |
fraction | float, int o list | 1.0 | Sottoinsieme di calibrazione espresso come rapporto, numero di immagini oppure rapporti/conteggi [train, val, test]. Gli elenchi di due elementi lasciano completo test, mentre 0 lo salta. |
device | str | None | Specifica il dispositivo per l'esportazione: CPU (device=cpu), MPS per Apple silicon (device=mps). |
Per ulteriori dettagli sul processo di esportazione, visita la pagina della documentazione Ultralytics sull'esportazione.
Distribuzione dei modelli YOLO26 TFLite esportati#
Dopo aver esportato il modello Ultralytics YOLO26 nel formato LiteRT, puoi distribuire il modello .tflite risultante. Il primo passaggio principale e consigliato per eseguire un modello TFLite consiste nell'usare il metodo YOLO("model.tflite"), come illustrato nel precedente frammento di codice d'uso. Tuttavia, per istruzioni dettagliate sulla distribuzione dei modelli TFLite in diverse altre configurazioni, consulta le seguenti risorse:
-
Android: una guida rapida per integrare TensorFlow Lite nelle applicazioni Android, con passaggi semplici per configurare ed eseguire modelli di machine learning.
-
iOS: consulta questa guida dettagliata per sviluppatori sull'integrazione e la distribuzione di modelli TensorFlow Lite nelle applicazioni iOS, con istruzioni e risorse passo passo.
-
Esempi end-to-end: questa pagina offre 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 ed edge.
Riepilogo#
Questa guida conserva il flusso di lavoro legacy per la distribuzione TFLite. Per le nuove esportazioni, usa LiteRT per creare modelli .tflite destinati ad ambienti di edge computing.
Per ulteriori dettagli sull'utilizzo, visita la documentazione ufficiale di TFLite.
Inoltre, se vuoi conoscere altre integrazioni di Ultralytics YOLO26, consulta la nostra pagina della guida alle integrazioni. Troverai molte informazioni e indicazioni utili.
FAQ#
Per una nuova esportazione, usa il formato LiteRT. Innanzitutto, installa il pacchetto richiesto usando:
pip install ultralyticsQuindi, usa il seguente frammento di codice per esportare il modello:
from ultralytics import YOLO # Load a YOLO26 model model = YOLO("yolo26n.pt") # Export the model to LiteRT format model.export(format="litert", imgsz=640) # use imgsz=224 for classificationSe usi la CLI, puoi farlo con:
yolo export model=yolo26n.pt format=litert imgsz=640 # use imgsz=224 for classificationPer ulteriori dettagli, visita la guida all'esportazione di Ultralytics.
TensorFlow Lite (TFLite) è un framework open source di deep learning progettato per l'inferenza sul dispositivo, che lo rende ideale per distribuire modelli YOLO26 su dispositivi mobili, embedded e IoT. I vantaggi principali includono:
- Ottimizzazione sul dispositivo: riduce al minimo la latenza e migliora la privacy elaborando i dati localmente.
- Compatibilità con le piattaforme: 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 TFLite.
Sì, puoi eseguire modelli YOLO26 TFLite su Raspberry Pi per migliorare la velocità di inferenza. Innanzitutto, esporta il modello nel formato LiteRT come spiegato sopra. Quindi, usa uno strumento come TensorFlow Lite Interpreter per eseguire il modello sulla tua Raspberry Pi.
Per ulteriori ottimizzazioni, puoi valutare l'utilizzo di Coral Edge TPU. Per i passaggi dettagliati, consulta la nostra guida alla distribuzione su Raspberry Pi e la guida all'integrazione di Edge TPU.
Sì, TFLite supporta la distribuzione su microcontrollori con risorse limitate. Il runtime principale di TFLite richiede solo 16 KB di memoria su un Arm Cortex M3 e può eseguire modelli YOLO26 di base. Questo lo rende adatto alla distribuzione su dispositivi con capacità computazionale e memoria minime.
Per iniziare, visita la guida TFLite Micro per microcontrollori.
TensorFlow Lite offre un'ampia compatibilità con le piattaforme, consentendoti di distribuire i modelli YOLO26 su un'ampia gamma di dispositivi, tra cui:
- Android e iOS: supporto nativo tramite le librerie TFLite per Android e iOS.
- Linux embedded: ideale per computer a scheda singola come Raspberry Pi.
- Microcontrollori: adatti agli MCU con risorse limitate.
Per ulteriori informazioni sulle opzioni di distribuzione, consulta la nostra guida dettagliata alla distribuzione.
Se riscontri errori durante l'esportazione dei modelli YOLO26 in LiteRT, tra le soluzioni comuni ci sono:
- Verifica la compatibilità dei pacchetti: assicurati di usare versioni compatibili di Ultralytics,
litert-torcheai-edge-litert. Consulta la nostra guida all'installazione. - Supporto del modello: verifica che il modello YOLO26 specifico supporti l'esportazione in LiteRT consultando la pagina della documentazione sull'esportazione di Ultralytics.
- Problemi di quantizzazione: quando utilizzi la quantizzazione INT8, assicurati che il percorso del dataset sia specificato correttamente nel parametro
data.
Per ulteriori suggerimenti sulla risoluzione dei problemi, visita la nostra guida ai problemi comuni.
- Verifica la compatibilità dei pacchetti: assicurati di usare versioni compatibili di Ultralytics,