Ultralytics YOLO27:

Esporta i 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 sul dispositivo. È la generazione successiva e il nuovo nome di TensorFlow Lite (TFLite) ed esegue lo stesso formato di modello .tflite. Con LiteRT, un singolo modello Ultralytics YOLO esportato può essere distribuito su dispositivi mobili, embedded, edge e browser, coprendo tutto ciò che i precedenti formati di esportazione tflite e tfjs gestivano separatamente, ora sotto un unico ombrello.



Watch: How to Export Ultralytics YOLO26 to Google LiteRT | Deploy Vision AI on Android & iOS | Mobile AI 📱🚀

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, consentendo loro di 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 Flutter ufficiale di Ultralytics YOLO esegue le esportazioni LiteRT .tflite su Android immediatamente, con inferenza in tempo reale dalla fotocamera, predizione su singola immagine, accelerazione GPU e download automatico del modello 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 mobili ufficiali

Esporta i modelli di classificazione in imgsz=224. Esporta i modelli di rilevamento, segmentazione, 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 di Ultralytics YOLO esegue direttamente nel browser le esportazioni LiteRT .tflite tramite LiteRT.js, senza server né Python, con inferenza in tempo reale dalla webcam, predizione su singola immagine e accelerazione WebGPU (fallback automatico a CPU/WASM) per tutte e sei le attività di YOLO26 (rilevamento, segmentazione, posa, OBB, classificazione, segmentazione semantica). 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 sul dispositivo, noto anche come edge computing. Fornisce agli sviluppatori gli strumenti per eseguire modelli addestrati su dispositivi mobili, 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 ed 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 lo stesso modello .tflite sul web con accelerazione WebGPU/WASM, eliminando la necessità di un'esportazione TensorFlow.js separata.

Caratteristiche principali dei modelli LiteRT#

  • Ottimizzazione sul dispositivo: riduce la latenza elaborando i dati localmente, migliora la privacy non trasmettendo dati personali e riduce al minimo le dimensioni del modello per risparmiare spazio.
  • Supporto per 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 delegato GPU esegue i calcoli in FP16 per una velocità aggiuntiva.
  • Quantizzazione: supporta FP32, INT8 statico (quantize=8, pesi int8 + attivazioni int8), attivazioni INT16 statiche (quantize="w8a16", pesi int8 + attivazioni int16 per una maggiore accuratezza) e INT8 dinamico (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 accuratezza.
  • Ampio supporto dei 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) 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.

ModelloAttivitàdimensione
(pixel)
CPU
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
YOLO26nDetect64052.2
1.8 / 48.1 / 2.4
15.8
2.3 / 8.9 / 4.6
YOLO26n-segSegment64073.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 burst su singola immagine, ovvero 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 v0.6.6 standardizzati. L'ordine CPU/GPU è stato alternato tra le attività in un'unica sequenza. I log nativi hanno confermato che ogni riga della CPU utilizzava LiteRT CPU/XNNPACK e che ogni riga della GPU delegava il grafo completo a LiteRT OpenCL (LITERT_CL).
  • L'esportazione LiteRT traccia direttamente il modello PyTorch, producendo un .tflite NCHW con input float; il delegato GPU compila l'intero grafo (qui tutte e sette le attività vengono eseguite sulla GPU Adreno) e w8a32 non richiede dati di calibrazione. Chi integra il modello deve leggere le forme dei tensori e i nomi delle signature invece di presumere il layout NHWC legacy di onnx2tf o i nomi di output Identity; inserisci direttamente i dati RGB come CHW planare oppure trasponili prima dell'inferenza. Le esportazioni semantiche restituiscono logit NCHW e richiedono un argmax della classe sul lato host. Gli asset Android ufficiali sono ospitati nella release v0.6.6 di yolo-flutter-app, con il benchmark dettagliato nel documento sulle prestazioni di Flutter.
  • I risultati della NPU Hexagon Snapdragon corrispondente e quelli di LiteRT su CPU/GPU sono disponibili nell'integrazione Qualcomm QNN.
  • Confronta i risultati di CPU/acceleratore Apple nell'integrazione CoreML.

Le seguenti serie di test sui dispositivi utilizzano gli stessi asset v0.6.6 standardizzati.

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 dispone di 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), GPU PowerVR D-Series e Google TPU. Le frequenze dei core e il nome del driver GPU sono stati letti dal dispositivo usato per il benchmark, perché Google non li pubblica nelle specifiche collegate.

ModelloAttivitàdimensione
(pixel)
CPU
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
YOLO26nDetect64053.3
1.5 / 50.2 / 1.6
45.5
3.8 / 37.7 / 4.0
YOLO26n-segSegment64087.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 riscaldamenti su bus.jpg, utilizzando ultralytics_yolo, 0.6.10 e gli asset ufficiali v0.6.6. L'ordine CPU/GPU alterna tra le attività in un'unica sequenza. I log nativi hanno confermato che ogni riga della CPU utilizzava LiteRT CPU/XNNPACK e che ogni riga della GPU delegava il grafo completo 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 dispone di 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 ad alta efficienza fino a 2,76 GHz), GPU Xclipse 960 e NPU Samsung.

