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