YOLO Vision 2026:

Exportación de modelos TFLite para despliegue (obsoleto)#

Obsoleto: reemplazado por LiteRT

A partir de Ultralytics 8.4.83, el formato de exportación independiente tflite se ha eliminado y sustituido por el formato unificado Google LiteRT. LiteRT (Lite Runtime) es la próxima generación y el nuevo nombre de TensorFlow Lite, y exporta el mismo modelo .tflite, abarcando ahora el despliegue en móviles, dispositivos embebidos, edge y navegadores en un solo formato.

format="tflite" sigue funcionando, pero emite una advertencia de obsolescencia y exporta un modelo LiteRT en su lugar. Usa format="litert" a partir de ahora; para ver las instrucciones y opciones de exportación actuales, consulta la guía de exportación de LiteRT.

TensorFlow Lite edge deployment framework

Desplegar modelos de visión artificial en dispositivos edge o dispositivos embebidos requiere un formato que pueda garantizar un rendimiento fluido.

El antiguo formato de exportación TensorFlow Lite o TFLite optimizaba los modelos de Ultralytics YOLO26 para tareas como la detección de objetos y la clasificación de imágenes en aplicaciones edge. Esta guía conserva el contexto de despliegue clásico de TFLite; usa LiteRT para las nuevas exportaciones.

¿Por qué se utilizaba TFLite para la exportación?#

Introducido por Google en mayo de 2017 como parte de su framework TensorFlow, TensorFlow Lite, o TFLite para abreviar, era un framework de deep learning de código abierto diseñado para la inferencia en el dispositivo, también conocido como edge computing. Proporcionaba a los desarrolladores herramientas para ejecutar modelos entrenados en dispositivos móviles, embebidos e IoT, así como en ordenadores tradicionales.

TensorFlow Lite admitía una amplia gama de plataformas, incluyendo Linux embebido, Android, iOS y microcontroladores (MCUs). Las exportaciones TFLite permitían a las aplicaciones ejecutar modelos de forma local y sin conexión.

Características clave de los modelos TFLite#

Los modelos TFLite ofrecen una amplia gama de características clave que permiten el aprendizaje automático en el dispositivo, ayudando a los desarrolladores a ejecutar sus modelos en dispositivos móviles, integrados y de borde:

  • Optimización en el dispositivo: TFLite se optimiza para ML en el dispositivo, reduciendo la latencia al procesar datos localmente, mejorando la privacidad al no transmitir datos personales y minimizando el tamaño del modelo para ahorrar espacio.

  • Soporte para múltiples plataformas: TFLite ofrece una amplia compatibilidad de plataformas, soportando Android, iOS, Linux integrado y microcontroladores.

  • Soporte para diversos lenguajes: TFLite es compatible con varios lenguajes de programación, incluyendo Java, Swift, Objective-C, C++ y Python.

  • Alto rendimiento: Logra un rendimiento superior mediante la aceleración de hardware y la optimización del modelo.

Rendimiento medido (histórico)#

Registro de migración congelado antes y después

Estos resultados se registraron con el plugin de Ultralytics para Flutter 0.6.8 y LiteRT 2.1.5 en Android 16/API 36 en un Xiaomi 17 con 12 GB de memoria LPDDR5X. Su Snapdragon 8 Elite Gen 5 (SM8850) de 3 nm tiene 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. Estas tablas comparan los recursos antiguos de TFLite INT8 onnx2tf con las exportaciones candidatas de litert-torch evaluadas durante la migración. Los recursos de la versión se sobrescribieron posteriormente con las exportaciones estandarizadas, por lo que estas cifras no describen los bytes actuales del recurso v0.6.6. Consulta las tablas de rendimiento de LiteRT para ver las mediciones actuales.

Ambos formatos se ejecutaron en el mismo barrido de GPU consecutivo con los tamaños de entrada mostrados. Cada celda es el tiempo total (preprocesamiento + inferencia + postprocesamiento), con el desglose por etapas debajo; los registros nativos confirmaron que ambos formatos delegaron el grafo completo a LiteRT OpenCL (LITERT_CL) en la GPU Adreno.

ModeloTareatamaño
(píxeles)
Heredado
onnx2tf INT8 TFLite
(ms)
Candidato
w8a32 LiteRT
(ms)
YOLO26nDetectar64014.0
1.8 / 8.1 / 4.2
13.5
1.9 / 8.1 / 3.5
YOLO26n-segSegmentar64030.1
1.9 / 20.3 / 8.0
28.6
1.8 / 20.1 / 6.7
YOLO26n-semSemántica64026.4
1.9 / 16.4 / 8.1
32.9
1.8 / 23.0 / 8.2
YOLO26n-clsClasificar2243.5
0.9 / 2.2 / 0.4
3.2
1.0 / 2.2 / 0.1
YOLO26n-posePose64017.4
2.4 / 9.9 / 5.1
14.0
1.9 / 9.3 / 2.8
YOLO26n-obbOBB64013.9
3.0 / 8.3 / 2.7
13.0
2.9 / 7.9 / 2.3

