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.

Leave a Reply

Your email address will not be published. Required fields are marked *