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

Clasificación de imágenes

Utilice un modelo optimizado y previamente entrenado para identificar cientos de clases de objetos, incluidas personas, actividades, animales, plantas y lugares.

Empezar

Si no está familiarizado con el concepto de clasificación de imágenes, debería comenzar por leer ¿Qué es la clasificación de imágenes?

Para aprender a usar la clasificación de imágenes en una aplicación móvil, recomendamos explorar nuestras guías y aplicaciones de ejemplo .

Si está utilizando una plataforma que no sea Android o iOS, o si ya está familiarizado con las API de TensorFlow Lite, puede descargar nuestro modelo de clasificación de imágenes de inicio y las etiquetas que lo acompañan.

Descargar el modelo inicial y las etiquetas

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. Para obtener orientación, consulte Elegir un modelo diferente .

Aplicaciones y guías de ejemplo

Tenemos aplicaciones de ejemplo para la clasificación de imágenes tanto para Android como para iOS. Para cada ejemplo, proporcionamos una guía que explica cómo funciona.

Androide

Ver ejemplo de Android

Lea la guía de ejemplo de Android para aprender cómo funciona la aplicación.

iOS

Ver ejemplo de iOS

Lea la guía de ejemplo de iOS para aprender cómo funciona la aplicación.

Captura de pantalla

La siguiente captura de pantalla muestra el ejemplo de clasificación de imágenes de Android.

Captura de pantalla del ejemplo de Android

¿Qué es la clasificación de imágenes?

Un uso común del aprendizaje automático es identificar qué representa una imagen. Por ejemplo, podríamos querer saber qué tipo de animal aparece en la siguiente fotografía.

perro

La tarea de predecir 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, un modelo podría estar entrenado para reconocer fotografías que representan tres tipos diferentes de animales: conejos, hámsteres y perros.

Cuando posteriormente proporcionemos 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

Según el resultado, podemos ver que el modelo de clasificación ha predicho que la imagen tiene una alta probabilidad de representar a un perro.

Entrenamiento, etiquetas e inferencia

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 .

Para realizar la inferencia, se pasa una imagen como entrada a un modelo. A continuación, el modelo generará una matriz de probabilidades entre 0 y 1. Con nuestro modelo de ejemplo, este proceso podría tener el siguiente aspecto:

perro [0.07, 0.02, 0.91]

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

Etiqueta Probabilidad
Conejo 0,07
hámster 0,02
perro 0,91

Puede notar 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 modelos con múltiples clases (consulte Softmax para obtener más información).

Resultados ambiguos

Dado que las probabilidades siempre sumarán 1, si la 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 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

Usos y limitaciones

Los modelos de clasificación de imágenes que proporcionamos son útiles para la clasificación de etiqueta única, lo que significa 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 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. Para obtener orientación, consulte Elegir un modelo diferente .

Benchmarks de desempeño

Los números de referencia de rendimiento se generan con la herramienta que se describe aquí .

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 hilos usados ​​en iPhone para el mejor resultado de rendimiento.

Elige un modelo diferente

Hay una gran cantidad de modelos de clasificación de imágenes disponibles en nuestra Lista de modelos alojados . Debe intentar elegir el modelo óptimo para su aplicación en función del rendimiento, la precisión y el tamaño del modelo. Hay compensaciones entre cada uno de ellos.

Actuación

Medimos el rendimiento en términos de la cantidad de tiempo que tarda un modelo en ejecutar inferencias en una determinada pieza de hardware. Cuanto menos 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 rendimiento de nuestros modelos MobileNet cuantificados oscila entre 3,7 ms y 80,3 ms.

Exactitud

Medimos la precisión 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.

Nuestra 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 entre las 5 probabilidades más altas en la salida del modelo.

La precisión del Top 5 de nuestros modelos cuantificados de MobileNet oscila entre el 64,4 y el 89,9%.

Talla

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).

El tamaño de nuestros modelos MobileNet cuantificados varía de 0,5 a 3,4 Mb.

Arquitectura

Varias arquitecturas de modelos diferentes están disponibles en la Lista de modelos alojados , indicados por el nombre del modelo. Por ejemplo, puede elegir entre MobileNet, Inception y otros.

La arquitectura de un modelo afecta su rendimiento, precisión y tamaño. Todos nuestros modelos alojados se entrenan con los mismos datos, lo que significa que puede usar las estadísticas proporcionadas para compararlos y elegir cuál es el óptimo para su aplicación.

Personalizar modelo

Los modelos previamente entrenados que proporcionamos están entrenados para reconocer 1000 clases de imagen. Para obtener una lista completa de clases, consulte el archivo de etiquetas en el archivo zip del modelo .

Puede utilizar una técnica conocida como 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.

Aprenda a realizar el aprendizaje por transferencia en el laboratorio de código de Recognize flowers with TensorFlow o con el kit de herramientas del creador de modelos .