Exportar modelos YOLO para LiteRT para implementação em dispositivos de periferia e na Web#
LiteRT (abreviatura de ambiente de execução leve) é o ambiente de execução de elevado desempenho da Google para IA no dispositivo. É a nova geração e a nova designação do TensorFlow Lite (TFLite), e utiliza o mesmo formato de modelo .tflite. Com o LiteRT, um único modelo Ultralytics YOLO exportado pode ser implementado em dispositivos móveis, sistemas incorporados, dispositivos de periferia e navegadores — abrangendo tudo o que os formatos de exportação mais antigos tflite e tfjs tratavam separadamente, agora numa única solução.
Assista: Como exportar Ultralytics YOLO26 para Google LiteRT | Implante IA de visão em Android e iOS | IA móvel 📱🚀
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 sem ligação à Internet numa ampla variedade de dispositivos.
O plugin oficial Ultralytics YOLO para Flutter executa imediatamente no Android as exportações LiteRT .tflite — inferência em tempo real com a câmara, previsão de imagem única, aceleração por GPU e transferência automática de modelos para as sete tarefas YOLO26, incluindo Depth. Para dispositivos Apple, utiliza a exportação CoreML; para NPU Qualcomm Snapdragon, consulta a integração Qualcomm QNN.
Exporta modelos de classificação em imgsz=224. Exporta modelos de deteção, segmentação, semântica, 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 servidor nem Python — com inferência em tempo real através da webcam, previsão de imagem única e aceleração WebGPU (com alternativa automática para CPU/WASM) em seis tarefas YOLO26 (deteção, segmentação, semântica, classificação, pose e OBB). No WebGPU, é frequentemente ~2× mais rápido do que o ONNX Runtime Web.
npm i @ultralytics/yolo @litertjs/corePor que exportar para LiteRT?#
LiteRT é uma framework de código aberto concebida para inferência no dispositivo, também conhecida como computação de periferia. Disponibiliza aos programadores as ferramentas para executar modelos treinados em dispositivos móveis, sistemas incorporados e dispositivos IoT, computadores tradicionais e — através do LiteRT.js — diretamente em navegadores Web e no Node.js.
Um formato de modelo, todos os destinos:
- Dispositivos móveis e sistemas incorporados: Android, iOS, Linux incorporado e microcontroladores (MCUs).
- Aceleradores de periferia: compatível com o Coral Edge TPU para obter aceleração adicional.
- Navegador e Node.js: o LiteRT.js executa na Web o mesmo modelo
.tflitecom 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 dados localmente, aumenta a privacidade ao não transmitir dados pessoais e minimiza o tamanho do modelo para economizar espaço.
- Suporte a várias plataformas: funciona em Android, iOS, Linux embarcado, microcontroladores e navegadores modernos.
- Aceleração de hardware: aproveita o XNNPACK na CPU e a aceleração da GPU via OpenCL, Metal e WebGPU. Por padrão, o delegado da GPU executa em FP16 para oferecer mais velocidade.
- Quantização: oferece suporte a FP32, INT8 estático (
quantize=8, pesos int8 + ativações int8), INT16-activation estático (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 compactar modelos e acelerar a inferência com perda mínima de precisão. - Suporte a diversas 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 Snapdragon 8 Elite Gen 5 de 3 nm (SM8850) tem uma CPU Qualcomm Oryon de 8 núcleos (2 núcleos Prime de até 4.6 GHz e 6 núcleos Performance de até 3.62 GHz), GPU Adreno e NPU Hexagon.
| Modelo | Tarefa | tamanho (pixels) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | Detecçã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 correspondem a 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 o plugin Flutter da Ultralytics0.6.10e os recursos padronizadosv0.6.6. A ordem de CPU/GPU alternou entre tarefas em uma única sequência de testes. Os registros nativos confirmaram que todas as linhas de CPU usaram LiteRT CPU/XNNPACK e todas as linhas de GPU delegaram o grafo completo ao LiteRT OpenCL (LITERT_CL). - A exportação para LiteRT rastreia diretamente o modelo PyTorch, gerando um
.tfliteNCHW com entrada float — o delegado da GPU compila o grafo inteiro (aqui, todas as sete tarefas são executadas na GPU Adreno) ew8a32não precisa de dados de calibração. Os consumidores devem consultar os formatos dos tensores e os nomes das assinaturas, em vez de presumir o layout legado NHWC do onnx2tf ou os nomes de saídaIdentity; empacote os dados RGB diretamente no formato CHW planar ou faça a transposição antes da inferência. As exportações semânticas retornam logits NCHW e exigem argmax de classes no host. Os recursos oficiais para Android estão hospedados na versãov0.6.6do yolo-flutter-app, e o registro detalhado do benchmark está no documento de desempenho do Flutter. - Os números correspondentes da NPU Hexagon do Snapdragon e da CPU/GPU do LiteRT estão na integração do Qualcomm QNN.
- Compare os resultados da CPU/acelerador da Apple na integração do CoreML.
Os testes dos dispositivos a seguir usam os mesmos recursos padronizados v0.6.6.
Google Pixel 10#
Hardware: Google Pixel 10 com 12 GB de memória e Android 16 / API 36. O Google Tensor G5 de 3 nm tem uma CPU de 8 núcleos (1 núcleo Prime de até 3.78 GHz, 5 núcleos Performance de até 3.05 GHz e 2 núcleos Efficiency de até 2.25 GHz), GPU PowerVR D-Series e TPU Google. As frequências dos núcleos e o nome do driver da GPU foram obtidos no dispositivo de benchmark, pois o Google não os publica nas especificações vinculadas.
| Modelo | Tarefa | tamanho (pixels) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | Detecçã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 execuções de aquecimento em bus.jpg, usando ultralytics_yolo 0.6.10 e os recursos oficiais v0.6.6. A ordem de CPU/GPU alterna entre tarefas em uma única sequência de testes. Os registros nativos confirmaram que todas as linhas de CPU usaram LiteRT CPU/XNNPACK e todas as linhas de GPU delegaram o grafo completo ao LiteRT OpenCL (LITERT_CL).
Samsung Galaxy S26#
Hardware: Samsung Galaxy S26 (SM-S942B) com 12 GB de memória e Android 16 / API 36. O Exynos 2600 de 2 nm tem uma CPU Armv9.3 de 10 núcleos (1 núcleo C1-Ultra de até 3.8 GHz, 3 núcleos C1-Pro de desempenho de até 3.26 GHz e 6 núcleos C1-Pro de eficiência de até 2.76 GHz), GPU Xclipse 960 e NPU Samsung.
| Modelo | Tarefa | tamanho (pixels) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | Detecçã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 execuções de aquecimento em bus.jpg, usando ultralytics_yolo 0.6.10 e os recursos oficiais v0.6.6. A ordem de CPU/GPU alterna entre tarefas em uma única sequência de testes. Os registros nativos confirmaram que todas as linhas de CPU usaram LiteRT CPU/XNNPACK e todas as linhas de GPU delegaram o grafo completo ao LiteRT OpenCL (LITERT_CL).
Xiaomi 17T Pro#
Hardware: Xiaomi 17T Pro (2602EPTC0G) com 12 GB de memória LPDDR5X e Android 16 / API 36. O MediaTek Dimensity 9500 de 3 nm (MT6993) tem uma CPU Armv9.3 de 8 núcleos (1 núcleo C1-Ultra de até 4.21 GHz, 3 núcleos C1-Premium de até 3.5 GHz e 4 núcleos C1-Pro de até 2.7 GHz), GPU Mali-G1 Ultra MC12 e NPU MediaTek 990.
| Modelo | Tarefa | tamanho (pixels) | CPU w8a32 LiteRT (ms) | GPU w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | Detecçã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 execuções de aquecimento em bus.jpg, usando ultralytics_yolo 0.6.10 e os recursos oficiais v0.6.6. A ordem de CPU/GPU alterna entre tarefas em uma única sequência de testes. Os registros nativos confirmaram que todas as linhas de CPU usaram LiteRT CPU/XNNPACK e todas as linhas de GPU delegaram o grafo completo ao LiteRT OpenCL (LITERT_CL).
Tarefas suportadas#
A exportação LiteRT oferece suporte às sete tarefas da Ultralytics. A segmentação semântica e a estimativa de profundidade estão disponíveis apenas com YOLO26, a única família que inclui esses cabeçalhos.
| Tarefa | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Detetar | ✅ | ✅ | ✅ |
| Segmentar | ✅ | ✅ | ✅ |
| Semântica | ❌ | ❌ | ✅ |
| Profundidade | ❌ | ❌ | ✅ |
| Classificar | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Exportar para LiteRT: convertendo seu modelo YOLO#
Você pode melhorar a eficiência da execução no dispositivo e ampliar as opções de implantação convertendo seus modelos para o formato LiteRT.
Instalação#
Para instalar o pacote necessário, executa:
# Install the required package for YOLO
pip install ultralyticsPara ver instruções detalhadas e práticas recomendadas, consulte nosso guia de instalação da Ultralytics. Se encontrar dificuldades, consulte nosso guia de problemas comuns.
A exportação para LiteRT é compatível atualmente com Linux x86_64 e macOS. O próprio modelo .tflite exportado funciona em todas as plataformas compatíveis com LiteRT (dispositivos móveis, embarcados, de borda e navegadores).
Uso#
Todos os modelos YOLO da Ultralytics oferecem suporte à exportação desde o início. O formato LiteRT é compatível com os modos Exportar, Prever e Validar, para que você possa exportar um modelo e, em seguida, carregá-lo para executar inferências ou validar sua precisão localmente.
from ultralytics import YOLO
# Carrega um modelo YOLO26
model = YOLO("yolo26n.pt")
# Exporte o modelo para o formato LiteRT
model.export(format="litert", imgsz=640) # cria 'yolo26n.tflite'; use imgsz=224 para classificaçãofrom ultralytics import YOLO
model = YOLO("yolo26n.pt")
# INT8 dinâmico: pesos int8, ativações FP32 - sem necessidade de dados de calibração
model.export(format="litert", quantize="w8a32", imgsz=640) # cria 'yolo26n_w8a32.tflite'
# INT8 estático: pesos int8 + ativações int8 - requer dados de calibração
model.export(format="litert", quantize=8, data="coco8.yaml", imgsz=640) # cria 'yolo26n_int8.tflite'
# w8a16 estático: pesos int8 + ativações int16 (maior precisão) - requer dados de calibração
model.export(format="litert", quantize="w8a16", data="coco8.yaml", imgsz=640) # cria 'yolo26n_w8a16.tflite'from ultralytics import YOLO
# Carregue o modelo LiteRT exportado
model = YOLO("yolo26n.tflite")
# Executar inferência
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Carregue o modelo LiteRT exportado
model = YOLO("yolo26n.tflite")
# Validar a precisão no conjunto de dados COCO8
metrics = model.val(data="coco8.yaml")Argumentos de exportação#
| Argumento | Tipo | Padrão | Descrição |
|---|---|---|---|
format | str | 'litert' | Formato de destino do modelo exportado, que define a compatibilidade com vários ambientes de implantação. |
imgsz | int ou tuple | 640 | Tamanho de imagem desejado para a entrada do modelo. Pode ser um inteiro para imagens quadradas ou uma tupla (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; sem necessidade de calibração) ou 32/não definido (FP32). FP16 não é exportado separadamente (consulte a observação 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 | Arquivo YAML do conjunto de dados usado para a calibração INT8; para classificação, em vez disso, informe um diretório do conjunto de dados ou o nome de um conjunto de dados integrado. Se omitido com quantize=8 ou 'w8a16', a Ultralytics seleciona o conjunto de dados de calibração padrão para a tarefa do modelo. |
fraction | float, int ou list | 1.0 | Subconjunto de calibração como proporção, número de imagens ou proporções/contagens [train, val, test]. Listas de dois itens deixam test completo, enquanto 0 o ignora. |
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 exige uma exportação FP16 separada. Um modelo .tflite FP32 é executado em precisão de meia precisão durante a execução quando usa um delegado da GPU (WebGPU, OpenCL, Metal) — essa é a abordagem oficial do LiteRT para inferência FP16.
Para mais detalhes sobre o processo de exportação, visita a página da documentação da Ultralytics sobre exportação.
Implantação de modelos YOLO LiteRT exportados#
Depois de exportar seu modelo YOLO da Ultralytics para LiteRT, você pode implantá-lo em várias plataformas. A maneira mais rápida de verificá-lo localmente é o método YOLO("yolo26n.tflite") mostrado acima. Para implantá-lo em outros ambientes, consulte os recursos a seguir:
Dispositivos móveis e sistemas embarcados#
- Android: Guia de início rápido para integrar LiteRT em aplicações Android.
- iOS: Guia para integrar e implantar modelos LiteRT em aplicações iOS.
- Linux embarcado e Raspberry Pi: Executa modelos LiteRT em computadores de placa única, opcionalmente com aceleração de um Coral Edge TPU.
- Microcontroladores: Implanta em MCUs com apenas alguns kilobytes de memória — o ambiente de execução principal ocupa aproximadamente 16 KB em um 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 usuário. - Exemplos de ponta a ponta: Exemplos práticos e tutoriais para implementar LiteRT em dispositivos móveis, na borda e na web.
Resumo#
Neste guia, mostramos como exportar modelos Ultralytics YOLO para o formato LiteRT. Ao unificar a implantação em dispositivos móveis e na borda (anteriormente TFLite) e no navegador (anteriormente TF.js) em um único modelo .tflite, LiteRT torna seus modelos YOLO mais rápidos, menores e portáteis em praticamente todos os dispositivos.
Para mais detalhes, consulta a documentação oficial do LiteRT.
Além disso, se tiver curiosidade sobre outras integrações do Ultralytics YOLO, consulta nossa página do guia de integração para encontrar muitos recursos úteis.
Perguntas frequentes#
Usa a biblioteca Ultralytics para exportar um modelo YOLO para LiteRT (
.tflite). Primeiro, instala o pacote:pip install ultralyticsEm seguida, exporta o modelo:
from ultralytics import YOLO # Carrega um modelo YOLO26 model = YOLO("yolo26n.pt") # Exporte o modelo para o formato LiteRT model.export(format="litert", imgsz=640) # usar imgsz=224 para classificaçãoPara usuários da CLI:
yolo export model=yolo26n.pt format=litert imgsz=640 # use imgsz=224 for classificationPara mais detalhes, consulta o guia de exportação da Ultralytics.
LiteRT é o novo nome do TensorFlow Lite — mesmo formato de modelo
.tflite, mesma linhagem de ambiente de execução, renomeado pelo Google. Na Ultralytics, o único formato de exportaçãolitertagora abrange os dois casos de uso que antes exigiam formatos separados:- O antigo formato
tflite→ implantação em dispositivos móveis, embarcados e na borda. - O antigo formato
tfjs→ implantação em navegadores e Node.js, agora gerenciada pelo LiteRT.js, que executa o mesmo arquivo.tflite.
Se você tiver um arquivo
.tfliteexistente, poderá carregá-lo diretamente comYOLO("model.tflite"), que o executará pelo backend LiteRT.- O antigo formato
Sim. Exporta o modelo para o formato LiteRT e executa-o em um Raspberry Pi para melhorar a velocidade de inferência. Para otimizar ainda mais, considera um Coral Edge TPU. Para ver as etapas detalhadas, consulta nosso guia de implantação no Raspberry Pi.
Sim. O LiteRT.js executa o mesmo modelo exportado
.tflitediretamente em um navegador ou aplicação Node.js, com aceleração WebGPU/WASM. Isso substitui o fluxo de trabalho anterior do TensorFlow.js — não há uma exportação separada para o navegador; basta implantar o modelo LiteRT com o ambiente de execução LiteRT.js.Sim — em tempo de execução. Um modelo LiteRT FP32 é executado automaticamente em FP16 quando roda em um delegado de GPU (WebGPU, OpenCL ou Metal), que é a abordagem oficial do LiteRT. Portanto, não precisas de uma exportação FP16 dedicada; para compactar ainda mais, usa quantização INT8 com
quantize=8.Se encontrar erros ao exportar modelos YOLO para LiteRT, algumas soluções comuns são:
- Verifica a plataforma: a exportação LiteRT é compatível com Linux x86_64 e macOS. Confirma se o teu ambiente corresponde a esses requisitos.
- Verifica a compatibilidade do pacote: confirma se estás usando uma versão compatível do Ultralytics. Consulta nosso guia de instalação.
- Problemas de quantização: ao usar quantização INT8, verifica se o caminho do conjunto de dados está especificado corretamente no parâmetro
data.
Para mais dicas de solução de problemas, consulta nosso guia de problemas comuns.