TensorFlow Lite para Android

TensorFlow Lite le permite ejecutar modelos de aprendizaje automático (ML) de TensorFlow en sus aplicaciones de Android. El sistema TensorFlow Lite proporciona entornos de ejecución preconstruidos y personalizables para ejecutar modelos en Android de manera rápida y eficiente, incluidas opciones para la aceleración de hardware.

hoja de ruta de aprendizaje

Aprenda conceptos y diseño de código para crear aplicaciones de Android con TensorFlow Lite, solo siga leyendo .
Comience a codificar una aplicación de Android con TensorFlow Lite de inmediato con el inicio rápido .
Obtenga información sobre cómo elegir y usar modelos ML con TensorFlow Lite, consulte los documentos de Modelos .

Modelos de aprendizaje automático

TensorFlow Lite usa modelos de TensorFlow que se convierten en un formato de modelo de aprendizaje automático más pequeño, portátil y eficiente. Puede usar modelos prediseñados con TensorFlow Lite en Android o crear sus propios modelos de TensorFlow y convertirlos al formato de TensorFlow Lite.

Esta página analiza el uso de modelos de aprendizaje automático ya creados y no cubre la creación, capacitación, prueba o conversión de modelos. Obtenga más información sobre cómo elegir, modificar, crear y convertir modelos de aprendizaje automático para TensorFlow Lite en la sección Modelos .

Ejecutar modelos en Android

Un modelo de TensorFlow Lite que se ejecuta dentro de una aplicación de Android toma datos, los procesa y genera una predicción basada en la lógica del modelo. Un modelo de TensorFlow Lite requiere un entorno de tiempo de ejecución especial para poder ejecutarse, y los datos que se pasan al modelo deben estar en un formato de datos específico, llamado tensor . Cuando un modelo procesa los datos, lo que se conoce como ejecutar una inferencia , genera resultados de predicción como nuevos tensores y los pasa a la aplicación de Android para que pueda tomar medidas, como mostrar el resultado a un usuario o ejecutar una lógica comercial adicional.

Flujo de ejecución funcional para modelos TensorFlow Lite en aplicaciones de Android

Figura 1. Flujo de ejecución funcional para modelos TensorFlow Lite en aplicaciones de Android.

En el nivel de diseño funcional, su aplicación de Android necesita los siguientes elementos para ejecutar un modelo TensorFlow Lite:

  • Entorno de tiempo de ejecución TensorFlow Lite para ejecutar el modelo
  • Controlador de entrada de modelo para transformar datos en tensores
  • Modele el controlador de salida para recibir tensores de resultados de salida e interpretarlos como resultados de predicción

Las siguientes secciones describen cómo las bibliotecas y herramientas de TensorFlow Lite brindan estos elementos funcionales.

Cree aplicaciones con TensorFlow Lite

Esta sección describe la ruta recomendada más común para implementar TensorFlow Lite en su aplicación de Android. Debe prestar más atención a las secciones de entorno de tiempo de ejecución y bibliotecas de desarrollo . Si ha desarrollado un modelo personalizado, asegúrese de revisar la sección Rutas de desarrollo avanzadas .

Opciones de entorno de tiempo de ejecución

Hay varias formas de habilitar un entorno de tiempo de ejecución para ejecutar modelos en su aplicación de Android. Estas son las opciones preferidas:

En general, debe usar el entorno de tiempo de ejecución estándar de TensorFlow Lite, ya que es el entorno más versátil para ejecutar modelos en Android. El entorno de tiempo de ejecución proporcionado por los servicios de Google Play es más conveniente y ahorra espacio que el entorno estándar, ya que se carga desde los recursos de Google Play y no se incluye en su aplicación. Algunos casos de uso avanzado requieren la personalización del entorno de tiempo de ejecución del modelo, que se describen en la sección Entornos de tiempo de ejecución avanzados .

Puede acceder a estos entornos de tiempo de ejecución en su aplicación de Android agregando bibliotecas de desarrollo de TensorFlow Lite a su entorno de desarrollo de aplicaciones. Para obtener información sobre cómo usar el entorno de tiempo de ejecución estándar en su aplicación, consulte la siguiente sección. Para obtener información sobre otros entornos de tiempo de ejecución, consulte Entornos de tiempo de ejecución avanzados .

Bibliotecas y API de desarrollo

Hay dos API principales que puede usar para integrar los modelos de aprendizaje automático de TensorFlow Lite en su aplicación de Android:

La API de intérprete proporciona clases y métodos para ejecutar inferencias con modelos existentes de TensorFlow Lite. La API de tareas de TensorFlow Lite envuelve la API de intérprete y proporciona una interfaz de programación de nivel superior para realizar tareas comunes de aprendizaje automático en el manejo de datos visuales, de audio y de texto. Debe usar la API de tareas a menos que descubra que no es compatible con su caso de uso específico.

bibliotecas

Puede acceder a la API de tareas al incluir la biblioteca de tareas de TensorFlow Lite en su aplicación de Android. La biblioteca de tareas también incluye las clases y los métodos de la API de intérprete, si los necesita.

Si solo desea utilizar la API de intérprete, puede incluir la biblioteca TensorFlow Lite . Como alternativa, puede incluir la biblioteca de servicios de Google Play para TensorFlow Lite y acceder a la API de intérprete a través de los servicios de Play, sin incluir una biblioteca separada en su aplicación.

La biblioteca de soporte de TensorFlow Lite también está disponible para proporcionar funcionalidad adicional para administrar datos para modelos, metadatos de modelos y resultados de inferencia de modelos.

