junio 24, 2022 10:00 am

Jesús

La clasificación de imágenes es un campo de estudio muy amplio, que abarca una gran variedad de técnicas, y con la popularidad del deep learning, sigue creciendo.

La clasificación y la comprensión de imágenes son actualmente (y seguirán siendo) el subcampo más popular de Computer Vision durante (al menos) los próximos diez años. 

En el siguiente artículo, cubriremos de un modo muy general lo que hay que saber acerca de la clasificación de imágenes, en qué consiste y lo que representa Computer Vision en la identificación y de una imagen. También revisaremos los tres tipos diferentes de aprendizaje asociados a la clasificación de imágenes y al machine learning.

¡Comencemos!


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

Antes de abarcar el concepto de clasificación de imágenes, deberíamos hacernos la siguiente pregunta: ¿Por qué es importante la clasificación de imágenes?

Vivimos en la era de los datos. Con el Internet de las Cosas (IoT) y la Inteligencia Artificial (IA) convirtiéndose en tecnologías omnipresentes, ahora tenemos enormes volúmenes de datos que se generan. Los datos pueden tener diferentes formas: voz, texto, imagen o una mezcla de cualquiera de ellas. En forma de fotos o vídeos, las imágenes representan una parte importante de la creación de datos a nivel mundial.

Dado que la gran cantidad de datos de imágenes que obtenemos de las cámaras y los sensores no está estructurada, dependemos de técnicas avanzadas como los algoritmos de machine learning para analizar las imágenes de forma eficiente. La clasificación de imágenes es probablemente la parte más importante del análisis de imágenes digitales. Utiliza modelos de deep learning basados en la IA para analizar imágenes con resultados que, para tareas específicas, ya superan la precisión a nivel humano (por ejemplo, en el reconocimiento de rostros).

Por lo tanto, la clasificación de imágenes, en su esencia, es la tarea de asignar una etiqueta a una imagen a partir de un conjunto predefinido de categorías.

En la práctica, esto significa que nuestra tarea es analizar una imagen de entrada y devolver una etiqueta que categorice la imagen. La etiqueta es siempre de un conjunto predefinido de posibles categorías.

Veamos un ejemplo práctico: 

Imagen de representación

Imaginemos que tenemos imágenes de gatos, perros, sombreros y tazas, y queremos organizarlas automáticamente con la ayuda de nuestro sistema de categorización de imágenes. La primera imagen que recibimos es una imagen de un gato como la de arriba, que debe ser clasificada con respecto a nuestro conjunto fijo de etiquetas {gato, perro, sombrero, taza}. Así que le damos esa imagen a nuestro sistema y, tras un análisis, obtenemos una distribución de probabilidades sobre todas las etiquetas (en nuestro ejemplo anterior: 82% gato, 15% perro, 2% sombrero, 1% taza). Si nuestro sistema funciona correctamente, la probabilidad de la etiqueta gato será la más alta, ya que es la etiqueta correcta (lo que ocurre en nuestro ejemplo anterior, en el que obtenemos una probabilidad del 82% para la etiqueta gato). Por supuesto, también podemos tener imágenes de múltiples categorías, como fotos, que muestren, por ejemplo, gatos y perros juntos, pero, de nuevo, para simplificar las cosas por ahora, vamos a considerar sólo los casos en los que sólo tenemos que asignar una etiqueta (es decir, una clasificación binaria o multiclase).

Pero, hold on! Reconocer un gato en una imagen parece un problema fácil, ¿verdad? Bueno, en realidad lo es... ¡al menos para nosotros los humanos! Nuestro sistema visual está especializado en realizar este tipo de tareas de reconocimiento visual y por eso nos parecen tan sencillas. Sin embargo, resulta que la naturaleza tardó millones de años en desarrollar esta capacidad y que, en realidad, es una tarea realmente difícil reproducirla con una máquina. Debemos tenerlo en cuenta: ¿Qué ve un computadora cuando mira una imagen? Pues bien, no obtiene inmediatamente esta idea holística de un gato, que los humanos obtenemos cuando miramos la imagen de arriba. En su lugar, la computadora representa una imagen como una gran cuadrícula de números y no es tan fácil destilar la idea de un gato de la cuadrícula. Este problema se denomina "brecha semántica".

Brecha Semántica

La brecha semántica se refiere a la diferencia entre el concepto semántico de, por ejemplo, la imagen del gato y los valores de los píxeles de la imagen que ven las computadoras (los números de la cuadrícula). 

Como lo he mencionado anteriormente, para nosotros los seres humanos resulta bastante trivial reconocer el contenido de una imagen, sabemos que en la imagen anterior se aprecia un gato. Pero para una computadora, lo único que ve es una gran matriz de píxeles. 

