Esporta modelli YOLO in LiteRT per la distribuzione su dispositivi edge e sul web#
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.
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.
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.
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/corePerché 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
.tflitecon 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 17 / API 37. 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.
| Modello | Attività | dimensione (pixel) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) | NPU LiteRT FP32 (ms) |
|---|---|---|---|---|---|
| YOLO26n | Rilevamento | 640 | 36.9 1.9 / 32.6 / 2.3 | 10.6 1.8 / 6.2 / 2.6 | 10.1 3.5 / 4.0 / 2.5 |
| YOLO26n-seg | Segmentazione | 640 | 50.5 1.9 / 42.9 / 5.8 | 18.0 1.9 / 9.5 / 6.6 | 19.2 3.6 / 5.9 / 9.7 |
| YOLO26n-sem | Semantica | 640 | 45.7 1.9 / 35.7 / 8.2 | 30.6 1.9 / 20.5 / 8.3 | 25.8 3.6 / 11.0 / 11.3 |
| YOLO26n-depth | Profondità | 640 | 66.8 2.2 / 55.0 / 9.7 | 21.9 2.1 / 10.1 / 9.8 | 24.8 4.3 / 6.0 / 14.5 |
| YOLO26n-cls | Classificazione | 224 | 3.6 0.3 / 3.3 / 0.0 | 2.0 0.4 / 1.4 / 0.2 | 1.5 0.6 / 0.7 / 0.3 |
| YOLO26n-pose | Posa | 640 | 39.9 2.0 / 36.5 / 1.4 | 10.0 1.8 / 6.7 / 1.4 | 11.5 3.5 / 4.2 / 3.8 |
| YOLO26n-obb | OBB | 640 | 36.3 2.0 / 33.2 / 1.2 | 10.1 2.6 / 5.9 / 1.6 | 8.2 3.5 / 3.7 / 0.9 |
- I valori di velocità sono latenze a raffica su singola immagine: la media di 15 esecuzioni dopo 3 esecuzioni di riscaldamento su
bus.jpg, misurata con il plugin Flutter di Ultralytics0.7.1e gli asset ufficialiv0.7.0(esportazioni di Ultralytics 8.4.188). L'ordine CPU/GPU è stato alternato tra le attività in un'unica sequenza di test. I log nativi hanno confermato che ogni riga CPU usava LiteRT CPU/XNNPACK e ogni riga GPU delegava il grafo completo a LiteRT OpenCL (LITERT_CL). - L'esportazione LiteRT traccia direttamente il modello PyTorch, generando un
.tfliteNCHW con input float: il delegate GPU compila l'intero grafo (qui tutte e sette le attività vengono eseguite sulla GPU Adreno) ew8a32non 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 outputIdentity; 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 releasev0.7.0di yolo-flutter-app; il documento sulle prestazioni di Flutter contiene i dettagli completi del benchmark. - La colonna NPU indica il percorso NPU di LiteRT: un'esportazione FP32 (
yolo export format=litert, senzaquantize) compilata sul dispositivo dai runtimelitert-npu-runtime-qualcomme-mediatek2.3.0, misurata con una build prototipo del plugin Flutter per NPU (non ancora rilasciata). Il primo caricamento include la compilazione (circa 0.3 s pern, fino a 6 s perx). Gli assetw8a32non vengono compilati completamente su queste NPU. LiteRT segnala una compilazione NPU anche quando esegue silenziosamente il grafo sulla GPU, quindi ogni riga NPU è stata confrontata con il tempo GPU; le righe che sono passate alla GPU sono indicate con —. - I valori corrispondenti per la NPU Hexagon Snapdragon con gli asset QNN ufficiali sono disponibili nell'integrazione Qualcomm QNN.
- Confronta i risultati di CPU/acceleratore Apple nell'integrazione CoreML.
I seguenti test comparativi sui dispositivi utilizzano gli stessi asset ufficiali v0.7.0.
Google Pixel 10#
Hardware: Google Pixel 10 con 12 GB di memoria e Android 17 / API 37. 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 dal dispositivo usato per i test comparativi, perché Google non li pubblica nelle specifiche collegate.
| Modello | Attività | dimensione (pixel) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | Rilevamento | 640 | 36.6 1.5 / 33.5 / 1.6 | 36.5 3.5 / 28.4 / 4.6 |
| YOLO26n-seg | Segmentazione | 640 | 53.1 1.5 / 45.8 / 5.7 | 51.5 1.6 / 40.1 / 9.9 |
| YOLO26n-sem | Semantica | 640 | 57.2 1.5 / 47.7 / 8.0 | 75.9 1.8 / 63.4 / 10.8 |
| YOLO26n-depth | Profondità | 640 | 75.0 1.6 / 65.1 / 8.3 | 50.1 1.7 / 33.5 / 14.9 |
| YOLO26n-cls | Classificazione | 224 | 6.1 0.3 / 5.5 / 0.3 | 12.1 0.9 / 11.0 / 0.1 |
| YOLO26n-pose | Posa | 640 | 35.2 1.5 / 31.9 / 1.8 | 38.2 3.5 / 29.3 / 5.4 |
| YOLO26n-obb | OBB | 640 | 32.7 1.5 / 29.3 / 1.9 | 38.8 3.8 / 29.6 / 5.4 |
Test comparativo: media di 15 chiamate predict() dopo 3 esecuzioni di riscaldamento su bus.jpg, usando ultralytics_yolo 0.7.1 e gli asset ufficiali v0.7.0. L'ordine CPU/GPU si alterna tra le attività in un'unica sequenza di test. I log nativi hanno confermato che ogni riga CPU usava LiteRT CPU/XNNPACK e ogni riga GPU delegava il grafo completo a LiteRT OpenCL (LITERT_CL). La TPU Tensor non ha una riga LiteRT: il servizio EdgeTPU di Google rifiuta le app che non sono nella relativa lista di autorizzazione e LiteRT esegue quindi il modello sulla GPU.
Samsung Galaxy S26#
Hardware: Samsung Galaxy S26 (SM-S942B) con 12 GB di memoria e Android 17 / API 37. 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.
| Modello | Attività | dimensione (pixel) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) | NPU LiteRT w8a32 AOT (ms) |
|---|---|---|---|---|---|
| YOLO26n | Rilevamento | 640 | 30.2 1.3 / 27.3 / 1.6 | 15.9 1.4 / 11.5 / 2.9 | 12.2 1.3 / 8.6 / 2.2 |
| YOLO26n-seg | Segmentazione | 640 | 45.6 1.3 / 39.1 / 5.2 | 30.5 1.3 / 23.6 / 5.6 | 17.0 1.4 / 9.7 / 5.8 |
| YOLO26n-sem | Semantica | 640 | 38.1 1.3 / 28.6 / 8.2 | 26.1 1.3 / 16.8 / 7.9 | 28.3 1.7 / 15.1 / 11.5 |
| YOLO26n-depth | Profondità | 640 | 63.5 1.4 / 53.6 / 8.4 | 37.3 1.4 / 24.6 / 11.3 | 28.4 2.1 / 12.9 / 13.4 |
| YOLO26n-cls | Classificazione | 224 | 3.8 0.2 / 3.4 / 0.2 | 2.8 0.2 / 2.6 / 0.0 | 6.1 0.5 / 5.2 / 0.4 |
| YOLO26n-pose | Posa | 640 | 31.1 1.3 / 28.4 / 1.4 | 18.4 1.6 / 13.0 / 3.8 | 13.5 1.8 / 9.5 / 2.2 |
| YOLO26n-obb | OBB | 640 | 27.9 1.3 / 25.7 / 0.9 | 15.3 1.9 / 11.4 / 2.1 | 11.4 1.7 / 8.3 / 1.4 |
Test comparativo: media di 15 chiamate predict() dopo 3 esecuzioni di riscaldamento su bus.jpg, usando ultralytics_yolo 0.7.1 e gli asset ufficiali v0.7.0. L'ordine CPU/GPU si alterna tra le attività in un'unica sequenza di test. I log nativi hanno confermato che ogni riga CPU usava LiteRT CPU/XNNPACK e ogni riga GPU delegava il grafo completo a LiteRT OpenCL (LITERT_CL). La colonna NPU usa gli asset w8a32 compilati in anticipo per Exynos 2600 (E9965) con il plugin del compilatore Samsung di LiteRT. Samsung non dispone di un compilatore sul dispositivo in LiteRT 2.3 e Google non pubblica ancora un runtime per NPU Samsung, quindi per queste righe è stata usata una libreria di dispatch creata dai sorgenti di LiteRT 2.3.
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.
| Modello | Attività | dimensione (pixel) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) | NPU LiteRT FP32 (ms) |
|---|---|---|---|---|---|
| YOLO26n | Rilevamento | 640 | 31.4 1.5 / 28.0 / 1.9 | 25.6 1.4 / 22.2 / 2.0 | 11.0 1.3 / 7.8 / 1.8 |
| YOLO26n-seg | Segmentazione | 640 | 77.8 2.6 / 65.3 / 9.9 | 47.4 2.6 / 33.6 / 11.3 | 36.5 2.6 / 23.4 / 10.4 |
| YOLO26n-sem | Semantica | 640 | 81.3 2.6 / 62.2 / 16.5 | 79.3 2.6 / 59.5 / 17.1 | 87.6 2.6 / 68.3 / 16.7 |
| YOLO26n-depth | Profondità | 640 | 111.3 3.4 / 91.1 / 16.8 | 55.3 2.8 / 36.3 / 16.1 | — |
| YOLO26n-cls | Classificazione | 224 | 6.3 0.5 / 5.4 / 0.4 | 8.1 0.5 / 7.5 / 0.1 | 3.2 0.5 / 2.2 / 0.5 |
| YOLO26n-pose | Posa | 640 | 53.9 2.6 / 49.5 / 1.8 | 32.8 2.7 / 26.7 / 3.4 | 16.2 2.9 / 11.1 / 2.3 |
| YOLO26n-obb | OBB | 640 | 49.5 2.7 / 44.4 / 2.4 | 29.4 2.8 / 22.7 / 3.9 | — |
Benchmark: media di 15 chiamate a predict() dopo 3 fasi di riscaldamento su bus.jpg, usando ultralytics_yolo 0.7.1 e gli asset ufficiali v0.7.0. L'ordine CPU/GPU si alterna tra le attività durante un'unica esecuzione sequenziale. I log nativi hanno confermato che ogni riga CPU usava LiteRT CPU/XNNPACK e che ogni riga GPU delegava l'intero grafo a LiteRT OpenCL (LITERT_CL). Profondità e OBB non hanno risultati NPU: il compilatore NPU di MediaTek rifiuta le operazioni esponenziali e trigonometriche e LiteRT esegue questi grafi sulla GPU.
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à | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| 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:
# Install the required package for YOLO
pip install ultralyticsPer istruzioni dettagliate e best practice, consulta la nostra guida all'installazione di Ultralytics. Se riscontri difficoltà, consulta la nostra guida ai problemi comuni.
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.
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 classificazionefrom 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'from ultralytics import YOLO
# Carica il modello LiteRT esportato
model = YOLO("yolo26n.tflite")
# Esegui l'inferenza
results = model("https://ultralytics.com/images/bus.jpg")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#
| 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 (vedi nota sotto). 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 | File 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. |
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. L'esportazione LiteRT viene eseguita sulla CPU (device=cpu). |
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.
Inferenza su CPU e NPU Intel#
I modelli .tflite esportati vengono eseguiti sull'hardware Intel tramite il plugin LiteRT Intel OpenVINO. Passa device=intel:cpu oppure device=intel:npu e Ultralytics installa ai-edge-litert>=2.3.0 e ai-edge-litert-sdk-intel al primo utilizzo. La NPU richiede un processore Intel Core Ultra con il driver Intel NPU installato.
from ultralytics import YOLO
model = YOLO("yolo26n.tflite")
results = model("https://ultralytics.com/images/bus.jpg", device="intel:npu") # oppure "intel:cpu"Hardware: Intel Core Ultra X7 358H (Panther Lake) e Intel AI Boost NPU 5010, Fedora Linux, driver NPU 1.38.0, ai-edge-litert 2.3.0.
| Modello | Attività | dimensione (pixel) | CPU w8a32 LiteRT (ms) | CPU w8a32 Intel (ms) | NPU w8a32 Intel (ms) |
|---|---|---|---|---|---|
| YOLO26n | Rilevamento | 640 | 17.5 0.8 / 16.1 / 0.6 | 22.6 1.2 / 20.6 / 0.8 | 4.8 1.0 / 3.3 / 0.4 |
| YOLO26n-seg | Segmentazione | 640 | 24.2 0.9 / 22.1 / 1.3 | 32.6 1.0 / 30.1 / 1.5 | 6.2 0.8 / 4.2 / 1.2 |
| YOLO26n-sem | Semantica | 640 | 25.2 1.0 / 14.2 / 10.0 | 33.1 1.1 / 21.9 / 10.2 | 16.5 1.0 / 5.5 / 10.0 |
| YOLO26n-depth | Profondità | 640 | 31.7 0.9 / 30.2 / 0.5 | 76.6 0.9 / 75.2 / 0.5 | 9.1 1.0 / 7.5 / 0.5 |
| YOLO26n-cls | Classificazione | 224 | 4.6 2.8 / 1.7 / 0.0 | 7.3 3.3 / 3.9 / 0.0 | 4.1 3.2 / 0.9 / 0.0 |
| YOLO26n-pose | Posa | 640 | 20.3 0.8 / 19.0 / 0.5 | 28.6 1.1 / 26.8 / 0.8 | 6.3 0.8 / 4.9 / 0.5 |
| YOLO26n-obb | OBB | 640 | 17.2 0.8 / 16.1 / 0.3 | 22.1 1.2 / 20.5 / 0.4 | 4.6 0.9 / 3.4 / 0.3 |
Benchmark: Media di 15 chiamate predict() dopo 3 cicli di riscaldamento su bus.jpg, usando ultralytics 8.4.174 e ai-edge-litert 2.3.0 con esportazioni w8a32. Ogni cella mostra il tempo totale, con la suddivisione tra pre-elaborazione, inferenza e post-elaborazione riportata sotto.
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
.tflitedirettamente 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 ultralyticsPoi 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 classificazionePer chi usa la CLI:
yolo export model=yolo26n.pt format=litert imgsz=640 # use imgsz=224 for classificationPer 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 esportazionelitertora 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 conYOLO("model.tflite")e verrà eseguito tramite il backend LiteRT.- Il vecchio formato
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
.tflitedirettamente 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.