Ultralytics YOLO27:
Get Started

Exporta modelos YOLO a LiteRT para implementarlos en dispositivos periféricos y en la web#

LiteRT edge deployment framework

LiteRT (abreviatura de entorno de ejecución ligero) es el entorno de ejecución de alto rendimiento de Google para la IA en el dispositivo. Es la siguiente generación y el nuevo nombre de TensorFlow Lite (TFLite), y ejecuta el mismo formato de modelo .tflite. Con LiteRT, un único modelo Ultralytics YOLO exportado se implementa en móviles, sistemas integrados, dispositivos periféricos y navegadores: abarca todos los casos que antes gestionaban por separado los formatos de exportación tflite y tfjs, ahora bajo una misma solución.



Ver: Cómo exportar Ultralytics YOLO26 a Google LiteRT | Implementa IA para visión en Android e iOS | IA móvil 📱🚀

El formato de exportación LiteRT optimiza tus modelos para tareas como la detección de objetos, la segmentación, la estimación de pose y la clasificación, para que se ejecuten con rapidez y sin conexión en una amplia variedad de dispositivos.

Ejecuta hoy mismo YOLO en Android con LiteRT mediante el complemento oficial de Flutter

El complemento oficial Ultralytics YOLO para Flutter ejecuta de forma nativa en Android las exportaciones LiteRT .tflite: inferencia de cámara en tiempo real, predicción de imágenes individuales, aceleración por GPU y descarga automática de modelos para las siete tareas de YOLO26, incluida Depth. Para dispositivos Apple, usa la exportación CoreML; para las NPU Qualcomm Snapdragon, consulta la integración Qualcomm QNN.

Tamaños de entrada oficiales para móviles

Exporta los modelos de clasificación en imgsz=224. Exporta los modelos de detección, segmentación, semántica, profundidad, pose y OBB en imgsz=640. Este estándar 224/640 es común a los recursos móviles oficiales de LiteRT, CoreML y QNN.

Ejecuta hoy mismo YOLO en la web con LiteRT.js mediante el paquete npm oficial @ultralytics/yolo

El paquete NPM oficial de Ultralytics YOLO ejecuta las exportaciones LiteRT .tflite directamente en el navegador mediante LiteRT.js, sin necesidad de servidor ni Python, con inferencia de cámara web en tiempo real, predicción de imágenes individuales y aceleración WebGPU (con alternativa automática a CPU/WASM) para seis tareas de YOLO26 (detección, segmentación, semántica, clasificación, pose y OBB). Con WebGPU, suele ser aproximadamente el doble de rápido que ONNX Runtime Web.

npm i @ultralytics/yolo @litertjs/core

¿Por qué exportar a LiteRT?#

LiteRT es un marco de trabajo de código abierto diseñado para la inferencia en el dispositivo, también conocida como computación en el borde. Proporciona a los desarrolladores herramientas para ejecutar modelos entrenados en dispositivos móviles, sistemas integrados e IoT, ordenadores tradicionales y, mediante LiteRT.js, directamente en navegadores web y Node.js.

Un formato de modelo para todos los destinos:

  • Móviles y sistemas integrados: Android, iOS, Linux integrado y microcontroladores (MCU).
  • Aceleradores periféricos: Compatible con Coral Edge TPU para obtener más aceleración.
  • Navegador y Node.js: LiteRT.js ejecuta en la web el mismo modelo .tflite con aceleración WebGPU/WASM, lo que evita tener que exportarlo por separado a TensorFlow.js.

