Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Comience con TensorFlow Lite

TensorFlow Lite proporciona todas las herramientas que necesita para convertir y ejecutar modelos TensorFlow en dispositivos móviles, integrados e IoT. La siguiente guía explica cada paso del flujo de trabajo del desarrollador y proporciona enlaces a más instrucciones.

1. Elige un modelo

Un modelo TensorFlow es una estructura de datos que contiene la lógica y el conocimiento de una red de aprendizaje automático capacitada para resolver un problema en particular. Hay muchas formas de obtener un modelo TensorFlow, desde el uso de modelos pre-entrenados hasta el suyo propio.

Para usar un modelo con TensorFlow Lite, debe convertir un modelo completo de TensorFlow al formato TensorFlow Lite; no puede crear o entrenar un modelo usando TensorFlow Lite. Por lo tanto, debe comenzar con un modelo TensorFlow normal y luego convertir el modelo .

Use un modelo pre-entrenado

El equipo de TensorFlow Lite proporciona un conjunto de modelos pre-entrenados que resuelven una variedad de problemas de aprendizaje automático. Estos modelos se han convertido para funcionar con TensorFlow Lite y están listos para usar en sus aplicaciones.

Los modelos pre-entrenados incluyen:

Vea nuestra lista completa de modelos pre-entrenados en Modelos .

Modelos de otras fuentes.

Hay muchos otros lugares donde puede obtener modelos TensorFlow previamente entrenados, incluido TensorFlow Hub . En la mayoría de los casos, estos modelos no se proporcionarán en el formato TensorFlow Lite, y deberá convertirlos antes de usarlos.

Vuelva a entrenar un modelo (transferencia de aprendizaje)

El aprendizaje por transferencia le permite tomar un modelo entrenado y volver a entrenarlo para realizar otra tarea. Por ejemplo, un modelo de clasificación de imágenes podría ser reentrenado para reconocer nuevas categorías de imágenes. Volver a entrenar lleva menos tiempo y requiere menos datos que entrenar un modelo desde cero.

Puede usar el aprendizaje de transferencia para personalizar modelos pre-entrenados para su aplicación. Aprenda a realizar el aprendizaje de transferencia en el reconocimiento de flores con el codelab TensorFlow .

Entrena un modelo personalizado

Si ha diseñado y entrenado su propio modelo TensorFlow, o ha entrenado un modelo obtenido de otra fuente, debe convertirlo al formato TensorFlow Lite .

2. Convertir el modelo

TensorFlow Lite está diseñado para ejecutar modelos de manera eficiente en dispositivos móviles y otros dispositivos integrados con recursos informáticos y de memoria limitados. Parte de esta eficiencia proviene del uso de un formato especial para almacenar modelos. Los modelos TensorFlow deben convertirse a este formato antes de que TensorFlow Lite pueda utilizarlos.

La conversión de modelos reduce su tamaño de archivo e introduce optimizaciones que no afectan la precisión. El convertidor TensorFlow Lite proporciona opciones que le permiten reducir aún más el tamaño del archivo y aumentar la velocidad de ejecución, con algunas compensaciones.

Convertidor TensorFlow Lite

El convertidor TensorFlow Lite es una herramienta disponible como API de Python que convierte los modelos entrenados de TensorFlow al formato TensorFlow Lite. También puede introducir optimizaciones, que se tratan en la sección 4, Optimice su modelo .

El siguiente ejemplo muestra un TensorFlow SavedModel se convierte al formato TensorFlow Lite:

 import tensorflow as tf

converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)
 

Puede convertir los modelos TensorFlow 2.0 de manera similar.

El convertidor también se puede usar desde la línea de comandos , pero se recomienda la API de Python.

Opciones

El convertidor puede convertir desde una variedad de tipos de entrada.

Al convertir modelos TensorFlow 1.x , estos son:

Al convertir modelos TensorFlow 2.x , estos son:

El convertidor se puede configurar para aplicar varias optimizaciones que pueden mejorar el rendimiento o reducir el tamaño del archivo. Esto se trata en la sección 4, Optimice su modelo .

Compatibilidad con operaciones

TensorFlow Lite actualmente admite un subconjunto limitado de operaciones de TensorFlow . El objetivo a largo plazo es que todas las operaciones de TensorFlow sean compatibles.

Si el modelo que desea convertir contiene operaciones no compatibles, puede usar TensorFlow Select para incluir operaciones de TensorFlow. Esto dará como resultado que se implemente un binario más grande en los dispositivos.

3. Ejecute inferencia con el modelo

La inferencia es el proceso de ejecutar datos a través de un modelo para obtener predicciones. Requiere un modelo, un intérprete y datos de entrada.

Intérprete TensorFlow Lite

El intérprete TensorFlow Lite es una biblioteca que toma un archivo modelo, ejecuta las operaciones que define en los datos de entrada y proporciona acceso a la salida.

El intérprete funciona en múltiples plataformas y proporciona una API simple para ejecutar modelos TensorFlow Lite de Java, Swift, Objective-C, C ++ y Python.

