¿Alguna vez te has preguntado cómo es posible realizar un procesamiento automatizado de una imagen para extraer una conclusión compleja, de la magnitud de poder detectar la presencia de un objeto?
Los seres vivos con capacidad visual, poseemos sensores biológicos que nos permiten recibir secuencias de imágenes del exterior e interpretarlas, extrayendo conceptos y llegando a conclusiones tan complejas como la anteriormente mencionada sin apenas dificultad. En cambio, un ordenador, aun conectado a una cámara, opera bajo instrucciones escritas de forma intencionada por un programador. Esto significa que, para poder conseguir una funcionalidad similar a la descrita, requeriría que un programador codificase todas las condiciones que hacen que en una imagen pueda identificarse la presencia de un objeto determinado.
¿Te imaginas cuántas condiciones serían necesarias para poder determinar que cada una de estas imágenes se corresponde con una calculadora?
¿Y cuántas condiciones harían falta a mayores para que estas otras no se confundan con calculadoras?
Y si cogiéramos una nueva imagen de una calculadora, ¿esas condiciones serían capaces de marcar su presencia en la imagen inequívocamente?
Existe la posibilidad de que un programador pueda establecer condiciones usando los colores de los píxeles de las imágenes que recibe para poder diferenciar entre las imágenes de la calculadora y la de los ordenadores. Sin embargo, como podemos ver en los ejemplos, las imágenes de un mismo objeto pueden presentar infinidad de variantes dependiendo de si se modifica la posición del objeto, la distancia a la que se tomó la foto, la iluminación que había en el instante de la captura o incluso si la cámara estaba ligeramente rotada.
Esto es conocido como el problema de los invariantes (del cuál hablaremos más adelante en este blog), y difícilmente un programador puede escribir un método basado en condiciones que pueda generalizar, para que al pasar la imagen de un objeto cuyo caso no haya sido contemplado, pueda ser identificado correctamente.
¿Puede este tipo de problema ser resuelto con un ordenador? ¿Cómo lo hacemos los seres vivos? En este artículo vamos a dar respuesta a estas preguntas.
¿Qué es una imagen en el contexto de la Visión Artificial?
Una imagen es una matriz de píxeles, siendo cada píxel comúnmente una composición de los colores rojo, verde y azul (y en ocasiones de uno extra, que es el valor alfa o transparencia). En inglés se conoce como RGB (3 colores) o RGBA (3 + alfa) porque generalmente se respeta este mismo orden (Red, Green, Blue).
La percepción que tenemos de una imagen es el resultado de la combinación de estos tres canales. Sin embargo, a nivel computacional, las imágenes se representan numéricamente:
Ilustración 1. Dígito «5» dibujado en escala de grises (un único canal), extraído del dataset MNIST [1]
Una particularidad de las imágenes es que representan, con bastante frecuencia, información desordenada y mezclada con ruido. Las imágenes almacenan una gran cantidad de información de la cual solamente una fracción se considera relevante para realizar una tarea inteligente.
¿Cómo nace la Visión Artificial?
La Visión Artificial es una rama de la Inteligencia Artificial que nace de la necesidad de poder imitar el comportamiento inteligente que muestran los seres vivos en el tratamiento de imágenes. Poder detectar objetos, categorizarlos, segmentarlos o procesarlos, a partir de imágenes, son solo algunos de los muchos ejemplos que puede abarcar la visión artificial.
Para conseguir llegar a realizar tareas como las indicadas, este campo se centra en lo que se considera uno de sus pilares, consistente en extraer la información relevante para tal efecto. Esta tarea se denomina descripción, una acción que realizamos las personas constantemente y que supone un paso fundamental en la extracción de conocimiento:
» Una descripción permite representar información usando, por lo general, menos información de la que había inicialmente, quedándose solamente con aquellos atributos o características que permiten identificar una entidad, como por ejemplo un objeto.»
Cuanto más simple es una descripción, mayor es la cantidad de casos que pueden encajar en ella, por lo que mayor es la capacidad de generalización, pero también mayor es la probabilidad de que abarque casos que no debiera abarcar. Es por eso por lo que el objetivo es buscar una descripción que sea lo suficientemente general como para abarcar los casos correctos, pero lo suficientemente restrictiva como para no abarcar casos incorrectos.
Por ejemplo, en el caso de las imágenes de calculadoras, una posible descripción lo suficientemente general como para que encajen todas ellas y lo suficientemente restrictiva para no abarcar los ordenadores portátiles, sería extraer el número de aristas que presentan visualmente dentro de la imagen, el tamaño de su pantalla y/o el número de botones. Posteriormente, podemos fijar umbrales y combinaciones de valores en estas características que hacen que la descripción corresponda a una calculadora, como que el número de aristas sea 4, el tamaño de la pantalla inferior a la mitad del tamaño del objeto y el número de botones en torno a 26.
En futuras entradas del blog hablaremos de la acción de describir en mayor detalle, sobre cómo es posible automatizar esta tarea y de cómo, unido al Machine-Learning, sirve de base para resolver no solo problemas de Visión Artificial, sino de la mayoría de campos de la Inteligencia Artificial.
Iván de Paz Centeno es Científico de datos, ingeniero de I+D en Xerdia
[1] El Dataset MNIST es un conjunto de datos que recopila imágenes de dígitos escritos a mano, en escala de grises, de 28×28 píxeles, con un total de 60000 imágenes. Referencia: Y. LeCun, L. Bottou, Y. Bengio and P. Haffner. «Gradient-based learning applied to document recognition.» Proceedings of the IEEE, 86(11):2278-2324, November 1998