Para obtener detalles de programación sobre el uso de bibliotecas TensorFlow Lite y entornos de tiempo de ejecución, consulte Herramientas de desarrollo para Android .

Obtener modelos

Ejecutar un modelo en una aplicación de Android requiere un modelo de formato TensorFlow Lite. Puede usar modelos prediseñados o crear uno con TensorFlow y convertirlo al formato Lite. Para obtener más información sobre cómo obtener modelos para su aplicación de Android, consulte la sección Modelos de TensorFlow Lite.

Manejar datos de entrada

Cualquier dato que pase a un modelo de ML debe ser un tensor con una estructura de datos específica, a menudo denominada forma del tensor. Para procesar datos con un modelo, el código de su aplicación debe transformar los datos de su formato nativo, como datos de imagen, texto o audio, en un tensor con la forma requerida para su modelo.

La biblioteca de tareas de TensorFlow Lite proporciona una lógica de manejo de datos para transformar datos visuales, de texto y de audio en tensores con la forma correcta para ser procesados ​​por un modelo de TensorFlow Lite.

Ejecutar inferencias

El procesamiento de datos a través de un modelo para generar un resultado de predicción se conoce como ejecutar una inferencia . Ejecutar una inferencia en una aplicación de Android requiere un entorno de tiempo de ejecución TensorFlow Lite, un modelo y datos de entrada .

La velocidad a la que un modelo puede generar una inferencia en un dispositivo en particular depende del tamaño de los datos procesados, la complejidad del modelo y los recursos informáticos disponibles, como memoria y CPU, o procesadores especializados llamados aceleradores . Los modelos de aprendizaje automático pueden ejecutarse más rápido en estos procesadores especializados, como unidades de procesamiento de gráficos (GPU) y unidades de procesamiento de tensor (TPU), utilizando controladores de hardware TensorFlow Lite llamados delegados . Para obtener más información sobre los delegados y la aceleración de hardware del procesamiento de modelos, consulte la descripción general de la aceleración de hardware .

Manejar resultados de salida

Los modelos generan resultados de predicción como tensores, que deben ser manejados por su aplicación de Android tomando medidas o mostrando un resultado al usuario. Los resultados de salida del modelo pueden ser tan simples como un número correspondiente a un solo resultado (0 = perro, 1 = gato, 2 = pájaro) para una clasificación de imágenes, hasta resultados mucho más complejos, como múltiples cuadros delimitadores para varios objetos clasificados en un imagen, con índices de confianza de predicción entre 0 y 1.

Rutas de desarrollo avanzadas

Cuando utilice modelos de TensorFlow Lite más sofisticados y personalizados, es posible que deba utilizar enfoques de desarrollo más avanzados que los descritos anteriormente. Las siguientes secciones describen técnicas avanzadas para ejecutar modelos y desarrollarlos para TensorFlow Lite en aplicaciones de Android.

Entornos de tiempo de ejecución avanzados

Además del tiempo de ejecución estándar y los entornos de tiempo de ejecución de los servicios de Google Play para TensorFlow Lite, existen entornos de tiempo de ejecución adicionales que puede usar con su aplicación de Android. El uso más probable para estos entornos es si tiene un modelo de aprendizaje automático que usa operaciones de ML que no son compatibles con el entorno de tiempo de ejecución estándar para TensorFlow Lite.

  • Tiempo de ejecución flexible para TensorFlow Lite
  • Tiempo de ejecución de TensorFlow Lite personalizado

El tiempo de ejecución de TensorFlow Lite Flex le permite incluir operadores específicos necesarios para su modelo. Como opción avanzada para ejecutar su modelo, puede compilar TensorFlow Lite para Android para incluir operadores y otras funciones necesarias para ejecutar su modelo de aprendizaje automático de TensorFlow. Para obtener más información, consulta Compilación de TensorFlow Lite para Android .

API de C y C++

TensorFlow Lite también proporciona una API para ejecutar modelos usando C y C++. Si su aplicación usa el NDK de Android , debería considerar usar esta API. También puede considerar usar esta API si desea poder compartir código entre varias plataformas. Para obtener más información sobre esta opción de desarrollo, consulte la página Herramientas de desarrollo .

Ejecución de modelos basada en servidor

En general, debe ejecutar modelos en su aplicación en un dispositivo Android para aprovechar la latencia más baja y la privacidad de datos mejorada para sus usuarios. Sin embargo, hay casos en los que ejecutar un modelo en un servidor en la nube, fuera del dispositivo, es una mejor solución. Por ejemplo, si tiene un modelo grande que no se comprime fácilmente a un tamaño que quepa en los dispositivos Android de sus usuarios, o que se puede ejecutar con un rendimiento razonable en esos dispositivos. Este enfoque también puede ser su solución preferida si el rendimiento constante del modelo en una amplia gama de dispositivos es la máxima prioridad.

Google Cloud ofrece un conjunto completo de servicios para ejecutar modelos de aprendizaje automático de TensorFlow. Para obtener más información, consulte la página de productos de inteligencia artificial y aprendizaje automático de Google Cloud.

Desarrollo y optimización de modelos personalizados

Es probable que las rutas de desarrollo más avanzadas incluyan el desarrollo de modelos de aprendizaje automático personalizados y la optimización de esos modelos para su uso en dispositivos Android. Si planea crear modelos personalizados, asegúrese de considerar aplicar técnicas de cuantificación a los modelos para reducir los costos de memoria y procesamiento. Para obtener más información sobre cómo crear modelos de alto rendimiento para usar con TensorFlow Lite, consulte Mejores prácticas de rendimiento en la sección Modelos.

Próximos pasos