Exportación de modelos TFLite para implementación (obsoleta)#
Desde Ultralytics 8.4.83, se ha eliminado el formato de exportación independiente tflite y se ha sustituido por el formato unificado Google LiteRT. LiteRT (Lite Runtime) es la nueva generación y el nuevo nombre de TensorFlow Lite, y exporta el mismo modelo .tflite, que ahora abarca la implementación en móviles, sistemas integrados, dispositivos edge y navegadores en un único formato.
format="tflite" sigue funcionando, pero muestra un aviso de obsolescencia y exporta un modelo LiteRT. Usa format="litert" a partir de ahora; para consultar las instrucciones y opciones de exportación actuales, consulta la guía de exportación de LiteRT.
La implementación de modelos de visión artificial en dispositivos edge o sistemas integrados requiere un formato que garantice un rendimiento fluido.
El antiguo formato de exportación TensorFlow Lite o TFLite optimizaba los modelos 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 implementación de TFLite heredado; usa LiteRT para las nuevas exportaciones.
¿Por qué se usaba TFLite para exportar?#
Presentado por Google en mayo de 2017 como parte de su framework TensorFlow, TensorFlow Lite, o TFLite para abreviar, era un framework de aprendizaje profundo de código abierto diseñado para la inferencia en el dispositivo, también conocida como computación edge. Proporcionaba a los desarrolladores herramientas para ejecutar modelos entrenados en dispositivos móviles, sistemas integrados e IoT, así como en ordenadores tradicionales.
TensorFlow Lite era compatible con una amplia variedad de plataformas, como Linux integrado, Android, iOS y microcontroladores (MCU). Las exportaciones de TFLite permitían ejecutar modelos localmente y sin conexión.
Características principales de los modelos TFLite#
Los modelos TFLite ofrecen numerosas características clave que permiten el aprendizaje automático en el dispositivo y ayudan a los desarrolladores a ejecutar sus modelos en dispositivos móviles, sistemas integrados y edge:
-
Optimización en el dispositivo: TFLite optimiza el aprendizaje automático 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: TFLite ofrece una amplia compatibilidad con plataformas, como Android, iOS, Linux integrado y microcontroladores.
-
Compatibilidad con diversos lenguajes: TFLite es compatible con varios lenguajes de programación, como Java, Swift, Objective-C, C++ y Python.
-
Alto rendimiento: ofrece un rendimiento superior mediante la aceleración por hardware y la optimización de modelos.
Rendimiento medido (histórico)#
Estos resultados se registraron con el complemento de Flutter de Ultralytics 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 de 3 nm (SM8850) 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), una GPU Adreno y una NPU Hexagon. Estas tablas comparan los recursos TFLite INT8 heredados de onnx2tf con las exportaciones candidatas de litert-torch evaluadas durante la migración. Posteriormente, los recursos de la versión se sobrescribieron con las exportaciones estandarizadas, por lo que estas cifras no describen los bytes actuales de los recursos v0.6.6. Consulta las tablas de rendimiento de LiteRT para ver las mediciones actuales.
Ambos formatos se ejecutaron en la misma prueba consecutiva con GPU y con los tamaños de entrada indicados. Cada celda muestra el tiempo total (preprocesamiento + inferencia + posprocesamiento), con el desglose por etapa debajo; los registros nativos confirmaron que ambos formatos delegaban el grafo completo a LiteRT OpenCL (LITERT_CL) en la GPU Adreno.
| Modelo | Tarea | tamaño (píxeles) | Heredado TFLite INT8 de onnx2tf (ms) | Candidato LiteRT w8a32 (ms) |
|---|---|---|---|---|
| YOLO26n | Detección | 640 | 14.0 1.8 / 8.1 / 4.2 | 13.5 1.9 / 8.1 / 3.5 |
| YOLO26n-seg | Segmentación | 640 | 30.1 1.9 / 20.3 / 8.0 | 28.6 1.8 / 20.1 / 6.7 |
| YOLO26n-sem | Semántica | 640 | 26.4 1.9 / 16.4 / 8.1 | 32.9 1.8 / 23.0 / 8.2 |
| YOLO26n-cls | Clasificar | 224 | 3.5 0.9 / 2.2 / 0.4 | 3.2 1.0 / 2.2 / 0.1 |
| YOLO26n-pose | Pose | 640 | 17.4 2.4 / 9.9 / 5.1 | 14.0 1.9 / 9.3 / 2.8 |
| YOLO26n-obb | OBB | 640 | 13.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ó formatos de cuantización para detección de YOLO26n. La inferencia es la métrica comparable que depende del formato:
| Formato de Android | Inferencia en GPU (ms) | Compilación en GPU |
|---|---|---|
| onnx2tf INT8 (TFLite heredado) | 8.6 | sí |
| LiteRT w8a32 (candidato) | 8.4 | sí |
LiteRT INT8 (quantize=8) | 11.0 | sí |
| LiteRT FP32 | 8.8 | sí |
LiteRT w8a16 (quantize="w8a16") | Alternativa de CPU | no |
En esta ejecución, w8a16 recurrió a la CPU y tardó unos 660 ms en total, frente a unos 17 ms con los formatos de GPU. Estos resultados motivaron la distribución de w8a32, pero la compatibilidad con delegados y el rendimiento dependen del dispositivo y de la versión del entorno de ejecución. Evalúa el dispositivo de destino y confirma la asignación del acelerador en los registros del entorno de ejecución.
Opciones de implementación en TFLite#
Antes de ver el ejemplo de exportación de sustitución con LiteRT, veamos cómo se suelen utilizar los modelos TFLite.
TFLite ofrece varias opciones de implementación de modelos de aprendizaje automático en el dispositivo, entre ellas:
- Implementación en Android e iOS: Las aplicaciones de Android e iOS con TFLite pueden analizar las imágenes de cámaras y los datos de sensores en tiempo real para detectar e identificar objetos. TFLite también ofrece bibliotecas nativas de iOS escritas en Swift y Objective-C. El diagrama de arquitectura siguiente muestra el proceso para implementar un modelo entrenado en plataformas Android e iOS mediante TensorFlow Lite.
-
Implementación en Linux integrado: Si ejecutar inferencias en una Raspberry Pi mediante la guía de Ultralytics no satisface los requisitos de velocidad de tu caso de uso, puedes utilizar un modelo TFLite exportado para acelerar las inferencias. Además, puedes mejorar aún más el rendimiento con un dispositivo Coral Edge TPU.
-
Implementación en microcontroladores: Los modelos TFLite también pueden implementarse en microcontroladores y otros dispositivos con solo unos pocos kilobytes de memoria. El entorno de ejecución principal cabe en tan solo 16 KB en un Arm Cortex M3 y puede ejecutar muchos modelos básicos. No requiere compatibilidad con sistemas operativos, bibliotecas estándar de C o C++ ni asignación dinámica de memoria.
Sustituir la exportación TFLite por 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:
# Install the required package for YOLO26
pip install ultralyticsPara obtener instrucciones detalladas y buenas prácticas relacionadas con el proceso de instalación, consulta nuestra guía de instalación de Ultralytics. Si tienes dificultades al instalar los paquetes necesarios para YOLO26, consulta nuestra guía sobre problemas habituales, donde encontrarás soluciones y consejos.
Uso#
Todos los modelos Ultralytics YOLO26 están diseñados para admitir la exportación desde el primer momento, lo que facilita su integración en el flujo de trabajo de implementación que prefieras. Puedes consultar la lista completa de formatos de exportación y opciones de configuración compatibles para elegir la configuración más adecuada para tu aplicación.
El formato de sustitución LiteRT es compatible con los modos Exportar, Predecir y Validar. Exporta tu modelo y, después, carga el modelo .tflite exportado para ejecutar inferencias o validar su precisión.
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ónfrom ultralytics import YOLO
# Carga el modelo TFLite exportado
model = YOLO("yolo26n.tflite")
# Ejecutar inferencia
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Carga el modelo TFLite 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#
| Argumento | Tipo | Predeterminado | Descripción |
|---|---|---|---|
format | str | 'litert' | Formato de destino del modelo exportado, que define su compatibilidad con distintos entornos de implementación. |
imgsz | int o tuple | 640 | Tamañ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. |
quantize | int o str | None | Precisió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: un modelo FP32 se ejecuta automáticamente en FP16 con delegados de GPU. Sustituye a las opciones obsoletas half/int8. |
batch | int | 1 | Especifica 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. |
data | str | None | Ruta al archivo YAML del conjunto de datos, imprescindible para la cuantización; en clasificación se utiliza una carpeta de conjunto de datos o el nombre de uno integrado. Si se omite con quantize=8 o 'w8a16', Ultralytics selecciona el conjunto de datos de calibración predeterminado para la tarea del modelo. |
fraction | float, int o list | 1.0 | Subconjunto 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. |
device | str | None | Especifica el dispositivo para la exportación: CPU (device=cpu) o MPS para Apple silicon (device=mps). |
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 YOLO26 TFLite exportados#
Después de exportar tu modelo Ultralytics YOLO26 al formato LiteRT, puedes implementar el modelo .tflite resultante. El primer paso recomendado para ejecutar un modelo TFLite es utilizar el método YOLO("model.tflite"), tal como se indica en el fragmento de código de uso anterior. Sin embargo, para obtener instrucciones detalladas sobre cómo implementar tus modelos TFLite en otros entornos, consulta los siguientes recursos:
-
Android: Guía de inicio rápido para integrar TensorFlow Lite en aplicaciones Android, con pasos sencillos para configurar y ejecutar modelos de aprendizaje automático.
-
iOS: Consulta esta guía detallada para desarrolladores sobre la integración y la implementación de modelos TensorFlow Lite en aplicaciones iOS, con instrucciones paso a paso y recursos.
-
Ejemplos de principio a fin: Esta página ofrece una descripción general de varios ejemplos de TensorFlow Lite, con aplicaciones prácticas y tutoriales para ayudar a los desarrolladores a implementar TensorFlow Lite en sus proyectos de aprendizaje automático para dispositivos móviles y edge.
Resumen#
Esta guía conserva el flujo de trabajo de implementación TFLite heredado. Para las nuevas exportaciones, usa LiteRT para crear modelos .tflite destinados a entornos de computación edge.
Para obtener más información sobre el uso, visita la documentación oficial de TFLite.
Además, si te interesan otras integraciones de Ultralytics YOLO26, consulta nuestra página de guías de integración. Allí encontrarás mucha información y consejos útiles.
Preguntas frecuentes#
Para una nueva exportación, usa el formato LiteRT. Primero, instala el paquete necesario con:
pip install ultralyticsA continuación, usa el siguiente fragmento de código para exportar 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ónSi utilizas la CLI, puedes hacerlo con:
yolo export model=yolo26n.pt format=litert imgsz=640 # use imgsz=224 for classificationPara obtener más información, visita la guía de exportación de Ultralytics.
TensorFlow Lite (TFLite) es un framework de aprendizaje profundo de código abierto diseñado para la inferencia en el dispositivo, por lo que es ideal para implementar modelos YOLO26 en dispositivos móviles, sistemas integrados e IoT. Entre sus principales ventajas se incluyen:
- Optimización en el dispositivo: Reduce la latencia y mejora la privacidad al procesar los datos localmente.
- Compatibilidad con plataformas: Compatible con Android, iOS, Linux integrado y MCU.
- Rendimiento: Utiliza aceleración por hardware para optimizar la velocidad y la eficiencia del modelo.
Para obtener más información, consulta la guía de TFLite.
Sí, puedes ejecutar modelos YOLO26 TFLite en Raspberry Pi para mejorar la velocidad de inferencia. Primero, exporta tu modelo al formato LiteRT como se ha explicado anteriormente. Después, utiliza una herramienta como TensorFlow Lite Interpreter para ejecutar el modelo en tu Raspberry Pi.
Para optimizar aún más el rendimiento, puedes usar Coral Edge TPU. Para consultar los pasos detallados, visita nuestra guía de implementación en Raspberry Pi y la guía de integración de Edge TPU.
TFLite permite implementar modelos en microcontroladores con recursos limitados: su entorno de ejecución principal solo necesita 16 KB de memoria en un Arm Cortex M3 y puede ejecutar muchos modelos básicos. Sin embargo, los modelos YOLO26 suelen ser demasiado grandes para la memoria habitual de los microcontroladores, así que los ordenadores de placa única, los dispositivos móviles o los aceleradores específicos son opciones más adecuadas para YOLO26.
Para empezar, visita la guía de TFLite Micro para microcontroladores.
TensorFlow Lite ofrece una amplia compatibilidad con plataformas y permite implementar modelos YOLO26 en numerosos dispositivos, entre ellos:
- Android e iOS: Compatibilidad nativa mediante las bibliotecas de TFLite para Android e iOS.
- Linux integrado: Ideal para ordenadores de placa única, como Raspberry Pi.
- Microcontroladores: Adecuado para MCU con recursos limitados.
Para obtener más información sobre las opciones de implementación, consulta nuestra guía detallada de implementación.
Si se producen errores al exportar modelos YOLO26 a LiteRT, algunas soluciones habituales son:
- Comprueba la compatibilidad de los paquetes: Asegúrate de utilizar versiones compatibles de Ultralytics,
litert-torchyai-edge-litert. Consulta nuestra guía de instalación. - Compatibilidad del modelo: Comprueba que el modelo YOLO26 específico sea compatible con la exportación a LiteRT; para ello, consulta la página de documentación de exportación de Ultralytics.
- 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.
- Comprueba la compatibilidad de los paquetes: Asegúrate de utilizar versiones compatibles de Ultralytics,