Ultralytics YOLO27:
Get Started

Esporta modelli YOLO in LiteRT per la distribuzione su dispositivi edge e sul web#

LiteRT edge deployment framework

LiteRT (abbreviazione di Lite Runtime) è il runtime ad alte prestazioni di Google per l'IA on-device. È la nuova generazione e il nuovo nome di TensorFlow Lite (TFLite) e utilizza lo stesso formato di modello .tflite. Con LiteRT, un singolo modello Ultralytics YOLO esportato può essere distribuito su dispositivi mobili, sistemi embedded, dispositivi edge e browser: copre tutto ciò che i precedenti formati di esportazione tflite e tfjs gestivano separatamente, riunendolo ora in un'unica soluzione.



Guarda: Come esportare Ultralytics YOLO26 in Google LiteRT | Distribuisci l'IA per la visione su Android e iOS | IA mobile 📱🚀

Il formato di esportazione LiteRT ottimizza i tuoi modelli per attività come il rilevamento degli oggetti, la segmentazione, la stima della posa e la classificazione, così possono funzionare rapidamente e offline su un'ampia gamma di dispositivi.

Esegui YOLO su Android con LiteRT oggi stesso tramite il plugin Flutter ufficiale

Il plugin ufficiale Ultralytics YOLO per Flutter esegue subito su Android le esportazioni LiteRT .tflite, offrendo inferenza in tempo reale dalla fotocamera, predizioni su singole immagini, accelerazione GPU e download automatico dei modelli per tutte e sette le attività di YOLO26, inclusa la profondità. Per i dispositivi Apple, usa l'esportazione CoreML; per le NPU Qualcomm Snapdragon, consulta l'integrazione Qualcomm QNN.

Dimensioni di input ufficiali per dispositivi mobili

Esporta i modelli di classificazione in imgsz=224. Esporta i modelli di rilevamento, segmentazione, semantica, profondità, posa e OBB in imgsz=640. Questo standard 224/640 è condiviso dagli asset mobili ufficiali LiteRT, CoreML e QNN.

Esegui YOLO sul web con LiteRT.js oggi stesso tramite il pacchetto npm ufficiale @ultralytics/yolo

Il pacchetto NPM ufficiale Ultralytics YOLO esegue direttamente nel browser le esportazioni LiteRT .tflite tramite LiteRT.js, senza server né Python. Offre inferenza in tempo reale tramite webcam, predizioni su singole immagini e accelerazione WebGPU (con fallback automatico a CPU/WASM) per sei attività di YOLO26 (rilevamento, segmentazione, semantica, classificazione, posa, OBB). Con WebGPU è spesso ~2× più veloce di ONNX Runtime Web.

npm i @ultralytics/yolo @litertjs/core

Perché esportare in LiteRT?#

LiteRT è un framework open source progettato per l'inferenza on-device, nota anche come edge computing. Offre agli sviluppatori gli strumenti per eseguire modelli addestrati su dispositivi mobili, sistemi embedded e IoT, computer tradizionali e, tramite LiteRT.js, direttamente nei browser web e in Node.js.

Un formato di modello, ogni destinazione:

  • Dispositivi mobili e sistemi embedded: Android, iOS, Linux embedded e microcontrollori (MCU).
  • Acceleratori edge: compatibile con Coral Edge TPU per un'ulteriore accelerazione.
  • Browser e Node.js: LiteRT.js esegue sul web lo stesso modello .tflite con accelerazione WebGPU/WASM, eliminando la necessità di un'esportazione TensorFlow.js separata.

Funzionalità principali dei modelli LiteRT#

  • Ottimizzazione sul dispositivo: riduce la latenza elaborando i dati localmente, migliora la privacy evitando di trasmettere dati personali e riduce al minimo le dimensioni del modello per risparmiare spazio.
  • Supporto di più piattaforme: funziona su Android, iOS, Linux embedded, microcontrollori e browser web moderni.
  • Accelerazione hardware: sfrutta XNNPACK sulla CPU e l'accelerazione GPU tramite OpenCL, Metal e WebGPU. Per impostazione predefinita, il delegate GPU esegue i calcoli in FP16 per offrire prestazioni ancora migliori.
  • Quantizzazione: supporta FP32, INT8 statica (quantize=8, pesi int8 + attivazioni int8), INT16 statica per le attivazioni (quantize="w8a16", pesi int8 + attivazioni int16 per una maggiore precisione) e INT8 dinamica (quantize="w8a32", pesi int8 + attivazioni FP32, senza necessità di dati di calibrazione) per comprimere i modelli e velocizzare l'inferenza con una perdita minima di precisione.
  • Supporto per diversi linguaggi: compatibile con Java/Kotlin, Swift, Objective-C, C++, Python e JavaScript.

