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.
¿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.
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!