Exportar modelos YOLO para LiteRT para implementação em dispositivos edge e na Web#
LiteRT (abreviação de Lite Runtime) é o runtime de alto desempenho da Google para IA no dispositivo. É a próxima geração e o novo nome do TensorFlow Lite (TFLite), e executa o mesmo formato de modelo .tflite. Com o LiteRT, um único modelo Ultralytics YOLO exportado é implementado em dispositivos móveis, incorporados, edge e no navegador — abrangendo tudo o que os antigos formatos de exportação tflite e tfjs tratavam separadamente, agora sob uma única plataforma.
Watch: How to Export Ultralytics YOLO26 to Google LiteRT | Deploy Vision AI on Android & iOS | Mobile AI 📱🚀
O formato de exportação LiteRT otimiza os teus modelos para tarefas como deteção de objetos, segmentação, estimativa de pose e classificação, para que funcionem rapidamente e offline numa vasta gama de dispositivos.
O plugin oficial Ultralytics YOLO para Flutter executa exportações LiteRT .tflite no Android imediatamente — inferência de câmara em tempo real, previsão de imagens individuais, aceleração por GPU e transferência automática de modelos para todas as sete tarefas do YOLO26, incluindo Depth. Para dispositivos Apple, utiliza a exportação CoreML; para NPUs Qualcomm Snapdragon, consulta a integração Qualcomm QNN.
Exporta modelos de classificação em imgsz=224. Exporta modelos de deteção, segmentação, semânticos, de profundidade, pose e OBB em
imgsz=640. Este padrão 224/640 é partilhado pelos recursos móveis oficiais LiteRT, CoreML e QNN.
O pacote NPM oficial Ultralytics YOLO executa exportações LiteRT .tflite diretamente no navegador através do LiteRT.js, sem necessidade de servidor ou Python — com inferência de webcam em tempo real, previsão de imagens individuais e aceleração WebGPU (fallback automático para CPU/WASM) nas seis tarefas do YOLO26 (deteção, segmentação, pose, OBB, classificação e semântica). No WebGPU, é frequentemente ~2× mais rápido do que o ONNX Runtime Web.
npm i @ultralytics/yolo @litertjs/corePor que deves exportar para LiteRT?#
LiteRT é uma framework de código aberto concebida para inferência no dispositivo, também conhecida como computação edge. Fornece aos programadores as ferramentas para executar modelos treinados em dispositivos móveis, incorporados e IoT, computadores tradicionais e — através do LiteRT.js — diretamente em navegadores Web e no Node.js.
Um formato de modelo, todos os destinos:
- Móvel e incorporado: Android, iOS, Linux incorporado e microcontroladores (MCUs).
- Aceleradores edge: Compatível com o Coral Edge TPU para aceleração adicional.
- Navegador e Node.js: O LiteRT.js executa o mesmo modelo
.tflitena Web com aceleração WebGPU/WASM — eliminando a necessidade de uma exportação TensorFlow.js separada.
Principais funcionalidades dos modelos LiteRT#
- Otimização no dispositivo: Reduz a latência ao processar os dados localmente, melhora a privacidade ao não transmitir dados pessoais e minimiza o tamanho do modelo para poupar espaço.
- Suporte a várias plataformas: Funciona em Android, iOS, Linux incorporado, microcontroladores e navegadores Web modernos.
- Aceleração de hardware: Utiliza XNNPACK na CPU e aceleração por GPU através de OpenCL, Metal e WebGPU. O delegado da GPU funciona por predefinição em FP16 para proporcionar velocidade adicional.
- Quantização: Suporta FP32, INT8 estático (
quantize=8, pesos int8 + ativações int8), ativação INT16 estática (quantize="w8a16", pesos int8 + ativações int16 para maior precisão) e INT8 dinâmico (quantize="w8a32", pesos int8 + ativações FP32, sem necessidade de dados de calibração) para comprimir modelos e acelerar a inferência com perda mínima de precisão. - Suporte a várias linguagens: Compatível com Java/Kotlin, Swift, Objective-C, C++, Python e JavaScript.
Desempenho medido#
Hardware: Xiaomi 17 com 12 GB de memória LPDDR5X e Android 16 / API 36. O seu Snapdragon 8 Elite Gen 5 de 3 nm (SM8850) tem uma CPU Qualcomm Oryon de 8 núcleos (2 núcleos Prime até 4.6 GHz e 6 núcleos Performance até 3.62 GHz), GPU Adreno e NPU Hexagon.
| Modelo | Tarefa | tamanho (píxeis) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | Deteção | 640 | 52.2 1.8 / 48.1 / 2.4 | 15.8 2.3 / 8.9 / 4.6 |
| YOLO26n-seg | Segmentação | 640 | 73.4 1.8 / 65.6 / 6.0 | 33.2 1.8 / 23.8 / 7.6 |
| YOLO26n-sem | Semântica | 640 | 61.2 1.8 / 51.1 / 8.3 | 34.2 1.8 / 24.0 / 8.3 |
| YOLO26n-depth | Profundidade | 640 | 124.4 1.9 / 115.1 / 7.4 | 23.0 1.8 / 13.5 / 7.7 |
| YOLO26n-cls | Classificação | 224 | 4.4 0.4 / 4.0 / 0.0 | 3.1 0.8 / 2.1 / 0.2 |
| YOLO26n-pose | Pose | 640 | 57.4 1.8 / 53.8 / 1.8 | 16.6 2.7 / 10.1 / 3.9 |
| YOLO26n-obb | OBB | 640 | 50.3 1.8 / 47.2 / 1.4 | 11.7 1.8 / 7.8 / 2.0 |
- Os valores de velocidade são latências de rajada para uma única imagem — a média de 15 execuções após 3 execuções de aquecimento em
bus.jpg, medidas com o0.6.10do plugin Ultralytics para Flutter e os recursosv0.6.6padronizados. A ordem CPU/GPU foi alternada entre tarefas numa única sequência. Os registos nativos confirmaram que todas as linhas da CPU utilizaram a CPU/XNNPACK do LiteRT e que todas as linhas da GPU delegaram o grafo completo ao OpenCL do LiteRT (LITERT_CL). - A exportação LiteRT rastreia diretamente o modelo PyTorch, produzindo um
.tfliteNCHW com uma entrada float — o delegado da GPU compila o grafo completo (aqui, todas as sete tarefas são executadas na GPU Adreno), ew8a32não requer dados de calibração. Os consumidores devem ler as formas dos tensores e os nomes das assinaturas em vez de presumir o layout NHWC legado do onnx2tf ou os nomes de saídaIdentity; os dados RGB devem ser empacotados diretamente como CHW planar ou transpostos antes da inferência. As exportações semânticas devolvem logits NCHW e requerem um argmax de classe no host. Os recursos oficiais para Android estão alojados na versãov0.6.6da aplicação yolo-flutter-app, com o registo detalhado do benchmark no documento de desempenho do Flutter. - Os números correspondentes da NPU Hexagon do Snapdragon e da CPU/GPU LiteRT encontram-se na integração Qualcomm QNN.
- Compara os resultados da CPU/acelerador Apple na integração CoreML.
As medições seguintes dos dispositivos utilizam os mesmos recursos v0.6.6 padronizados.
Google Pixel 10#
Hardware: Google Pixel 10 com 12 GB de memória e Android 16 / API 36. O seu Google Tensor G5 de 3 nm tem uma CPU de 8 núcleos (1 núcleo Prime até 3.78 GHz, 5 núcleos Performance até 3.05 GHz e 2 núcleos Efficiency até 2.25 GHz), GPU PowerVR D-Series e Google TPU. As frequências dos núcleos e o nome do controlador da GPU foram lidos no dispositivo do benchmark, porque a Google não os publica nas especificações associadas.
| Modelo | Tarefa | tamanho (píxeis) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | Deteção | 640 | 53.3 1.5 / 50.2 / 1.6 | 45.5 3.8 / 37.7 / 4.0 |
| YOLO26n-seg | Segmentação | 640 | 87.7 1.8 / 78.5 / 7.5 | 50.9 3.0 / 36.9 / 10.9 |
| YOLO26n-sem | Semântica | 640 | 68.6 1.5 / 59.0 / 8.0 | 71.6 1.5 / 59.5 / 10.6 |
| YOLO26n-depth | Profundidade | 640 | 120.3 1.5 / 112.5 / 6.3 | 52.5 2.0 / 37.5 / 13.0 |
| YOLO26n-cls | Classificação | 224 | 4.0 0.3 / 3.4 / 0.2 | 17.6 0.9 / 16.7 / 0.1 |
| YOLO26n-pose | Pose | 640 | 59.7 1.5 / 57.0 / 1.2 | 46.6 3.8 / 39.2 / 3.5 |
| YOLO26n-obb | OBB | 640 | 52.0 1.5 / 48.9 / 1.7 | 45.5 4.0 / 38.5 / 2.9 |
Benchmark: Média de 15 chamadas predict() após 3 aquecimentos em bus.jpg, utilizando ultralytics_yolo, 0.6.10 e os recursos oficiais v0.6.6. A ordem CPU/GPU alterna entre tarefas numa única sequência. Os registos nativos confirmaram que todas as linhas da CPU utilizaram a CPU/XNNPACK do LiteRT e que todas as linhas da GPU delegaram o grafo completo ao OpenCL do LiteRT (LITERT_CL).
Samsung Galaxy S26#
Hardware: Samsung Galaxy S26 (SM-S942B) com 12 GB de memória e Android 16 / API 36. O seu Exynos 2600 de 2 nm tem uma CPU Armv9.3 de 10 núcleos (1 núcleo C1-Ultra até 3.8 GHz, 3 núcleos C1-Pro de desempenho até 3.26 GHz e 6 núcleos C1-Pro de eficiência até 2.76 GHz), GPU Xclipse 960 e NPU Samsung.
| Modelo | Tarefa | tamanho (píxeis) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | Deteção | 640 | 36.7 1.3 / 33.8 / 1.7 | 16.4 1.4 / 12.3 / 2.6 |
| YOLO26n-seg | Segmentação | 640 | 54.6 1.2 / 48.0 / 5.3 | 32.8 1.3 / 24.5 / 7.0 |
| YOLO26n-sem | Semântica | 640 | 47.8 1.2 / 38.4 / 8.1 | 34.2 1.3 / 24.9 / 8.0 |
| YOLO26n-depth | Profundidade | 640 | 92.9 1.2 / 84.8 / 6.9 | 33.5 1.3 / 22.4 / 9.8 |
| YOLO26n-cls | Classificação | 224 | 2.7 0.2 / 2.3 / 0.2 | 2.6 0.2 / 2.4 / 0.0 |
| YOLO26n-pose | Pose | 640 | 42.8 1.3 / 40.5 / 1.0 | 18.4 1.4 / 14.1 / 2.9 |
| YOLO26n-obb | OBB | 640 | 37.5 1.3 / 35.1 / 1.2 | 18.8 2.5 / 14.6 / 1.8 |
Benchmark: Média de 15 chamadas predict() após 3 aquecimentos em bus.jpg, utilizando ultralytics_yolo, 0.6.10 e os recursos oficiais v0.6.6. A ordem CPU/GPU alterna entre tarefas numa única sequência. Os registos nativos confirmaram que todas as linhas da CPU utilizaram a CPU/XNNPACK do LiteRT e que todas as linhas da GPU delegaram o grafo completo ao OpenCL do LiteRT (LITERT_CL).
Xiaomi 17T Pro#
Hardware: Xiaomi 17T Pro (2602EPTC0G) com 12 GB de memória LPDDR5X e Android 16 / API 36. O seu MediaTek Dimensity 9500 de 3 nm (MT6993) tem uma CPU Armv9.3 de 8 núcleos (1 núcleo C1-Ultra até 4.21 GHz, 3 núcleos C1-Premium até 3.5 GHz e 4 núcleos C1-Pro até 2.7 GHz), GPU Mali-G1 Ultra MC12 e NPU MediaTek 990.
| Modelo | Tarefa | tamanho (píxeis) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | Deteção | 640 | 45.4 1.3 / 42.1 / 2.0 | 26.6 1.9 / 22.0 / 2.7 |
| YOLO26n-seg | Segmentação | 640 | 126.2 2.6 / 113.9 / 9.7 | 46.7 2.6 / 33.3 / 10.8 |
| YOLO26n-sem | Semântica | 640 | 117.9 2.6 / 98.8 / 16.5 | 74.3 2.6 / 54.7 / 17.0 |
| YOLO26n-depth | Profundidade | 640 | 182.4 2.5 / 167.6 / 12.3 | 47.8 2.5 / 32.3 / 12.9 |
| YOLO26n-cls | Classificação | 224 | 6.2 0.4 / 5.3 / 0.4 | 7.4 0.4 / 6.9 / 0.1 |
| YOLO26n-pose | Pose | 640 | 97.6 2.5 / 93.3 / 1.8 | 28.6 2.5 / 23.3 / 2.8 |
| YOLO26n-obb | OBB | 640 | 91.5 2.6 / 85.8 / 3.2 | 27.5 2.7 / 21.8 / 2.9 |
Benchmark: Média de 15 chamadas predict() após 3 aquecimentos em bus.jpg, utilizando ultralytics_yolo, 0.6.10 e os recursos oficiais v0.6.6. A ordem CPU/GPU alterna entre tarefas numa única sequência. Os registos nativos confirmaram que todas as linhas da CPU utilizaram a CPU/XNNPACK do LiteRT e que todas as linhas da GPU delegaram o grafo completo ao OpenCL do LiteRT (LITERT_CL).
Tarefas suportadas#
A exportação LiteRT suporta todas as sete tarefas da Ultralytics. A segmentação semântica e a estimativa de profundidade estão disponíveis apenas com o YOLO26, a única família que inclui essas cabeças.
| Tarefa | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Detetar | ✅ | ✅ | ✅ |
| Segmentar | ✅ | ✅ | ✅ |
| Semântica | ❌ | ❌ | ✅ |
| Profundidade | ❌ | ❌ | ✅ |
| Classificar | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Exportar para LiteRT: converter o teu modelo YOLO#
Podes melhorar a eficiência da execução no dispositivo e ampliar as opções de implementação ao converteres os teus modelos para o formato LiteRT.
Instalação#
Para instalar o pacote necessário, executa:
# Install the required package for YOLO
pip install ultralyticsPara obter instruções detalhadas e boas práticas, consulta o nosso guia de instalação da Ultralytics. Se encontrares dificuldades, consulta o nosso guia de problemas comuns.
A exportação LiteRT é atualmente suportada em Linux x86_64 e macOS. O próprio modelo .tflite exportado funciona em todas as plataformas compatíveis com LiteRT (móvel, incorporada, edge e navegador).
Utilização#
Todos os modelos Ultralytics YOLO suportam exportação imediatamente. O formato LiteRT suporta os modos Export, Predict e Validate, para que possas exportar um modelo e carregá-lo depois para executar inferência ou validar localmente a sua precisão.
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 classificationfrom 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 classificationfrom ultralytics import YOLO
# Load the exported LiteRT model
model = YOLO("yolo26n.tflite")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")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")Argumentos de Exportação#
| Argumento | Tipo | Predefinição | Descrição |
|---|---|---|---|
format | str | 'litert' | Formato de destino do modelo exportado, que define a compatibilidade com vários ambientes de implementação. |
imgsz | int ou tuple | 640 | Tamanho de imagem pretendido para a entrada do modelo. Pode ser um número inteiro para imagens quadradas ou um tuplo (height, width) para dimensões específicas. |
quantize | int ou str | None | Precisão da quantização: 8 (INT8 estático, pesos int8 + ativações int8; requer calibração data/fraction), 'w8a16' (estático, pesos int8 + ativações int16; requer calibração data/fraction), 'w8a32' (INT8 dinâmico, pesos int8 + ativações FP32; não requer calibração) ou 32/não definido (FP32). FP16 não é exportado separadamente (consulta a nota abaixo). Substitui as flags obsoletas half/int8. |
batch | int | 1 | Especifica o tamanho do lote de inferência do modelo exportado ou o número máximo de imagens que o modelo exportado processará em simultâneo no modo predict. |
data | str | None | YAML do conjunto de dados utilizado para a calibração INT8; para classificação, é utilizado um diretório de conjunto de dados ou o nome de um conjunto de dados integrado. Se omitido com quantize=8 ou 'w8a16', o Ultralytics seleciona o conjunto de dados de calibração predefinido para a tarefa do modelo. |
device | str | None | Especifica o dispositivo para a exportação. A exportação LiteRT é executada na CPU (device=cpu). |
Ao contrário da exportação legada tflite, o LiteRT não requer uma exportação FP16 separada. Um modelo FP32 .tflite é executado em precisão de meia dimensão em tempo de execução ao utilizar um delegado de GPU (WebGPU, OpenCL, Metal) — esta é a abordagem oficial do LiteRT para inferência FP16.
Para obter mais detalhes sobre o processo de exportação, visita a página da documentação da Ultralytics sobre exportação.
Implementação de modelos YOLO LiteRT exportados#
Depois de exportares o teu modelo Ultralytics YOLO para LiteRT, podes implementá-lo em várias plataformas. A forma mais rápida de o verificar localmente é o método YOLO("yolo26n.tflite") mostrado acima. Para implementação noutros ambientes, consulta os seguintes recursos:
Dispositivos móveis e incorporados#
- Android: Um guia de início rápido para integrar o LiteRT em aplicações Android.
- iOS: Um guia para integrar e implementar modelos LiteRT em aplicações iOS.
- Linux incorporado e Raspberry Pi: Executa modelos LiteRT em computadores de placa única, opcionalmente acelerados com um Coral Edge TPU.
- Microcontroladores: Implementa em MCUs com apenas alguns quilobytes de memória — o runtime principal ocupa aproximadamente 16 KB num Arm Cortex-M3.
Navegador e Node.js (LiteRT.js)#
- Visão geral do LiteRT.js: Executa o mesmo modelo
.tflitediretamente no navegador com aceleração WebGPU/WASM, eliminando a computação no servidor e mantendo os dados no dispositivo do utilizador. - Exemplos de ponta a ponta: Exemplos práticos e tutoriais para implementar o LiteRT em dispositivos móveis, edge e na web.
Resumo#
Neste guia, explicámos como exportar modelos Ultralytics YOLO para o formato LiteRT. Ao consolidar a implementação em dispositivos móveis/edge (anteriormente TFLite) e no navegador (anteriormente TF.js) num único modelo .tflite, o LiteRT torna os teus modelos YOLO mais rápidos, mais pequenos e portáteis em praticamente qualquer destino no dispositivo.
Para mais informações, consulta a documentação oficial do LiteRT.
Além disso, se tiveres curiosidade sobre outras integrações do Ultralytics YOLO, consulta a nossa página do guia de integrações, que contém muitos recursos úteis.
Perguntas frequentes#
Utiliza a biblioteca Ultralytics para exportar um modelo YOLO para LiteRT (
.tflite). Primeiro, instala o pacote:pip install ultralyticsEm seguida, exporta o teu modelo:
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 classificationPara utilizadores da CLI:
yolo export model=yolo26n.pt format=litert imgsz=640 # use imgsz=224 for classificationPara mais informações, consulta o guia de exportação do Ultralytics.
LiteRT é o novo nome de TensorFlow Lite — o mesmo formato de modelo
.tflite, a mesma linhagem de runtime, renomeado pela Google. No Ultralytics, o formato de exportação únicolitertabrange agora os dois casos de utilização que anteriormente exigiam dois formatos separados:- O antigo formato
tflite→ implementação em dispositivos móveis, incorporados e edge. - O antigo formato
tfjs→ implementação no navegador e no Node.js, agora tratada pelo LiteRT.js, que executa o mesmo ficheiro.tflite.
Se tiveres um ficheiro
.tfliteexistente, podes carregá-lo diretamente comYOLO("model.tflite"), e este será executado através do backend LiteRT.- O antigo formato
Sim. Exporta o teu modelo para o formato LiteRT e, em seguida, executa-o num Raspberry Pi para melhorar as velocidades de inferência. Para uma otimização adicional, considera um Coral Edge TPU. Para obteres instruções detalhadas, consulta o nosso guia de implementação no Raspberry Pi.
Sim — em tempo de execução. Um modelo LiteRT FP32 é automaticamente executado em FP16 quando executado num delegado de GPU (WebGPU, OpenCL ou Metal), que é a abordagem oficial do LiteRT. Por isso, não precisas de uma exportação FP16 dedicada; para uma compressão adicional, utiliza a quantização INT8 com
quantize=8.Se encontrares erros ao exportar modelos YOLO para LiteRT, as soluções comuns incluem:
- Verifica a plataforma: A exportação LiteRT é suportada em Linux x86_64 e macOS. Confirma se o teu ambiente corresponde a estes requisitos.
- Verifica a compatibilidade do pacote: Certifica-te de que estás a utilizar uma versão compatível do Ultralytics. Consulta o nosso guia de instalação.
- Problemas de quantização: Ao utilizar a quantização INT8, certifica-te de que o caminho do teu conjunto de dados está corretamente especificado no parâmetro
data.
Para obteres mais sugestões de resolução de problemas, consulta o nosso guia de problemas comuns.