PROGRAMA DE POSGRADO EN CIENCIAS
EN CIENCIAS DE LA COMPUTACI ´
ON
Algoritmo masivamente paralelo de reconocimiento de
objetos basado en el paradigma de la corteza visual
artificial
Tesis
para cubrir parcialmente los requisitos necesarios para obtener el grado de
Maestro en Ciencias
Presenta:
Andersen Herrera Hidalgo
Ensenada, Baja California, M´exico
Andersen Herrera Hidalgo
y aprobada por el siguiente comit´e
Dr. Gustavo Olague Caballero
Codirector del Comit´e
Dr. Benjam´ın Hern´andez Valencia
Codirector del Comit´e
Dr. Andrey Chernykh
Miembro del Comit´e
M.C. Jos´e Luis Brise˜no Cervantes Miembro del Comit´e
Dr. Eugenio Rafael M´endez M´endez
Miembro del Comit´e
Dra. Ana Isabel Mart´ınez Garc´ıa
Coordinador programa de
Posgrado en Ciencias de la Computaci´on
Dr. Jes´us Favela Vara
Direcci´on de Estudios de Posgrado
Julio 2014
Resumen de la tesis de Andersen Herrera Hidalgo, presentada como requisito parcial para la obtenci´on del grado de Maestro en Ciencias en Ciencias de la Computaci´on.
Algoritmo masivamente paralelo de reconocimiento de objetos basado en el paradigma de la corteza visual artificial
Resumen aprobado por:
Dr. Gustavo Olague Caballero
Codirector de Tesis
Dr. Benjam´ın Hern´andez Valencia
Codirector de Tesis
El reconocimiento de objetos en escenas complejas es un campo f´ertil en el desarrollo de algoritmos usados en la visi´on por computadora. Es importante desarrollar algoritmos con buena certidumbre en reconocimiento, as´ı como que se calculen con altas velocidades en su proceso, de tal forma que ayuden en tareas de clasificaci´on y detecci´on de objetos en tiempo real. En esta tesis, se presenta la implementaci´on en paralelo del algoritmo de la corteza visual artificial para reconocimiento de objetos. Esta corteza visual artificial es una composici´on de m´ultiples algoritmos, que al combinarse en cierto orden, logran la tarea de reconocimiento de objetos, y en conjunto obtienen una precisi´on de reconocimiento tan buena como la alcanzada en otros trabajos del estado del arte, y se dice que se inspira en la biolog´ıa de la corteza visual cerebral. El paralelismo implementado se realiza en la unidad de procesamiento gr´afico (GPU), a trav´es de CUDA, una extensi´on de C para realizar c´alculos de pr´oposito general en tarjetas gr´aficas NVIDIA. El procesamiento en tarjetas gr´aficas brinda aceleraci´on en los c´alculos, ya que cuentan con decenas y hasta cientos de procesadores gr´aficos, a diferencia de los que llega a tener un CPU. Como resultado, los c´alculos del algoritmo de la corteza visual artificial, en su mayor´ıa, se aceleran en la GPU. Algunos c´alculos, debido a su estructura e independencia de datos, y al uso de memoria cach´e de la GPU, son hasta 180x m´as r´apido que la versi´on secuencial de C. La implementaci´on del algoritmo de la corteza visual artificial en GPU, provee un incremento de velocidad de hasta 50x sobre la implementaci´on en C, en tama˜nos de imagen de hasta 4096X4096 p´ıxeles.
Abstract of the thesis presented by Andersen Herrera Hidalgo, in partial fulfillment of the requirements of the degree of Master of Science in Computer Science.
Massively parallel object recognition algorithm based on the paradigm of artificial visual cortex
Abstract approved by:
Dr. Gustavo Olague Caballero
Codirector de Tesis
Dr. Benjam´ın Hern´andez Valencia
Codirector de Tesis
Recognizing objects in complex scenes is a fertile field for the development of algorithms used in computer vision. It is important to develop algorithms with good certainty in recog-nition as well as to be calculated with high speed in the process, so that aid in tasks of classification and object detection in real time. In this thesis, is presented the parallel im-plementation of the algorithm of artificial visual cortex for object recognition. This visual cortex artificial composition of multiple algorithms, when combined in a certain order, man-age the task of object recognition, and together get a recognition accuracy as good as that achieved in other studies of the state of the art, and is said to be inspired by biology of the cerebral visual cortex. The implemented parallelism is performed on the graphics processing unit (GPU) through CUDA, an extension of C for general purpose calculations on NVIDIA graphics cards. Processing acceleration provided by graphics cards in the calculations, as have dozens or even hundreds of graphics processors, as opposed to coming to have a CPU. As a result, the load algorithm of artificial visual cortex, where most are accelerated on the GPU. Some calculations, due to its structure and independence of data, and the use of GPU memory cache, are up to 180x faster than the sequential version of C. The GPU implemen-tation of the visual cortex artificial algorithm, provides a speed increase of up to 50x on C-implementation in image sizes up to 4096X4096 pixels.
Dedicatoria
Dedicada
a
mi
esposa
Karla
y
a
mi
hijo
Agradecimientos
A mis coasesores, el Dr. Gustavo Olague, por sus ense˜nanzas, su apoyo y sus m´ultiples
met´aforas y al Dr. Benjam´ın Hern´andez por haberme guiado en la realizaci´on de este trabajo,
as´ı como a mis sinodales de tesis; Dr. Eugenio Rafael M´endez, Dr. Andrey Chernykh y M.C.
Jos´e Luis Brise˜no por sus opiniones, observaciones y su tiempo.
A mi esposa e hijo, por su paciencia y apoyo en el tiempo de estudio del posgrado. Al
apoyo y ense˜nanzas de mis padres, Efren Herrera y Magdalena Hidalgo. Por los consejos y
´animo de mis hermanos Irving, Iran y Daniel.
A mis compa˜neros de laboratorio, Daniel, Leon, Eddie, Jos´e Chan, Luis Arturo y Paul,
por sus valiosos comentarios y ayuda que me brindaron durante el tiempo que colaboramos
juntos.
A todos los investigadores, estudiantes y personal del departamento de ciencias de la
computaci´on por su ense˜nanza acad´emica.
Resumen en espa˜nol . . . iii
Resumen en ingl´es . . . iv
Dedicatoria . . . v
Agradecimientos . . . vi
Lista de figuras . . . xi
Lista de tablas . . . xii
1 Introducci´on. . . 1
1.1 Motivaci´on. . . 1
1.2 Objetivos . . . 2
1.2.1 Objetivos espec´ıficos . . . 2
1.3 Preguntas de investigaci´on . . . 3
1.4 Contribuciones . . . 3
1.5 Trabajo relacionado . . . 4
1.6 Estructura de esta tesis . . . 4
2 El reconocimiento de objetos y la corteza visual . . . 6
2.1 Reconocimiento vs clasificaci´on . . . 6
2.2 Teor´ıas de reconocimiento de objetos . . . 7
2.2.1 Teor´ıas de descripci´on estructural . . . 7
2.2.2 Teor´ıas basadas en im´agenes . . . 10
2.3 Biolog´ıa del sistema visual humano . . . 11
2.3.1 La retina. . . 12
2.3.2 N´ucleo geniculado lateral . . . 15
2.3.3 La corteza visual . . . 16
2.4 Modelos computacionales biol´ogicamente inspirados para reconocimiento . . 19
2.5 Modelos de la corteza visual en GPU . . . 26
3 CUDA . . . 28
3.1 Introducci´on . . . 29
3.2 Tarjeta gr´afica CUDA . . . 32
3.2.1 GPU . . . 33
3.2.2 Memoria . . . 37
3.2.3 Capacidad de c´omputo . . . 41
3.3 Programaci´on paralela en CUDA . . . 42
3.3.1 CUDA C. . . 42
3.3.2 Calificadores de funciones . . . 43
3.3.3 Calificadores de variables. . . 44
3.3.4 Variables Incorporadas . . . 45
3.3.5 Kernels e hilos . . . 46
3.3.6 Memoria del dispositivo . . . 48
3.3.7 Barreras de memoria . . . 49
3.3.8 Sincronizaci´on . . . 50
3.4 Optimizaci´on en CUDA . . . 50
3.4.1 Arquitectura. . . 51
3.4.2 Urdimbres y ocupaci´on . . . 53
4 Corteza visual artificial . . . 55
4.1 Ruta dorsal artificial . . . 57
4.1.1 Mapa visual de color . . . 59
4.1.2 Mapa visual de forma. . . 60
4.1.3 Mapa visual de orientaci´on . . . 60
4.1.4 Mapa visual de intensidad . . . 61
4.1.5 Mapas conspicuo . . . 62
4.2 Ruta ventral artificial . . . 63
4.2.1 Mapas mentales . . . 63
4.2.2 Vector descriptor . . . 64
5 Algoritmo de la corteza visual en C . . . 66
5.1 Algoritmo general de la corteza visual . . . 67
5.1.1 Corteza visual artificial implementada . . . 68
5.2 Leer Imagen . . . 68
5.3 Conversi´on y separaci´on del R, G y B de la imagen . . . 71
5.4 Umbralizaci´on de im´agenes . . . 72
5.5 Modelos y opuestos de color . . . 72
5.5.1 Cian, magenta, amarillo y negro . . . 73
5.5.2 Matiz, saturaci´on y valor . . . 74
5.5.3 Opuestos de color . . . 77
5.6 Mapas visuales en C . . . 78
5.6.1 Mapa visual de intensidad . . . 78
5.6.2 Mapa visual de orientaci´on . . . 79
5.6.3 Mapa visual de forma. . . 79
5.6.4 Mapa visual de color . . . 80
5.7 Mapas Conspicuos en C . . . 81
5.7.1 Pir´amide Gaussiana en C . . . 81
5.7.2 Centro envolvente en C . . . 83
5.7.3 Normalizaci´on . . . 83
5.8 Escalar los mapas conspicuos . . . 87
5.9 Mapas mentales en C . . . 87
5.10 Vector descriptor en C . . . 87
5.11 Operadores visuales . . . 90
5.11.1 Algoritmos. . . 92
6 Implementaci´on de la corteza visual artificial en CUDA . . . 96
6.1 Algoritmo general de la corteza visual en CUDA . . . 96
6.4 Conversi´on y separaci´on del R, G y B de la imagen . . . 101
6.5 Umbralizaci´on de R, G y B . . . 104
6.6 Cian, magenta, amarillo y negro . . . 105
6.7 Matiz, saturaci´on y valor . . . 106
6.8 Opuesto al color rojo-verde. . . 108
6.9 Opuesto al color azul-amarillo . . . 108
6.10 Mapas visuales . . . 109
6.10.1 Mapa visual de intensidad . . . 109
6.10.2 Mapa visual de orientaci´on . . . 110
6.10.3 Mapa visual de forma. . . 110
6.10.4 Mapa visual de color . . . 111
6.11 Mapas conspicuos . . . 111
6.12 Pir´amide gaussiana . . . 113
6.13 Escalar las pir´amides . . . 113
6.14 Centro envolvente . . . 114
6.15 Normalizaci´on . . . 114
6.16 Escalar mapas conspicuos . . . 116
6.17 Mapas mentales . . . 116
6.18 Vector descriptor . . . 117
6.19 Algoritmos. . . 117
6.19.1 Operadores visuales . . . 119
6.19.2 Convoluci´on . . . 126
6.19.3 M´aximo y m´ınimo . . . 133
7 Experimentaci´on y resultados . . . 137
7.1 Transferencia GPU . . . 137
7.2 Rojo, verde y azul. . . 139
7.3 Cian, magenta, amarillo y negro . . . 141
7.4 Matiz, saturaci´on y valor . . . 144
7.5 Opuestos al color . . . 146
7.6 Mapas visuales . . . 148
7.7 Mapas conspicuos . . . 153
7.8 Mapas mentales . . . 156
7.9 Vector descriptor . . . 160
8 Conclusi´on y discusi´on . . . 166
8.1 Trabajo a futuro . . . 170
Referencias Bibliogr´aficas . . . 171
A Configuraci´on de experimentos . . . 176
A.1 Software . . . 176
B Biblioteca OpenCV . . . 179
Lista de figuras
1 Descripci´on esquem´atica del proceso de reconocimiento de objetos . . . 9
2 El sistema nervioso ´optico . . . 14
3 Las rutas dorsal y ventral en el cerebro humano . . . 17
4 La conectividad conocida de la corteza visual. . . 19
5 Extracci´on jer´arquica de caracter´ısticas . . . 22
6 Ejemplo del proceso de la neocognitron . . . 23
7 Modelo est´andar de reconocimiento de objetos por Riesenhuber y Poggio . . 24
8 Modelo de reconocimiento de objetos . . . 25
9 Telar artesanal a mano . . . 30
10 La arquitectura CUDA en un nivel conceptual . . . 31
11 La arquitectura de una tarjeta Fermi . . . 34
12 La arquitectura de un multiprocesador de flujo Fermi v2.1 . . . 36
13 Una vista conceptual de la estructura de memoria en una GPU. . . 38
14 Un ejemplo de conflicto de acceso de hilos en la lectura de datos de memoria compartida . . . 53
15 Analog´ıa entre la ruta ventral y el modelo computacional propuesto por Clemente 58 16 Estructura tipo “IplImage”. . . 69
17 Forma de almacenar OpenCV los datos de una imagen. . . 70
18 Separaci´on de RGB. . . 71
19 Representaci´on del modelo HSV . . . 75
20 Un ejemplo de pir´amide Gaussiana. . . 82
21 Transferencia de una imagen del hu´esped al dispositivo. . . 100
22 Un ejemplo de configuraci´on de hilos y bloques para cubrir todos los elementos de una imagen en dos dimensiones. . . 102
23 Representaci´on del acceso de hilos a memoria global del dispositivo . . . 103
24 Un ejemplo de configuraci´on de hilos y bloques. . . 104
25 Convoluci´on 1D.. . . 127
26 Convoluci´on 1D de otro elemento. . . 127
27 Ejemplo de una convoluci´on 1D segmentada. . . 131
28 Cargas de datos en memoria compartida. . . 133
29 Formas de hacer una reducci´on. . . 134
30 Imagen de avi´on . . . 137
31 Comparaci´on de CPU y GPU en tiempo (ms) para RGB. . . 141
32 Comparaci´on de CPU y GPU en tiempo (ms) para CMYK. . . 143
33 Comparaci´on de CPU y GPU en tiempo (ms) para HSV. . . 146
34 Comparaci´on de CPU y GPU en tiempo (ms) para opuestos al color. . . 148
35 Comparaci´on de CPU y GPU en tiempo (ms) para mapa visual de intensidad. 150 36 Comparaci´on de CPU y GPU en tiempo (ms) para mapa visual de orientaci´on.151 37 Comparaci´on de CPU y GPU en tiempo (ms) para mapa visual de color. . . 152
38 Comparaci´on de CPU y GPU en tiempo (ms) para mapa visual de forma. . . 153
39 Comparaci´on de CPU y GPU en tiempo (ms) para un mapa conspicuo. . . . 156
40 Comparaci´on de CPU y GPU en tiempo (ms) para un mapa mental.. . . 159
43 Comparaci´on de CPU y GPU en valores del vector descriptor de una imagen de 1024 X 1024. . . 163
44 Comparaci´on de CPU y GPU en valores del vector descriptor de una imagen de 2048 X 2048. . . 164
45 Comparaci´on de CPU y GPU en valores del vector descriptor de una imagen de 4096 X 4096. . . 165
Lista de tablas
1 Operadores visuales de color OVC . . . 59
2 Operadores visuales de forma OVF . . . 61
3 Operadores visuales de orientaci´on OVO. . . 62
4 Operadores de mapas mentales OVM Mk . . . 64
5 Funciones unarias . . . 91
6 Funciones binarias . . . 91
7 Tiempo de transferencia de imagen. . . 138
8 Im´agenes obtenidas de los componentes rojo, verde y azul. . . 140
9 Tiempo de procesamiento de componentes rojo, verde y azul. . . 140
10 Im´agenes obtenidas de los componentes cian, magenta, amarillo y negro. . . 142
11 Tiempo de procesamiento de los componentes cian, magenta, amarillo y negro. 143 12 Im´agenes obtenidas de los componentes matiz, saturaci´on y brillo. . . 145
13 Tiempo de procesamiento de los componentes matiz, saturaci´on y brillo. . . 145
14 Im´agenes obtenidas de los opuestos al color. . . 147
15 Tiempo de procesamiento de los opuestos al color. . . 147
16 Im´agenes de los mapas visuales obtenidos. . . 149
17 Tiempo de procesamiento del mapa visual de intensidad. . . 150
18 Tiempo de procesamiento del mapa visual de orientaci´on (CVA Aviones). . . 151
19 Tiempo de procesamiento del mapa visual de color (CVA Aviones). . . 152
20 Tiempo de procesamiento del mapa visual de forma (CVA Aviones). . . 153
21 Im´agenes de los mapas conspicuos obtenidos. . . 155
22 Tiempo de procesamiento de un mapa conspicuo. . . 156
23 Im´agenes de los mapas mentales obtenidos. . . 158
24 Tiempo de procesamiento de un mapa mental (CVA Aviones). . . 159
El problema cl´asico de visi´on por computadora, es determinar si una imagen contiene o no,
un objeto espec´ıfico, caracter´ıstica o actividad. Esta tarea normalmente puede ser resuelta
robustamente y sin esfuerzo por un humano. En visi´on por computadora, esta tarea no ha
sido resuelta satisfactoriamente para el caso general, solo para objetos espec´ıficos, tales como
rostros humanos, caracteres escritos a mano o impresos, veh´ıculos, entre otros, y bajo ciertas
circunstancias en t´erminos de iluminaci´on, fondo, posici´on del objeto respecto a la c´amara,
etc.(Pintoet al., 2008).
El enfoque principal de esta tesis, es la implementaci´on eficiente de los algoritmos de
detecci´on y clasificaci´on de objetos en la Unidad de Procesamiento Gr´afico (GPU1). Estos
algoritmos son componentes cruciales de muchas aplicaciones de visi´on por computadora.
A medida que se quiere entender la informaci´on de una imagen o v´ıdeo, los objetos en
la imagen deben ser reconocidos y clasificados. Es usual requerir procesar estas im´agenes
en tiempo real, sin embargo los algoritmos de detecci´on y clasificaci´on tienden a ser muy
costosos computacionalmente. Este trabajo supera las limitaciones del procesamiento de los
algoritmos de clasificaci´on, al descargar gran parte del computo a la unidad de procesamiento
gr´afico. La GPU es un dispositivo masivamente paralelo, el cual es capaz del procesamiento
de grandes cantidades de datos, requeridos para lograr las tareas de detecci´on y clasificaci´on
muy r´apidamente. Los incrementos en velocidad, son obtenidos sobre implementaciones
previas, al explotar c´alculos de datos independientes y ejecutarlos en paralelo en la GPU.
Las implementaciones en esta tesis fueron medidas contra la implementaci´on de ANSI C. Los
resultados fueron analizados para explicar cualquier cuello de botella en el desempe˜no.
1.1 Motivaci´on
Es bien sabido que el sistema visual humano desempe˜na la tarea de reconocimiento de objetos
efectivamente (DiCarloet al., 2012) haciendo parecer que es un problema simple, cuando de
hecho en visi´on artificial es algo m´as complejo. El conocimiento acerca de la corteza visual
1
del cerebro humano, as´ı como de otras especies, ha servido como inspiraci´on en el desarrollo
de soluciones para los problemas de visi´on por computadora.
Los modelos bio-inspirados en la corteza visual contienen un gran n´umero de operaciones,
y por lo tanto son computacionalmente costosos. Sin embargo, estos suelen ser susceptibles de
procesamiento en paralelo. La estructura de los modelos de la corteza visual se mapean muy
bien a la arquitectura moderna de las GPUs, las cuales est´an optimizadas para desempe˜nar
la misma operaci´on en cada punto del arreglo de datos. Las GPUs han evolucionado de ser
solo tarjetas aceleradoras de gr´aficos, donde los elementos del arreglo son p´ıxeles, a realizar
distintas operaciones con datos en general.
Desde hace algunos a˜nos las Interfaces de Programaci´on de Aplicaciones (API2) para estas
tarjetas, han llevado a la aceleraci´on de algoritmos no gr´aficos. En la actualidad, las GPUs
tienen cientos de procesadores paralelos, y pueden ejecutar algoritmos hasta 100 veces m´as
r´apido que un solo CPU(Nickolls et al., 2008). Sin embargo, esta ganancia en desempe˜no se
llega a ver afectada. Todos los procesadores de la GPU a´un comparten una memoria global,
la cual llega a ser un cuello de botella en el sistema. Para lograr un desempe˜no ´optimo,
los programadores deben hacer que los algoritmos de la GPU tengan el m´ınimo acceso de
memoria.
1.2 Objetivos
El objetivo general de esta tesis es: implementar un sistema de reconocimiento de objetos
en tarjetas gr´aficas de NVIDIA3 para acelerar el procesamiento de informaci´on. El sistema
a considerar esta inspirado en la corteza visual del cerebro de primates, tomando el flujo de
informaci´on visual de la ruta ventral.
1.2.1 Objetivos espec´ıficos
Para lograr el objetivo principal, se han establecido objetivos espec´ıficos,
2
Del ingl´es Aplication Programming Interface 3
• Implementar el sistema en ANSI C
• Implementar cada operaci´on susceptible al procesamiento paralelo en CUDA4
• Reducir el tiempo de procesamiento del sistema
• Comparar en tiempo de procesamiento los resultados experimentales de la implementaci´on con la version en Matlab y C
1.3 Preguntas de investigaci´on
Durante el desarrollo de esta tesis, se pretende contestar preguntas que surgen al realizar un
trabajo de investigaci´on de implementaci´on en tarjetas gr´aficas de sistemas bio-inspirados
para el reconocimiento de objetos, y estas preguntas son las siguientes:
• ¿Cu´ales son los beneficios de implementar un sistema como la corteza visual artifi-cial(CVA) en CUDA?
• ¿Cu´ales y c´omo se desarrollar´an los algoritmos susceptibles al procesamiento paralelo de la CVA?
• ¿Cu´ales son las limitaciones de la implementaci´on de la CVA en CUDA al imitar el paralelismo de la corteza visual?
• ¿Qu´e ventajas hay en la estrategia de la implementaci´on de la CVA en CUDA con respecto a otras implementaciones en CUDA de modelos bio-inspirados?
1.4 Contribuciones
Las contribuciones de esta tesis son:
• Una implementaci´on de un sistema de reconocimiento de objetos en la GPU. Las apli-caciones de reconocimiento de objetos demandan rapidez en c´omputo, para as´ı lograr
ejecuci´on en tiempo real.
4
• An´alisis del proceso de desarrollo de la implementaci´on en CUDA. El tiempo de desar-rollo y la ganancia en desempe˜no se registraron durante la implementaci´on. Con esta
informaci´on, se puede estimar el tiempo de desarrollo en proyectos futuros, as´ı como
cuanto mejorara el desempe˜no.
1.5 Trabajo relacionado
La implementaci´on en la GPU de este trabajo, proviene de una corteza visual artificial
(Clementeet al., 2013) y utiliza una metodolog´ıa similar a modelos existentes como el HMAX
(Riesenhuber y Poggio, 1999) o Modelo ´Estandar, Corteza Visual en la GPU (Woodbeck
y Roth, 2008), el modelo ´estandar 2.0 (Serre et al., 2005b) y trabajo posterior derivado.
A su vez, estos modelos tienen similitudes con trabajo previo, tal como la Neocognitron
(Fukushima, 1980). Todos estos modelos simulan el recorrido y operaciones de la corteza
visual, que son V1, V2, V4 e IT, realizando una pir´amide de escalas de la imagen, aplic´andoles
operaciones de convoluci´on con filtros de Gabor y usando un operador MAX(obtiene los
valores m´aximos) sobre las escalas y orientaci´on. Los modelos biol´ogicos recientes han usado
la maquina de vector de soporte (SVM5) para la clasificaci´on. El modelo de la CVA tambi´en
utiliza la SVM, pero se distingue de los modelos previamente mencionados de las siguientes
formas:
• Integraci´on de caracter´ısticas sobresalientes usando cuatro dimensiones: color, forma, orientaci´on e intensidad.
• Conjunto de operadores visuales, construidos y seleccionados a partir de la progra-maci´on gen´etica, en lugar de un diccionario de palabras visuales.
• La aplicaci´on de operadores visuales, que consisten en conjuntos de funciones matem´aticas.
1.6 Estructura de esta tesis
Los cap´ıtulos siguientes se estructuran de la siguiente forma:
5
• Capitulo II. Da una introducci´on al lector al tema de reconocimiento de objetos, se describen brevemente los diferentes enfoques para resolver el problema, enfoques
inspirados en la corteza visual, y se explica el funcionamiento de la corteza visual.
• Capitulo III. Se introduce a la programaci´on en GPUs con CUDA. Se describe la arquitectura del hardware, y se describen las funciones b´asicas para empezar a escribir
programas para la GPU.
• Capitulo IV.Describe el trabajo de la corteza visual artificial (CVA), los operadores utilizados, y las etapas principales de c´alculo de dicha corteza visual artificial para el
reconocimiento y clasificaci´on de objetos.
• Capitulo V. Se describen los algoritmos de la implementaci´on que se hizo de la CVA en C, as´ı como el funcionamiento de las funciones y algoritmos que componen la corteza
visual artificial.
• Capitulo VI.Se describen los algoritmos de la implementaci´on que se hizo de la CVA en CUDA, se muestra el cambio de paradigma, de un c´odigo secuencial a un c´odigo en
paralelo y se describe la implementaci´on de cada algoritmo con CUDA.
• Capitulo VII. Describe los experimentos realizados para medir la ganancia, de los algoritmos en CUDA respecto a sus similares en secuencial. Y se muestran los resultados
obtenidos.
Cap´ıtulo 2. El reconocimiento de objetos y la corteza
visual
El reconocimiento de objetos es un importante fen´omeno visual, y una de las preguntas
m´as desconcertantes en la comunidad de visi´on artificial. Los diferentes campos de
inves-tigaci´on, entre ellos la neurociencia, la psicolog´ıa y la ciencia cognitiva, est´an estudiando
este fen´omeno desde sus campos de aplicaci´on para encontrar los circuitos neuronales
subya-centes, y su conexi´on con tareas cognitivas de alto nivel. Los avances hechos son substanciales
y alentadores, pero el problema es complejo. Esto es porque se asume un gran sistema de
memoria muy eficiente, para almacenar un n´umero suficiente de diferentes ´angulos de visi´on
del objeto, y as´ı comparar la imagen con todas las vistas en memoria; otra forma es un
largo y exhaustivo entrenamiento con muchas diferentes vistas del objeto. A´un as´ı, dadas
las limitaciones de herramientas de investigaci´on, hay un largo camino que recorrer antes de
entender el problema completamente.
En el contenido de este capitulo, se definen los conceptos de reconocimiento y clasificaci´on
en la visi´on artificial. Se hace menci´on a diferentes teor´ıas de reconocimiento de objetos,
entre estas las que se inspiran en la corteza visual. Dada la importancia del respaldo
te´orico-cient´ıfico para esta tesis, se incluye una secci´on que describe la biolog´ıa del sistema visual
humano, que entre otras cosas est´a la corteza visual del cerebro, donde se describen dos rutas
principales para reconocer el mundo que nos rodea. Tambi´en se mencionan algunos de los
modelos inspirados en la biolog´ıa para reconocimiento de objetos. Y por ´ultimo se mencionan
otros modelos que se han implementado en la GPU.
2.1 Reconocimiento vs clasificaci´on
El reconocimiento de objetos puede ser dividido en dos tipos. Estos son, clasificaci´on e
identificaci´on de objetos. En clasificaci´on de objetos, la tarea es identificar los tipos de
objetos o a cual clase pertenece el objeto. Por ejemplo, a´un cuando los carros pueden tener
diferentes formas, colores, a˜no de manufactura, etc., se pueden clasificar todos estos objetos
como un miembro ´unico dentro de una clase. Por ejemplo en un estacionamiento, donde hay
un gran n´umero de carros estacionados, una persona puede encontrar su propio auto. Dentro
de la clasificaci´on, lo importante es la habilidad para ignorar las variaciones dentro de una
categor´ıa, mientras las variaciones entre categor´ıas son enfatizadas. Por otro lado, durante
la identificaci´on de objetos, las variaciones a trav´es de los objetos de la misma categor´ıa se
enfatizan.
En visi´on artificial estas dos tareas, clasificaci´on e identificaci´on de objetos, son
con-sideradas como tareas distintas, mientras biol´ogicamente recaen en el mismo proceso y los
mismos escenarios de generalizaci´on (Ullman y Power, 1997). Asimismo, en visi´on artificial,
la identificaci´on viene antes de la clasificaci´on, mientras que biol´ogicamente estas dos tareas
se realizan en orden inverso (Roschet al., 1976).
2.2 Teor´ıas de reconocimiento de objetos
Las teor´ıas de reconocimiento de objetos pueden ser divididas en dos grandes clases, basadas
en la representaci´on de los objetos. Estas dos clases son: teor´ıas de descripci´on estructural y
teor´ıas basadas en im´agenes.
2.2.1 Teor´ıas de descripci´on estructural
La suposici´on b´asica de esta serie de teor´ıas, es que un objeto puede ser dividido en
com-ponentes invariantes tridimensionales (3D). Para el reconocimiento de un objeto dado, sus
componentes 3D y configuraciones son extra´ıdos, si esta representaci´on concuerda con una
que est´e en la memoria, entonces el objeto dado es reconocido de una manera invariable a
la vista. Uno de los primeros trabajos bajo este enfoque fue hecho por Marr y Nishihara
(Marr y Nishihara, 1978). En este enfoque, la representaci´on del modelo 3D de un objeto, se
construye de las propiedades visuales del objeto, y entonces se empareja con representaciones
3D de objetos, que han sido guardadas previamente en memoria.
La figura1ilustra la organizaci´on de la informaci´on de forma en una descripci´on de modelo
la caja y la disposici´on de sus ejes de componentes mostrados en el lado derecho. Adem´as
algunos ejes de componente tienen modelos 3D asociados con ellos y esto est´a indicado de
forma que las cajas se sobreponen. La disposici´on relativa de ejes de componente de cada
modelo, sin embargo, se muestra impropiamente desde que debiera ser un sistema de objeto
centrado mas bien que la proyecci´on centrada del observador usada aqu´ı. Las caracter´ısticas
importantes de este tipo de organizaci´on son:
(i) Cada modelo 3D es una unidad autocontenida de informaci´on de forma y tiene una
complejidad limitada
(ii) La informaci´on aparece en un apropiado contexto de forma para reconocimiento (la
disposici´on de un dedo es lo m´as estable cuando se especific´o relativo a la mano que lo
contiene)
(iii) La representaci´on puede ser manipulada flexiblemente. Este enfoque limita el alcance
de la representaci´on, sin embargo, desde que sea solamente ´util para formas que han
Humano
Brazo
Antebrazo
Mano
Figura 1: Descripci´on esquem´atica del proceso de reconocimiento de objetos.Imagen tomada de (Marr, 1976).
El reconocimiento de objetos se logra en tres niveles. En el primero, se encuentra el
eje principal del objeto. En el siguiente nivel, los ejes de sub-objetos m´as peque˜nos son
identificados. Y, en el ´ultimo paso, el emparejamiento se realiza entre los componentes y un
modelo 3D almacenado del objeto.
La ventaja del modelo, es que mantiene solamente una representaci´on can´onica del
ob-jeto. Esto, es te´oricamente suficiente para reconocer el objeto desde cualquier punto de
vista, lo cual ahorra memoria. Uno de los principales problemas con estos modelos, es la
extracci´on de conos 3D de una imagen dada. Marr y Nishihara propusieron que los conos
3D se pueden obtener del primer eje del objeto. Para tal fin, sugirieron que el contorno del
objeto puede usarse para encontrar el eje principal del objeto, y utilizar este eje de partes
3D y su configuraci´on espacial en el objeto podr´ıa ser descrita. Esta descripci´on es entonces
usada para emparejar con las descripciones almacenadas en la memoria para el pr´oposito de
Siguiendo a Marr y Nishihara, Biederman (Biederman, 1987) present´o un modelo conocido
como “Reconocimiento por Componentes”. Introdujo dos nuevos conceptos, que incrementan
la practicidad de las teor´ıas estructurales. Primero, el n´umero de primitivas volum´etricas se
fijaron a 36 o menos, nombrados como geones. Segundo, se propuso que los geones podr´ıan
obtenerse de propiedades no accidentales de las im´agenes. Estas propiedades no accidentales
son las configuraciones de forma, y esto no ocurre por casualidad (Lowe, 1987). Por ejemplo,
hay mayor posibilidad que las orillas ortogonales de un punto en la imagen representen una
esquina de un cubo, en lugar de un resultado de ocurrencia aleatoria de ruido.
2.2.2 Teor´ıas basadas en im´agenes
Los enfoques basados en im´agenes, rechazan la idea de representar en 3D la forma de los
objetos. Estas teor´ıas argumentan que la visualizaci´on en dos dimensiones (2D) de los
obje-tos, se almacena en memoria y entonces, el proceso de reconocimiento consiste en comparar
el objeto dado (visualizaci´on bidimensional) con las visualizaciones 2D previamente
almace-nadas. Los modelos basados en im´agenes (Fukushima, 1980; Poggio y Edelman, 1990; Turk
y Pentland, 1991; Wallis y Rolls, 1997) sugieren que los objetos sean representados por una
colecci´on de fotos, obtenidas por un observador mientras ve los objetos. En estos modelos,
reconocer un objeto, requiere de un mecanismo que tome la percepci´on actual del objeto y la
empareje con las vistas almacenadas. Una ventaja de los modelos es que no requieren
repre-sentaciones 3D complejas (Poggio y Edelman, 1990; Ladeset al., 1993). Las teor´ıas basadas
en im´agenes son una consecuencia directa de dos desarrollos importantes. En el primero, se
demostr´o en muchos estudios de comportamiento y neurociencia (Tarr y Pinker, 1989), que
el reconocimiento de objetos es altamente sensible a las condiciones de la visualizaci´on. En el
segundo, algunos modelos computacionales (B¨ulthoff et al., 1995; Poggio y Edelman, 1990)
mostraron su habilidad, reconociendo la vista novedosa del objeto, por el aprendizaje con
im´agenes del mismo objeto. Estos modelos no aprenden representaciones 3D del objeto, pero
almacenan diferentes ´angulos de visi´on del objeto.
Una pregunta surge cuando se utilizan las propiedades superficiales de las im´agenes,
en los modelos basados en ellas: ¿cu´al deber´a ser la relaci´on espacial entre las superficies
sugiere que la representaci´on deber´ıa mantener una relaci´on espacial 2D completa, as´ı como
en las im´agenes (Poggio y Edelman, 1990). Este punto conduce a una representaci´on de una
plantilla r´ıgida. En el otro punto de vista, la relaci´on espacial entre caracter´ısticas se ignora,
y conlleva a una colecci´on desordenada de caracter´ısticas (Mel, 1997). Estos dos puntos de
vista extremos, tienen sus fortalezas en algunas condiciones peculiares, pero no se consideran
como algo general debido a su naturaleza inflexible.
Debido a desventajas obvias de los dos enfoques te´oricos arriba mencionados (estructural
y basado en im´agenes), usualmente se prefiere un enfoque h´ıbrido, el cual utiliza las
carac-ter´ısticas relacionadas unas con otras a lo largo de una jerarqu´ıa, y entonces se forma una
estructura multinivel del objeto. Es un enfoque h´ıbrido en el sentido que, las caracter´ısticas
b´asicas son caracter´ısticas locales dependientes en vista 2D, mientras estas caracter´ısticas
est´an relacionadas espacialmente unas con otras, en una jerarqu´ıa como lo es en los modelos
de descripci´on estructural.
2.3 Biolog´ıa del sistema visual humano
Biol´ogicamente, el proceso de reconocimiento de objetos empieza tan pronto como la luz se
refleja o se emite desde un objeto y entra al ojo del primate. La luz contiene informaci´on
acerca del objeto. Esta llega a la retina del ojo, y continua hasta la parte del cerebro
responsable del reconocimiento de objetos. La informaci´on visual de ambos ojos, transferida
por los nervios ´opticos, se re´une en el quiasma ´optico. A partir de aqu´ı, la informaci´on toma
una de las dos v´ıas de transferencia para llegar a dos partes diferentes de procesamiento del
cerebro. Alrededor del noventa por ciento de la informaci´on visual se transmite al n´ucleo
genicular lateral a trav´es de la ruta retino-genicular, y el diez por ciento de la informaci´on
llega a la colicula superior a trav´es de la ruta colicular.
Desde el n´ucleo genicular lateral, la informaci´on se transfiere a la corteza visual primaria
(V1). Cuando la informaci´on visual llega a la V1, esta no es la misma cuando entraba por
la retina. De este modo antes de la corteza visual, alg´un pre-procesamiento de la imagen
toma lugar. Ya en este previa escena de procesamiento puede ser dividida en dos rutas de
se observa en la figura 3. El procesamiento en la ruta dorsal, ubica y enfoca los objetos en el
espacio, y el procesamiento en la ruta ventral identifica y clasifica los objetos.
2.3.1 La retina
La retina es parte del cerebro, conectada apropiadamente a trav´es de un nervio ´optico. Es
responsable de la formaci´on de im´agenes, esto es, el sentido de la vista (Hubel, 1988). En
cada retina hay alrededor de 120 millones de foto-receptores (bastones y conos) que liberan
mol´eculas neurotransmisores en una tasa que es la m´axima en oscuridad, y decrece de forma
logar´ıtmica, con el incremento de la intensidad de luz. Esta se˜nal es entonces transmitida a
una cadena local de c´elulas bipolares y c´elulas ganglionares.
Hay alrededor de 1 mill´on de c´elulas ganglionares en la retina, y sus axones forman el
nervio ´optico. Ah´ı son, por tanto, alrededor de 100 foto-receptores por c´elula ganglionar;
sin embargo, cada celula ganglionar recibe se˜nales desde un campo receptivo en la retina,
aproximadamente un area circular que cubre miles de foto-receptores.
Entre los foto-receptores y las c´elulas bipolares, hay una capa horizontal de c´elulas
(lla-madas c´elulas horizontales) ligadas en conjunto, de modo que, el potencial de cada una es un
promedio pesado del potencial de su vecino. Cada c´elula bipolar recibe una entrada desde un
foto-receptor y una c´elula horizontal, produciendo una se˜nal que es proporcional al logaritmo
de la diferencia entre las se˜nales producidas por las otras dos c´elulas. Como resultado, las
´areas grandes con iluminaci´on uniforme producen se˜nales muy d´ebiles, y ´areas con cambios
en la iluminaci´on, resulta en se˜nales fuertes. Esto es, la retina detecta esencialmente
varia-ciones de brillo. Cuando las c´elulas horizontales tienen una respuesta relativamente lenta, y
un foto-receptor detecta un objeto en movimiento, estas a´un tienen informaci´on acerca de la
posici´on previa del objeto. De esta manera, la se´nal de salida de las c´elulas bipolares
(de-spu´es de pasar a trav´es de la capa de la c´elula amacrina a las c´elulas ganglionares) contienen
informaci´on muy ´util para la detecci´on de movimiento.
Una imagen se produce por la excitaci´on de los bastones y conos en la retina. La
ex-citaci´on es procesada por varias partes del cerebro que trabajan en paralelo para formar una
Los bastones, que son mucho m´as numerosos que los conos, son responsables de la visi´on
con luz tenue y saturada en niveles de luz de d´ıa y no contribuyen a la formaci´on de la
imagen. Los conos no responden a la luz tenue, pero son los responsables de la habilidad de
ver detalles finos, y para la visi´on a color (Hubel, 1988).
En los humanos, hay tres tipos de conos sensibles a tres diferentes espectros, resultando
en una visi´on a color tricromatica (Hofer et al., 2005). Los conos son convencionalmente
etiquetados de acuerdo al orden del pico de longitud de onda de sus espectros sensibles: tipos
de cono cortos, medianos, y largos (Wyszecki y Stiles, 2000). Estos tres tipos no corresponden
bien a colores particulares como se conoce, pero las longitudes de onda corta, mediano y largo
son consideradas como una representaci´on de los colores azul, verde y rojo, respectivamente
(Neitz y Jacobs, 1990; Hoferet al., 2005). Es la falta de uno o m´as de los sub-tipos de conos
que causa a los individuos en tener deficiencias en la visi´on a color u otros tipos de daltonismo
(John, 1798). Estos individuos no son ciegos a objetos de cierto color, pero experimentan
la inhabilidad de distinguir entre dos grupos de colores que pueden ser distinguidos por la
gente con visi´on normal.
Las c´elulas ganglionares de retina tienen dos tipos de respuesta, dependiendo del campo
receptivo de la c´elula: c´elulas encendidas y c´elulas apagadas. Estos campos receptivos
com-prenden una regi´on central aproximadamente circular, donde la luz tiene un efecto en el
disparo de la c´elula, y un anillo alrededor de este. En las c´elulas encendidas, un incremento
en la intensidad de luz en el centro del campo receptivo causa la tasa de disparo. En las
c´elulas apagadas, esta decrece. En el modelo linear, esta respuesta perfil es bien descrita por
una diferencia de Gaussianas (DoG1) y es la base para muchos algoritmos de detecci´on de
orillas. Adem´as de estas diferencias simples en las c´elulas ganglionares, estas tambi´en est´an
diferenciadas por la sensibilidad crom´atica y el tipo de suma espacial que emplean (Hubel,
1988). Al respecto, la se˜nal visual transfiere al cerebro v´ıa el sistema visual, la retina est´a
verticalmente dividida en dos: la mitad temporal y la mitad nasal, como se ve en la figura2.
Los ejes desde la mitad nasal cruzan el cerebro en el quiasma ´optico para unirse con los ejes
desde la mitad temporal de el otro ojo antes de alcanzar el n´ucleo geniculado lateral (NGL).
1
Ojo derecho izquierdo Ojo Mitad nasal temporal Mitad Quiasma optico optico Tracto Nucleo genicular lateral Nucleo del nervio abductor oculomotor nervio Nucleo del Nucleo del nervio troclear Nucleo geniculado medio Coliculo superior Pulvinar Nervio optico cruzadas Fibras Fibras no−cruzadas Hemisferio izquierdo Hemisferio derecho
de la corteza cerebral lobulos occipitales
primarias en Areas visuales
Figura 2: El sistema nervioso ´optico. Imagen adaptada de (Filipe y Alexandre, 2013)
Aunque hay m´as de 120 millones de c´elulas recipiente en la retina, hay solamente 1.2
millones de fibras (ejes) en el nervio ´optico, as´ı una gran cantidad de pre-procesamiento es
realizado dentro de la retina. La fovea produce la informaci´on m´as precisa. A´un as´ı, esta
ocupa cerca del 0.01% del campo visual (menos de 2 grados de ´angulo de visi´on) cerca del
10% de ejes en el nervio ´optico est´a dedicado a esto. La resoluci´on limite de la fovea fue
determinada en alrededor de 10,000 puntos. La capacidad de informaci´on es estimada en
500,000 bits por segundo, descolorida, o cerca de 600,000 bits por segundo, con color.
La retina, a diferencia de la c´amara, no solo manda una imagen al cerebro. Esta
espa-cialmente codifica (comprime) la imagen para ajustarla a la capacidad limitada del nervio
´optico. La compresi´on es necesaria porque hay 100 veces m´as c´elulas foto-receptoras como
c´elulas ganglionares, como se mencion´o anteriormente. En la retina, la codificaci´on espacial
se hace por las estructuras de centro envolvente implementadas por c´elulas bipolares y
gan-glionares. Hay dos tipos de estructuras de centro envolvente en la retina: centros-encendidos
con peso negativo. Los centros-apagados usan exactamente lo opuesto. El peso positivo, es
sabido que es mejor como excitador, y el negativo como inhibidor (Hubel, 1988).
Estas estructuras de centro envolvente no son f´ısicas, en el sentido que estas puedan
ser vistas como muestras de tejido de tinci´on y al examinar la anatom´ıa de la retina. Las
estructuras de centro envolvente son l´ogicas (matem´aticamente abstracto) en el sentido que
dependen de la fuerza de conexi´on entre c´elulas bipolares y ganglionares. Se cree que la
fuerza de conexi´on entre c´elulas depende en el n´umero y tipos de canales embebidos ionicos
en la sinapsis entre c´elulas bipolares y ganglionares. Kuffler, en los 50, fue el primero en
empezar a entender estas estructuras de centro envolvente en la retina de los gatos (Hubel,
1988).
Estas estructuras de centro envolvente son matem´aticamente equivalente a los algoritmos
de detecci´on de orillas, usados por los programadores de computadora para extraer o resaltar
las orillas de una imagen. As´ı, la retina desarrolla operaciones en la orilla de los objetos
dentro del campo visual. Despu´es la imagen es espacialmente codificada por las estructuras
de centro envolvente, la se˜nal es enviada a trav´es del nervio ´optico (via los ejes de c´elulas
ganglionares) atravesando el quiasma ´optico al NGL.
2.3.2 N´ucleo geniculado lateral
El NGL es el centro de emisi´on primaria para la informaci´on primaria recibida de la retina, y
se encuentra dentro del t´alamo. El n´ucleo geniculado lateral recibe informaci´on directamente
de las c´elulas ganglionares retinales via el trayecto ´optico y desde el sistema de activaci´on
reticular (SAR). SAR es un ´area del cerebro responsable para regular excitaci´on (estado
fisiol´ogico y psicol´ogico de estar despierto o reactiva a los est´ımulos) y transiciones
dormir-despertar). Las neuronas en el NGL envia sus ejes a trav´es de la radiaci´on ´optica, un ruta
directa a la corteza visual primaria. En los mamiferos, las dos rutas m´as fuertes que conectan
el ojo al cerebro son aquellas que est´an dise˜nadas para NGLd (parte dorsal del NGL en el
talamo) y para el coliculo superior (CS) (Kleege, 1999). En humanos y monos, el NGL
es normalmente descrito como tener seis capas distintas. Las dos capas interiores, 1-2, son
parvo-celulares (Carlson, 2012).
Ambos, el hemisferio derecho y el hemisferio izquierdo del NGL reciben entradas de cada
ojo. Sin embargo, cada NGL recibe informaci´on desde solamente la mitad del campo visual.
Esto se debe a los ejes de c´elulas ganglionares de la mitad interna de la retina (lado nasal),
cruzando al otro lado del cerebro a trav´es del quiasma. Los ejes de las c´elulas ganglionares de
la mitad externa de la retina (lados temporales) recae en el mismo lado del cerebro. As´ı, el
hemisferio derecho recibe informaci´on visual desde el campo visual izquierdo, y el hemisferio
izquierdo recibe informaci´on visual del campo visual derecho (Nichollset al., 2001). El NGL
recibe informaci´on de entrada de algunas fuentes, incluyendo la corteza, y env´ıa su salida a
la corteza. El NGL recibe alguna entrada del trayecto ´optico. Los ejes que dejan el NGL van
a la corteza visual V1. Ambos, tanto capas magnocelulares 1-2 y las capas parvocelular 3-6
env´ıan sus ejes a la capa 4 de V1. Los estudios que involucran personas ciegas, ha sugerido
que las proyecciones del NGL no solamente viajan a la corteza visual primaria, sino que
tambi´en a ´areas corticales V2 y V3 (Schmid et al. 2010).
La funci´on precisa del NGL es desconocida. Se ha mostrado que mientras la retina
de-sarrolla decorrelaci´on espacial a trav´es de la inhibici´on centro envolvente, el NGL desempe˜na
decorrelaci´on temporal (Dong y Atick, 1995). Sin embargo, hay ciertamente mucho por hacer.
Experimentos recientes en humanos, con imagen de resonancia magn´etica funcional, hallaron
que tanto la atenci´on espacial y movimientos bruscos del ojo pueden modular la actividad
en el NGL (Sylvester et al., 2005).
2.3.3 La corteza visual
La corteza visual del cerebro es la parte de la corteza cerebral responsable del procesamiento
de informaci´on visual. Se localiza en el l´obulo occipital, atr´as del cerebro. El termino corteza
visual se refiere a la corteza visual primaria (tambi´en conocida como corteza estriada o V1)
y ´areas estriadas de la corteza visual como V2, V3, V4 y V5. La corteza visual primaria
es anat´omicamente equivalente al ´area de Brodmann 17 o BA17. Las ´areas de la corteza
Ruta Ventral
Ruta Dorsal
Figura 3: Las rutas dorsal y ventral en el cerebro humano. Imagen adaptada de http://goo.gl/cKF8LK.
En la figura3se muestra las dos rutas de procesamiento principal en el cerebro. Mientras
la ruta ventral implementa el reconocimiento de objetos, la ruta dorsal es responsable del
procesamiento de las propiedades espaciales de los objetos y las acciones que gu´ıan a los
objetos. La ruta ventral se compone de una serie de ´areas como V2, V4 e Infotemporal
(Felleman y Van Essen, 1991). Y, la ruta dorsal se compone de ´areas de procesamiento
visual del ´area medio temporal (MT o V5) y la corteza parietal posterior (PP).
Como se ve en la figura 4, la primera parte de la corteza visual es el ´area V1. Esta
´rea, entre otras cosas, presenta sensibilidad en orillas, rejillas (barras con orientaciones) y
longitudes de los est´ımulos (Reid y Alonso, 1995). Hay tres clases de c´elulas principales en
V1, llamadas c´elulas simples, c´elulas complejas y c´elulas hipercomplejas (Hubel y Wiesel,
1959). Las c´elulas simples detectan orillas y lineas, las c´elulas complejas detectan lineas y
orillas con un poco de invariabilidad espacial, y las c´elulas hipercomplejas detectan longitud.
es considerada sensible a ´angulos o esquinas (Plebe, 2007) y bordes fronterizos ilusorios (Von
der Heydtet al., 1984). La informaci´on de V2 se env´ıa a V4, la cual tiene cierta preferencia
por caracter´ısticas complejas como formas y contornos (Pasupathy y Connor, 1999; David
et al., 2006).
La siguiente ´area de procesamiento en la jerarqu´ıa visual ventral, es la corteza
inferotem-poral la cual se considera la ultima ´area de procesamiento. Las neuronas en esta ´area son
sensibles a formas complejas, como rostros, y tiene representaciones invariantes a la posici´on,
tama˜no, etc. El procesamiento de informaci´on en el cerebro depende en gran medida de las
conexiones y los patrones de conectividad a trav´es de las diferentes ´areas de procesamiento.
La conectividad y procesamiento por capas en una sola direcci´on, puede resultar en pocos
milisegundos de procesamiento de informaci´on, y contribuir a una clasificaci´on r´apida de
objetos (Potter, 1974; Treisman y Gelade, 1980; Wolfe y Bennett, 1996).
Muchos fen´omenos visuales se pueden explicar en t´erminos de procesamiento y
conectivi-dad en un solo sentido, o sea solo hacia adelante. Un concepto importante en el sistema de
visi´on biol´ogico es el campo receptivo. De acuerdo a Levine y Shefner (Levine y Shefner,
2000) un campo receptivo (CR) es un ´area donde la estimulaci´on conduce a la respuesta
de una neurona sensorial particular. Poner simplemente el CR de una neurona, constituye
todas las conexiones de entrada sensorial a la neurona. Una neurona llega a sensibilizarse
a un estimulo en particular a trav´es del aprendizaje. Los campos receptivos juegan un rol
Figura 4: La conectividad conocida de la corteza visual.
2.4 Modelos computacionales biol´ogicamente inspirados para reconocimiento
Un n´umero de modelos inspirados por la biolog´ıa del sistema visual humano ha sido propuesto
y usado para simular y explicar la funcionalidad del mismo (Riesenhuber y Poggio, 1999;
Fukushima, 1980; LeCun et al., 2004; Clemente et al., 2013) as´ı como para ser usado en
aplicaciones de reconocimiento de objetos. Estos modelos est´an basados en los resultados
experimentales de Hubel y Wiesel (Hubel y Wiesel, 1998).
Dos caracter´ısticas son la clave para el ´exito de los modelos jer´arquicos. Primero, el
aumento gradual y paralelo de complejidad de caracter´ısticas y el tama˜no del campo
recep-tivo, como se encuentra en el sistema visual, es crucial evitar una explosi´on combinatoria del
n´umero de unidades en el sistema por un lado, o habilidad discriminatoria insuficiente por el
otro lado. Aunque el rango de invariabilidad es menor en niveles bajos, as´ı requiere muchas
c´elulas para cubrir el rango requerido de escalas y posiciones, solamente un peque˜no
neuronas se convierten en un mayor n´unero de caracter´ısticas m´as complejas, las neuronas
muestran un mayor grado de invariabilidad, as´ı requieren menos c´elulas convertidas a la
misma caracter´ıstica en diferentes posiciones y escalas. Segundo, en los modelos jer´arquicos,
un conjunto redundante de rasgos m´as complejos en niveles m´as altos del sistema se
con-struye de rasgos m´as simples. Estas caracter´ısticas complejas son tolerantes a deformaciones
locales como resultado de propiedades de invariabilidad de aferentes. A lo que respecta, est´an
relacionadas a arquitecturas de reconocimiento basadas en arboles de caracter´ısticas que
en-fatizan composicionalidad. El resultado final es un diccionario de caracter´ısticas excesivo de
lo requerido.
La mayor´ıa de los modelos bio-inspirados conforman los siguientes cuatro principios:
(a) Estructura Jer´arquica
(b) Incrementan el tama˜no de los campos receptivos que est´an m´as altos en la jerarqu´ıa
(c) Incrementan la complejidad de caracter´ısticas y representaciones invariantes m´as altas
en la jerarqu´ıa
(d) Aprenden en niveles m´ultiples a lo largo de la jerarqu´ıa
La mayor´ıa de los modelos bio-inspirados tienen una arquitectura de conectividad en un
solo sentido, es decir, la informaci´on solo se procesa en un sentido, esto es, sin regresar a
un ´area ya recorrida. Uno de los modelos bio-inspirados principales con una arquitectura de
conectividad en un solo sentido se llama Neocognitron, una red neuronal jer´arquica
multi-capas propuesta por Fukushima (Fukushima, 1980). Esta red es capaz de reconocimiento
robusto de objetos. La neocognitron es b´asicamente una red con arquitectura de conectividad
solo hacia adelante, con muchas conexiones fijas y variables. Las primeras dos capas del
neocognitron son la capa de entrada y la capa de extracci´on de contraste. La capa de entrada
corresponde a los foto-receptores de la retina, y la capa de extracci´on de contraste, juega el
papel de las c´elulas de centros-encendidos y centros-apagados en el n´ucleo geniculado lateral
(NGL) del cerebro.
El resto de las capas del modeloneocognitron est´an organizadas en pares, donde la primera
respecti-vamente, y se nombran despu´es de las c´elulas simples y complejas de la corteza visual. Las
capas S y C est´an divididas en planos S y C, donde cada uno de los planos S y C se componen
de arreglos de dos dimensiones de c´elulas S y C. Todas las c´elulas dentro de un plano celular
tienen conexiones similares de la capa anterior, pero desde ubicaciones espaciales adyacentes,
entonces todas estas c´elulas buscan la misma caracter´ıstica pero de ubicaciones adyacentes.
Las c´elulas S son c´elulas extractoras de caracter´ısticas, y preceden esta extracci´on de
caracter´ısticas a la capa C. Cada c´elula S tiene conexiones con un grupo de c´elulas C en la
capa previa, lo cual constituye el campo receptivo de esta c´elula S particular. Las
conex-iones de c´elulas S son variables y son modificadas durante el proceso de aprendizaje. El
aprendizaje determina la naturaleza de las caracter´ısticas extra´ıdas por las c´elulas S. Estas
caracter´ısticas son orillas y lineas locales detectadas en las capas previas, lo cual las convierte
en caracter´ısticas globales m´as complejas, como contornos y formas en las capas m´as altas.
Similarmente, las c´elulas C tienen conexiones con la capas S que la preceden. Estas
conex-iones son fijas, y no se pueden modificar en el aprendizaje. Cada c´elula C recibe la entrada
de un grupo de c´elulas S que extraen las mismas caracter´ısticas pero con un ligero cambio
de posici´on. La c´elula C responde cuando se activa una c´elula S en su campo receptivo. Si
el estimulo y consecuentemente la caracter´ıstica cambia su posici´on, otra c´elula S se activa.
Entonces la c´elula C ahora responder´a a esta c´elula S. De esta forma la c´elula C incrusta un
cambio de tolerancia de error en la red, la cual resulta en invariaci´on a cambio de posici´on
en la red. Otro tipo de c´elula, la c´elula V, tiene un papel ihnibitorio. Por cada c´elula S hay
una c´elula V que la acompa˜na, que esta conectada a la c´elula S con una variable de conexi´on
inhibitoria. La c´elula V recibe su entrada excitadora del mismo grupo de c´elulas C con las
que la c´elula S esta conectada. La inhibici´on inyectada a una c´elula S de una c´elula V, es el
promedio de todas las entradas excitadoras recibidas por la c´elula V.
La neocognitron puede ser entrenada por aprendizaje supervisado al igual que no
super-visado. El m´etodo de aprendizaje no supervisado de la neocognitron es menos exitoso, pero
es m´as biol´ogicamente plausible que el m´etodo de aprendizaje supervisado. El aprendizaje
supervisado se desarrolla de una forma “abajo a arriba”, esto es, desde la entrada a la salida.
Cada plano S tiene asignada una caracter´ıstica para aprender durante el entrenamiento. La
se actualiza con la regla de aprendizaje de Hebbian.
Figura 5: Extracci´on jer´arquica de caracter´ısticas. Imagen adaptada de http://goo.gl/nTuupQ.
El peso compartido tambi´en esta constantemente desarrollado durante el proceso, de tal
forma que todas las c´elulas dentro del plano celular, tienen sus conexiones en la misma
distribuci´on espacial. De esta manera todas las c´elulas en el plano celular son sensibles a
caracter´ısticas especificas. En el aprendizaje supervisado, adem´as del peso compartido, el
principio de “Ganador Toma Todo”, es el mecanismo b´asico para una auto-organizaci´on de
la red. Durante el entrenamiento, las conexiones variables de las c´elulas S son modificadas
acorde a su activaci´on en respuesta a la entrada. Por ejemplo, una c´elula S recibe una entrada
excitadora de un grupo de c´elulas C precedentes, as´ı como entradas inhibitorias desde una
c´elula V. Cuando un estimulo es presentado y las c´elulas S se activan, la c´elula S la cual
recibe la activaci´on m´axima es considerada la ganadora y consecuentemente su fuerza en
conexi´on se incrementa. De esta manera es dicho que la c´elula S desarrolla su peso para una
caracter´ıstica particular. Esta c´elula S act´ua como una semilla y todas las otras c´elulas S en
el mismo plano tambi´en fortalecen su conexi´on de la misma forma que esta c´elula S. Cuando
la c´elula V env´ıa una entrada inhibitoria fuerte. De esta manera el plano celular S llega a
ser sensible para una caracter´ıstica particular en posiciones diferentes. Entonces, despu´es
del entrenamiento, los diferentes planos celulares S se vuelven sensibles a caracter´ısticas
diferentes.
Figura 6: Ejemplo del proceso de la neocognitron. Imagen extr´ıda de http://goo.gl/DsEOqI.
En la figura 6, se muestra una red de neocognitron entrenada para el reconocimiento de
caracteres. En la red completa, con las capas alternas de c´elulas S y c´elulas C, el proceso
de extracci´on de caracter´ısticas por las c´elulas S y la tolerancia lograda por las c´elulas C es
repetido. Durante el proceso, las caracter´ısticas locales extra´ıdas en etapas de bajo nivel,
Figura 7: Modelo est´andar de reconocimiento de objetos por Riesenhuber y Poggio. Imagen adaptada de http://goo.gl/fl86cM.
Un modelo jer´arquico importante, fue propuesto por Riesenhuber y Poggio
(Riesenhu-ber y Poggio, 1999). Introduce una estructura jer´arquica con la idea de una jerarqu´ıa de
funci´on linear simple. Este modelo esta basado en el hecho, de que los modelos 3D de
reconocimiento de objetos, no tienen una prueba te´orica solida. Sino que este modelo se
respalda en experimentos neurofisiol´ogicos y psicof´ısicos que proporcionan un fuerte apoyo
para representaciones basadas en im´agenes. Las dos ideas principales del modelo son:
1. La operaci´on MAX proporciona invariabilidad en varias etapas de la jerarqu´ıa
2. La red de funci´on de base radial aprende una tarea especifica en base a un conjunto de
unidades de c´elulas sintonizadas a vistas de ejemplo
En la figura 7 se observan las seis capas de procesamiento del modelo HMAX: Entrada,
S1, C1, S2,C2 y UVC (Unidades de vista combinada). En la capa S1, las lineas caracter´ısticas
orientadas en ´angulos diferentes se extraen desde la imagen de entrada usando filtros
c´elulas simples de la corteza visual. En la capa C1 las caracter´ısticas ´optimas se integran
desde la capa S1 utilizando la operaci´on MAX. Esto significa que la actividad de la unidad
C1 esta determinada por la salida mas fuerte de la S1. Las unidades S2 utilizan funciones
gaussianas para extraer caracter´ısticas m´as complejas. Las unidades S2 se pueden considerar
el diccionario de caracter´ısticas del sistema. Las unidades C2 est´an completamente
conec-tadas con la capa S2 previa, y es donde se implementa la integraci´on de las caracter´ısticas
m´as fuertes. Las unidades de la ultima capa, llamada UVC, son selectivas para una entrada
particular en un ´angulo de visi´on especifico. La ´unica conexi´on en donde el aprendizaje
ocurre es desde C2 a UVC. Este modelo fue aplicado satisfactoriamente al modelado de las
respuestas de las neuronas V4 e IT.
Figura 8: Modelo de reconocimiento de objetos. Imagen adaptada de http://goo.gl/fl86cM
Otro modelo jer´arquico importante, fue propuesto por Serre y sus colaboradores (Serre
et al., 2005a; Serre, 2006). Se basa en el paradigma de un r´apido reconocimiento de objetos.
Tiene una arquitectura de conectividad hacia adelante, y cuenta los primeros milisegundos
del proceso visual en el cerebro humano. El modelo extrae caracter´ısticas, y despu´es las usa
Como se ve en la figura8, el modelo consiste de cuatro capas de unidades computacionales,
donde las unidades simples S alternan con unidades complejas C. Las unidades S filtran
sus entradas con una funci´on de sintonizaci´on campana para incrementar la selectividad.
Las unidades C re´unen sus entradas a trav´es de una operaci´on MAX, as´ı se incrementa la
invariabilidad. En las unidades S1 se aplica a la imagen de entrada una bater´ıa de filtros
de Gabor, con 4 orientaciones y 16 escalas. En la siguiente etapa de C1, se logra tolerancia
a la posici´on, y la variaci´on al tama˜no se obtiene mediante una operaci´on de agrupaci´on de
m´aximos por cada unidad de la capa C1, entonces el m´aximo de cada banda sobre la posici´on
y tama˜no se toma. Para el entrenamiento, parches de caracter´ısticas de diferentes tama˜nos
y cuatro posibles orientaciones se extraen de im´agenes de entrenamiento. Las unidades S2
utilizan un tipo de funci´on de base radial (FBR) para activaci´on. Las unidades S2 representan
una distancia euclidiana de las caracter´ısticas aprendidas C1 a las caracter´ısticas aprendidas
de las unidades S2. De esta forma se obtienen los mapas S2. En C2 la actividad de m´aximos
se obtiene de la posici´on y escala, para lograr invariabilidad. Durante el aprendizaje, la
representaci´on de caracter´ısticas en las unidades S2 es calculada. En la etapa de clasificaci´on
se extraen caracter´ısticas de C1 y C2 de la imagen de entrada y clasificada por un clasificador
linear simple.
2.5 Modelos de la corteza visual en GPU
Convenientemente, y sin embargo, el cerebro es un sistema masivamente paralelo
(Mount-castle, 1997). M´as concretamente, la corteza cerebral consiste de un n´umero relativamente
peque˜no de regiones, en donde cada una contiene un gran n´umero de micro-columnas
cor-ticales, de las cuales operan en paralelo y env´ıan informaci´on hacia arriba, hacia abajo, y
lateralmente dentro de una jerarqu´ıa de capas (Serre et al., 2005a; George, 2008). Adem´as,
como sistema biol´ogico cuenta con un alto grado de redundancia.
Examinando estas caracter´ısticas, del modelo de la corteza visual, la mayor´ıa de los
algoritmos de agrupamiento y algunos m´as simples usados en modelos corticales, consisten
en un vector aritm´etico, o vector descriptor. As´ı, el enfoque de ejecuci´on basado en la
simulaci´on modelada de capas corticales en la GPU, requiere que espere hasta que todas las
el ancho de banda de la memoria. Por lo tanto, se puede concluir que el computo en la GPU
de prop´osito general es bien recibida por los modelos corticales.
Un sistema cortical basado en la GPU, es el CNS2 o simulador de redes corticales, que
se desarroll´o en 2009. Este sistema est´a escrito en Matlab, por lo que el programa necesario
para usarlo no es gratuito o de c´odigo libre. El CNS tambi´en recae en NVIDIA, que es
propietario de la arquitectura CUDA, por eso no podr´ıa correr en GPUs ATI.
El sistema CNS, autom´aticamente desarrolla un n´umero considerable de transferencias
de memoria, de la CPU a la GPU, que el usuario no controla directamente, lo cual puede
ser problem´atico en lo que a ancho de banda de la memoria concierne. Esto es en cuanto a
tarjetas de nivel consumidor se refiere, las cuales son aproximadamente un orden de magnitud
m´as baratas que las tarjetas especializadas, pero tienen un ancho de banda de memoria m´as
pobre de CPU a GPU en un nivel dado de poder computacional. Tambi´en, el CNS no soporta
operaciones de punto flotante de doble precisi´on a´un cuando se requiere por el modelo (Poggio
et al., 2010).
Finalmente, el sistema impone una variedad de suposiciones en la estructura del modelo
que pueden limitar la generalidad de los modelos que uno tratara de implementar, la
comple-jidad y detalles no se dar´an en gran medida en esta tesis. De forma breve, para asi resumir,
el sistema a grandes rasgos supone que c´elulas individuales tienen la misma estructura de
conectividad, que las regiones son uniformes y regulares, el orden de ejecuci´on sigue uno
de pocos patrones pre-configurados, y que las redes caen dentro de un peque˜no n´umero de
clases que afectan la naturaleza de estas limitaciones. Existen algunas limitaciones, pero no
impiden el funcionamiento completo del sistema. Sin embargo, CNS fu´e el primero de su
tipo, estaba sujeto a limitaciones de arquitectura de 2009, y fue dise˜nado para investigadores
que no necesitaban una generalidad completa. Los autores hacen ver que muchas de las
lim-itaciones mencionadas arriba, simplemente no pod´ıan evitarse en ese tiempo (Poggio et al.,
2010).
2
Cap´ıtulo 3. CUDA
En a˜nos recientes, la miniaturizaci´on de los circuitos integrados han producido un cambio
generalizado a la computaci´on paralela. Muy pronto todas la computadoras a la venta traer´an
procesadores multi-n´ucleos. Con la introducci´on de procesadores multi-n´ucleos, estaciones
de trabajo con 8 y 16 n´ucleos, computadoras de escritorio, incluso computadoras port´atiles,
pueden llevar a cabo computaci´on paralela, por lo que este tipo de computaci´on no queda
relegada ´unicamente a supercomputadores u ordenadores centrales enormes.
Sin embargo, los dispositivos electr´onicos tales como tel´efonos m´oviles y reproductores de
m´usica port´atiles, han empezado a incorporar capacidades de computo paralelo en un esfuerzo
por proveer funcionalidad m´as all´a que sus predecesores. Cada vez m´as y m´as, desarrolladores
de software necesitaran hacer frente a una variedad de plataformas y tecnolog´ıas de computo
paralelo de forma que provean experiencias ricas y novedosas para una base creciente de
usuarios cada vez m´as exigentes (Nickolls et al., 2008).
CUDA1 o Arquitectura Unificada de Dispositivos de C´omputo, es el nombre que se le da
a la plataforma de computo, y modelos de programaci´on paralela incorporado por la empresa
NVIDIA. Es una plataforma completa de desarrollo que explota las caracter´ısticas de las
tarjetas de v´ıdeo, atendiendo a la arquitectura especifica de estas, mediante la inclusi´on de
directrices especificas en el lenguaje de programaci´on, principalmente para C, proporcionando
una API2 (Interfaz de Programaci´on de Aplicaciones) y un ambiente en tiempo de ejecuci´on.
El hardware CUDA est´a basado en la tecnolog´ıa de GPU3 o Unidad de Procesamiento
Gr´afico. La GPU, es un t´ermino acu˜nado por NVIDIA en 1999. Alrededor de ese tiempo,
los controladores VGA4 (Arreglo Gr´afico de V´ıdeo) hab´ıan ido avanzando para soportar la
aceleraci´on de gr´aficos 2D y 3D, y la GPU introdujo una unidad de procesamiento
inte-grado para la serie de pasos en la visualizaci´on de gr´aficos, de ah´ı la necesidad del termino.
Desde entonces, las GPUs han llegado a ser m´as generales, reemplazando funciones l´ogicas y
1
Del ingl´es Compute Unified Device Architecture 2
Del ingl´es Aplication Programming Interface 3
Del ingl´es Graphics Procesing Unit 4
aritm´eticas fijas, con funcionalidad programable.
Los primeros usos de las GPUs en computo de prop´osito general, tambi´en conocida como
GPGPU5, fueron hechas explotando la programaci´on grafica de APIs, que interced´ıan con el
controlador del hardware, tal como las bibliotecas de Microsoft DirectX y el c´odigo abierto
OpenGL. La desventaja era que el usuario tenia que profundizar su conocimiento de las APIs,
y la habilidad para expresar programas en t´erminos de gr´aficos.
Para dirigir el inter´es y asuntos con la programaci´on GPGPU, NVIDIA defini´o una
ar-quitectura unificada del dispositivo, y liber´o CUDA C, una versi´on est´andar de C, con
ex-tensiones para soportar la programaci´on de GPU. El primer dispositivo con capacidad para
CUDA, representando a la capacidad v1.0 en CUDA, fue la arquitectura G80 que emergi´o en
2006. Desde entonces cada nueva arquitectura basada en CUDA ha a˜nadido caracter´ısticas,
resultando en actualizaciones de capacidad de computo, seguido por mayor soporte en CUDA
C (v.g. manejo de cifras con doble precisi´on y operaciones bit a bit) (NVIDIA, 2013).
En este capitulo se muestran las caracter´ısticas del hardware, y se describen los conceptos
del modelo de programaci´on. Esto incluye caracter´ısticas con implicaciones en el uso, as´ı como
funcionalidades especificas.
3.1 Introducci´on
El telar es una m´aquina para tejer, construido con madera o metal, en el que se colocan
unos hilos paralelos, denominados como la urdimbre, que deben sujetarse a ambos lados para
tensarlos, y mediante un mecanismo, estos hilos son elevados individualmente o en grupo,
formando una abertura denominada calada, a trav´es de la cual pasa la trama.
5