Resumen

Entrenar un modelo de reconocimiento de imágenes propio ya no requiere meses de trabajo ni infraestructura costosa. Con Visual Recognition de IBM Cloud, es posible consumir modelos preentrenados o crear clasificadores personalizados usando algoritmos de deep learning, todo desde una interfaz gráfica o mediante llamadas curl al API.

¿Qué es Visual Recognition y qué modelos ofrece?

Visual Recognition es el servicio de IBM Cloud que permite analizar imágenes de escenas, objetos y prácticamente cualquier contenido visual [0:10]. Funciona con dos grandes categorías: modelos preentrenados y modelos personalizados.

Los modelos preentrenados disponibles son:

  • Modelo general (default): clasifica cualquier imagen en múltiples categorías como animal, objeto, color dominante.
  • Modelo explícito: determina si una imagen es apta para uso general, detectando violencia o desnudos.
  • Modelo de comida: identifica elementos alimenticios y los clasifica por tipo.

Dentro de los modelos personalizados existen dos modalidades: clasificación de imágenes y detección de objetos [1:15]. La clasificación asigna etiquetas a la imagen completa, mientras que la detección de objetos localiza elementos específicos dentro de ella.

¿Cuáles son las limitaciones técnicas y buenas prácticas para entrenar modelos?

Antes de subir imágenes, es fundamental conocer las restricciones del servicio [1:30]:

  • Máximo 10,000 imágenes o 100 MB por cada archivo ZIP.
  • Mínimo 10 imágenes por ZIP para que funcione.
  • Máximo 256 MB por entrenamiento.
  • Calidad mínima recomendada: 32 x 32 píxeles.

Para el consumo, una vez desplegado el modelo, se puede enviar una imagen individual de hasta 100 MB o un ZIP con hasta 20 imágenes [2:10].

¿Cómo mejorar la certeza del clasificador?

Las buenas prácticas recomendadas marcan una diferencia significativa en los resultados [2:30]:

  • Usar imágenes de al menos 224 x 224 píxeles.
  • Incluir al menos 50 imágenes por clase positiva.
  • El rango óptimo es entre 150 y 200 imágenes, que ofrece un buen balance entre tiempo de procesamiento y certeza.
  • Igualar el número de clases negativas con las positivas. Por ejemplo, al clasificar perros y gatos, agregar una clase negativa de iguanas.
  • Utilizar fondos realistas similares al entorno real de clasificación. Si se clasifica fruta, no poner manzanas con fondo blanco profesional, sino manzanas en una mano, en un mercado o en una canasta [3:20].
  • El objeto a clasificar debe ocupar al menos un tercio del tamaño total de la imagen.

¿Cómo consumir los modelos preentrenados y crear uno personalizado?

Para consumir los modelos preentrenados se utiliza una llamada curl tipo POST con el API key y la URL del servicio [5:00]. El classifier ID del modelo general es default, no "general" como podría intuirse. Al probar una imagen de un chihuahua con el modelo general, el servicio devolvió: perro con 90% de certeza, canino con 75%, carnívoro con 75% y hasta identificó la raza [7:00].

Al probar un taco con el modelo general, lo clasificó correctamente con 80% de certeza. Pero al cambiar al modelo de comida, el resultado fue más detallado: identificó la lechuga y sugirió que podría ser una ensalada [8:30].

¿Cómo entrenar un clasificador personalizado paso a paso?

Desde Watson Studio se accede a la opción de crear modelo [9:30]. El caso de uso presentado consiste en un clasificador de turismo que distingue entre la pirámide de Kukulkán en Chichén Itzá y la zona arqueológica de Tulum. La idea es que, dentro de una app de asistente de viajes, baste con tomar una foto para saber en qué lugar turístico se encuentra el usuario [10:20].

El proceso es directo:

  • Se suben archivos ZIP con imágenes de cada clase.
  • El nombre del ZIP se convierte automáticamente en el nombre de la clase.
  • Se presiona Train Model y el entrenamiento toma entre 5 y 10 minutos [12:00].

En las pruebas, el modelo clasificó correctamente Chichén Itzá con 90% de certeza y Tulum con 92% [13:10]. Incluso una imagen parcialmente obstruida fue identificada correctamente. Sin embargo, al probar con la imagen del perro, el modelo la asignó a Kukulkán porque no existía una clase negativa que permitiera descartar imágenes irrelevantes [14:00].

Esta prueba demuestra la importancia de incluir clases negativas en los clasificadores personalizados. Si tu caso de uso lo requiere, puedes replicar la misma llamada POST utilizando el model ID personalizado y tu API key para integrar el reconocimiento visual en cualquier aplicación. ¿Ya tienes en mente un caso de uso para tu propio clasificador? Comparte tus ideas y resultados.