Funciones clave de los modelos LiteRT#

  • Optimización en el dispositivo: Reduce la latencia al procesar los datos localmente, mejora la privacidad al no transmitir datos personales y minimiza el tamaño del modelo para ahorrar espacio.
  • Compatibilidad con varias plataformas: Funciona en Android, iOS, Linux integrado, microcontroladores y navegadores web modernos.
  • Aceleración por hardware: Aprovecha XNNPACK en CPU y la aceleración de GPU mediante OpenCL, Metal y WebGPU. El delegado de GPU funciona en FP16 de forma predeterminada para ofrecer más velocidad.
  • Cuantización: Admite FP32, INT8 estático (quantize=8, pesos int8 + activaciones int8), INT16 estático para las activaciones (quantize="w8a16", pesos int8 + activaciones int16 para una mayor precisión) e INT8 dinámico (quantize="w8a32", pesos int8 + activaciones FP32, sin necesidad de datos de calibración) para comprimir modelos y acelerar la inferencia con una pérdida mínima de precisión.
  • Compatibilidad con diversos lenguajes: Compatible con Java/Kotlin, Swift, Objective-C, C++, Python y JavaScript.

Rendimiento medido#

Hardware: Xiaomi 17 con 12 GB de memoria LPDDR5X y Android 16 / API 36. Su Snapdragon 8 Elite Gen 5 de 3 nm (SM8850) cuenta con una CPU Qualcomm Oryon de 8 núcleos (2 núcleos Prime de hasta 4,6 GHz y 6 núcleos Performance de hasta 3,62 GHz), GPU Adreno y NPU Hexagon.

ModeloTareatamaño
(píxeles)
CPU
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
YOLO26nDetección64052.2
1.8 / 48.1 / 2.4
15.8
2.3 / 8.9 / 4.6
YOLO26n-segSegmentación64073.4
1.8 / 65.6 / 6.0
33.2
1.8 / 23.8 / 7.6
YOLO26n-semSemántica64061.2
1.8 / 51.1 / 8.3
34.2
1.8 / 24.0 / 8.3
YOLO26n-depthProfundidad640124.4
1.9 / 115.1 / 7.4
23.0
1.8 / 13.5 / 7.7
YOLO26n-clsClasificar2244.4
0.4 / 4.0 / 0.0
3.1
0.8 / 2.1 / 0.2
YOLO26n-posePose64057.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
  • Los valores de velocidad son latencias de ráfaga para una sola imagen: la media de 15 ejecuciones después de 3 ejecuciones de calentamiento en bus.jpg, medidas con el complemento de Flutter de Ultralytics 0.6.10 y los recursos estandarizados v0.6.6. El orden de CPU/GPU se alternó entre tareas en una única pasada secuencial. Los registros nativos confirmaron que todas las filas de CPU usaban LiteRT CPU/XNNPACK y que todas las filas de GPU delegaban el grafo completo en LiteRT OpenCL (LITERT_CL).
  • La exportación de LiteRT traza directamente el modelo PyTorch y genera un .tflite NCHW con una entrada de tipo float: el delegado de GPU compila todo el grafo (las siete tareas se ejecutan aquí en la GPU Adreno) y w8a32 no necesita datos de calibración. En lugar de dar por hecho que se usa el diseño NHWC heredado de onnx2tf o los nombres de salida Identity, quienes consuman el modelo deben consultar las formas de los tensores y los nombres de las firmas; deben empaquetar los datos RGB directamente como CHW planar o transponerlos antes de la inferencia. Las exportaciones semánticas devuelven logits NCHW y requieren un argmax de clases en el host. Los recursos oficiales para Android están alojados en la versión v0.6.6 de yolo-flutter-app; encontrarás el registro detallado de la evaluación comparativa en el documento de rendimiento de Flutter.
  • Las cifras correspondientes a la NPU Hexagon de Snapdragon y a CPU/GPU de LiteRT están en la integración de Qualcomm QNN.
  • Compara los resultados de CPU/acelerador de Apple en la integración de CoreML.

Las siguientes pruebas en distintos dispositivos utilizan los mismos recursos estandarizados v0.6.6.

Google Pixel 10#