Prestazioni misurate#

Hardware: Xiaomi 17 con 12 GB di memoria LPDDR5X e Android 16 / API 36. 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.

ModelloAttivitàdimensione
(pixel)
CPU
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
YOLO26nRilevamento64052.2
1.8 / 48.1 / 2.4
15.8
2.3 / 8.9 / 4.6
YOLO26n-segSegmentazione64073.4
1.8 / 65.6 / 6.0
33.2
1.8 / 23.8 / 7.6
YOLO26n-semSemantica64061.2
1.8 / 51.1 / 8.3
34.2
1.8 / 24.0 / 8.3
YOLO26n-depthProfondità640124.4
1.9 / 115.1 / 7.4
23.0
1.8 / 13.5 / 7.7
YOLO26n-clsClassificazione2244.4
0.4 / 4.0 / 0.0
3.1
0.8 / 2.1 / 0.2
YOLO26n-posePosa64057.4
1.8 / 53.8 / 1.8
16.6
2.7 / 10.1 / 3.9
YOLO26n-obbOBB64050.3
1.8 / 47.2 / 1.4
11.7
1.8 / 7.8 / 2.0
  • I valori di velocità sono latenze medie di burst su una singola immagine: la media di 15 esecuzioni dopo 3 esecuzioni di riscaldamento su bus.jpg, misurate con il plugin Flutter di Ultralytics 0.6.10 e gli asset standardizzati v0.6.6. L'ordine CPU/GPU è stato alternato tra le attività in un'unica sequenza. I log nativi hanno confermato che ogni riga CPU usava LiteRT CPU/XNNPACK e ogni riga GPU delegava l'intero grafo a LiteRT OpenCL (LITERT_CL).
  • L'esportazione LiteRT traccia direttamente il modello PyTorch, generando un .tflite NCHW con input float: il delegate GPU compila l'intero grafo (qui tutte e sette le attività vengono eseguite sulla GPU Adreno) e w8a32 non richiede dati di calibrazione. Chi utilizza il modello dovrebbe leggere le forme dei tensori e i nomi delle signature anziché dare per scontato il layout NHWC legacy di onnx2tf o i nomi di output Identity; i dati RGB vanno organizzati direttamente in CHW planare o trasposti prima dell'inferenza. Le esportazioni semantiche restituiscono logits NCHW e richiedono un argmax delle classi sul lato host. Gli asset Android ufficiali sono disponibili nella release v0.6.6 di yolo-flutter-app; il documento sulle prestazioni di Flutter contiene i dettagli completi del benchmark.
  • I valori corrispondenti per la NPU Hexagon Snapdragon e per CPU/GPU LiteRT sono disponibili nell'integrazione Qualcomm QNN.
  • Confronta i risultati di CPU/acceleratore Apple nell'integrazione CoreML.

Le seguenti prove su dispositivi utilizzano gli stessi asset standardizzati v0.6.6.

Google Pixel 10#

Hardware: Google Pixel 10 con 12 GB di memoria e Android 16 / API 36. Il suo Google Tensor G5 a 3 nm integra una CPU a 8 core (1 core Prime fino a 3.78 GHz, 5 core Performance fino a 3.05 GHz e 2 core Efficiency fino a 2.25 GHz), una GPU PowerVR D-Series e una TPU Google. Le frequenze dei core e il nome del driver GPU sono stati rilevati sul dispositivo di benchmark, perché Google non li pubblica nelle specifiche collegate.

ModelloAttivitàdimensione
(pixel)
CPU
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
YOLO26nRilevamento64053.3
1.5 / 50.2 / 1.6
45.5
3.8 / 37.7 / 4.0
YOLO26n-segSegmentazione64087.7
1.8 / 78.5 / 7.5
50.9
3.0 / 36.9 / 10.9
YOLO26n-semSemantica64068.6
1.5 / 59.0 / 8.0
71.6
1.5 / 59.5 / 10.6
YOLO26n-depthProfondità640120.3
1.5 / 112.5 / 6.3
52.5
2.0 / 37.5 / 13.0
YOLO26n-clsClassificazione2244.0
0.3 / 3.4 / 0.2
17.6
0.9 / 16.7 / 0.1
YOLO26n-posePosa64059.7
1.5 / 57.0 / 1.2
46.6
3.8 / 39.2 / 3.5
YOLO26n-obbOBB64052.0
1.5 / 48.9 / 1.7
45.5
4.0 / 38.5 / 2.9