La misma ejecución de migración también comparó los formatos de cuantización de detección de YOLO26n. La inferencia es la métrica comparable y dependiente del formato:

Formato AndroidInferencia GPU (ms)Compilación en GPU
onnx2tf INT8 (TFLite heredado)8.6
LiteRT w8a32 (candidato)8.4
LiteRT INT8 (quantize=8)11.0
LiteRT FP328.8
LiteRT w8a16 (quantize="w8a16")Respaldo de CPUno

En esta ejecución, w8a16 recurrió a la CPU con unos 660 ms en total frente a unos 17 ms para los formatos de GPU. Estos resultados motivaron el lanzamiento de w8a32, pero la compatibilidad con delegados y el rendimiento dependen del dispositivo y de la versión del runtime. Realiza pruebas de rendimiento en el dispositivo de destino y confirma la ubicación del acelerador en sus registros de ejecución.

Opciones de despliegue en TFLite#

Antes de ver el ejemplo de exportación de reemplazo con LiteRT, comprendamos cómo se utilizan normalmente los modelos TFLite.

TFLite ofrece varias opciones de despliegue en el dispositivo para modelos de aprendizaje automático, incluyendo:

  • Despliegue con Android e iOS: Tanto las aplicaciones de Android como las de iOS con TFLite pueden analizar fuentes de cámaras y sensores basados en el edge para detectar e identificar objetos. TFLite también ofrece bibliotecas nativas para iOS escritas en Swift y Objective-C. El diagrama de arquitectura a continuación muestra el proceso de despliegue de un modelo entrenado en plataformas Android e iOS utilizando TensorFlow Lite.

TensorFlow Lite deployment architecture for mobile

  • Implementación con Linux embebido: Si la ejecución de inferencias en una Raspberry Pi utilizando la Guía de Ultralytics no cumple con los requisitos de velocidad para tu caso de uso, puedes utilizar un modelo TFLite exportado para acelerar los tiempos de inferencia. Además, es posible mejorar aún más el rendimiento utilizando un dispositivo Coral Edge TPU.

  • Despliegue con microcontroladores: Los modelos TFLite también pueden desplegarse en microcontroladores y otros dispositivos con solo unos pocos kilobytes de memoria. El núcleo de ejecución cabe en solo 16 KB en un Arm Cortex M3 y puede ejecutar muchos modelos básicos. No requiere soporte de sistema operativo, ninguna biblioteca estándar de C o C++ ni asignación de memoria dinámica.

Reemplaza la exportación TFLite con LiteRT#

Para las nuevas exportaciones, convierte tu modelo a LiteRT. El modelo resultante conserva la extensión de archivo .tflite.

Instalación#

Para instalar los paquetes necesarios, ejecuta:

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

Para obtener instrucciones detalladas y mejores prácticas relacionadas con el proceso de instalación, consulta nuestra guía de instalación de Ultralytics. Si encuentras alguna dificultad al instalar los paquetes necesarios para YOLO26, consulta nuestra guía de problemas comunes para ver soluciones y consejos.

Uso#

Todos los modelos de Ultralytics YOLO26 están diseñados para admitir la exportación de serie, lo que facilita su integración en tu flujo de trabajo de despliegue preferido. Puedes ver la lista completa de formatos de exportación compatibles y opciones de configuración para elegir la mejor configuración para tu aplicación.

El formato LiteRT de reemplazo admite los modos Exportar, Predecir y Validar. Exporta tu modelo y luego carga el modelo .tflite exportado para ejecutar la inferencia o validar su precisión.

Exportar
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
Predecir
from ultralytics import YOLO

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

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

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

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

Argumentos de exportación#

ArgumentoTipoPredeterminadoDescripción
formatstr'litert'Formato de destino para el modelo exportado, definiendo la compatibilidad con diversos entornos de despliegue.
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 en int8 + activaciones en int8; requiere calibración data/fraction), 'w8a16' (estático, pesos en int8 + activaciones en int16; requiere calibración data/fraction), 'w8a32' (INT8 dinámico, pesos en int8 + activaciones en FP32; no requiere calibración) o 32/sin definir (FP32). FP16 no se exporta por separado; un modelo FP32 se ejecuta en FP16 automáticamente en los delegados de GPU. Sustituye a las banderas obsoletas half/int8.
batchint1Especifica el tamaño de inferencia por lotes del modelo de exportación o el número máximo de imágenes que el modelo exportado procesará simultáneamente en el modo predict.
datastrNoneRuta al YAML del conjunto de datos, esencial para la cuantización; la clasificación, en su lugar, toma un directorio de conjuntos 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 como proporción, recuento de imágenes o proporciones/recuentos de [train, val, test]. Las listas de dos elementos dejan test completo, mientras que 0 lo omite.
devicestrNoneEspecifica el dispositivo para la exportación: CPU (device=cpu), MPS para Apple silicon (device=mps).

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

