Los ojos de una máquina

Los ojos son uno de lo órganos más importantes para el ser humano. Tanto es así, que a muchos de nosotros se nos haría muy difícil o casi imposible enfrentarnos a las tareas cotidianas del día a día. Pero, ¿dónde podríamos llegar si dotamos a un ordenador de ojos? ¿Qué serían capaces de hacer?

Esta disciplina dentro de la ciencia en su conjunto se le conoce como visión por computador o visión artificial. Esta rama dentro de la inteligencia artificial incluye métodos para adquirir, procesar, analizar y comprender las imágenes del mundo real con el fin de producir información numérica y simbólica para que puedan ser tratados y leídos por una máquina. Estoy seguro que alguna vez habéis escuchado algunos de estos términos en películas de ciencia ficción como Minority Report, Yo robot o incluso Star Wars.

Se trata básicamente de hacer ver a la máquina como los humanos usamos nuestros ojos y cerebros para comprender el mundo que nos rodea, la visión por computador trata de producir el mismo efecto para que las computadoras puedan percibir y comprender una imagen o secuencia de imágenes y actuar según convenga en una determinada situación. Hoy en día, la adquisición de datos se consigue mediante secuencias de imágenes, vistas desde varias cámaras de video o datos multidimensionales desde un escáner médico. Pero, ¿cómo lo hacen?

Los pitagóricos dijeron una vez – “El número gobierna el Universo”. Dentro de la Visión por computador, la detección de objetos es uno de los temas más candentes. Dada una imagen, el ser humano de manera inmediata puede reconocer patrones, objetos, etc. Pero para una máquina todo este reconocimiento no es trivial. ¿Y dónde reside la dificultad?

A groso modo y para entender el problema con desde una perspectiva general, se debe pensar en cómo quedan codificadas las imágenes digitales. Para una máquina, las imágenes son enormes cajas tridimensionales llenas de números. Concretamente, cada píxel (o punto de la imagen) queda representado por tres valores, que codifican su color como una combinación de la cantidad de rojo, verde y azul. Así pues, cuando una máquina busca un objeto dentro de una imagen lo que realmente hace es buscar patrones numéricos que se correspondan con el objeto en particular dentro de todas las cajas de números.

Hay varios aspectos que hacen de la detección automática de objetos en imágenes un auténtico reto. En primer lugar, la variabilidad dentro de una misma clase es una de las mayores dificultades. Por ejemplo, hay sillas de todos los colores, formas, y para todos los gustos, como podemos ver en la siguiente imagen.

Esta imagen también ilustra otras dificultades como el cambio de perspectiva, la presencia de oclusiones parciales, o los cambios de iluminación, que pueden crear sombras o reflejos, y producir pérdidas importantes de información. Así pues, para poder reconocer automáticamente sillas en cualquier situación, necesitamos que la máquina sea capaz de hacer una representación genérica de lo que es una silla, y esta representación tiene que ser invariante a todos estos cambios.

Aunque se han hecho avances importantes en la detección automática de objetos durante los últimos años, los sistemas artificiales aún están muy lejos del sistema visual humano. Para nosotros es muy fácil detectar objetos en imágenes, ya que tenemos una habilidad increíble para interpretar las imágenes. Con esto quiero decir que nuestro sistema visual utiliza mucha más información que la que proporciona la imagen, como por ejemplo el conocimiento previo que tiene del entorno. Para darse cuenta de esto fijaros, por ejemplo, en qué pasa si editamos las imágenes que hemos visto anteriormente para que se vean borrosas, perdiendo así una importante cantidad de información:

Ahora ya no es tan fácil reconocer el objeto que hay en las fotografías. Pero, ¿qué pasa si ponemos esta información dentro de su contexto? A continuación, se muestran las fotografías completas de dónde han sido extraídas estas imágenes:

Para comprender estas fotografías nosotros utilizamos todo el contexto de la escena, por esto podemos identificar el tipo de espacio dónde han sido tomadas las imágenes, e incluso podemos detectar con facilidad las sillas que fuera de su contexto resultaban más difíciles de reconocer. Sin embargo, para una máquina entender estas escenas de la forma que lo hacemos nosotros sería hoy en día imposible, porque aún no sabemos dotarlas de esta capacidad de interpretar que tenemos los humanos.

A pesar de ello, actualmente hay un gran optimismo entre la comunidad científica en cuanto al futuro de la Visión por Computador, y en mi opinión este optimismo es bastante realista. En la pasada década se ha conseguido desarrollar algoritmos para resolver problemas que hace 20 años parecían irresolubles, y todo hace pensar que la tendencia seguirá al alza. Además, con el creciente protagonismo en nuestras vidas de los dispositivos móviles con cámaras, como tabletas y smartphones, estoy seguro de que en los próximos años habrá cada vez más sistemas de visión artificial en nuestro día a día.