Hardware: Google Pixel 10 con 12 GB de memoria y Android 16 / API 36. Su Google Tensor G5 de 3 nm tiene una CPU de 8 núcleos (1 núcleo Prime de hasta 3,78 GHz, 5 núcleos Performance de hasta 3,05 GHz y 2 núcleos Efficiency de hasta 2,25 GHz), GPU PowerVR D-Series y TPU de Google. Las frecuencias de los núcleos y el nombre del controlador de GPU se consultaron en el dispositivo de prueba, ya que Google no los publica en las especificaciones enlazadas.

ModeloTareatamaño
(píxeles)
CPU
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
YOLO26nDetección64053.3
1.5 / 50.2 / 1.6
45.5
3.8 / 37.7 / 4.0
YOLO26n-segSegmentación64087.7
1.8 / 78.5 / 7.5
50.9
3.0 / 36.9 / 10.9
YOLO26n-semSemántica64068.6
1.5 / 59.0 / 8.0
71.6
1.5 / 59.5 / 10.6
YOLO26n-depthProfundidad640120.3
1.5 / 112.5 / 6.3
52.5
2.0 / 37.5 / 13.0
YOLO26n-clsClasificar2244.0
0.3 / 3.4 / 0.2
17.6
0.9 / 16.7 / 0.1
YOLO26n-posePose64059.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

Evaluación comparativa: Media de 15 llamadas a predict() después de 3 ejecuciones de calentamiento en bus.jpg, con ultralytics_yolo 0.6.10 y los recursos oficiales v0.6.6. El orden de CPU/GPU se alterna entre tareas en una única pasada secuencial. Los registros nativos confirmaron que todas las filas de CPU usaban LiteRT CPU/XNNPACK y que todas las filas de GPU delegaban el grafo completo en LiteRT OpenCL (LITERT_CL).

Samsung Galaxy S26#

Hardware: Samsung Galaxy S26 (SM-S942B) con 12 GB de memoria y Android 16 / API 36. Su Exynos 2600 de 2 nm tiene una CPU Armv9.3 de 10 núcleos (1 núcleo C1-Ultra de hasta 3,8 GHz, 3 núcleos C1-Pro de alto rendimiento de hasta 3,26 GHz y 6 núcleos C1-Pro de bajo consumo de hasta 2,76 GHz), GPU Xclipse 960 y NPU de Samsung.

ModeloTareatamaño
(píxeles)
CPU
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
YOLO26nDetección64036.7
1.3 / 33.8 / 1.7
16.4
1.4 / 12.3 / 2.6
YOLO26n-segSegmentación64054.6
1.2 / 48.0 / 5.3
32.8
1.3 / 24.5 / 7.0
YOLO26n-semSemántica64047.8
1.2 / 38.4 / 8.1
34.2
1.3 / 24.9 / 8.0
YOLO26n-depthProfundidad64092.9
1.2 / 84.8 / 6.9
33.5
1.3 / 22.4 / 9.8
YOLO26n-clsClasificar2242.7
0.2 / 2.3 / 0.2
2.6
0.2 / 2.4 / 0.0
YOLO26n-posePose64042.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

Evaluación comparativa: Media de 15 llamadas a predict() después de 3 ejecuciones de calentamiento en bus.jpg, con ultralytics_yolo 0.6.10 y los recursos oficiales v0.6.6. El orden de CPU/GPU se alterna entre tareas en una única pasada secuencial. Los registros nativos confirmaron que todas las filas de CPU usaban LiteRT CPU/XNNPACK y que todas las filas de GPU delegaban el grafo completo en LiteRT OpenCL (LITERT_CL).

Xiaomi 17T Pro#

Hardware: Xiaomi 17T Pro (2602EPTC0G) con 12 GB de memoria LPDDR5X y Android 16 / API 36. Su MediaTek Dimensity 9500 de 3 nm (MT6993) tiene una CPU Armv9.3 de 8 núcleos (1 núcleo C1-Ultra de hasta 4,21 GHz, 3 núcleos C1-Premium de hasta 3,5 GHz y 4 núcleos C1-Pro de hasta 2,7 GHz), GPU Mali-G1 Ultra MC12 y NPU MediaTek 990.