Benchmark: media di 15 chiamate predict() dopo 3 esecuzioni di riscaldamento su bus.jpg, usando ultralytics_yolo 0.6.10 e gli asset ufficiali v0.6.6. L'ordine CPU/GPU si alterna tra le attività in un'unica sequenza. I log nativi hanno confermato che ogni riga CPU usava LiteRT CPU/XNNPACK e ogni riga GPU delegava l'intero grafo a LiteRT OpenCL (LITERT_CL).

Samsung Galaxy S26#

Hardware: Samsung Galaxy S26 (SM-S942B) con 12 GB di memoria e Android 16 / API 36. Il suo Exynos 2600 a 2 nm integra una CPU Armv9.3 a 10 core (1 core C1-Ultra fino a 3.8 GHz, 3 core C1-Pro ad alte prestazioni fino a 3.26 GHz e 6 core C1-Pro a basso consumo fino a 2.76 GHz), una GPU Xclipse 960 e una NPU Samsung.

ModelloAttivitàdimensione
(pixel)
CPU
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
YOLO26nRilevamento64036.7
1.3 / 33.8 / 1.7
16.4
1.4 / 12.3 / 2.6
YOLO26n-segSegmentazione64054.6
1.2 / 48.0 / 5.3
32.8
1.3 / 24.5 / 7.0
YOLO26n-semSemantica64047.8
1.2 / 38.4 / 8.1
34.2
1.3 / 24.9 / 8.0
YOLO26n-depthProfondità64092.9
1.2 / 84.8 / 6.9
33.5
1.3 / 22.4 / 9.8
YOLO26n-clsClassificazione2242.7
0.2 / 2.3 / 0.2
2.6
0.2 / 2.4 / 0.0
YOLO26n-posePosa64042.8
1.3 / 40.5 / 1.0
18.4
1.4 / 14.1 / 2.9
YOLO26n-obbOBB64037.5
1.3 / 35.1 / 1.2
18.8
2.5 / 14.6 / 1.8

Benchmark: media di 15 chiamate predict() dopo 3 esecuzioni di riscaldamento su bus.jpg, usando ultralytics_yolo 0.6.10 e gli asset ufficiali v0.6.6. L'ordine CPU/GPU si alterna tra le attività in un'unica sequenza. I log nativi hanno confermato che ogni riga CPU usava LiteRT CPU/XNNPACK e ogni riga GPU delegava l'intero grafo a LiteRT OpenCL (LITERT_CL).

Xiaomi 17T Pro#

Hardware: Xiaomi 17T Pro (2602EPTC0G) con 12 GB di memoria LPDDR5X e Android 16 / API 36. Il suo MediaTek Dimensity 9500 a 3 nm (MT6993) integra una CPU Armv9.3 a 8 core (1 core C1-Ultra fino a 4.21 GHz, 3 core C1-Premium fino a 3.5 GHz e 4 core C1-Pro fino a 2.7 GHz), una GPU Mali-G1 Ultra MC12 e una NPU MediaTek 990.

ModelloAttivitàdimensione
(pixel)
CPU
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
YOLO26nRilevamento64045.4
1.3 / 42.1 / 2.0
26.6
1.9 / 22.0 / 2.7
YOLO26n-segSegmentazione640126.2
2.6 / 113.9 / 9.7
46.7
2.6 / 33.3 / 10.8
YOLO26n-semSemantica640117.9
2.6 / 98.8 / 16.5
74.3
2.6 / 54.7 / 17.0
YOLO26n-depthProfondità640182.4
2.5 / 167.6 / 12.3
47.8
2.5 / 32.3 / 12.9
YOLO26n-clsClassificazione2246.2
0.4 / 5.3 / 0.4
7.4
0.4 / 6.9 / 0.1
YOLO26n-posePosa64097.6
2.5 / 93.3 / 1.8
28.6
2.5 / 23.3 / 2.8
YOLO26n-obbOBB64091.5
2.6 / 85.8 / 3.2
27.5
2.7 / 21.8 / 2.9

Benchmark: media di 15 chiamate predict() dopo 3 esecuzioni di riscaldamento su bus.jpg, usando ultralytics_yolo 0.6.10 e gli asset ufficiali v0.6.6. L'ordine CPU/GPU si alterna tra le attività in un'unica sequenza. I log nativi hanno confermato che ogni riga CPU usava LiteRT CPU/XNNPACK e ogni riga GPU delegava l'intero grafo a LiteRT OpenCL (LITERT_CL).

