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 e consente di esportare lo stesso modello .tflite, coprendo ora la distribuzione su dispositivi mobili, sistemi embedded, edge e browser in un unico formato.
format="tflite" funziona ancora, ma genera un avviso di deprecazione ed esporta un modello LiteRT. Da 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 visione artificiale su dispositivi edge o embedded richiede un formato che garantisca prestazioni ottimali.
Il precedente formato di esportazione TensorFlow Lite o TFLite ottimizzava i modelli Ultralytics YOLO26 per attività come il rilevamento di oggetti e la classificazione delle immagini nelle applicazioni edge. Questa guida mantiene il contesto della distribuzione TFLite legacy; per le nuove esportazioni, usa LiteRT.
Perché si usava TFLite per l'esportazione?#
Introdotto da Google nel maggio 2017 nell'ambito del framework TensorFlow, TensorFlow Lite, o TFLite in breve, era un framework open source di deep learning progettato per l'inferenza sul dispositivo, nota anche come edge computing. Forniva agli sviluppatori 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 microcontrollori (MCU). Le esportazioni TFLite permettevano alle applicazioni di eseguire modelli in locale e offline.
Funzionalità principali dei modelli TFLite#
I modelli TFLite offrono numerose funzionalità che consentono il machine learning sul dispositivo, aiutando gli sviluppatori a eseguire i propri modelli su dispositivi mobili, embedded ed edge:
-
Ottimizzazione sul dispositivo: TFLite ottimizza i modelli per il machine learning sul dispositivo, riducendo la latenza grazie all'elaborazione locale dei dati, migliorando la privacy evitando la trasmissione di 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 microcontrollori.
-
Supporto per diversi linguaggi: TFLite è compatibile con vari linguaggi di programmazione, tra cui Java, Swift, Objective-C, C++ e Python.
-
Prestazioni elevate: offre prestazioni superiori grazie all'accelerazione hardware e all'ottimizzazione dei modelli.
Prestazioni misurate (dati storici)#
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) integra una CPU Qualcomm Oryon a 8 core (2 core Prime fino a 4,6 GHz e 6 core Performance fino a 3,62 GHz), una GPU Adreno e una NPU Hexagon. Queste tabelle confrontano gli asset TFLite INT8 legacy generati con onnx2tf con le esportazioni litert-torch candidate valutate durante la migrazione. Gli asset di rilascio sono stati successivamente sovrascritti con le esportazioni standardizzate, quindi questi numeri non descrivono i byte attuali dell'asset v0.6.6. Consulta le tabelle delle prestazioni LiteRT per le misurazioni aggiornate.
Entrambi i formati sono stati eseguiti nella stessa sessione di test GPU consecutiva alle dimensioni di input indicate. Ogni cella riporta il tempo totale (pre-elaborazione + inferenza + post-elaborazione), con la suddivisione per fase sotto il totale; i log nativi hanno confermato che entrambi i formati hanno delegato l'intero grafo a LiteRT OpenCL (LITERT_CL) sulla GPU Adreno.
| Modello | Attività | dimensione (pixel) | Legacy TFLite INT8 onnx2tf (ms) | Candidato LiteRT w8a32 (ms) |
|---|---|---|---|---|
| YOLO26n | Rilevamento | 640 | 14.0 1.8 / 8.1 / 4.2 | 13.5 1.9 / 8.1 / 3.5 |
| YOLO26n-seg | Segmentazione | 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 sessione di migrazione ha confrontato anche 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 sessione, w8a16 è passato alla CPU, impiegando circa 660 ms in totale contro circa 17 ms per i formati GPU. Questi risultati hanno motivato la distribuzione di w8a32, ma la compatibilità con il delegate e le prestazioni dipendono dal dispositivo e dalla versione del runtime. Esegui benchmark sul dispositivo di destinazione e verifica nei log del runtime l'uso dell'acceleratore.
Opzioni di distribuzione con TFLite#
Prima di vedere l'esempio di esportazione con LiteRT, vediamo come vengono normalmente usati i modelli TFLite.
TFLite offre diverse opzioni per distribuire modelli di machine learning sui dispositivi, tra cui:
- Distribuzione su Android e iOS: le applicazioni Android e iOS con TFLite possono analizzare i flussi delle fotocamere e i sensori edge per rilevare e identificare oggetti. TFLite offre anche librerie native per iOS scritte in Swift e Objective-C. Il diagramma dell'architettura qui sotto mostra il processo di distribuzione di un modello addestrato sulle piattaforme Android e iOS con TensorFlow Lite.
-
Implementazione con Linux embedded: se l'esecuzione di inferenze su un Raspberry Pi seguendo la guida di Ultralytics non soddisfa i requisiti di velocità del tuo caso d'uso, puoi usare un modello TFLite esportato per accelerare l'inferenza. Inoltre, puoi migliorare ulteriormente le prestazioni utilizzando un dispositivo Coral Edge TPU.
-
Distribuzione su microcontrollori: i modelli TFLite possono essere distribuiti anche su microcontrollori e altri dispositivi con pochi kilobyte di memoria. Il runtime principale occupa appena 16 KB su un Arm Cortex M3 e può eseguire molti modelli di base. Non richiede il supporto di un sistema operativo, librerie standard C o C++ né allocazione dinamica della memoria.
Sostituisci l'esportazione TFLite con LiteRT#
Per le nuove esportazioni, converti il tuo modello in LiteRT. Il modello risultante mantiene l'estensione di file .tflite.
Installazione#
Per installare i pacchetti necessari, esegui:
# Install the required package for YOLO26
pip install ultralyticsPer istruzioni dettagliate e best practice sulla procedura 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 workflow di distribuzione che preferisci. Puoi consultare l'elenco completo dei formati di esportazione supportati e delle opzioni di configurazione per scegliere la configurazione più adatta alla tua applicazione.
Il formato LiteRT sostitutivo supporta le modalità Export, Predict e Validate. Esporta il modello, quindi carica il modello .tflite esportato per eseguire inferenze o convalidarne l'accuratezza.
from ultralytics import YOLO
# Carica un modello YOLO26
model = YOLO("yolo26n.pt")
# Esporta il modello nel formato LiteRT
model.export(format="litert", imgsz=640) # usa imgsz=224 per la classificazionefrom ultralytics import YOLO
# Carica il modello TFLite esportato
model = YOLO("yolo26n.tflite")
# Esegui l'inferenza
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Carica il modello TFLite esportato
model = YOLO("yolo26n.tflite")
# # Convalida l'accuratezza sul dataset COCO8
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 i vari ambienti di distribuzione. |
imgsz | int o tuple | 640 | Dimensione dell'immagine desiderata per l'input del modello. Può essere un intero per immagini quadrate o una tupla (height, width) per dimensioni specifiche. |
quantize | int o str | None | Precisione della quantizzazione: 8 (INT8 statica, pesi int8 + attivazioni int8; richiede la calibrazione data/fraction), 'w8a16' (statica, pesi int8 + attivazioni int16; richiede la calibrazione data/fraction), 'w8a32' (INT8 dinamica, 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 delegati GPU. Sostituisce i flag deprecati half/int8. |
batch | int | 1 | Specifica la dimensione batch per l'inferenza del modello esportato o il numero massimo di immagini che il modello esportato elaborerà contemporaneamente in modalità predict. |
data | str | None | Percorso YAML del dataset, essenziale per la quantizzazione; per la classificazione, invece, accetta 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 o rapporti/conteggi [train, val, test]. Gli elenchi di due elementi lasciano completo test, mentre 0 lo esclude. |
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 dedicata all'esportazione.
Distribuzione di modelli YOLO26 TFLite esportati#
Dopo aver esportato il tuo 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. Per istruzioni dettagliate sulla distribuzione dei modelli TFLite in altri contesti, consulta queste risorse:
-
Android: 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 dettagliate e risorse.
-
Esempi end-to-end: questa pagina offre una panoramica di vari esempi di TensorFlow Lite, presentando applicazioni pratiche e tutorial pensati per aiutare gli sviluppatori a implementare TensorFlow Lite nei progetti di machine learning per dispositivi mobili ed edge.
Riepilogo#
Questa guida mantiene il flusso di lavoro legacy per la distribuzione TFLite. Per le nuove esportazioni, usa LiteRT per creare modelli .tflite destinati agli ambienti di edge computing.
Per ulteriori dettagli sull'utilizzo, consulta la documentazione ufficiale di TFLite.
Inoltre, se ti interessano altre integrazioni di Ultralytics YOLO26, consulta la nostra pagina delle guide alle integrazioni. Troverai molte informazioni e indicazioni utili.
Domande frequenti#
Per una nuova esportazione, usa il formato LiteRT. Per prima cosa, installa il pacchetto richiesto con:
pip install ultralyticsPoi, usa il seguente frammento di codice per esportare il modello:
from ultralytics import YOLO # Carica un modello YOLO26 model = YOLO("yolo26n.pt") # Esporta il modello nel formato LiteRT model.export(format="litert", imgsz=640) # usa imgsz=224 per la classificazioneSe 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, ideale per distribuire modelli YOLO26 su dispositivi mobili, embedded e IoT. Tra i principali vantaggi:
- Ottimizzazione sul dispositivo: riduci al minimo la latenza e migliora la privacy elaborando i dati in locale.
- Compatibilità con le piattaforme: supporta Android, iOS, Linux embedded e MCU.
- Prestazioni: sfrutta l'accelerazione hardware per ottimizzare velocità ed efficienza dei modelli.
Per saperne di più, consulta la guida TFLite.
Sì, puoi eseguire modelli YOLO26 TFLite su Raspberry Pi per migliorare la velocità di inferenza. Per prima cosa, esporta il modello nel formato LiteRT come spiegato sopra. Poi, usa uno strumento come TensorFlow Lite Interpreter per eseguire il modello sul tuo Raspberry Pi.
Per ulteriori ottimizzazioni, puoi valutare l'uso di Coral Edge TPU. Per istruzioni dettagliate, consulta la nostra guida alla distribuzione su Raspberry Pi e la guida all'integrazione di Edge TPU.
TFLite supporta la distribuzione su microcontrollori con risorse limitate: il runtime principale richiede solo 16 KB di memoria su un Arm Cortex M3 e può eseguire molti modelli di base. Tuttavia, i modelli YOLO26 sono generalmente troppo grandi per la memoria disponibile nei microcontrollori tipici; per YOLO26 sono quindi più adatti computer a scheda singola, dispositivi mobili o acceleratori dedicati.
Per iniziare, consulta la guida TFLite Micro per microcontrollori.
TensorFlow Lite offre un'ampia compatibilità con le piattaforme, consentendo di distribuire modelli YOLO26 su numerosi 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 di modelli YOLO26 in LiteRT, ecco alcune soluzioni comuni:
- 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 LiteRT consultando la pagina della documentazione sull'esportazione di Ultralytics.
- Problemi di quantizzazione: quando usi la quantizzazione INT8, assicurati di specificare correttamente il percorso del dataset nel parametro
data.
Per altri suggerimenti sulla risoluzione dei problemi, visita la nostra guida ai problemi comuni.
- Verifica la compatibilità dei pacchetti: assicurati di usare versioni compatibili di Ultralytics,