Entonces, ¿Cómo podemos codificar toda esta información de forma que una computadora pueda entenderla? La respuesta es aplicar la extracción de características para cuantificar el contenido de una imagen. La extracción de características es el proceso de tomar una imagen de entrada, aplicar un algoritmo y obtener un vector de características (es decir, una lista de números) que cuantifique nuestra imagen.

Para llevar a cabo este proceso, podemos considerar la aplicación de características diseñadas a mano, como HOG, LBP u otros enfoques "tradicionales" de cuantificación de imágenes. Otro método, y el que se ha tomado en este libro, es aplicar el deep learning para aprender automáticamente un conjunto de características que puedan utilizarse para cuantificar y, en última instancia, etiquetar el contenido de la propia imagen.

Pero cerrar esta brecha es un problema realmente difícil, ya que cuando intentamos hacerlo, nos enfrentamos a un montón de retos difíciles, que quiero discutir a continuación.

Los Desafíos

Por si la brecha semántica no fuera suficiente problema, también tenemos que manejar factores de variación en la apariencia de una imagen u objeto.

Variación del punto de vista

  • Las variaciones del punto de vista: Supongamos que tomamos una imagen de, por ejemplo, una taza. Luego movemos la cámara un poco y tomamos otra imagen sin mover la taza de ninguna manera. Aunque ambas imágenes muestran la misma taza, acaban siendo totalmente diferentes.

Iluminación

  • Iluminación: Cuando hacemos fotos, no solemos tener siempre las mismas condiciones de iluminación. Una imagen tomada por la noche es probablemente más oscura que una tomada durante el día. Esto tiene un efecto drástico a nivel de píxeles, ya que los colores (representados por los valores de los píxeles) suelen ser más oscuros por la noche. Así, si tomamos una foto de un gato a la luz del día y otra del mismo gato durante la puesta de sol, las dos imágenes resultarán bastante diferentes, debido a las distintas condiciones de iluminación, aunque las dos imágenes muestren al mismo gato.

Deformación

  • Deformación: Muchos objetos no son cuerpos rígidos, sino que pueden deformarse de forma extrema. Los gatos, por ejemplo, son muy buenos en esto y aunque adopten muchas poses diferentes, los humanos seguimos siendo capaces de reconocerlos como gatos.

Oclusión

  • Oclusión: No siempre vemos todo el objeto en la imagen, sino sólo partes de él. Sin embargo, los humanos podemos reconocerlos en la mayoría de los casos. Tomemos, por ejemplo, la imagen de la derecha del gato que aparece a continuación. Sólo podemos ver una cola, pero aún así somos capaces de decir que probablemente se trata de un gato escondido bajo la almohada del sofá.

Alteración del Fondo

  • Alteración del Fondo: A veces los objetos en primer plano, como por ejemplo los gatos de las imágenes de abajo, pueden tener un aspecto bastante similar al de sus fondos y, por lo tanto, sus valores de píxeles son probablemente también bastante similares. Sin embargo, los humanos seguimos siendo capaces de reconocerlos.

Variación de la Escala

  • Variación de la Escala: Algunos objetos también pueden aparecer en diferentes tamaños y cuando hablo de tamaños aquí, me refiero a tamaños en la palabra real. No sólo en términos de su extensión en la imagen (objetos cercanos o lejanos). Podemos tener, por ejemplo, perros grandes o pequeños, pero los humanos seguimos siendo capaces de reconocerlos a todos como perros

Variación Intraclase

  • Variación intraclase: Los objetos no tienen por qué ser siempre tan parecidos entre sí, como por ejemplo las sillas. Las sillas pueden tener una gran variedad de colores, formas y tamaños. Sin embargo, comparten al menos algunas propiedades comunes, que hacen que los humanos las reconozcamos como sillas (por ejemplo, la superficie del asiento).

Clasificación de imágenes mediante aprendizaje automático

El reconocimiento de imágenes con aprendizaje automático aprovecha el potencial de los algoritmos para aprender conocimientos ocultos a partir de un conjunto de datos de muestras organizadas y no organizadas (aprendizaje supervisado). La técnica de machine learning más popular es el deep learning, donde se utilizan muchas capas ocultas en un modelo.

Con la llegada del deep learning, en combinación con hardware de IA robusto y GPU, se puede lograr un rendimiento excepcional en las tareas de clasificación de imágenes. Por lo tanto, el deep learning trajo grandes éxitos en todo el campo del reconocimiento de imágenes, el reconocimiento de rostros y los algoritmos de clasificación de imágenes logran un rendimiento por encima del nivel humano y la detección de objetos en tiempo real.

Además, ha habido un gran salto en el rendimiento de inferencia de los algoritmos en los últimos años. Por ejemplo, en 2017, el algoritmo Mask R-CNN fue el detector de objetos en tiempo real más rápido en el benchmark MS COCO, con un tiempo de inferencia de 330 ms por cuadro. En comparación, el algoritmo YOLOR, que fue lanzado en 2021, logra tiempos de inferencia de 12 ms en el mismo benchmark, superando así a los infames algoritmos de aprendizaje profundo YOLOv4 y YOLOv3.

