Clasificación de imágenes

La tarea de identificar lo que representa una imagen se denomina 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 representen tres tipos diferentes de animales: conejos, hámsters y perros. TensorFlow Lite proporciona modelos optimizados previamente entrenados que puede implementar en sus aplicaciones móviles. Obtén más información sobre la clasificación de imágenes con 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 propia canalización de inferencia personalizada con la biblioteca de compatibilidad 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 usa una plataforma que no sea Android/iOS, o si ya está familiarizado con las API de TensorFlow Lite , descargue el modelo de inicio y los archivos de soporte (si corresponde).

Descargar modelo de inicio

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 distinto, o clase, 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. Transferir el aprendizaje 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 en los que se entrenó. Un ejemplo de salida 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 en las que se entrenó el modelo, puede ver que el modelo ha predicho una alta probabilidad de que la imagen represente un perro.

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

Resultados ambiguos

Dado que las probabilidades de salida siempre sumarán 1, si una imagen no se reconoce con confianza como perteneciente a ninguna de las clases en las que se entrenó el modelo, es posible que vea la probabilidad distribuida a lo largo de 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 brinda una variedad de modelos de clasificación de imágenes que se entrenan 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 ventajas y desventajas 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 construir un escáner de código de barras, mientras que quizás 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ámara 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 individual es más probable que represente la imagen. Están capacitados para reconocer 1000 clases de imágenes. Para obtener una lista completa de las 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 usar un tipo diferente de modelo:
  • Predecir el tipo y la posición de uno o más objetos dentro de una imagen (ver 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 preentrenados provistos están entrenados para reconocer 1000 clases de imágenes. Para obtener una lista completa de las clases, consulte el archivo de etiquetas en el zip del modelo . También puede usar el aprendizaje por transferencia para volver a entrenar un modelo para que reconozca las 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 desea entrenar. Aprenda a realizar transferencias de aprendizaje con TFLite Model Maker o en el laboratorio de código Reconocer flores con TensorFlow .

Puntos de referencia de rendimiento

El rendimiento del modelo se mide en términos de la cantidad de tiempo que tarda un modelo en ejecutar la inferencia en una determinada pieza de hardware. 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 video en tiempo real, donde puede ser importante analizar cada cuadro en el tiempo antes de que se dibuje el siguiente cuadro (por ejemplo, la inferencia debe ser más rápida que 33 ms para realizar la inferencia en tiempo real en una transmisión de video de 30 fps) . TensorFlow Lite cuantizó el rango de rendimiento de los modelos MobileNet 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) 6ms 13ms*
Píxel 4 (Android 10) 3,3 ms 5ms*
iPhone XS (iOS 12.4.1) 11ms**

* 4 hilos utilizados.

** 2 subprocesos utilizados 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 la probabilidad más alta en la salida del modelo. Top-5 se refiere a la frecuencia con la que aparece la etiqueta correcta en las 5 probabilidades más altas en la salida del modelo.

TensorFlow Lite cuantizó el rango de precisión de los 5 mejores modelos de MobileNet de 64,4 a 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 el tamaño de descarga de la aplicación) o cuando se trabaja con hardware (donde el almacenamiento disponible puede ser limitado).

Los tamaños de los modelos de MobileNet cuantificados de TensorFlow Lite oscilan entre 0,5 y 3,4 MB.

Más lecturas y recursos

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