ModelloAttivitàdimensione
(pixel)
CPU
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
YOLO26nDetect64036.7
1.3 / 33.8 / 1.7
16.4
1.4 / 12.3 / 2.6
YOLO26n-segSegment64054.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 riscaldamenti su bus.jpg, utilizzando ultralytics_yolo, 0.6.10 e gli asset ufficiali v0.6.6. L'ordine CPU/GPU alterna tra le attività in un'unica sequenza. I log nativi hanno confermato che ogni riga della CPU utilizzava LiteRT CPU/XNNPACK e che ogni riga della GPU delegava il grafo completo 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 (MT6993) dispone di 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), GPU Mali-G1 Ultra MC12 e NPU MediaTek 990.

ModelloAttivitàdimensione
(pixel)
CPU
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
YOLO26nDetect64045.4
1.3 / 42.1 / 2.0
26.6
1.9 / 22.0 / 2.7
YOLO26n-segSegment640126.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 riscaldamenti su bus.jpg, utilizzando ultralytics_yolo, 0.6.10 e gli asset ufficiali v0.6.6. L'ordine CPU/GPU alterna tra le attività in un'unica sequenza. I log nativi hanno confermato che ogni riga della CPU utilizzava LiteRT CPU/XNNPACK e che ogni riga della GPU delegava il grafo completo a LiteRT OpenCL (LITERT_CL).

Attività supportate#

L'esportazione LiteRT supporta tutte e sette le attività di 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
Posa
OBB

Esportazione in LiteRT: conversione del tuo modello YOLO#

Puoi migliorare l'efficienza dell'esecuzione sul dispositivo e ampliare le opzioni di distribuzione 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 delle piattaforme

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

Utilizzo#

Tutti gli Ultralytics YOLO models supportano l'esportazione immediatamente. Il formato LiteRT supporta le modalità Export, Predict e Validate, quindi puoi esportare un modello e poi caricarlo per eseguire l'inferenza o verificarne localmente l'accuratezza.

Esportazione
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 classification
Esportazione quantizzata
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Dynamic INT8: int8 weights, FP32 activations - no calibration data needed
model.export(format="litert", quantize="w8a32", imgsz=640)  # use imgsz=224 for classification

# Static INT8: int8 weights + int8 activations - needs calibration data
model.export(format="litert", quantize=8, data="coco8.yaml", imgsz=640)  # use 224 for classification

# Static w8a16: int8 weights + int16 activations (higher accuracy) - needs calibration data
model.export(format="litert", quantize="w8a16", data="coco8.yaml", imgsz=640)  # use 224 for classification
Predizione
from ultralytics import YOLO

# Load the exported LiteRT model
model = YOLO("yolo26n.tflite")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Valida
from ultralytics import YOLO

# Load the exported LiteRT model
model = YOLO("yolo26n.tflite")

# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")

Argomenti di esportazione#

ArgomentoTipoPredefinitoDescrizione
formatstr'litert'Formato di destinazione del modello esportato, che definisce la compatibilità con diversi ambienti di distribuzione.
imgszint o tuple640Dimensione desiderata dell'immagine per l'input del modello. Può essere un numero intero per immagini quadrate o una tupla (height, width) per dimensioni specifiche.
quantizeint o strNonePrecisione della quantizzazione: 8 (INT8 statico, pesi int8 + attivazioni int8; richiede la calibrazione data/fraction), 'w8a16' (statica, pesi int8 + attivazioni int16; richiede la calibrazione data/fraction), 'w8a32' (INT8 dinamico, pesi int8 + attivazioni FP32; non richiede calibrazione) oppure 32/non impostata (FP32). FP16 non viene esportato separatamente (vedi la nota sotto). Sostituisce i flag deprecati half/int8.
batchint1Specifica la dimensione del batch di inferenza del modello esportato o il numero massimo di immagini che il modello esportato elaborerà simultaneamente in modalità predict.
datastrNoneFile YAML del dataset utilizzato 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.
devicestrNoneSpecifica il dispositivo per l'esportazione. L'esportazione LiteRT viene eseguita sulla CPU (device=cpu).
Precisione FP16

A differenza dell'esportazione legacy tflite, LiteRT non richiede un'esportazione FP16 separata. Un modello FP32 .tflite viene eseguito in precisione dimezzata in fase di runtime quando si utilizza un delegato GPU (WebGPU, OpenCL, Metal): questo è l'approccio ufficiale di LiteRT per l'inferenza FP16.

Per ulteriori dettagli sul processo di esportazione, visita la pagina della documentazione Ultralytics sull'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 la distribuzione in altri ambienti, consulta le risorse seguenti:

Dispositivi mobili e sistemi embedded#

  • Android: guida introduttiva rapida per integrare LiteRT nelle applicazioni Android.
  • iOS: 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 una Coral Edge TPU.
  • Microcontrollori: distribuisci i modelli su MCU con solo pochi kilobyte di memoria: il runtime principale 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 e tutorial per implementare LiteRT su dispositivi mobili, edge e web.

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 nei browser (in precedenza TF.js) in un unico modello .tflite, LiteRT rende i tuoi modelli YOLO più veloci, compatti e portabili su quasi tutti i target 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, che offre numerose risorse utili.

FAQ#

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

    pip install ultralytics

    Quindi esporta 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 classification

    Per gli utenti della 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 del modello .tflite, stessa linea evolutiva del runtime, con un nuovo marchio introdotto da Google. In Ultralytics, l'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, sistemi embedded ed edge.
    • Il vecchio formato tfjs → distribuzione nei browser e in Node.js, ora gestita da LiteRT.js, che esegue lo stesso file .tflite.

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

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

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

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

  • Se riscontri errori durante l'esportazione dei modelli YOLO in LiteRT, tra le soluzioni comuni ci sono:

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

Commenti