En comparación con el enfoque convencional de Computer Vision en el procesamiento de imágenes de hace unas dos décadas, el Deep Learning solo requiere conocimientos de ingeniería de una herramienta de Machine Learning. No necesita experiencia en áreas particulares de visión artificial para crear características manuales.

En cualquier caso, el deep learning requiere el etiquetado manual de datos para interpretar las muestras buenas y malas, lo que se conoce como anotación de imágenes. El proceso de adquisición de conocimientos o de extracción de ideas a partir de datos etiquetados por humanos se denomina aprendizaje supervisado. Y el proceso de creación de estos datos etiquetados para entrenar modelos de IA requiere un tedioso trabajo humano, por ejemplo, para anotar situaciones de tráfico habituales en la conducción autónoma. Sin embargo, hoy en día disponemos de grandes conjuntos de datos con millones de datos etiquetados de alta resolución de miles de categorías, como ImageNet, LabelMe, Google OID o MS COCO.

Tipos de aprendizaje

Hay tres tipos de aprendizaje que probablemente encontrarás en tu carrera de machine learning y deep learning: aprendizaje supervisado, aprendizaje no supervisado y aprendizaje semisupervisado. Este libro se centra principalmente en el aprendizaje supervisado en el contexto del deep learning. No obstante, a continuación se presentan descripciones de los tres tipos de aprendizaje.

Aprendizaje Supervisado

El aprendizaje supervisado es  un método de análisis de datos que utiliza algoritmos que aprenden iterativamente de los datos para permitir que los ordenadores encuentren información escondida sin tener que programar de manera explícita dónde buscar. El aprendizaje supervisado resuelve problemas conocidos y utiliza un conjunto de datos etiquetados para entrenar un algoritmo para realizar tareas específicas. Utiliza modelos para predecir resultados conocidos como "¿Cuál es el color de la imagen?" "¿Cuántas personas hay en la imagen?" "¿Cuáles son los factores determinantes para el fraude o los defectos del producto?" etc.

Aprendizaje no supervisado

El aprendizaje no supervisado es un tipo de Machine Learning que se utiliza para identificar nuevos patrones y detectar anomalías. Los datos que se introducen en los algoritmos de aprendizaje no supervisados no están etiquetados. El algoritmo (o modelos) intentan dar sentido a los datos por sí mismos mediante la búsqueda de características y patrones. El aprendizaje no supervisado utiliza el agrupamiento, los componentes principales, las redes neuronales y las máquinas de vectores de soporte.

La optimización, el tercer tipo de Machine Learning, encuentra la mejor solución incluso cuando existen restricciones complejas. Por ejemplo, la optimización podría responder a la pregunta "¿Cuál es la ruta óptima a seguir o la asignación de recursos o el programa de mantenimiento del equipo?" La optimización utiliza algoritmos genéticos, que se basan en la teoría de la evolución de Darwin.

Aprendizaje semi-supervisado

El aprendizaje semi-supervisado se encuentra entre el aprendizaje no supervisado (sin datos de entrenamiento etiquetados) y el aprendizaje supervisado (con todos los datos de entrenamiento etiquetados). Los investigadores del campo del aprendizaje automático han descubierto que los datos no etiquetados, cuando se utilizan junto a una pequeña cantidad de datos etiquetados, pueden mejorar de forma considerable la exactitud del aprendizaje. La adquisición de datos etiquetados para resolver un problema suele requerir un agente humano capacitado para clasificar de forma manual los ejemplos de entrenamiento. El coste asociado al proceso de etiquetado puede hacer que un conjunto de entrenamiento totalmente etiquetado sea inviable, mientras que la adquisición de datos sin etiquetar es relativamente poco costoso. En estos casos, el aprendizaje semi-supervisado puede ser muy útil.

Resumen

¿Qué hemos aprendido?

La clasificación de imágenes es el problema central de Computer Vision y tiene muchas aplicaciones prácticas.

Proceso de clasificación: el clasificador recibe una imagen y predice una etiqueta para esta imagen correspondiente al objeto principal de la misma.

Sin embargo, predecir la etiqueta correcta no es una tarea fácil para un ordenador (a diferencia de los humanos), ya que hay muchos retos (por ejemplo, la iluminación).

En lugar de codificar cualquier regla para predecir una etiqueta, es mejor utilizar muchos datos y el aprendizaje automático (enfoque basado en datos).

Eso es todo por ahora. 

¡Nos vemos pronto! 

Sobre el Autor

Jesús Martínez es el creador de DataSmarts, un lugar para los apasionados por computer vision y machine learning. Cuando no se encuentra bloggeando, jugando con algún algoritmo o trabajando en un proyecto (muy) cool, disfruta escuchar a The Beatles, leer o viajar por carretera.