Archivo por meses: 28 de septiembre de 2015

El proyecto TAA presente en la noche de los investigadores

El pasado 25 de Septiembre el proyecto TAA (Tecnologías Audiovisuales Avanzadas) estuvo presente en un nuevo certamen de “La Noche de los investigadores” en el que tuvo la oportunidad de dar difusión a algunos de sus trabajos.

nocheInvestigadores

Para esta muestra los integrantes del proyecto pudieron realizar una demostración de realidad aumentada basada en detección de volúmenes e integración de algunos objetos representativos del patrimonio Aragonés.

2015-09-25 16.45.04

Tanto la actividad de los investigadores del proyecto TAA como la de otros compañeros del Instituto en Investigación en Ingeniería de Aragón (i3a) fue seguida y publicada por el periódico “Heraldo de Aragón”.

Localización mediante imagen II – Entrenamiento de la base de datos para interiores

Como se ha indicado en el post anterior sobre localización mediante imagen, el primer paso consiste en configurar una base de datos con un volumen y homogeneidad adecuada de las distintas clases que queremos poder detectar. Para ello la base de datos se ha creado utilizando dos librerías OpenCV y SQLite, ambas compatibles con C++ y la última además con MATLAB . El objetivo final es la creación de la red neuronal y su posterior entrenamiento, para lo cual, como se ha comentado en el post de análisis de los distintos Frameworks orientados a trabajar con CNNs, se ha utilizado la librería de algoritmos de visión por computador VLFeat – matconvnet (MatConvNet: CNNs for MATLAB, 2015).
Debido al cálculo intensivo que requiere el entrenamiento de una CNN con grandes bases de datos, ha sido necesario realizar el entrenamiento con una tarjeta gráfica perteneciente al clúster Hermes de la Universidad de Zaragoza. En total se han realizado 32 iteraciones para el proceso de entrenamiento, con un consumo total en el cluster de computación de 224 horas.
En las siguientes figuras podemos ver la forma que han adquirido los filtros tras el entrenamiento, observando que la búsqueda de características se produce tanto en forma como en los colores de la imagen.

post_5_1

En la siguiente figura podemos ver la adquisición de las características de una imagen ejemplo con los filtros de la red entrada y la predicción del sistema.

post_5_2

Para testear la red neuronal entrenada se hace uso de una pequeña base de datos utilizada para reconocimiento de escenas en interiores (Quattoni & Torralba, 2009). De ella se selecciona únicamente las clases para las cuales ha sido entrenada la red, en caso de elegir otras que no pertenezcan, el sistema intentará predecir cuál será la más probable.
El resultado del entrenamiento se puede comprobar en las siguientes figuras.

post_5_3

Los resultados obtenidos han sido muy prometedores. Observamos probabilidades de éxito de hasta un 70 % , mientras la cámara se mueve de forma natural por diversas dependencias.

Convolutional Neural Network (CNN)

Una de las fases del proceso de trabajo del proyecto TAA consiste en la localización del escenario desde el cual el usuario realiza una foto, con el objetivo de minimizar el conjunto de imágenes necesarias para la estimación de pose.

Para ello se considera adecuado integrar dentro de nuestro sistema una herramienta de clusterización basada en redes neuronales convolucionales (o CNN). Esta es una técnica novedosa a la cual deben dedicarse esfuerzos a tener controlada por distintos motivos:

  • Los resultados que se están obteniendo en reconocimiento de objetos utilizando CNNs
    están superando a casi cualquier otro método de reconocimiento de objetos.
  • Este método de reconocimiento requiere de una gran cantidad de datos y de tiempo de
    entrenamiento, por lo que es necesario tener cierto conocimiento de la red para no
    malgastar recursos.
  • Como consecuencia del alto coste de entrenamiento, no es factible reentrenar el
    sistema asiduamente si se necesita añadir nuevos objetos o nuevos datos para los
    existentes. Es necesario buscar fórmulas que utilicen el potencial de las CNNs ya
    entrenadas y que permitan flexibilidad para adaptarse a diferentes escenarios y objetos
    con la mínima cantidad posible de reentrenamientos.

Por otro lado, para poder trabajar con CNN, se plantea la utilización de los recursos del clúster Hermes de la Universidad de Zaragoza, el cual dispone de tarjetas gráficas nVidia Tesla M2090 de 6Gb de memoria RAM, con una versión de CUDA 5.5 y una capability de 2.2.

Se ha hecho un test de las diferentes librerías que están disponibles para trabajar con CNNs. Las que más aceptación tienen ahora mismo y que más se utilizan en la elaboración de artículos son las siguientes:

Framework basado en Caffe.
La versión GPU requiere de una capability CUDA (define el conjunto de funciones CUDA compatibles) 3.0 o 3.5, así como una versión de CUDA 5.5 o 6.0.

Se trata de una librería que utiliza un lenguaje de programación llamado LUA ganador del
certamen “localization task of the ImageNet Large Scale Visual Recognition Challenge 2013
(ILSVRC2013)”. . Dispone de modelos pre-entrenados para la BBDD de Imagenet (BBDD de
objetos genéricos que cuenta con 12 millones de imágenes de 1000 clases diferentes), y libera
el código para ejecutar las evaluaciones pero no el código para realizar el entrenamiento. Este
último necesita de una librería de la que sólo facilitan un precompilado. Además no dispone de
versión para GPU.

Theano no es una librería específica de redes convolucionales, pero sí que dispone de
herramientas para manipularlas. Al tratarse de un framework más general, es bastante más
complicado de utilizar que otras librerías. Facilita soporte para ejecución en CPU y GPU de forma transparente para el desarrollador.

Se trata de una librería ejecutable desde Matlab mediante archivos mex. Su configuración es
relativamente simple y da soporte para CPU y GPU.

Para la versión CPU se ha podido una realizar el entrenamiento de una CNN basada en una base de datos de objetos genéricos denominada Imagenet. La versión GPU requiere de una Capability 2.0, compatible con la arquitectura del clúster Hermes, y aunque trabaja con CUDA 5.5 el conjunto de funciones necesarias son compatibles con las versión CUDA 5.0 disponible en el clúster. Se dispone de gran parte del código y permite evaluar y entrenar con los scripts que libera. Además permite extraer los datos a cualquier nivel de la red. Adicionalmente, se suministran varios modelos entrenados de BBDD y concretamente de la Imagenet.

Tras analizar las distintas herramientas disponibles se decide la utilización y puesta en marcha de VLFeat MatConvNet ya que por un lado es la que permite compatibilidad total con el cluster de computación Hermes de la Universidad de Zaragoza y por otro dispone de un lenguaje de programación de alto nivel que facilitará las tareas de entrenamiento de redes convolucionales.

Localización mediante imagen I – Base de datos para interiores

Una de las tareas iniciales a cubrir dentro del proyecto TAA es la identificación de la posición de un usuario dentro de un entorno dado. El principal handicap con el que nos encontramos en esta fase es que cuanto mayor es la zona de detección mayor es la base de datos necesaria para hacer una correcta localización. Para poder obtener una solución con un coste computacional razonable es necesario realizar una “clusterización” de la base de datos. Esta organización de la base de datos en “clusters” es la que nos permitirá abordar de forma óptima otro de los objetivos de este proyecto, la estimación de punto de vista del usuario.

Como primera aproximación se han realizado una serie de experimentos orientados a interiores en los que se pretende captar una imagen desde el punto de vista de una persona y reconocer su ubicación.

post_3_1

Se ha generado una base de datos de habitaciones comunes de una casa: salón, dormitorio, baño, cocina, pasillo, etc. a partir de imágenes obtenidas en Internet. Además se ha seleccionado un conjunto de imágenes de test para tratar de ver si el sistema es capaz de detectar la ubicación en la que estamos, independientemente de cómo se obtenga la imagen.

Para la realización de la base de datos se ha realizado un programa que permite la descarga masiva de imágenes. Posteriormente se ha aplicado un proceso de Data Augmentation mediante variaciones en escala, selección aleatoria de porciones de la imagen, inversión con respecto al eje horizontal y rotación, con el objetivo de dotar de mayor robustez a la red neuronal ante posibles variaciones en la imagen.

post_3_2

Se ha obtenido un total de 1.767.346 imágenes. No obstante, debido a que no se tienen el mismo número de imágenes para todas las clases, se ha decidido que la clase que contenga menos imágenes definirá el número máximo de imágenes por clase. Bajo este criterio la base de datos se reduce a un un total de 642.124 imágenes, lo que supone disponer de 91.732 imágenes por clase.