Clasificación de imágenes

La tarea de identificar lo que representa una imagen se llama clasificación de imágenes . Un modelo de clasificación de imágenes está entrenado para reconocer varias clases de imágenes. Por ejemplo, puede entrenar a un modelo para que reconozca fotografías que representan tres tipos diferentes de animales: conejos, hámsteres y perros. TensorFlow Lite proporciona modelos optimizados previamente entrenados que puede implementar en sus aplicaciones móviles. Obtenga más información sobre la clasificación de imágenes usando TensorFlow aquí .

La siguiente imagen muestra el resultado del modelo de clasificación de imágenes en Android.

Captura de pantalla del ejemplo de Android

Empezar

Si es nuevo en TensorFlow Lite y está trabajando con Android o iOS, se recomienda que explore las siguientes aplicaciones de ejemplo que pueden ayudarlo a comenzar.

Puede aprovechar la API lista para usar de la biblioteca de tareas de TensorFlow Lite para integrar modelos de clasificación de imágenes en solo unas pocas líneas de código. También puede crear su propio canal de inferencia personalizado utilizando la biblioteca de soporte de TensorFlow Lite .

El siguiente ejemplo de Android demuestra la implementación de ambos métodos como lib_task_api y lib_support , respectivamente.

Ver ejemplo de Android

Ver ejemplo de iOS

Si está utilizando una plataforma que no sea Android/iOS, o si ya está familiarizado con las API de TensorFlow Lite , descargue el modelo inicial y los archivos de soporte (si corresponde).

Descargar modelo inicial

Descripcion del modelo

Cómo funciona

Durante el entrenamiento, un modelo de clasificación de imágenes recibe imágenes y sus etiquetas asociadas. Cada etiqueta es el nombre de un concepto o clase distinta que el modelo aprenderá a reconocer.

Con suficientes datos de entrenamiento (a menudo cientos o miles de imágenes por etiqueta), un modelo de clasificación de imágenes puede aprender a predecir si las nuevas imágenes pertenecen a alguna de las clases en las que se ha entrenado. Este proceso de predicción se llama inferencia . Tenga en cuenta que también puede utilizar el aprendizaje por transferencia para identificar nuevas clases de imágenes utilizando un modelo preexistente. El aprendizaje por transferencia no requiere un conjunto de datos de entrenamiento muy grande.

Cuando posteriormente proporcione una nueva imagen como entrada al modelo, generará las probabilidades de que la imagen represente cada uno de los tipos de animales con los que fue entrenado. Un resultado de ejemplo podría ser el siguiente:

tipo de animal Probabilidad
Conejo 0,07
Hámster 0,02
Perro 0,91

Cada número en la salida corresponde a una etiqueta en los datos de entrenamiento. Al asociar el resultado con las tres etiquetas con las que se entrenó el modelo, se puede ver que el modelo ha predicho una alta probabilidad de que la imagen represente un perro.

Podrías notar que la suma de todas las probabilidades (para conejo, hámster y perro) es igual a 1. Este es un tipo de resultado común para modelos con múltiples clases (consulte Softmax para obtener más información).

Resultados ambiguos

Dado que las probabilidades de salida siempre sumarán 1, si no se reconoce con seguridad que una imagen pertenece a alguna de las clases en las que se entrenó el modelo, es posible que vea la probabilidad distribuida entre las etiquetas sin que ningún valor sea significativamente mayor.

Por ejemplo, lo siguiente podría indicar un resultado ambiguo:

Etiqueta Probabilidad
conejo 0,31
hámster 0,35
perro 0,34
Si su modelo arroja con frecuencia resultados ambiguos, es posible que necesite un modelo diferente y más preciso.

Elegir una arquitectura modelo

TensorFlow Lite le proporciona una variedad de modelos de clasificación de imágenes, todos entrenados en el conjunto de datos original. Las arquitecturas modelo como MobileNet, Inception y NASNet están disponibles en TensorFlow Hub . Para elegir el mejor modelo para su caso de uso, debe considerar las arquitecturas individuales, así como algunas de las compensaciones entre varios modelos. Algunas de estas compensaciones del modelo se basan en métricas como el rendimiento, la precisión y el tamaño del modelo. Por ejemplo, es posible que necesite un modelo más rápido para crear un escáner de códigos de barras, mientras que es posible que prefiera un modelo más lento y preciso para una aplicación de imágenes médicas. Tenga en cuenta que los modelos de clasificación de imágenes proporcionados aceptan diferentes tamaños de entrada. Para algunos modelos, esto se indica en el nombre del archivo. Por ejemplo, el modelo Mobilenet_V1_1.0_224 acepta una entrada de 224x224 píxeles. Todos los modelos requieren tres canales de color por píxel (rojo, verde y azul). Los modelos cuantificados requieren 1 byte por canal y los modelos flotantes requieren 4 bytes por canal. Los ejemplos de código de Android e iOS demuestran cómo procesar imágenes de cámaras de tamaño completo en el formato requerido para cada modelo.

Usos y limitaciones

Los modelos de clasificación de imágenes de TensorFlow Lite son útiles para la clasificación de una sola etiqueta; es decir, predecir qué etiqueta única es más probable que represente la imagen. Están capacitados para reconocer 1000 clases de imágenes. Para obtener una lista completa de clases, consulte el archivo de etiquetas en el zip del modelo . Si desea entrenar un modelo para que reconozca nuevas clases, consulte Personalizar modelo . Para los siguientes casos de uso, debe utilizar un tipo diferente de modelo:
  • Predecir el tipo y la posición de uno o más objetos dentro de una imagen (consulte Detección de objetos )
  • Predecir la composición de una imagen, por ejemplo, sujeto versus fondo (ver Segmentación )
Una vez que tenga el modelo inicial ejecutándose en su dispositivo de destino, puede experimentar con diferentes modelos para encontrar el equilibrio óptimo entre rendimiento, precisión y tamaño del modelo.

Personalizar modelo

Los modelos previamente entrenados proporcionados están entrenados para reconocer 1000 clases de imágenes. Para obtener una lista completa de clases, consulte el archivo de etiquetas en el zip del modelo . También puede utilizar el aprendizaje por transferencia para volver a entrenar un modelo para que reconozca clases que no están en el conjunto original. Por ejemplo, podría volver a entrenar el modelo para distinguir entre diferentes especies de árboles, a pesar de que no haya árboles en los datos de entrenamiento originales. Para hacer esto, necesitará un conjunto de imágenes de entrenamiento para cada una de las nuevas etiquetas que desee entrenar. Aprenda a realizar aprendizaje por transferencia con TFLite Model Maker o en el codelab Reconocer flores con TensorFlow .

Puntos de referencia de rendimiento

El rendimiento del modelo se mide en términos de la cantidad de tiempo que le toma a un modelo ejecutar la inferencia en una pieza de hardware determinada. Cuanto menor sea el tiempo, más rápido será el modelo. El rendimiento que necesita depende de su aplicación. El rendimiento puede ser importante para aplicaciones como el vídeo en tiempo real, donde puede ser importante analizar cada fotograma antes de que se dibuje el siguiente (por ejemplo, la inferencia debe ser más rápida que 33 ms para realizar una inferencia en tiempo real en una transmisión de vídeo de 30 fps). . TensorFlow Lite cuantizó el rendimiento de los modelos MobileNet en un rango de 3,7 ms a 80,3 ms. Los números de referencia de rendimiento se generan con la herramienta de evaluación comparativa .
Nombre del modelo Tamaño del modelo Dispositivo NNAPI UPC
Mobilenet_V1_1.0_224_quant 4,3 MB Píxel 3 (Android 10) 6 ms 13 ms*
Píxel 4 (Android 10) 3,3 ms 5 ms*
iPhone XS (iOS 12.4.1) 11ms**

*Se utilizan 4 hilos.

** Se utilizan 2 subprocesos en iPhone para obtener el mejor resultado de rendimiento.

Precisión del modelo

La precisión se mide en términos de la frecuencia con la que el modelo clasifica correctamente una imagen. Por ejemplo, se puede esperar que un modelo con una precisión declarada del 60 % clasifique una imagen correctamente un promedio del 60 % de las veces.

Las métricas de precisión más relevantes son Top-1 y Top-5. Top-1 se refiere a la frecuencia con la que aparece la etiqueta correcta como la etiqueta con mayor probabilidad en la salida del modelo. Los 5 primeros se refieren a la frecuencia con la que aparece la etiqueta correcta en las 5 probabilidades más altas en la salida del modelo.

La precisión Top-5 de los modelos MobileNet cuantificados por TensorFlow Lite oscila entre 64,4 y 89,9%.

Tamaño del modelo

El tamaño de un modelo en disco varía según su rendimiento y precisión. El tamaño puede ser importante para el desarrollo móvil (donde podría afectar los tamaños de descarga de aplicaciones) o cuando se trabaja con hardware (donde el almacenamiento disponible puede ser limitado).

Los tamaños de los modelos MobileNet cuantificados de TensorFlow Lite varían de 0,5 a 3,4 MB.

Más lecturas y recursos

Utilice los siguientes recursos para obtener más información sobre conceptos relacionados con la clasificación de imágenes: