Está disponible oficialmente el complemento de TensorFlow Lite para Flutter
18 de agosto de 2023
Publicado por Paul Ruiz, Developer Relations Engineer

Nos complace anunciar que el complemento de TensorFlow Lite para Flutter se migró oficialmente a la cuenta de GitHub de TensorFlow y se lanzó.

Hace tres años, Amish Garg, uno de nuestros talentosos colaboradores de Google Summer of Code, creó un complemento de TensorFlow Lite que se usa habitualmente en Flutter. El plugin era tan popular que decidimos migrarlo a nuestro repositorio oficial, para que pueda mantenerlo directamente y con más facilidad el equipo de Google. Agradecemos a Amish por su trabajo en el complemento de TensorFlow Lite para Flutter.

Gracias a los esfuerzos de los desarrolladores de la comunidad, el complemento se actualizó a la última versión de TensorFlow Lite y se agregó una colección de nuevas funciones y aplicaciones de ejemplo, como la detección de objetos a través de un feed de cámara en vivo.

Imagen en movimiento de un feed de cámara en vivo que muestra la detección de varios objetos en un escritorio de trabajo

¿Qué es TensorFlow Lite? TensorFlow Lite es una forma de ejecutar localmente modelos de TensorFlow en dispositivos, compatible con dispositivos móviles, integrados, web y perimetrales. Por su compatibilidad con varias plataformas y las optimizaciones de rendimiento en el dispositivo, TensorFlow Lite es ideal para agregar al conjunto de herramientas de desarrollo de Flutter. Nuestro objetivo con este complemento es facilitar la integración de los modelos de TensorFlow Lite en las apps de Flutter a través de plataformas móviles, y actualmente estamos desarrollando la compatibilidad con computadoras de escritorio gracias a los esfuerzos de nuestra comunidad de desarrolladores. Puedes encontrar los modelos de TensorFlow Lite preentrenados en repositorios de modelos como Kaggle Models o crear tus propios modelos personalizados de TensorFlow Lite.

Veamos cómo puedes usar el complemento de TensorFlow Lite para Flutter en la clasificación de imágenes:

Clasificación de imágenes de TensorFlow Lite con Flutter

Primero, deberás instalar el complemento desde pub.dev. Una vez que lo instales, puedes cargar un modelo de TensorFlow Lite en tu app de Flutter y definir las formas de tensores de entrada y salida. Si usas el modelo MobileNet, el tensor de entrada será una imagen RGB de 224 por 224 y la salida será una lista de niveles de confianza de las etiquetas entrenadas.

// Load model Future<void> _loadModel() async { final options = InterpreterOptions(); // Load model from assets interpreter = await Interpreter.fromAsset(modelPath, options: options); // Get tensor input shape [1, 224, 224, 3] inputTensor = interpreter.getInputTensors().first; // Get tensor output shape [1, 1001] outputTensor = interpreter.getOutputTensors().first; }

Para que las cosas estén un poco más organizadas, también puedes cargar las etiquetas de los 1000 artículos para los que MobileNet está entrenado:

// Load labels from assets Future<void> _loadLabels() async { final labelTxt = await rootBundle.loadString(labelsPath); labels = labelTxt.split('\n'); }

Para ser sucintos, omitamos algunos de los pasos del preprocesamiento, que igualmente puedes encontrar en este ejemplo de clasificación de imágenes del repositorio.

Cuando tengas todo listo para ejecutar la inferencia, puedes crear una nueva entrada y salida en función de las formas de tensores que definiste antes y luego ejecutar una llamada en el intérprete para obtener los resultados finales.

// Run inference Future<void> runInference( List<List<List<num>>> imageMatrix, ) async { // Tensor input [1, 224, 224, 3] final input = [imageMatrix]; // Tensor output [1, 1001] final output = [List<int>.filled(1001, 0)];    // Run inference    interpreter.run(input, output);    // Get first output tensor    final result = output.first;

Ahora que tienes los resultados, puedes hacerlos coincidir con tus etiquetas y usarlos en tu app.

Imagen en movimiento de un feed de cámara en vivo que muestra la identificación correcta de varios objetos en la app

Lo que viene

Para ver qué más puedes hacer con el complemento de TensorFlow Lite para Flutter, echa un vistazo al repositorio oficial de GitHub, donde puedes encontrar ejemplos de clasificación de texto, superresolución, transferencia de estilo y mucho más.

Además, estamos trabajando en un nuevo complemento específico para MediaPipe Tasks, una herramienta de código reducido para realizar fácilmente tareas comunes de aprendizaje automático en el dispositivo. Estas tareas incluyen la clasificación de imágenes y la detección de objetos, como acabas de aprender, así como la clasificación de audio, la detección de puntos de referencia faciales y el reconocimiento de gestos, entre otras.

Esperamos que hagas un montón de cosas interesantes, ¡así que asegúrate de compartirlas con @googledevs, @TensorFlow y tus comunidades de desarrolladores!