Link to this sectionEsportazione modello TFLite per il deployment (deprecata)#
A partire da Ultralytics 8.4.83, il formato di esportazione standalone tflite è stato rimosso e sostituito dal formato unificato Google LiteRT. LiteRT (Lite Runtime) è la prossima generazione e il nuovo nome di TensorFlow Lite, ed esporta lo stesso modello .tflite — che ora copre il deployment su dispositivi mobili, embedded, edge e browser in un unico formato.
format="tflite" funziona ancora ma emette un avviso di deprecazione ed esporta invece un modello LiteRT. Usa format="litert" in futuro; per le istruzioni e le opzioni di esportazione correnti, consulta la guida all'esportazione LiteRT.
Il deployment di modelli di computer vision su dispositivi edge o embedded richiede un formato che possa garantire prestazioni senza interruzioni.
Il precedente formato di esportazione TensorFlow Lite o TFLite ottimizzava i modelli Ultralytics YOLO26 per attività come il rilevamento oggetti e la classificazione immagini in applicazioni edge. Questa guida conserva il contesto di deployment legacy TFLite; usa LiteRT per le nuove esportazioni.
Link to this sectionPerché TFLite veniva usato per l'esportazione?#
Introdotto da Google nel maggio 2017 come parte del loro framework TensorFlow, TensorFlow Lite, o TFLite in breve, era un framework open-source di deep learning progettato per l'inferenza on-device, nota anche come edge computing. Forniva agli sviluppatori strumenti per eseguire modelli addestrati su dispositivi mobili, embedded e IoT, oltre che su 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 localmente e offline.
Link to this sectionCaratteristiche principali dei modelli TFLite#
I modelli TFLite offrono un'ampia gamma di funzionalità chiave che abilitano il machine learning on-device aiutando gli sviluppatori a eseguire i propri modelli su dispositivi mobili, embedded ed edge:
-
Ottimizzazione on-device: TFLite ottimizza per il ML on-device, riducendo la latenza elaborando i dati localmente, migliorando la privacy evitando la trasmissione di dati personali e riducendo al minimo le dimensioni del modello per risparmiare spazio.
-
Supporto multi-piattaforma: TFLite offre un'ampia compatibilità di piattaforma, supportando Android, iOS, Linux embedded e microcontrollori.
-
Supporto multilingue: TFLite è compatibile con vari linguaggi di programmazione, tra cui Java, Swift, Objective-C, C++ e Python.
-
Alte prestazioni: Ottiene prestazioni superiori attraverso l'accelerazione hardware e l'ottimizzazione del modello.
Link to this sectionPrestazioni misurate (storiche)#
Questi numeri TFLite sono conservati come registro storico prima/dopo per la migrazione da onnx2tf-TFLite a LiteRT: l'export INT8 TFLite legacy onnx2tf mostrato di seguito rispetto al nuovo export LiteRT w8a32 (vedi la tabella delle prestazioni misurate di LiteRT). Sono condivisi con il team Google LiteRT per mostrare dove il nuovo formato litert-torch registra ancora una regressione rispetto al formato che ha sostituito: vedi Regressioni del formato di seguito.
Confronto per attività prima/dopo sulla GPU Adreno di un Xiaomi 17 (Qualcomm Snapdragon 8 Elite Gen 5, SM8850), misurato tramite il plugin Flutter di Ultralytics 0.6.8: le risorse legacy onnx2tf INT8 TFLite (NHWC, input images) rispetto alle nuove risorse w8a32 LiteRT (NCHW, input args_0), entrambi eseguiti su LiteRT 2.x nella stessa sessione back-to-back alla imgsz fornita su Android. Ogni cella rappresenta il tempo totale (pre-elaborazione + inferenza + post-elaborazione) con la suddivisione per fase riportata sotto; entrambi i formati sono stati compilati interamente su GPU.
| Modello | Compito | dimensione (pixel) | Prima onnx2tf INT8 TFLite (ms) | Dopo 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 | Semantico | 640 | 26.4 1.9 / 16.4 / 8.1 | 32.9 1.8 / 23.0 / 8.2 |
| YOLO26n-cls | Classify | 224 | 3.5 0.9 / 2.2 / 0.4 | 3.2 1.0 / 2.2 / 0.1 |
| YOLO26n-pose | Pose | 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 |
w8a32 LiteRT eguaglia o supera il formato legacy onnx2tf INT8 in cinque attività su sei per quanto riguarda la latenza totale. Semantic rimane la regressione del formato perché i logit NCHW w8a32 richiedono più tempo di inferenza rispetto ai logit NHWC legacy, anche dopo la pulizia della pre-elaborazione. I modelli legacy onnx2tf vengono eseguiti senza modifiche su LiteRT 2.x insieme alle nuove esportazioni NCHW. Le risorse ufficiali Android LiteRT sono ospitate nella release v0.6.6 di yolo-flutter-app, con il record dettagliato dei benchmark nel documento sulle prestazioni di Flutter.
Link to this sectionRegressioni del formato vs LiteRT#
Rilevamento YOLO26n sullo stesso dispositivo sulla GPU Adreno di un Xiaomi 17 — TFLite INT8 onnx2tf legacy rispetto ai quattro formati di quantizzazione LiteRT, tutti misurati in un'unica esecuzione sostenuta (quindi l'inferenza è la metrica comparabile dipendente dal formato):
| Formato Android | Inferenza GPU (ms) | Compilazione GPU |
|---|---|---|
| onnx2tf INT8 (TFLite legacy) | 8.6 | sì |
| LiteRT w8a32 (nuovo ufficiale) | 8.4 | sì |
LiteRT INT8 (quantize=8) | 11.0 | sì |
| LiteRT FP32 | 8.8 | sì |
LiteRT w8a16 (quantize="w8a16") | (Fallback CPU) | no — fallisce |
Problemi per il team Google LiteRT / litert-torch, emersi durante la migrazione di asset Android di produzione da onnx2tf TFLite a LiteRT:
- Il layout NCHW rende i consumer consapevoli del layout. litert-torch traccia il modello PyTorch ed emette NCHW
[1,3,H,W]con un input float, mentre l'esportazione TFLite onnx2tf era NHWC[1,H,W,3]— corrispondente al layout della fotocamera/bitmap. L'attuale plugin Flutter scrive CHW planare direttamente durante il packing RGB, evitando una trasposizione separata HWC→CHW, ma i consumer più semplici necessitano comunque di un packing planare diretto o di una trasposizione extra. quantize="w8a16"non compila sul delegato GPU (OpenCL) e torna silenziosamente a un percorso CPU che è circa 40 volte più lento (circa 660 ms contro circa 17 ms), rendendo il formato con attivazione int16 inutilizzabile per il deployment su GPU.- L'INT8 statico (
quantize=8) è il formato GPU più lento — circa 11 ms contro circa 8.6 ms per il modello INT8 legacy onnx2tf equivalente, ovvero il percorso INT8 di LiteRT regredisce rispetto al formato che ha sostituito. Il formato w8a32 a range dinamico è l'unico formato LiteRT che eguaglia la vecchia velocità INT8, motivo per cui ora viene distribuito. - I modelli di segmentazione esportano come logit NCHW grezzi senza opzione ArgMax nel grafo, forzando un argmax lato host non ottimizzato per la cache su
[1, C, H, W](ogni piano di classe è distante un intero H×W). I percorsi onnx2tf, CoreML e QNN possono invece emettere una mappa di classe compatta. - I tensori di output sono stati rinominati
output_0,output_1, … (rispetto aIdentity,Identity_1, … di onnx2tf), il che ha interrotto silenziosamente la ricerca della forma di output a runtime finché il consumatore non ha aggiunto i nuovi nomi.
I numeri corrispondenti di LiteRT w8a32 (il formato ora distribuito) si trovano nella pagina LiteRT.
Link to this sectionOpzioni di deployment in TFLite#
Prima di vedere l'esempio di esportazione sostitutiva con LiteRT, capiamo come vengono solitamente utilizzati i modelli TFLite.
TFLite offre varie opzioni di deployment on-device per i modelli di machine learning, tra cui:
- Deployment con Android e iOS: Entrambe le applicazioni Android e iOS con TFLite possono analizzare i feed della fotocamera edge e i sensori per rilevare e identificare oggetti. TFLite offre anche librerie iOS native scritte in Swift e Objective-C. Il diagramma dell'architettura sottostante mostra il processo di deployment di un modello addestrato su piattaforme Android e iOS utilizzando TensorFlow Lite.
-
Implementazione con Linux embedded: Se l'esecuzione di inferenze su un Raspberry Pi utilizzando la Guida Ultralytics non soddisfa i requisiti di velocità del 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.
-
Deployment con microcontrollori: I modelli TFLite possono essere distribuiti anche su microcontrollori e altri dispositivi con solo pochi kilobyte di memoria. Il runtime principale occupa appena 16 KB su un Arm Cortex M3 ed è in grado di eseguire molti modelli di base. Non richiede supporto per il sistema operativo, librerie C o C++ standard o allocazione dinamica della memoria.
Link to this sectionSostituisci l'esportazione TFLite con LiteRT#
Per le nuove esportazioni, converti il tuo modello in LiteRT. Il modello risultante mantiene l'estensione di file .tflite.
Link to this sectionInstallazione#
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. Durante l'installazione dei pacchetti necessari per YOLO26, se riscontri difficoltà, consulta la nostra guida ai problemi comuni per soluzioni e suggerimenti.
Link to this sectionUtilizzo#
Tutti i modelli Ultralytics YOLO26 sono progettati per supportare l'esportazione nativamente, rendendo semplice integrarli nel tuo flusso di lavoro di distribuzione preferito. Puoi visualizzare l'elenco completo dei formati di esportazione supportati e le opzioni di configurazione per scegliere la configurazione migliore per la tua applicazione.
Il formato sostitutivo LiteRT supporta le modalità Export, Predict e Validate. Esporta il tuo 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") # creates 'yolo26n.tflite'from 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")Link to this sectionArgomenti di esportazione#
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
format | str | 'litert' | Formato di destinazione per il modello esportato, che definisce la compatibilità con vari ambienti di distribuzione. |
imgsz | int o 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. |
quantize | int o str | None | Precisione di quantizzazione: 8 (INT8 statico, pesi int8 + attivazioni int8; richiede data/fraction di calibrazione), 'w8a16' (statico, pesi int8 + attivazioni int16; richiede data/fraction di calibrazione), 'w8a32' (INT8 dinamico, pesi int8 + attivazioni FP32; nessuna calibrazione necessaria), 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 dell'inferenza batch del modello esportato o il numero massimo di immagini che il modello esportato elaborerà simultaneamente in modalità predict. |
data | str | 'coco8.yaml' | Percorso verso il file di configurazione del dataset (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 ulteriori dettagli sul processo di esportazione, visita la pagina della documentazione di Ultralytics sull'esportazione.
Link to this sectionDeployment dei modelli YOLO26 TFLite esportati#
Dopo aver esportato il tuo modello Ultralytics YOLO26 nel formato LiteRT, puoi eseguire il deployment del modello .tflite risultante. Il primo passo fondamentale e raccomandato per eseguire un modello TFLite è utilizzare il metodo YOLO("model.tflite"), come indicato nel frammento di codice di utilizzo precedente. Tuttavia, per istruzioni approfondite sul deployment dei tuoi modelli TFLite in vari altri contesti, dai un'occhiata alle seguenti risorse:
-
Android: Una guida rapida per integrare TensorFlow Lite nelle applicazioni Android, fornendo passaggi facili da seguire per configurare ed eseguire modelli di machine learning.
-
iOS: Dai un'occhiata a questa guida dettagliata per sviluppatori sull'integrazione e il deployment di modelli TensorFlow Lite nelle applicazioni iOS, che offre istruzioni dettagliate e risorse.
-
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 propri progetti di machine learning su dispositivi mobili ed edge.
Link to this sectionRiepilogo#
Questa guida conserva il flusso di lavoro di deployment legacy TFLite. Per nuove esportazioni, usa LiteRT per creare modelli .tflite per ambienti edge computing.
Per ulteriori dettagli sull'utilizzo, visita la documentazione ufficiale di TFLite.
Inoltre, se sei curioso riguardo ad altre integrazioni Ultralytics YOLO26, dai un'occhiata alla nostra pagina della guida all'integrazione. Troverai molte informazioni e approfondimenti utili lì.
Link to this sectionFAQ#
Link to this sectionCome sostituisco un'esportazione TFLite con LiteRT?#
Per una nuova esportazione, usa il formato LiteRT. Per prima cosa, installa il pacchetto richiesto usando:
pip install ultralyticsQuindi, utilizza il seguente frammento di codice per esportare il tuo modello:
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to LiteRT format
model.export(format="litert") # creates 'yolo26n.tflite'Per gli utenti CLI, puoi farlo con:
yolo export model=yolo26n.pt format=litert # creates 'yolo26n.tflite'Per maggiori dettagli, visita la guida all'esportazione di Ultralytics.
Link to this sectionQuali sono i vantaggi dell'utilizzo di TensorFlow Lite per il deployment del modello YOLO26?#
TensorFlow Lite (TFLite) è un framework deep learning open source progettato per l'inferenza on-device, che lo rende ideale per il deployment di modelli YOLO26 su dispositivi mobili, embedded e IoT. I vantaggi chiave includono:
- Ottimizzazione on-device: Riduci 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ù, dai un'occhiata alla guida TFLite.
Link to this sectionÈ possibile eseguire modelli YOLO26 TFLite su Raspberry Pi?#
Sì, puoi eseguire modelli YOLO26 TFLite su Raspberry Pi per migliorare le velocità di inferenza. Per prima cosa, esporta il tuo modello nel formato LiteRT come spiegato sopra. Quindi, usa uno strumento come TensorFlow Lite Interpreter per eseguire il modello sul tuo Raspberry Pi.
Per ulteriori ottimizzazioni, potresti prendere in considerazione l'utilizzo di Coral Edge TPU. Per passaggi dettagliati, fai riferimento alla nostra guida al deployment su Raspberry Pi e alla guida all'integrazione di Edge TPU.
Link to this sectionPosso utilizzare modelli TFLite su microcontrollori per le previsioni YOLO26?#
Sì, TFLite supporta il deployment 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 al deployment su dispositivi con potenza computazionale e memoria minime.
Per iniziare, visita la guida TFLite Micro per microcontrollori.
Link to this sectionQuali piattaforme sono compatibili con i modelli YOLO26 esportati in TFLite?#
TensorFlow Lite offre un'ampia compatibilità di piattaforma, consentendoti di distribuire modelli YOLO26 su una vasta gamma di dispositivi, tra cui:
- Android e iOS: Supporto nativo tramite librerie TFLite Android e iOS.
- Linux embedded: 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.
Link to this sectionCome risolvo i problemi comuni durante l'esportazione del modello YOLO26 in LiteRT?#
Se riscontri errori durante l'esportazione di modelli YOLO26 in LiteRT, le soluzioni comuni includono:
- Controlla la compatibilità dei pacchetti: Assicurati di utilizzare versioni compatibili di Ultralytics,
litert-torcheai-edge-litert. Consulta la nostra guida all'installazione. - Supporto del modello: Verifica che lo specifico modello YOLO26 supporti l'esportazione LiteRT controllando la pagina di documentazione sull'esportazione di Ultralytics.
- Problemi di quantizzazione: Quando utilizzi la quantizzazione INT8, assicurati che il percorso del tuo dataset sia specificato correttamente nel parametro
data.
Per ulteriori suggerimenti sulla risoluzione dei problemi, visita la nostra Guida ai problemi comuni.