Attività supportate#

L'esportazione LiteRT supporta tutte e sette le attività Ultralytics. La segmentazione semantica e la stima della profondità sono disponibili solo con YOLO26, l'unica famiglia che include queste head.

AttivitàYOLOv8YOLO11YOLO26
Rilevamento✅✅✅
Segmentazione✅✅✅
Semantica❌❌✅
Profondità❌❌✅
Classificazione✅✅✅
Stima della posa✅✅✅
OBB✅✅✅

Esportazione in LiteRT: convertire il tuo modello YOLO#

Puoi migliorare l'efficienza dell'esecuzione sul dispositivo e ampliare le opzioni di deployment convertendo i tuoi modelli nel formato LiteRT.

Installazione#

Per installare il pacchetto richiesto, esegui:

Installazione
# Install the required package for YOLO
pip install ultralytics

Per istruzioni dettagliate e best practice, consulta la nostra guida all'installazione di Ultralytics. Se riscontri difficoltà, consulta la nostra guida ai problemi comuni.

Supporto della piattaforma

L'esportazione LiteRT è attualmente supportata su Linux x86_64 e macOS. Il modello .tflite esportato può essere eseguito su tutte le piattaforme supportate da LiteRT (dispositivi mobili, embedded, edge e browser).

Utilizzo#

Tutti i modelli Ultralytics YOLO supportano l'esportazione senza configurazioni aggiuntive. Il formato LiteRT supporta le modalità Export, Predict e Validate: puoi esportare un modello e poi caricarlo per eseguire inferenze o convalidarne localmente la precisione.

Esporta
from ultralytics import YOLO

# Carica un modello YOLO26
model = YOLO("yolo26n.pt")

# Esporta il modello nel formato LiteRT
model.export(format="litert", imgsz=640)  # crea 'yolo26n.tflite'; usa imgsz=224 per la classificazione
Esportazione quantizzata
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# INT8 dinamica: pesi int8, attivazioni FP32: non sono necessari dati di calibrazione
model.export(format="litert", quantize="w8a32", imgsz=640)  # crea 'yolo26n_w8a32.tflite'

# INT8 statica: pesi int8 + attivazioni int8: richiede dati di calibrazione
model.export(format="litert", quantize=8, data="coco8.yaml", imgsz=640)  # crea 'yolo26n_int8.tflite'

# w8a16 statica: pesi int8 + attivazioni int16 (maggiore precisione): richiede dati di calibrazione
model.export(format="litert", quantize="w8a16", data="coco8.yaml", imgsz=640)  # crea 'yolo26n_w8a16.tflite'
Predici
from ultralytics import YOLO

# Carica il modello LiteRT esportato
model = YOLO("yolo26n.tflite")

# Esegui l'inferenza
results = model("https://ultralytics.com/images/bus.jpg")
Convalida
from ultralytics import YOLO

# Carica il modello LiteRT esportato
model = YOLO("yolo26n.tflite")

# # Convalida l'accuratezza sul dataset COCO8
metrics = model.val(data="coco8.yaml")

Argomenti di esportazione#

ArgomentoTipoPredefinitoDescrizione
formatstr'litert'Formato di destinazione del modello esportato, che definisce la compatibilità con i vari ambienti di distribuzione.
imgszint o tuple640Dimensione dell'immagine desiderata per l'input del modello. Può essere un intero per immagini quadrate o una tupla (height, width) per dimensioni specifiche.
quantizeint o strNonePrecisione 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 (vedi nota sotto). Sostituisce i flag deprecati half/int8.
batchint1Specifica la dimensione batch per l'inferenza del modello esportato o il numero massimo di immagini che il modello esportato elaborerà contemporaneamente in modalità predict.
datastrNoneFile YAML del dataset usato per la calibrazione INT8; per la classificazione si usa 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.
fractionfloat, int o list1.0Sottoinsieme 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.
devicestrNoneSpecifica il dispositivo per l'esportazione. L'esportazione LiteRT viene eseguita sulla CPU (device=cpu).
Precisione FP16

A differenza della precedente esportazione tflite, LiteRT non richiede un'esportazione FP16 separata. Un modello .tflite FP32 viene eseguito in precisione dimezzata in fase di esecuzione quando si usa un delegate GPU (WebGPU, OpenCL, Metal): questo è l'approccio ufficiale di LiteRT all'inferenza FP16.

Per ulteriori dettagli sul processo di esportazione, visita la pagina della documentazione Ultralytics dedicata all'esportazione.

Distribuzione dei modelli YOLO LiteRT esportati#