El siguiente código muestra el intérprete que se invoca desde Java:

 try (Interpreter interpreter = new Interpreter(tensorflow_lite_model_file)) {
  interpreter.run(input, output);
}
 

GPU aceleración y delegados

Algunos dispositivos proporcionan aceleración de hardware para operaciones de aprendizaje automático. Por ejemplo, la mayoría de los teléfonos móviles tienen GPU, que pueden realizar operaciones de matriz de punto flotante más rápido que una CPU.

La aceleración puede ser sustancial. Por ejemplo, un modelo de clasificación de imágenes MobileNet v1 funciona 5.5 veces más rápido en un teléfono Pixel 3 cuando se usa la aceleración de GPU.

El intérprete TensorFlow Lite se puede configurar con delegados para hacer uso de la aceleración de hardware en diferentes dispositivos. El delegado de GPU permite que el intérprete ejecute operaciones apropiadas en la GPU del dispositivo.

El siguiente código muestra el delegado de GPU que se utiliza desde Java:

 GpuDelegate delegate = new GpuDelegate();
Interpreter.Options options = (new Interpreter.Options()).addDelegate(delegate);
Interpreter interpreter = new Interpreter(tensorflow_lite_model_file, options);
try {
  interpreter.run(input, output);
}
 

Para agregar soporte para nuevos aceleradores de hardware, puede definir su propio delegado .

Android e iOS

El intérprete TensorFlow Lite es fácil de usar desde las dos principales plataformas móviles. Para comenzar, explore las guías de inicio rápido de Android y de inicio rápido de iOS . Las aplicaciones de ejemplo están disponibles para ambas plataformas.

Para obtener las bibliotecas requeridas, los desarrolladores de Android deben usar el AAR de TensorFlow Lite . Los desarrolladores de iOS deben usar CocoaPods para Swift u Objective-C .

Linux

Embedded Linux es una plataforma importante para implementar el aprendizaje automático. Para comenzar a usar Python para realizar inferencias con sus modelos TensorFlow Lite, siga el inicio rápido de Python .

Para instalar la biblioteca C ++, consulte las instrucciones de compilación para las placas basadas en Raspberry Pi o Arm64 (para placas como Odroid C2, Pine64 y NanoPi).

Microcontroladores

TensorFlow Lite para microcontroladores es un puerto experimental de TensorFlow Lite dirigido a microcontroladores y otros dispositivos con solo kilobytes de memoria.

Operaciones

Si su modelo requiere operaciones de TensorFlow que aún no están implementadas en TensorFlow Lite, puede usar TensorFlow Select para usarlas en su modelo. Deberá crear una versión personalizada del intérprete que incluya las operaciones de TensorFlow.

Puede utilizar operadores personalizados para escribir sus propias operaciones o portar nuevas operaciones a TensorFlow Lite.

Las versiones de operador le permiten agregar nuevas funcionalidades y parámetros a las operaciones existentes.

4. Optimiza tu modelo

TensorFlow Lite proporciona herramientas para optimizar el tamaño y el rendimiento de sus modelos, a menudo con un impacto mínimo en la precisión. Los modelos optimizados pueden requerir capacitación, conversión o integración un poco más complejas.

La optimización del aprendizaje automático es un campo en evolución, y el Kit de herramientas de optimización de modelos de TensorFlow Lite crece continuamente a medida que se desarrollan nuevas técnicas.

Actuación

El objetivo de la optimización del modelo es alcanzar el equilibrio ideal de rendimiento, tamaño del modelo y precisión en un dispositivo determinado. Las mejores prácticas de rendimiento pueden ayudarlo a guiarlo a través de este proceso.

Cuantización

Al reducir la precisión de los valores y las operaciones dentro de un modelo, la cuantización puede reducir tanto el tamaño del modelo como el tiempo requerido para la inferencia. Para muchos modelos, solo hay una mínima pérdida de precisión.

El convertidor TensorFlow Lite facilita la cuantización de los modelos TensorFlow. El siguiente código de Python cuantifica un SavedModel y lo guarda en el disco:

 import tensorflow as tf

converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quant_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_quantized_model)
 

TensorFlow Lite admite la reducción de la precisión de los valores de coma flotante completa a flotantes de media precisión (float16) o enteros de 8 bits. Existen compensaciones en el tamaño y la precisión del modelo para cada opción, y algunas operaciones tienen implementaciones optimizadas para estos tipos de precisión reducida.

Para obtener más información sobre la cuantización, consulte Cuantización posterior al entrenamiento .

Kit de herramientas de optimización de modelos

Model Optimization Toolkit es un conjunto de herramientas y técnicas diseñadas para facilitar a los desarrolladores la optimización de sus modelos. Muchas de las técnicas se pueden aplicar a todos los modelos de TensorFlow y no son específicas de TensorFlow Lite, pero son especialmente valiosas cuando se realizan inferencias en dispositivos con recursos limitados.

Próximos pasos

Ahora que está familiarizado con TensorFlow Lite, explore algunos de los siguientes recursos: