Download Mexican International Conference on Artificial Inteligence 2006

Document related concepts
no text concepts found
Transcript
Introducción
Redes CNN
Mexican International Conference on
Artificial Inteligence 2006
Clonning templates
FPGA
Visión por . . .
Implementación de una Red Neuronal Celular en un
FPGA para Visión por Computadora
CNN en matlab
CNN en VHDL
Aplicación
1
2
Marco A. Moreno-Armendariz y Mauricio Martı́nez-Garcı́a
1
Publicaciones
Centro de Investigación en Computación, CIC-IPN, México.
2
Universidad La Salle, Escuela de Ingenierı́a, México.
JJ J I II
Noviembre 13-17, 2006
Page 1 of 39
Full Screen
Quit
Contenido del Tutorial
1. Introducción
2. Redes Neuronales Celulares
(a) Modelo discreto
(b) Convolución discreta
Introducción
Redes CNN
(c) Clonning templates
3. FPGA
(a) Historia
(b) Elementos básicos del FPGA
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
(c) Elección del FPGA
4. Visión por Computadora
Aplicación
Publicaciones
(a) Montaje del sistema
(b) Diseño de la CNN
(c) CNN en matlab
JJ J I II
(d) CNN en VHDL
Page 2 of 39
(e) Resultados de desempeño
5. Aplicación
(a) Robot seguidor de lineas
(b) Videos de funcionamiento
Full Screen
Quit
1. Introducción
En este tutorial se presenta la implementación de un sistema de visión por
computadora cuyas principales caracteristicas son:
• El sistema completo se tendrá en un solo chip, llamado FPGA.
Introducción
• Para capturar las iamgenes se usará una camara digital portable.
• Para el procesamiento de las imagenes se usará una estructura conocida
como redes neuronales celulares.
Redes CNN
Clonning templates
FPGA
Visión por . . .
• Al unir estos elementos, se obtiene una plataforma de visión por
computadora portable, capaz de trabajar en tiempo real y capaz de
resolver gran cantidad de aplicaciones.
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
Page 3 of 39
Full Screen
Quit
2. Redes CNN
• Las redes neuronales celulares (CNNs) [1, 2, 3] son arreglos de neuronas
(celdas) con conexiones invariantes y cuya transición es local, es
decir depende solo del valor que tenga sus celdas vecinas. Esta
caracteristica particular de las CNNs permite que se pueda llevar acabo
implementaciones a larga escala en un solo chip tipo VLSI [4, 5]
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
Page 4 of 39
• Las celdas tipicamente estan organizadas en una malla de dos dimensiones, por lo que las CNNs pueden ser usadas para realizar
procesamiento de imagenes en forma masiva y paralela asociando cada
pixel de la imagen a una celda de la CNN.
Full Screen
Quit
• Aún mas, al realizar una acción secuencial de este tipo de red con
diferentes valores en sus parámetros, le permite realizar operaciones
arbitrariamente complejas a la imagen de entrada.
• Aunque existe una gran variedad de aplicaciones para las redes neuronales celulares, el objetivo de este trabajo es realizar la implementación en un hardware especializado (llamado FPGA) para ser
usado como un sistema de visión por computadora para robots manipuladores o moviles [6, 7, 8].
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
Page 5 of 39
Full Screen
Quit
2.1. Modelo discreto
Una red CNN en tiempo discreto es descrita por el siguiente sistema de
ecuaciones:
xij (n + 1) =
P
kl∈N (ij)
Ak−i,l−j yij (n) +
yij (n) =
−1
1
P
kl∈N (ij)
xij (n) > 0
xij (n) ≤ 0
Bk−i,l−j uij (n) + I
Introducción
(1)
donde:
Redes CNN
Clonning templates
FPGA
Visión por . . .
xij (n) es el estado de la celda (neurona) en la posición ij, que corresponde
a la misma posición del pixel de la imagen.
CNN en matlab
uij (n) es la entrada a la misma celda, representado el valor de luminosidad
del correspondiente pixel en la imagen, comunmente normalizado.
Aplicación
CNN en VHDL
Publicaciones
A es la matriz que representa la iteración entre las celdas, la cual es local
(soló con las celdas vecinas) e invariante en el tiempo.
B es la matriz que representa las conexiones que van desde los vecinos de la
celda y la entrada A.
I es el bias.
N (i, j) es el conjunto de indices correspondiente a la celda ij y su
correspondiente vecindad. (e.g. la celda ij y sus ocho vecinos).
JJ J I II
Page 6 of 39
Full Screen
Quit
2.2. Convolución discreta
• La forma mas cercana para emular una CNN serı́a implementando un
sistema completamente paralelo basado en neuronas individuales. Este
tipo de procedimiento es posible aplicarlo en redes muy pequeñas (es
decir, con pocas neuronas).
• Por ejemplo, para procesar una imagen de 128x96 pixeles se requiere una
CNN compuesta por 12,288 celdas, una neurona por cada pixel. Esto
demandaria una cantidad de area que no esta disponible ni si quiera en
un dispositivo con el FPGA.
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
• Sin embargo, La operación que lleva acabo la evolución de una CNN
tiene intrisicamente una estructura convolucional que se ajusta bien con
el hardware paralelo (es capaz de realizar operaciones concurrentes) de
un FPGA.
• La implementación de esta operación será llevada acabo aplicando el
cloning template de forma local a pequeños bloques de la imagen, hasta
terminar con la imagen completa.
Publicaciones
JJ J I II
Page 7 of 39
Full Screen
Quit
Ejemplo de la convolución discreta
• Elegir un Template, en este ejemplo se usará: Upper Edge. El Cloning
Template Upper Edge está formado por la tripleta:
Introducción




0 0 0
0 −1 0
A =  0 2 0  B =  0 0 0  I = −1
0 0 0
0 0 0
(2)
Contorno = 1
(3)
Redes CNN
Clonning templates
FPGA
k=1
Visión por . . .
CNN en matlab
• Este template extrae el borde superior de la imagen. Convierte a blanco cualquier pı́xel negro que tenga sobre de el
otro pı́xel negro.
CNN en VHDL
Aplicación
Publicaciones
• k es el numero de iteraciones que se van a llevar acabo.
JJ J I II
• Nota: Se utilizó este Template debido a que solo se necesita de una
iteración para obtener el resultado deseado, otros Templates muestran
mejores resultados utilizando más de una iteración.
Page 8 of 39
Full Screen
Quit
Se usa una imagen de 20x20 pixeles. Se considera a cada pı́xel de color
blanco con el valor de −1 y cada pı́xel negro con el valor de 1.
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
• Nota: Debido a que se debe procesar el Cloning Template en cada uno
de los pı́xeles de la imagen y como se observa en la figura, los pı́xeles
de la orilla de la imagen, no tienen el total de vecinos suficientes para
llevar a cabo el proceso, por lo que se coloca un contorno a la imagen.
Page 9 of 39
Full Screen
Quit
Ahora se agrega el contorno a la imagen con el valor 1. Ası́, la imagen
queda de 21x21 pixeles.
Introducción
Redes CNN
Clonning templates
Los valores iniciales de cada célula de la imagen de entrada uij (n), con
contorno son:
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
Page 10 of 39
Full Screen
Quit
P
Resolviendo la convolución para el término kl∈N (ij) Ak−i,l−j yij (n), como
es la primera iteración aún no existe imagen de salida yij (n) y por ello se usa
la imagen de entrada uij (n). Se tiene:
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
[0 × 1] + [0 × 1] +
[0 × 1] +
A ∗ y = [0 × 1] + [2 × −1] + [0 × −1] +
[0 × 1] + [0 × −1] +
[0 × 1]
= −2
(4)
JJ J I II
Page 11 of 39
(5)
Full Screen
Quit
Ahora se realiza el mismo calculo para el segundo término
que es:
P
kl∈N (ij)
Bk−i,l−j uij (n)
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
[0 × 1] + [−1 × 1] + [0 × 1] +
[0 × 1] + [0 × −1] + [0 × −1] +
[0 × 1] + [0 × −1] +
[0 × 1]
= −1
B∗u =
(6)
(7)
JJ J I II
Page 12 of 39
Finalmente:
xij (n + 1) = (−2) + (−1) + (−1) = −4
Full Screen
Quit
Usando la ecuación 1,el nuevo valor para la celda es −1. , esto se debe
a que es un espacio en blanco y lo que se busca es poner en blanco un pı́xel
negro que encima de el tenga un pı́xel negro.
Introducción
• Nota: La imagen de salida y es una imagen totalmente nueva,
la imagen de entrada u jamás cambia sus valores a lo largo del
proceso.
Redes CNN
Clonning templates
FPGA
Visión por . . .
• Se repite este cálculo dependiendo del número de iteraciones k definidas
al principio. Algunos Templates sólo necesitan de una iteración para
obtener el resultado deseado, con otros es necesaria más de una
iteración.
• Se procesará el Cloning Template para cada una de las células de la
CNN, una vez que todas las células estén evaluadas, la imagen de salida
será conocida como y, está imagen será utilizada con la matriz A para
la siguiente iteración.
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
Page 13 of 39
Full Screen
Quit
En el ejemplo anterior el valor de la celda no cambio, esto se debe a que es
un espacio en blanco y lo que se busca es poner en blanco un pı́xel negro que
encima de el tenga un pı́xel negro. Un lugar de la imagen donde sı́ cambia el
estado de la celda es:
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
El resultado final es:
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
Page 14 of 39
Full Screen
Quit
3. Clonning templates
Exsten diversos tipos de clonning templates, algunas librerias se pueden
encontrar en [9, 10]. A continuación se presentan algunos ejemplos:
Introducción
Redes CNN
1. Small Object Killer (SOC): Elimina pequeños objetos de la imagen que
pueden ser considerados como ruido.
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
Page 15 of 39
Full Screen
Quit
2. Proyección horizontal : Obtiene la proyección de la figura en la imagen
al eje horizontal.
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
3. Proyección vertical : Obtiene la proyección de la figura en la imagen al
eje vertical. Mostrar las animaciones en Internet Explorer.
Aplicación
Publicaciones
JJ J I II
Page 16 of 39
Full Screen
Quit
4. Lineas Noroeste: Solo las lineas con orientación noroeste o con una
inclinación de 30◦ de esta, serán almacenadas.
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
Page 17 of 39
Full Screen
Quit
4. FPGA
4.1. Historia
• El FPGA (Field Programmable Gate Array) es un circuito cuya
tecnologı́a se encuentra en los PALs y los arreglos dedicados de
compuertas.
Introducción
Redes CNN
• Los PALs fueron desarrollados en los 70t’s, usados para remplazar a los
circuitos TTL para el diseño de sistemas dinámicos. Estos pueden ser
programados una sola vez.
• Por otra parte, los arreglos dedicados de compuertas fueron diseñados
para producción a gran escala.
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
• Un FPGA esta basado en estas tecnológias, pero las interconexiones
(elementos lógicos) pueden ser definidas por el usuario y son reprogramables.
Publicaciones
JJ J I II
Page 18 of 39
Full Screen
Quit
4.2. Dispositivos lógicos programables
• Los dispositivos lógicos programables (PLD) surgen en 1975 con la
creación de los Arreglos Lógicos Programables en Campo (FPGA), pero
la historia de la lógica programable comienza algunos años atrás.
• Estos dispositivos tienen la capacidad de implementar una gran cantidad de funciones lógicas, combinacionales o secuenciales.
Introducción
Redes CNN
Clonning templates
FPGA
• Los componentes lógicos programables se pueden separar en dos
categorı́as con base en su estructura interna:
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
1. Dispositivos Lógicos programables: Tienen pocas compuertas,
ruteo interno fijo y propagación de retrasos determinista.
2. Arreglos de Compuertas Programables en Campo: Tienen una
gran cantidad de compuertas, cuentan con interconexiones seleccionables por el usuario (ruteo).
Publicaciones
JJ J I II
Page 19 of 39
La diferencia más importante entre estas categorı́as, radica en las estrategias
de ruteo[12].
Full Screen
Quit
4.3. Elementos básicos del FPGA
Los arreglos de compuertas programables en campo (FPGA) son PLDs de
alto nivel de integración se crearon con el objeto de integrar mayor cantidad
de dispositivos en un circuito (sistema en un chip SOC).
Estos dispositivos se basan en lo que se conoce como arreglos de
compuertas, los cuales consisten en la parte de la arquitectura que contiene
tres elementos configurables [11]:
Introducción
Redes CNN
Clonning templates
FPGA
1. Bloques lógicos configurables (CLB).
2. Bloques de entrada y de salida (IOB).
Visión por . . .
CNN en matlab
CNN en VHDL
3. Canales de comunicación.
Aplicación
Publicaciones
JJ J I II
Page 20 of 39
Full Screen
Quit
4.3.1. Los bloques lógicos:
1. Están configurados para procesar cualquier aplicación lógica.
2. Estos bloques tienen la caracterı́stica de ser funcionalmente completos;
es decir, permiten la implementación de cualquier función booleana
representada en la forma de suma de productos.
3. El diseño lógico se implementa mediante bloques conocidos como
generadores de funciones o LUT (Look Up Table: tabla de busqueda).
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
4. Las LUT permiten alamacenar la lógica requerida, ya que cuentan con
una pequeña memoria interna -por lo general de 16 bits- [11].
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
Page 21 of 39
Full Screen
Quit
4.4. Elección del FPGA
Para este proyecto se uso un FPGA de ALTERA. El Stratix EP1S25F672C6.
La especificaciones se muestran en la TABLA 1.
TABLE 1. Especificaciones.
Elementos lógicos
Bloques RAM M512
Bloques RAM M4K
Bloques M-RAM
Bits totales de RAM
Bloques DSP
Multiplicadores
PLLs
Máximo de pines I/O definidos por el usuario
25660
224
138
2
1944576
10
80
6
706
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
Page 22 of 39
Full Screen
Quit
5. Visión por computadora
5.1. Montaje del sistema
Se diseño una tarjeta de comunicación entre la FPGA que trabaja a 3.3 volts.
conectada a la camara digital, modelo M3188A de Quasar que funciona a 5
volts. Mostrar animacion del montado.
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
Page 23 of 39
Full Screen
Quit
5.2. Diseño de la CNN
Para implementar la red discreta CNN (1) en el FPGA, se tiene el siguiente
diagrama general: Las memorias RAM se usan para almacenar la imagen
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
Page 24 of 39
a ser procesada. La librerı́a de cloning templates se guarda en una memoria
ROM.
Full Screen
Quit
6. CNN en matlab
Parte del código escrito en matlab para implementar la CNN es:
% Se repite hasta el número de iteraciones
% La imagen de entrada u, se convierte en y, donde -1=blanco; 1=negro;
% Se agrega el contorno a la imagen
Introducción
Redes CNN
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Aqui se lleva acabo la opereción de la CNN
Clonning templates
FPGA
Visión por . . .
% Si es la primera iteracion se calcula el termino u_prim, para las
% demas iteraciones su valor se mantiene constante
if (ban_cnn == 1),
if sum(sum(B)) ~= 0,
u_prim = conv2(ImgY,B,’same’)+ I;
else
u_prim = I;
end
%u_Test_prim = Img_Conv(ImgY,B) + I;
ban_cnn = 0;
end
% Este es el calculo de la CNN : x(k+1) = A*y(k) + u’
Img_X1 = conv2(ImgY,A,’same’) + u_prim;
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
Page 25 of 39
Full Screen
Quit
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Algunas observaciones de la realización del programa son:
1. Se implementa la CNN en matlab, para establecer una comparación con
la versión en lenguaje VHDL.
2. Se usa la instrucción conv2 de MATLAB, la cual convoluciona la imagen
con el cloning template seleccionado.
Introducción
Redes CNN
3. El tiempo de procesamiento se mide mediante las instrucciones tic y
toc.
4. Para tener una comparación válida, únicamente tomamos el tiempo real
del procesamiento, es decir, sin considerar el tiempo requerido para la
lectura del archivo y el despliegue de la imagen.
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
Page 26 of 39
Full Screen
Quit
7. CNN en VHDL
Para explotar las ventajas del FPGA se usan los multiplicadores que ya tiene
incluido para realizar la convolución y obtener el siguiente estado de la CNN
discreta.
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
Page 27 of 39
Full Screen
Quit
7.0.1. Entidad de la CNN
ENTITY CNN IS
PORT(
CLK
nReset
:
:
IN STD_LOGIC;
IN STD_LOGIC;
Introducción
CNN_TIME_iter
Template
MaxIter
Start
: OUT std_logic;
-- Tiempo de una iteracion
:
IN STD_LOGIC_Vector (7 DOWNTO 0);
:
IN STD_LOGIC_VECTOR (7 DOWNTO 0);
:
IN STD_LOGIC;
-- Ejemplo de las conexiones con las 3 memorias
DataInR1
:
OUT STD_LOGIC_VECTOR (7 DOWNTO 0);
AddressR1
:
OUT STD_LOGIC_VECTOR (15 DOWNTO 0);
WrEnR1
:
OUT STD_LOGIC;
DataOutR1
:
IN STD_LOGIC_VECTOR (7 DOWNTO 0);
-- Resultados
NumOfMem
:
OUT STD_LOGIC;
EndOfCNN
:
OUT STD_LOGIC;
-- Indica si hay decimales en la division
Dividir
:
IN STD_LOGIC
);
END ENTITY;
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
Page 28 of 39
Full Screen
Quit
7.0.2. Entidad de la convolucion discreta
entity conv is port (
clk
: in
std_logic;
Introducción
Los 25 registros para de la imagen - valores x
x11,x12,x13,x14,x15
x21,x22,x23,x24,x25
x31,x32,x33,x34,x35
x41,x42,x43,x44,x45
x51,x52,x53,x54,x55
:
:
:
:
:
in
in
in
in
in
std_logic_vector
std_logic_vector
std_logic_vector
std_logic_vector
std_logic_vector
(7
(7
(7
(7
(7
Redes CNN
downto
downto
downto
downto
downto
0);
0);
0);
0);
0);
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Los 25 registros para de la entrada - valores u
u11,u12,u13,u14,u15
u21,u22,u23,u24,u25
u31,u32,u33,u34,u35
u41,u42,u43,u44,u45
u51,u52,u53,u54,u55
:
:
:
:
:
in
in
in
in
in
std_logic_vector
std_logic_vector
std_logic_vector
std_logic_vector
std_logic_vector
(7
(7
(7
(7
(7
downto
downto
downto
downto
downto
Publicaciones
0);
0);
0);
0);
0);
JJ J I II
Page 29 of 39
Full Screen
Quit
A11,A12,A13,A14,A15
A21,A22,A23,A24,A25
A31,A32,A33,A34,A35
A41,A42,A43,A44,A45
A51,A52,A53,A54,A55
:
:
:
:
:
in
in
in
in
in
std_logic_vector
std_logic_vector
std_logic_vector
std_logic_vector
std_logic_vector
(7
(7
(7
(7
(7
downto
downto
downto
downto
downto
0);
0);
0);
0);
0);
B11,B12,B13,B14,B15
B21,B22,B23,B24,B25
B31,B32,B33,B34,B35
B41,B42,B43,B44,B45
B51,B52,B53,B54,B55
:
:
:
:
:
in
in
in
in
in
std_logic_vector
std_logic_vector
std_logic_vector
std_logic_vector
std_logic_vector
(7
(7
(7
(7
(7
downto
downto
downto
downto
downto
0);
0);
0);
0);
0);
I
: in std_logic_vector (7 downto 0);
conv_resultado
: out std_logic_vector (7 downto 0);
Dividir
: in std_logic
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
); end entity;
Aplicación
Publicaciones
JJ J I II
Page 30 of 39
Full Screen
Quit
7.1. Resultados de desempeño
El bloque de pre-procesamiento de la imagen, prepara a la imagen para ser
convolucionada con el cloning template. Para ello, extrae un bloque de 5x5
pixeles del pixel a ser procesado y sus vecinos. Este tiempo será tLoad y se
calcula como:
Introducción
tLoad = (2 ∗ Columnas + 3) ∗ tClk
(8)
El tiempo total tIter que se requiere para calcular una iteración completa
de la CNN es:
tIter = tLoad + P ixeles ∗ tConv ,
tIter = tLoad + P ixeles ∗ N cycConv ∗ tClk ,
tIter = [(N cycConv ∗ F ilas + 2) ∗ Columnas + 3] ∗ tClk ,
(9)
donde:
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
• tConv es el tiempo usado para realizar la convolución de un pixel.
JJ J I II
• N cycConv es el número de ciclos de reloj necesarios para terminar la
convolución de ma imagen completa.
• Columnas/Renglones/P ixeles son el número total de columnas /renglones/ pixeles de la imagen, respectivamente.
Page 31 of 39
Full Screen
Quit
En la siguiente gráfica se muestra el comportamiento del tiempo tIter con
respecto al número de columnas y renglones de la imagen.
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Valores estan expresados µs.
Tamaño de la imagen Valor Teórico Valor
32 x 32
32.02
32 x 96
96.03
64 x 64
127.04
64 x 96
190.55
128 x 96
379.59
Publicaciones
Experimental
33.25
96.26
129.27
192
384.57
JJ J I II
Page 32 of 39
Full Screen
Para medición experimental se programo una señal de salida del FPGA que
cambia al inicio y fin del proceso. Esto permite la medición mediante un
osciloscopio con detector de flancos.
Quit
7.1.1. Gráficas de desempeño
Se presentan las gráficas de desempeño (tiempo tIter ) de la CNN en VHDL y
luego comparada con la implementación en matlab.
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
Page 33 of 39
Full Screen
Quit
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
Page 34 of 39
Full Screen
Quit
8. Aplicación
8.1. Robot seguidor de lineas
El robot seguidor de lineas que se construyo se llama Pasqual8 [13]. El
diagrama de funcionamiento es el siguiente:
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
(a)
(b)
JJ J I II
Page 35 of 39
Mostrar animación del funcionamiento del robot
Full Screen
Quit
8.2. Video del Robot
Introducción
Redes CNN
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
Publicaciones
JJ J I II
Page 36 of 39
Full Screen
Quit
9. Publicaciones
1. Real Time Computer Vision by Means of CNNs on FPGAs, Juan Carlos
López-Garcı́a, Marco A. Moreno-Armendáriz, Jordi Riera-Baburés,
Marco Balsi, Xavier Vilası́s-Cardona, International Conference on
Cybernetics and Information Technologies, Systems and Applications,
Orlando, Florida, USA, July 14-17, 2005.
Introducción
Redes CNN
Clonning templates
FPGA
2. Real time vision by FPGA implemented CNNs, Juan Carlos LópezGarcı́a, Marco A. Moreno-Armendáriz, Jordi Riera-Baburés, Marco
Balsi, Xavier Vilası́s-Cardona, 17th European Conference on Circuit
Theory and Design, Cork, Ireland, Aug 29 - Sep. 1, 2005.
Visión por . . .
3. A CNN-UM Emulator on FPGA for the Visual System of an Autonomous Robot Authors: Giovanni Egidio Pazienza, Jordi BellanaCamañes, Marco Antonio Moreno-Armendáriz, Jordi Riera-Baburés,
Marco Balsi, Xavier Vilası́s-Cardona, IEEE Transactions on Circuits
and Systems I, enviado.
Publicaciones
CNN en matlab
CNN en VHDL
Aplicación
JJ J I II
Page 37 of 39
Full Screen
Quit
Bibliografı́a
[1] Chua, L.O., Yang, L.: Cellular Neural Networks Theory. IEEE Trans.
Circuits and Systems, 35 (10) (1988) 1257–1272.
[2] Chua, L.O., Roska, T.: The CNN Paradigm. IEEE Trans. Circuits and
Systems—I, Fundamental Theory and Appl., 40 (3) (1993) 147–156.
Introducción
Redes CNN
[3] Harrer, H., Nossek, J.A. (1992) Discrete-time Cellular Neural Networks.
Int. J. of Circ. Th. Appl.20 453-467.
[4] Liñan, L., Espejo, S., Domı́nguez-Castro, R., Rodrı́guez-Vázquez, A.
(2002) ACE4K: An Analog I/O 64x64 Visual MicroProcessor Chip with
7-bit Analog Accuracy. Int. J. of Circ. Th. Appl., 30 89-116.
Clonning templates
FPGA
Visión por . . .
CNN en matlab
CNN en VHDL
Aplicación
[5] Kananen, A., Paasio, A., Laiho, M., Halonen, K. (2002) CNN
Applications from the Hardware Point of View: Video Sequence
Segmentation. Int. J. of Circ. Th. Appl., 30 117-137.
[6] Vilası́s-Cardona, X., Luengo, S., Solsona, J., Apicella, G., Maraschini,
A., Balsi, M. (2002) Guiding a mobile robot with Cellular Neural
Networks, Int. J. of Circ. Th. Appl. 30 611-624.
[7] Balsi, M., Vilası́s-Cardona, X. (2002) Robot Vision using Cellular Neural
Networks mobile robot vision. Zhou, C., Maravall, D., Ruan, D. Eds.
Autonomous Robotic Systems, Physica-Verlag.
Publicaciones
JJ J I II
Page 38 of 39
Full Screen
Quit
[8] Balsi, M., Bellachioma, D., Graziani, S., Vilası́s-Cardona, X.(2003)
Robot Vision by CNNs emulated in FPGAs, Proc. of European
Conference on Circuit Theory and Design Cracow, Poland.
[9] T. Roska, T. KéK, L. Nemes, A. Zarándy, and P. Szolgay.
(1999) CSL-CNN software library, version 7.3. [Online]. Available:
http://lab.analogic.sztaki.hu/Candy/csl.html
Introducción
Redes CNN
[10] X.Vilası́s-Cardona, S.Luengo, J.Solsona, A.Maraschini, G.Apicella,
and M.Balsi, Guiding a mobile robot with cellular neural networks,
International Journal of Circuit Theory and Applications, vol. 30, pp.
611Ű624, 2002.
Clonning templates
[11] Van den Bout Dave,The practical Xilinx Designer Lab Book, Prentice
Hall, 1998.
CNN en VHDL
FPGA
Visión por . . .
CNN en matlab
Aplicación
Publicaciones
[12] Seals R.C., Programmable Logic, PLDs and FPGAs, pp. 1-2, McGraw
Hill, USA, 1997.
[13] (2006) Pasqual8: a CNN guided autonomous robot. [Online]. Available:
http://salle.url.edu/ Ÿ de16393/cnn/pasqual8.html
JJ J I II
Page 39 of 39
Full Screen
Quit