Dopo aver esportato il tuo modello Ultralytics YOLO in LiteRT, puoi distribuirlo su diverse piattaforme. Il modo più rapido per verificarlo localmente è il metodo YOLO("yolo26n.tflite") mostrato sopra. Per distribuirlo in altri ambienti, consulta le risorse seguenti:

Mobile e sistemi embedded#

  • Android: una guida introduttiva rapida per integrare LiteRT nelle applicazioni Android.
  • iOS: una guida per integrare e distribuire modelli LiteRT nelle applicazioni iOS.
  • Linux embedded e Raspberry Pi: esegui modelli LiteRT su computer a scheda singola, con accelerazione opzionale tramite Coral Edge TPU.
  • Microcontrollori: distribuisci su MCU con solo pochi kilobyte di memoria: il runtime di base occupa circa 16 KB su un Arm Cortex-M3.

Browser e Node.js (LiteRT.js)#

  • Panoramica di LiteRT.js: esegui lo stesso modello .tflite direttamente nel browser con accelerazione WebGPU/WASM, eliminando i calcoli lato server e mantenendo i dati sul dispositivo dell'utente.
  • Esempi end-to-end: esempi pratici ed esercitazioni per implementare LiteRT su dispositivi mobili, edge e web.

Riepilogo#

In questa guida abbiamo illustrato come esportare i modelli Ultralytics YOLO nel formato LiteRT. Riunendo la distribuzione su dispositivi mobili/edge (in precedenza TFLite) e nel browser (in precedenza TF.js) in un unico modello .tflite, LiteRT rende i tuoi modelli YOLO più veloci, più piccoli e portabili praticamente su qualsiasi destinazione on-device.

Per ulteriori dettagli, visita la documentazione ufficiale di LiteRT.

Inoltre, se vuoi conoscere altre integrazioni Ultralytics YOLO, consulta la nostra pagina della guida alle integrazioni, ricca di risorse utili.

Domande frequenti#

  • Usa la libreria Ultralytics per esportare un modello YOLO in LiteRT (.tflite). Per prima cosa, installa il pacchetto:

    pip install ultralytics

    Poi esporta 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 classificazione

    Per chi usa la CLI:

    yolo export model=yolo26n.pt format=litert imgsz=640 # use imgsz=224 for classification

    Per ulteriori dettagli, visita la guida all'esportazione di Ultralytics.

  • LiteRT è il nuovo nome di TensorFlow Lite: stesso formato di modello .tflite, stessa evoluzione del runtime, nuovo marchio scelto da Google. In Ultralytics, un unico formato di esportazione litert ora copre entrambi i casi d'uso che in precedenza richiedevano due formati separati:

    • Il vecchio formato tflite → distribuzione su dispositivi mobili, embedded ed edge.
    • Il vecchio formato tfjs → distribuzione su browser e Node.js, ora gestita da LiteRT.js, che esegue lo stesso file .tflite.

    Se hai già un file .tflite, puoi caricarlo direttamente con YOLO("model.tflite") e verrà eseguito tramite il backend LiteRT.

  • Sì. Esporta il modello nel formato LiteRT, quindi eseguilo su Raspberry Pi per migliorare la velocità di inferenza. Per un'ulteriore ottimizzazione, valuta l'uso di Coral Edge TPU. Per i passaggi dettagliati, consulta la nostra guida alla distribuzione su Raspberry Pi.

  • Sì. LiteRT.js esegue lo stesso modello esportato .tflite direttamente in un browser web o in un'applicazione Node.js, con accelerazione WebGPU/WASM. Sostituisce il precedente flusso di lavoro TensorFlow.js: non serve un'esportazione separata per il browser, basta distribuire il modello LiteRT con il runtime LiteRT.js.

  • Sì, in fase di esecuzione. Un modello LiteRT FP32 viene eseguito automaticamente in FP16 quando utilizza un delegato GPU (WebGPU, OpenCL o Metal), secondo l'approccio ufficiale di LiteRT. Non serve quindi un'esportazione FP16 dedicata; per un'ulteriore compressione, usa la quantizzazione INT8 con quantize=8.

  • Se riscontri errori durante l'esportazione di modelli YOLO in LiteRT, ecco alcune soluzioni comuni:

    • Verifica la piattaforma: l'esportazione LiteRT è supportata su Linux x86_64 e macOS. Verifica che il tuo ambiente sia compatibile.
    • Verifica la compatibilità del pacchetto: assicurati di usare una versione compatibile di Ultralytics. Consulta la nostra guida all'installazione.
    • 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.

Commenti