¡Reserva! Google I / O regresa del 18 al 20 de mayo Regístrese ahora
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Empiece a utilizar TensorFlow Lite

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

1. Elige un modelo

Un modelo de TensorFlow es una estructura de datos que contiene la lógica y el conocimiento de una red de aprendizaje automático entrenada para resolver un problema en particular. Hay muchas formas de obtener un modelo de TensorFlow, desde usar modelos previamente entrenados hasta entrenar los suyos propios.

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

Utilice un modelo previamente entrenado

El equipo de TensorFlow Lite proporciona un conjunto de modelos entrenados previamente 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 previamente entrenados incluyen:

Vea nuestra lista completa de modelos previamente entrenados en Modelos .

Modelos de otras fuentes

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

Volver a entrenar un modelo (aprendizaje de transferencia)

El aprendizaje de 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 volver a capacitarse para reconocer nuevas categorías de imágenes. El reentrenamiento lleva menos tiempo y requiere menos datos que entrenar un modelo desde cero.

Puede utilizar el aprendizaje por transferencia para personalizar modelos previamente entrenados para su aplicación. Aprenda a realizar el aprendizaje por transferencia en el laboratorio de código Recognize flowers with TensorFlow .

Entrena un modelo personalizado

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

También puedes probar la biblioteca Model Maker de TensorFlow Lite, que simplifica el proceso de entrenamiento de un modelo de TensorFlow Lite mediante conjuntos de datos personalizados.

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 de TensorFlow deben convertirse a este formato antes de que TensorFlow Lite pueda usarlos.

La conversión de modelos reduce el tamaño de sus archivos e introduce optimizaciones que no afectan la precisión. El convertidor TensorFlow Lite ofrece 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 de TensorFlow Lite es una herramienta disponible como una 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 SavedModel TensorFlow que se convierte al formato de 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 de TensorFlow 2.0 de manera similar.

El convertidor también se puede utilizar 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 de TensorFlow 1.x , estos son:

Al convertir modelos de 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 de operaciones

Actualmente, TensorFlow Lite 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 admitidas, puede usar TensorFlow Select para incluir operaciones de TensorFlow. Esto dará como resultado la implementación de 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 de TensorFlow Lite

El intérprete de TensorFlow Lite es una biblioteca que toma un archivo de 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 de TensorFlow Lite desde 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);
}

Delegados y aceleración de GPU

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 de MobileNet v1 se ejecuta 5,5 veces más rápido en un teléfono Pixel 3 cuando se utiliza la aceleración de GPU.

El intérprete de TensorFlow Lite se puede configurar con Delegados para hacer uso de la aceleración de hardware en diferentes dispositivos. El delegado de GPU permite al intérprete ejecutar las operaciones adecuadas 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 y iOS

El intérprete de 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 iOS . Hay aplicaciones de ejemplo disponibles para ambas plataformas.

Para obtener las bibliotecas necesarias, 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 de TensorFlow Lite, siga la guía de inicio rápido de Python .

Para instalar la biblioteca C ++, consulte las instrucciones de compilación para 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 destinado a microcontroladores y otros dispositivos con solo kilobytes de memoria.

Operaciones

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

Puede usar operadores personalizados para escribir sus propias operaciones o transferir 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 una formació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 desempeño pueden ayudarlo a guiarlo a través de este proceso.

Cuantificación

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

El convertidor TensorFlow Lite facilita la cuantificación de modelos de 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_quantized_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 desde el punto flotante completo hasta los flotantes de precisión media (float16) o enteros de 8 bits. Hay compensaciones en el tamaño del modelo y la precisión para cada elección, y algunas operaciones tienen implementaciones optimizadas para estos tipos de precisión reducida.

Para obtener más información sobre la cuantificación, consulte Cuantificació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 ejecuta inferencia en dispositivos con recursos limitados.

Próximos pasos

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