ModeloTareatamaño
(píxeles)
CPU
w8a32 LiteRT
(ms)
GPU
w8a32 LiteRT
(ms)
YOLO26nDetección64045.4
1.3 / 42.1 / 2.0
26.6
1.9 / 22.0 / 2.7
YOLO26n-segSegmentación640126.2
2.6 / 113.9 / 9.7
46.7
2.6 / 33.3 / 10.8
YOLO26n-semSemántica640117.9
2.6 / 98.8 / 16.5
74.3
2.6 / 54.7 / 17.0
YOLO26n-depthProfundidad640182.4
2.5 / 167.6 / 12.3
47.8
2.5 / 32.3 / 12.9
YOLO26n-clsClasificar2246.2
0.4 / 5.3 / 0.4
7.4
0.4 / 6.9 / 0.1
YOLO26n-posePose64097.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

Evaluación comparativa: Media de 15 llamadas a predict() después de 3 ejecuciones de calentamiento en bus.jpg, con ultralytics_yolo 0.6.10 y los recursos oficiales v0.6.6. El orden de CPU/GPU se alterna entre tareas en una única pasada secuencial. Los registros nativos confirmaron que todas las filas de CPU usaban LiteRT CPU/XNNPACK y que todas las filas de GPU delegaban el grafo completo en LiteRT OpenCL (LITERT_CL).

Tareas compatibles#

La exportación a LiteRT es compatible con las siete tareas de Ultralytics. La segmentación semántica y la estimación de profundidad solo están disponibles con YOLO26, la única familia que incluye esos cabezales.

TareaYOLOv8YOLO11YOLO26
Detectar✅✅✅
Segmentar✅✅✅
Semántica❌❌✅
Profundidad❌❌✅
Clasificar✅✅✅
Pose✅✅✅
OBB✅✅✅

Exportar a LiteRT: convierte tu modelo YOLO#

Puedes mejorar la eficiencia de ejecución en el dispositivo y ampliar las opciones de implementación convirtiendo tus modelos al formato LiteRT.

Instalación#

Para instalar el paquete necesario, ejecuta:

Instalación
# Install the required package for YOLO
pip install ultralytics

Para obtener instrucciones detalladas y conocer las prácticas recomendadas, consulta nuestra guía de instalación de Ultralytics. Si tienes algún problema, consulta nuestra guía de problemas frecuentes.

Compatibilidad con plataformas

La exportación a LiteRT es actualmente compatible con Linux x86_64 y macOS. El propio modelo .tflite exportado funciona en todas las plataformas compatibles con LiteRT (móviles, integradas, de borde y navegador).

Uso#

Todos los modelos YOLO de Ultralytics admiten la exportación de forma predeterminada. El formato LiteRT admite los modos Exportar, Predecir y Validar, así que puedes exportar un modelo y, después, cargarlo para ejecutar inferencias o validar su precisión localmente.

Exportar
from ultralytics import YOLO

# Carga un modelo YOLO26
model = YOLO("yolo26n.pt")

# Exporta el modelo al formato LiteRT
model.export(format="litert", imgsz=640)  # crea 'yolo26n.tflite'; usa imgsz=224 para la clasificación
Exportación cuantizada
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# INT8 dinámico: pesos int8, activaciones FP32; no se necesitan datos de calibración
model.export(format="litert", quantize="w8a32", imgsz=640)  # crea 'yolo26n_w8a32.tflite'

# INT8 estático: pesos int8 + activaciones int8; necesita datos de calibración
model.export(format="litert", quantize=8, data="coco8.yaml", imgsz=640)  # crea 'yolo26n_int8.tflite'

# w8a16 estático: pesos int8 + activaciones int16 (mayor precisión); necesita datos de calibración
model.export(format="litert", quantize="w8a16", data="coco8.yaml", imgsz=640)  # crea 'yolo26n_w8a16.tflite'
Predecir
from ultralytics import YOLO

# Carga el modelo LiteRT exportado
model = YOLO("yolo26n.tflite")

# Ejecutar inferencia
results = model("https://ultralytics.com/images/bus.jpg")
Validar
from ultralytics import YOLO

# Carga el modelo LiteRT exportado
model = YOLO("yolo26n.tflite")

# Valida la precisión con el conjunto de datos COCO8
metrics = model.val(data="coco8.yaml")

Argumentos de exportación#

ArgumentoTipoPredeterminadoDescripción
formatstr'litert'Formato de destino del modelo exportado, que define su compatibilidad con distintos entornos de implementación.
imgszint o tuple640Tamaño de imagen deseado para la entrada del modelo. Puede ser un número entero para imágenes cuadradas o una tupla (height, width) para dimensiones específicas.
quantizeint o strNonePrecisión de cuantización: 8 (INT8 estático, pesos int8 + activaciones int8; necesita datos de calibración data/fraction), 'w8a16' (estático, pesos int8 + activaciones int16; necesita datos de calibración data/fraction), 'w8a32' (INT8 dinámico, pesos int8 + activaciones FP32; no necesita calibración) o 32/sin especificar (FP32). FP16 no se exporta por separado (consulta la nota siguiente). Sustituye a las marcas obsoletas half/int8.
batchint1Especifica el tamaño del lote de inferencia del modelo exportado o el número máximo de imágenes que el modelo exportado procesará simultáneamente en el modo predict.
datastrNoneArchivo YAML del conjunto de datos utilizado para la calibración INT8; en el caso de la clasificación, se indica un directorio de conjunto de datos o el nombre de un conjunto de datos integrado. Si se omite con quantize=8 o 'w8a16', Ultralytics selecciona el conjunto de datos de calibración predeterminado para la tarea del modelo.
fractionfloat, int o list1.0Subconjunto de calibración expresado como proporción, número de imágenes o proporciones/recuentos [train, val, test]. Las listas de dos elementos dejan completo test, mientras que 0 lo omite.
devicestrNoneEspecifica el dispositivo para la exportación. La exportación a LiteRT se ejecuta en CPU (device=cpu).
Precisión FP16

A diferencia de la exportación heredada a tflite, LiteRT no requiere una exportación FP16 independiente. Un modelo .tflite FP32 funciona con precisión de 16 bits en tiempo de ejecución cuando se utiliza un delegado de GPU (WebGPU, OpenCL, Metal): este es el método oficial de LiteRT para la inferencia FP16.

Para obtener más información sobre el proceso de exportación, visita la página de documentación de Ultralytics sobre exportación.

Implementación de modelos YOLO LiteRT exportados#

Después de exportar tu modelo Ultralytics YOLO a LiteRT, puedes implementarlo en distintas plataformas. La forma más rápida de comprobarlo localmente es el método YOLO("yolo26n.tflite") mostrado arriba. Para implementarlo en otros entornos, consulta los siguientes recursos:

Móviles e integrados#

  • Android: Guía de inicio rápido para integrar LiteRT en aplicaciones de Android.
  • iOS: Guía para integrar y desplegar modelos LiteRT en aplicaciones de iOS.
  • Linux integrado y Raspberry Pi: Ejecuta modelos LiteRT en ordenadores de placa única, con aceleración opcional mediante una Coral Edge TPU.
  • Microcontroladores: Despliega en MCU con solo unos pocos kilobytes de memoria: el entorno de ejecución principal ocupa aproximadamente 16 KB en un Arm Cortex-M3.

Navegador y Node.js (LiteRT.js)#

  • Descripción general de LiteRT.js: Ejecuta el mismo modelo .tflite directamente en el navegador con aceleración WebGPU/WASM, eliminando los cálculos en el servidor y manteniendo los datos en el dispositivo del usuario.
  • Ejemplos integrales: Ejemplos prácticos y tutoriales para implementar LiteRT en dispositivos móviles, periféricos y la web.

Resumen#

En esta guía hemos explicado cómo exportar modelos Ultralytics YOLO al formato LiteRT. Al unificar el despliegue en móviles/periféricos (antes TFLite) y en navegadores (antes TF.js) en un único modelo .tflite, LiteRT hace que tus modelos YOLO sean más rápidos, compactos y portátiles en prácticamente cualquier dispositivo.

Para obtener más información, visita la documentación oficial de LiteRT.

Además, si te interesan otras integraciones de Ultralytics YOLO, consulta nuestra página de guías de integración, donde encontrarás muchos recursos útiles.

Preguntas frecuentes#

  • Usa la biblioteca Ultralytics para exportar un modelo YOLO a LiteRT (.tflite). Primero, instala el paquete:

    pip install ultralytics

    A continuación, exporta tu modelo:

    from ultralytics import YOLO
    
    # Carga un modelo YOLO26
    model = YOLO("yolo26n.pt")
    
    # Exporta el modelo al formato LiteRT
    model.export(format="litert", imgsz=640)  # usa imgsz=224 para clasificación

    Para usuarios de la CLI:

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

    Para obtener más información, visita la guía de exportación de Ultralytics.

  • LiteRT es el nuevo nombre de TensorFlow Lite: mismo formato de modelo .tflite, misma línea evolutiva del entorno de ejecución, con un cambio de marca de Google. En Ultralytics, el formato de exportación único litert ahora cubre los dos casos de uso que antes requerían formatos distintos:

    • El antiguo formato tflite → despliegue en móviles, dispositivos integrados y periféricos.
    • El antiguo formato tfjs → despliegue en navegadores y Node.js, ahora gestionado por LiteRT.js, que ejecuta el mismo archivo .tflite.

    Si ya tienes un archivo .tflite, puedes cargarlo directamente con YOLO("model.tflite") y se ejecutará mediante el backend LiteRT.

  • Sí. Exporta tu modelo al formato LiteRT y ejecútalo en una Raspberry Pi para mejorar la velocidad de inferencia. Para optimizarlo aún más, puedes usar una Coral Edge TPU. Consulta nuestra guía de despliegue en Raspberry Pi para ver los pasos detallados.

  • Sí. LiteRT.js ejecuta el mismo modelo exportado .tflite directamente en un navegador web o una aplicación Node.js, con aceleración WebGPU/WASM. Esto sustituye al flujo de trabajo anterior de TensorFlow.js: no hace falta exportar por separado para el navegador; solo tienes que desplegar tu modelo LiteRT con el entorno de ejecución LiteRT.js.

  • Sí, durante la ejecución. Un modelo LiteRT FP32 se ejecuta automáticamente en FP16 cuando se ejecuta en un delegado de GPU (WebGPU, OpenCL o Metal), que es el enfoque oficial de LiteRT. Por tanto, no necesitas una exportación FP16 específica; para comprimirlo aún más, usa la cuantización INT8 con quantize=8.

  • Si encuentras errores al exportar modelos YOLO a LiteRT, estas son algunas soluciones habituales:

    • Comprueba la plataforma: La exportación a LiteRT es compatible con Linux x86_64 y macOS. Comprueba que tu entorno cumpla este requisito.
    • Comprueba la compatibilidad del paquete: Asegúrate de usar una versión compatible de Ultralytics. Consulta nuestra guía de instalación.
    • Problemas de cuantización: Si usas la cuantización INT8, asegúrate de especificar correctamente la ruta del conjunto de datos en el parámetro data.

    Para obtener más consejos sobre la solución de problemas, visita nuestra guía de problemas habituales.

Comentarios