Se usó la API de Cloud Translation para traducir esta página.
Switch to English

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 representen 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. Obtén más información sobre la clasificación de imágenes con TensorFlow aquí .

La siguiente imagen muestra la salida 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 puedes crear tu 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 está utilizando 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 se alimenta de imágenes y sus etiquetas asociadas. Cada etiqueta es el nombre de un concepto o clase distinto 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 ha sido 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. La transferencia de 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 la imagen que representa cada uno de los tipos de animales en los que se entrenó. 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 la salida 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 múltiples 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 seguridad como perteneciente a ninguna de las clases en las que se entrenó el modelo, es posible que vea la probabilidad distribuida en todas 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 resultados ambiguos con frecuencia, 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 de modelos como MobileNet, Inception y NASNet están disponibles en la página de modelos alojados . 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 construir un escáner de código de barras, mientras que puede preferir 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 clases, consulte el archivo de etiquetas en el archivo zip del modelo . Si desea entrenar un modelo para reconocer 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 frente a fondo (consulte 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 archivo zip del modelo . También puede utilizar el aprendizaje por transferencia para volver a entrenar un modelo para reconocer clases que no están en el conjunto original. Por ejemplo, puede 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. Obtén información sobre cómo realizar el aprendizaje por transferencia en el laboratorio de código Recognize flowers con TensorFlow o con la biblioteca Model Maker .

Benchmarks de desempeño

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 33ms para realizar inferencias en tiempo real en una transmisión de video de 30 fps) . El rango de rendimiento de los modelos MobileNet cuantificados de TensorFlow Lite oscila entre 3,7 ms y 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 Pixel 3 (Android 10) 6ms 13 ms *
Pixel 4 (Android 10) 3,3 ms 5 ms *
iPhone XS (iOS 12.4.1) 11 ms **

* 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% del tiempo.

La lista de modelos alojados proporciona estadísticas de precisión 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.

El rango de precisión de los 5 principales modelos de MobileNet cuantificado de TensorFlow Lite va del 64,4 al 89,9%.

Tamaño del modelo

El tamaño de un modelo en disco varía con 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 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: