Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
tensorflow
GitHub Repository: tensorflow/docs-l10n
Path: blob/master/site/es-419/lite/models/image_classification/overview.md
25118 views

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 se entrena para reconocer varias clases de imágenes. Por ejemplo, puede entrenar un modelo para reconocer fotos que representen tres tipos diferentes de animales: conejos, hámsters y perros. TensorFlow Lite proporciona modelos preentrenados optimizados 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 la salida del modelo de clasificación de imágenes en Android.

Captura de pantalla de ejemplo de Android

Nota: (1) Para integrar un modelo existente, pruebe la Librería de tareas de TensorFlow Lite. (2) Para personalizar un modelo, pruebe Model Maker de TensorFlow Lite.

Empecemos

Si es nuevo en TensorFlow Lite y trabaja con Android o iOS, se recomienda explorar las siguientes aplicaciones de ejemplo que pueden ayudarle a empezar.

Puede aprovechar la API lista para usar de la Librería de tareas TensorFlow Lite para integrar modelos de clasificación de imágenes en tan solo unas líneas de código. También puede construir su propia canalización de inferencia personalizada usando la Librería de soporte de TensorFlow Lite.

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

Ver ejemplo en Android

Ver ejemplo en iOS

Si utiliza una plataforma distinta de Android/iOS, o si ya está familiarizado con las API de TensorFlow Lite, descargue el modelo de inicio y los archivos de soporte (si procede).

Descargue el modelo inicial

Descripción 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.

Dados 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 denomina inferencia. Tenga en cuenta que también puede usar el aprendizaje por transferencia para identificar nuevas clases de imágenes usando 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, éste emitirá las probabilidades de que la imagen represente cada uno de los tipos de animales con los que fue entrenado. Un ejemplo de salida podría ser el siguiente:

Tipo de animal Probabilidad
Conejo 0.07
Hamster 0.02
Perro 0.91

Cada número de la salida corresponde a una etiqueta de los datos del entrenamiento. Asociando la salida 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 a un perro.

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

Nota: La clasificación de imágenes sólo puede indicarle la probabilidad de que una imagen represente una o varias de las clases sobre las que se ha entrenado el modelo. No puede decirle la posición o identidad de los objetos dentro de la imagen. Si necesita identificar objetos y sus posiciones dentro de las imágenes, debe usar un modelo de detección de objetos.

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 ha entrenado el modelo, es posible que la probabilidad se distribuya 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
hamster 0.35
perro 0.34
Si su modelo devuelve con frecuencia resultados ambiguos, es posible que necesite un modelo diferente y más preciso.

Seleccionar una arquitectura modelo

TensorFlow Lite le ofrece una gran variedad de modelos de clasificación de imágenes, todos ellos entrenados en el conjunto de datos original. Hay disponibles arquitecturas de modelos como MobileNet, Inception y NASNet en TensorFlow Hub. Para elegir el mejor modelo para su caso de uso, debe tener en cuenta las arquitecturas individuales, así como algunas de las compensaciones entre varios modelos. Algunas de estas compensaciones entre modelos se basan en métricas como el rendimiento, la precisión y el tamaño del modelo. Por ejemplo, puede que necesite un modelo más rápido para construir un escáner de códigos de barras, mientras que puede que prefiera un modelo más lento y preciso para una app de imágenes médicas.

Tenga en cuenta que los modelos de clasificación de imágenes proporcionados aceptan distintos 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 pixel. Todos los modelos requieren tres canales de color por pixel (rojo, verde y azul). Los modelos cuantizados requieren 1 byte por canal, y los modelos flotantes requieren 4 bytes por canal. Los ejemplos de código 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, para predecir qué etiqueta única es más probable que represente la imagen. 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 comprimido zip del modelo.

Si desea entrenar un modelo para reconocer nuevas clases, consulte Personalizar modelo.

Para los siguientes casos de uso, deberá usar un tipo de modelo diferente:

  • Predecir el tipo y la posición de uno o varios objetos dentro de una imagen (consulte 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 funcionando en su dispositivo objetivo, puede experimentar con diferentes modelos para encontrar el equilibrio óptimo entre rendimiento, precisión y tamaño del modelo.

Personalizar el modelo

Los modelos preentrenados proporcionados 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 archivo zip del modelo.

También puede usar 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 distintas especies de árboles, a pesar de que no hubiera árboles en los datos de entrenamiento originales. Para ello, necesitará un conjunto de imágenes de entrenamiento para cada una de las nuevas etiquetas que desee entrenar.

Aprenda a realizar el aprendizaje por transferencia con el TFLite Model Maker, o en el Codelab de reconocimiento de flores con TensorFlow.

Puntos de referencia del rendimiento

El rendimiento del modelo se mide en términos de la cantidad de tiempo que tarda un modelo en ejecutar la inferencia en un hardware determinado. 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, en las que puede ser importante analizar cada fotograma en el tiempo que transcurre antes de que se dibuje el siguiente (por ejemplo, la inferencia debe ser más rápida de 33 ms para realizar una inferencia en tiempo real en un flujo de video de 30 fps).

El rendimiento de los modelos MobileNet cuantizados con TensorFlow Lite oscila entre 3.7 ms y 80.3 ms.

Los números de referencia del rendimiento se generan con la herramienta de benchmarking.

Nombre del modelo Tamaño del modelo Dispositivo NNAPI CPU
Mobilenet_V1_1.0_224_quant 4.3 Mb Pixel 3 (Android 10) 6 ms 13 ms*
Pixel 4 (Android 10) 3.3 ms 5 ms*
iPhone XS (iOS 12.4.1) 11 ms**
  • 4 hilos usados.

** 2 hilos usados en el 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, cabe esperar que un modelo con una precisión declarada del 60 % clasifique correctamente una imagen 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 la etiqueta correcta aparece como la etiqueta con mayor probabilidad en la salida del modelo. Top-5 se refiere a la frecuencia con la que la etiqueta correcta aparece entre las 5 probabilidades más altas en la salida del modelo.

El Top-5 de precisión de los modelos MobileNet cuantificados con TensorFlow Lite oscila entre el 64.4 y el 89.9 %.

Tamaño del modelo

El tamaño en disco de un modelo varía en función de su rendimiento y precisión. El tamaño puede ser importante para el desarrollo móvil (donde puede influir en el tamaño de las descargas de la app) o cuando se trabaja con hardware (donde el almacenamiento disponible puede ser limitado).

El tamaño de los modelos MobileNet cuantizados por TensorFlow Lite oscila entre 0.5 y 3.4 MB.

Lecturas y recursos complementarios

Use los siguientes recursos para aprender más sobre conceptos relacionados con la clasificación de imágenes: