Inteligencia Artificial y Algoritmos Genéticos – Parte 2: Memoria Visual

En esta segunda parte del artículo sobre Inteligencia Artificial y Algoritmos Genéticos, expongo cómo aplicar esta tecnología para construir un sistema de memoria visual.

Aplicación de Algoritmos Genéticos: Construcción de una Memoria Visual para la navegación autónoma de robots

El problema de navegación de robots consiste en el desplazamiento seguro de éstos dentro de un ambiente, sea éste estructurado o no. Para lograr la navegación autónoma tres problemas diferentes deben ser resueltos:

  1. Mapeo. Determinación de una representación eficiente y adecuada del ambiente a navegar. Esto a través de un mapa que describa correctamente el espacio de navegación.
  2. Auto-localización. Es necesario que el robot logre localizarse eficientemente en el mapa.
  3. Navegación. Diseño de leyes de control. Debe ser posible el desplazamiento del robot de un punto A a un punto B con leyes de control adecuadas.

Resolvamos el primer problema relacionado con el mapeo del ambiente de navegación. En la teoría, los tipos de mapas pueden ser divididos en dos familias: las geométricas y las topológicas. En las geométricas, el espacio de navegación se representa en un marco de referencia euclidiano; se tiene información de las medidas métricas del ambiente de navegación. En las representaciones topológicas, por otra parte, el ambiente es descrito de forma cualitativa, es decir, un mapa sin información métrica del ambiente. En esta parte del artículo, te mostraré la construcción de un mapa topológico en la forma de una memoria visual.

Memoria Visual

Una memoria visual es un mapa topológico que usa solamente información visual. El sensor es una cámara proyectiva a bordo del robot, y las trayectorias por las cuales el robot tiene permitido navegar se describen con un conjunto de imágenes (imágenes clave) que caracterizan o describen el ambiente. A esta colección de imágenes la llamamos memoria visual.

¿Por qué una Memoria Visual?

La motivación es simular a la forma en que humanos y animales guardamos la información de lugares nuevos. Pongamos un ejemplo: Imagina que exploras un espacio nuevo. ¿Cómo guardas la información? De ninguna manera lo haces de forma métrica. Es decir, no sabes exactamente la distancia en metros de la puerta A a la puerta B, ¿cierto? Más bien, guardas información topológica o cualitativa. En otras palabras, guardas la relación de la posición de cada elemento de interés; la puerta A está antes de la puerta B.

Un ejemplo común de mapa topológico son los mapas de las estaciones de metro. Cuando ves el mapa, no observas información métrica con la distancia entre estaciones. Más bien, obtienes información sobre la posición relativa entre estaciones. Sin embargo, esta información parcial no te impide navegar ya sea dentro del espacio nuevo que has explorado o dentro del sistema del metro.

Comparemos el mapa de metro con la memoria visual. En la memoria visual cada imagen clave es como una estación de metro. En la siguiente imagen, cada círculo representa distintos frames del video capturado por la cámara del robot. Un círculo azul indica una imagen clave dentro de la memoria visual.

Una ventaja de este tipo de mapas topológicos está en la cantidad de información necesaria para navegar. Es mucho menos que la información de mapas 3D por ejemplo. Entre menos datos para procesar, mejor eficiencia de procesamiento y de almacenamiento de información. Existen desventajas, claro está ¿puedes pensar en algunas? Comenta este artículo.

¿Cómo construir una memoria visual?

La metodología para la construcción de la memoria visual se divide en tres etapas: la primera etapa inicia con una fase de aprendizaje, en ésta el robot es conducido por un humano a través del entorno, mientras el robot captura imágenes de entrenamiento.

Después, este conjunto de imágenes se procesa en la etapa dos, que busca reducir el número de imágenes que conformarán la MV. Para lograr tal reducción, se seleccionan sólo algunas de las imágenes del conjunto, que son llamadas imágenes clave (Los círculos azules que viste en la imagen anterior). Para ello se analiza la similitud entre imágenes, o su traslape, y se desechan las imágenes que no cumplen ciertos criterios. Tal selección también toma en cuenta el cumplimiento de algunas hipótesis necesarias para el control del robot durante la navegación. Es en esta etapa donde usaremos el algoritmo genético.

Una vez que se tiene un conjunto de imágenes clave, el cual denominamos conjunto M1, se organizan la imágenes pertenecientes a éste para formar una representación topológica del ambiente de navegación. Esto último ocurre en la etapa tres de la construcción de la memoria visual. La siguiente imagen ilustra estos pasos.

Construcción de una Memoria Visual con Algoritmos Genéticos

En este artículo nos concentraremos en la selección de imágenes clave. Queremos que en el mapa visual tengamos únicamente información relevante. Entonces, no debería haber imágenes similares. Para lograr esto, seleccionamos los frames del video que tengan solo un porcentaje de similitud o empalme. Cuando el robot haya avanzado cierta distancia, la cámara capturará información nueva. Seleccionamos una imagen clave nueva cuando tengamos un porcentaje previamente definido de información nueva. ¿Cómo logramos hacer esto con un algoritmo genético?

La clave está en la geometría epipolar. Esta geometría describe la rotación y traslación de la cámara. Se pueden conocer estos movimientos cuando una imagen observa un punto y después se mueve (rotación o traslación) un poco sin dejar de observar el mismo punto.

Para usar un algoritmo genético haremos lo siguiente. Cada individuo codificará una rotación y traslación candidata.

Ind = [φ, θ, ψ, tx, ty],
donde
φ ∈ [0, 2π] θ ∈ [0, 2π] ψ ∈ [0, 2π] tx ∈ [−5, 5] ty ∈ [−5, 5]

Para calcular la aptitud de cada individuo se calcula qué tan bien describe la rotación y traslación real. ¿Cómo sabemos cuál fue el movimiento real? Se deduce indirectamente con puntos emparejados entre imágenes. Si la rotación y traslación codificada por el individuo explica correctamente la posición de cada punto en la imagen, entonces tendrá una buena aptitud. Desde luego que necesitamos un valor numérico para representar la aptitud, entonces se contará la cantidad de puntos que concuerdan con la rotación y traslación propuesta por el individuo.

Todos los individuos pasarán un número determinado de generaciones, y serán modificados con los operadores de selección, cruza y mutación. Al final, se escoge al mejor individuo como la solución final. Conocer cuál fue la rotación y traslación de la cámara permite saber indirectamente la cantidad de puntos nuevos en cada frame, y en consecuencia decidir qué imágenes aportan más información para la memoria visual.

Cuando te mostré el ejemplo simple con la función f(x) = x^2 o la función f(x) = x^3 + 10x^2 – 37x + 26, tal vez pensaste ¿para qué usar un algoritmo genético? Bueno para estos ejemplos sí que era innecesario. Sin embargo, para el problema de la selección de imágenes clave, ni siquiera podemos graficar la función de aptitud. En este caso, los algoritmos genéticos son de ayuda.

La anterior es una explicación de muy alto nivel de cómo usar un algoritmo genético para la construcción de un mapa visual topológico.


Sobre el autor:

Alan es doctor en ciencias y coordinador del área dedicada a la investigación e implementación del Machine Learning y Ciencia de Datos en una empresa de TI. Le encanta aprender y enseñar sobre cómo lograr sistemas de aprendizaje de máquina prácticos y funcionales.

Blog personal: MachineLearningEnEspanol.com

 

En BI Geek, empresa tecnológica centrada en Business Intelligence, Big Data & IA, apostamos por un nuevo modelo de consultoría orientado a hacer accesibles las soluciones informacionales y de tratamiento de datos para cualquier tipo de empresa.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*
*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.