Desplegando modelos YOLO26 TFLite exportados#

Después de exportar tu modelo Ultralytics YOLO26 al formato LiteRT, puedes desplegar el modelo .tflite resultante. El paso inicial principal y recomendado para ejecutar un modelo TFLite es utilizar el método YOLO("model.tflite"), como se describe en el fragmento de código de uso anterior. Sin embargo, para obtener instrucciones detalladas sobre cómo desplegar tus modelos TFLite en varios otros entornos, echa un vistazo a los siguientes recursos:

  • Android: Una guía de inicio rápido para integrar TensorFlow Lite en aplicaciones Android, que ofrece pasos fáciles de seguir para configurar y ejecutar modelos de aprendizaje automático.

  • iOS: Consulta esta guía detallada para desarrolladores sobre la integración y el despliegue de modelos de TensorFlow Lite en aplicaciones iOS, que ofrece instrucciones paso a paso y recursos.

  • Ejemplos de extremo a extremo: Esta página ofrece una visión general de varios ejemplos de TensorFlow Lite, mostrando aplicaciones prácticas y tutoriales diseñados para ayudar a los desarrolladores a implementar TensorFlow Lite en sus proyectos de aprendizaje automático en dispositivos móviles y edge.

Resumen#

Esta guía conserva el flujo de trabajo de despliegue clásico de TFLite. Para las nuevas exportaciones, usa LiteRT para crear modelos .tflite para entornos de edge computing.

Para obtener más detalles sobre el uso, visita la documentación oficial de TFLite.

Asimismo, si tienes curiosidad por otras integraciones de Ultralytics YOLO26, consulta nuestra página de la guía de integración. Allí encontrarás un montón de información útil y perspectivas.

FAQ#

  • Para una nueva exportación, utiliza el formato LiteRT. Primero, instala el paquete necesario usando:

    pip install ultralytics

    Luego, usa el siguiente fragmento de código para exportar tu 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 classification

    Para usuarios de CLI, puedes lograr esto con:

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

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

  • TensorFlow Lite (TFLite) es un framework de deep learning de código abierto diseñado para la inferencia en el dispositivo, lo que lo hace ideal para desplegar modelos YOLO26 en dispositivos móviles, embebidos e IoT. Los beneficios clave incluyen:

    • Optimización en el dispositivo: Minimiza la latencia y mejora la privacidad procesando los datos localmente.
    • Compatibilidad de plataforma: Soporta Android, iOS, Linux integrado y MCU.
    • Rendimiento: Utiliza aceleración de hardware para optimizar la velocidad y eficiencia del modelo.

    Para obtener más información, consulta la guía de TFLite.

  • Sí, puedes ejecutar modelos TFLite de YOLO26 en Raspberry Pi para mejorar la velocidad de inferencia. Primero, exporta tu modelo al formato LiteRT como se explicó anteriormente. Luego, utiliza una herramienta como TensorFlow Lite Interpreter para ejecutar el modelo en tu Raspberry Pi.

    Para optimizaciones adicionales, puedes considerar el uso de Coral Edge TPU. Para conocer los pasos detallados, consulta nuestra guía de despliegue en Raspberry Pi y la guía de integración de Edge TPU.

  • Sí, TFLite soporta el despliegue en microcontroladores con recursos limitados. El núcleo de ejecución de TFLite requiere solo 16 KB de memoria en un Arm Cortex M3 y puede ejecutar modelos YOLO26 básicos. Esto lo hace adecuado para su despliegue en dispositivos con potencia computacional y memoria mínimas.

    Para empezar, visita la guía de TFLite Micro para microcontroladores.

  • TensorFlow Lite proporciona una amplia compatibilidad de plataformas, permitiéndote desplegar modelos YOLO26 en una amplia gama de dispositivos, incluyendo:

    • Android e iOS: Soporte nativo a través de las bibliotecas de TFLite para Android e iOS.
    • Linux integrado: Ideal para computadoras de placa única como Raspberry Pi.
    • Microcontroladores: Adecuado para MCUs con recursos limitados.

    Para obtener más información sobre las opciones de despliegue, consulta nuestra detallada guía de despliegue.

  • Si encuentras errores mientras exportas modelos YOLO26 a LiteRT, las soluciones comunes incluyen:

    • Comprueba la compatibilidad del paquete: Asegúrate de que estás utilizando versiones compatibles de Ultralytics, litert-torch y ai-edge-litert. Consulta nuestra guía de instalación.
    • Compatibilidad del modelo: Verifica que el modelo YOLO26 específico admita la exportación a LiteRT consultando la página de documentación de exportación de Ultralytics.
    • Problemas de cuantización: Al utilizar la cuantización INT8, asegúrate de que la ruta de tu conjunto de datos esté especificada correctamente en el parámetro data.

    Para obtener consejos adicionales de solución de problemas, visita nuestra guía de problemas comunes.

Comentarios