Convolucionador SIMD acoplado a HALCON
←
→
Transcripción del contenido de la página
Si su navegador no muestra la página correctamente, lea el contenido de la página a continuación
Convolucionador SIMD acoplado a HALCON Liz N. Castillo Jiménez, Gerardo Sosa Ramírez y René A. Cumplido Parra. Coordinación de Ciencias Computacionales – INAOE, Luis Enrique Erro No. 1, Tonantzintla, Puebla, 72840. México nicandi@ccc.inaoep.mx, sosa@ccc.inaoep.mx, rcumplido@inaoep.mx. Resumen. La operación de convolución es muy utilizada en el procesamiento de imágenes, consiste en operaciones que a pesar de no ser muy complejas, son muy repetitivas. Para agilizar la ejecución de dichas tareas, se hace uso del cómputo paralelo, el cual consiste en utilizar múltiples procesadores. Una alternativa para la implantación de una arquitectura paralela, es hacer uso de los FPGA’s. En el presente trabajo, se añade un operador de convolución a la herramienta HALCON, utilizando la tarjeta RC1000 de Celoxica, la cual cuenta con un FPGA Xilinx Virtex XCV2000EBG560-6C. De acuerdo a los resultados obtenidos postsíntesis, a una frecuencia de operación de 20Mhz, el tiempo que emplearía la arquitectura para efectuar la convolución de una imagen de 640x480 píxeles, es de 53 imágenes por segundo. Palabras Clave : Procesamiento de imágenes, Convolución, FPGA, Arquitectura SIMD. 1 Introducción El procesamiento de imágenes involucra operaciones que aunque no sean muy complejas, generalmente son muy repetitivas, las cuales llegan a consumir gran parte de los recursos de una computadora convencional. Para agilizar la ejecución de dichas tareas, se puede hacer uso del cómputo paralelo, el cual se basa en utilizar múltiples procesadores para llevar a cabo tales operaciones. Existen computadoras que se basan en arquitecturas paralelas, pero tanto sus costos como disponibilidad, pueden resultar inalcanzables, además de no aprovechar todo su potencial en tareas tan específicas, de modo, que una alternativa para la implantación de una arquitectura paralela es hacer uso de los FPGA’s, los cuales permiten diseñar múltiples elementos procesadores a un bajo costo y de una forma más rápida. Por otro lado, existen herramientas de software especializadas para el procesamiento de imágenes, que permiten construir sistemas de alto desempeño y gran flexibilidad. Entre estas, se encuentra MVTec HALCON, la cual cuenta con alrededor de 1000 operadores, que pueden ser combinados para resolver problemas relacionados con visión computacional.
El operador de convolución es muy utilizado como una operación básica en el procesamiento de imágenes. En el presente trabajo se añade un operador de convolución a la herramienta HALCON, haciendo uso de la tarjeta RC1000 de Celoxica, la cual cuenta con un FPGA Xilinx Virtex XCV2000EBG560-6C. 2 Trabajo relacionado En el procesamiento de imágenes, la operación de convolución se utiliza en tareas de filtrado, tal como suavizamiento y detección de contornos. Debido a que la operación de convolución consiste en sumas y multiplicaciones, el uso de un FPGA para paralelizar estas operaciones, permite una reducción significativa en el tiempo de procesamiento. En [1], se muestra el desarrollo de una arquitectura validada en una FPGA , que realiza la convolución de al menos 30 imágenes por segundo, utilizando un FPGA Xilinx Virtex VCX800FG680. En [2], se muestra la implantación del algoritmo SUSAN en un FPGA para la detección de contornos, el cual logra un procesamiento de hasta 120 imágenes por segundo, basado en elementos de procesamiento muy simples. Se utiliza un FPGA Xilinx XC4062XL. Tanto en [1] cómo en [2] se utiliza VHDL para la implantación de ambas arquitecturas. 3 Metodología La metodología para el desarrollo del convolucionador, inició recopilando información sobre las arquitecturas SIMD (Single instruction stream, multiple data stream), para definir una arquitectura que llevará a cabo las operaciones necesarias para la convolución. Al mismo tiempo, se buscó información para añadir nuevos operadores a HALCON y los requerimientos para que este se comunicara con la tarjeta RC1000. Posteriormente, se diseñó y programó la mayor parte de la funcionalidad de la arquitectura SIMD en Handel C, delimitando los tamaños para las máscaras de convolución a 3x3, 5x5, 7x7, 9x9 y 11x11. Para verificar que los resultados del convolucionador en la tarjeta RC1000 fueran correctos, se utilizó el operador de convolución de HALCON convol_image.
Finalmente, se realizó la síntesis y validación en el FPGA evaluando su funcionamiento con los resultados obtenidos por HALCON. 3.1 Arquitectura SIMD La arquitectura propuesta consiste en un arreglo bidimensional de Elementos Procesadores (PE, por sus siglas en inglés), debido a que la lectura de la imagen se efectúa por columnas, se trata de minimizar el número de accesos a memoria, entre más elementos procesadores se definan en anchura, menor número de accesos a memoria se tienen que efectuar, por otro lado, el número de elementos procesadores en profundidad se definió de acuerdo al mínimo tamaño de la máscara (3x3), ya que, por el diseño efectuado, si se tuvieran más de tres elementos procesadores en profundidad, pero una máscara de 3x3, únicamente tres de estos procesadores estarían efectuando el cálculo de un valor. En la figura 1 se muestra gráficamente dicho arreglo bidimensional. PE20 PE21 PE2m PE10 PE11 PE1m PE00 MemPE20 PE01 MemPE 21 PE0m MemPE 2m MemPE10 MemPE11 MemPE1m MemPE00 MemPE01 MemPE0m ad ndid ofu Anchura Pr Fig. 1. Arreglo bidimensional de los elementos procesadores. En la figura 2 se presenta el diagrama a bloques de los elementos que conforman la arquitectura. El funcionamiento de tales bloques se describe a continuación: Driver. Unidad que establecerá la comunicación con la tarjeta FPGA, encargándose de la transmisión y recepción de las imágenes. Interfaz. Unidad en el FPGA que se encargará de capturar la información proporcionada por el driver y su transmisión hacia la arquitectura SIMD. También se encargará de la transmisión hacia el driver y de los resultados arrojados por la Arquitectura. PE. Encargado de efectuar el proceso de convolución para cada una de las máscaras que se hacen pasar por la imagen. MemPE. Memoria del elemento de procesamiento, la cual está limitada únicamente a registros de almacenamiento locales a cada PE.
Unidad de Control. Unidad encargada de enviar tanto los datos como las diferentes palabras de control a cada elemento procesador; dentro de sus módulos principales se encuentra: la generación de direcciones y el control de datos. PC TARJETA FPGA ARQUIT. RAM Driver BUS PCI INTERFAZ SIMD HALCON RAM Operador WMask[3:0] WMask Inic WE 0 1 It[3:0] RST 0 0 0 Enable 0 1 PE 20 PE21 PE 2m 1 It 0 1 PE10 PE 11 PE1 m WMask PE00 MemPE 2 0 PE 01 MemPE21 PE0m MemPE2m It D C0 MemPE1 0 MemPE11 MemPE1m 0 1 M0,I t VCalc 0 VPix MemPE00 MemPE01 MemPE0m D C1 Factor DC 0[7:0] M1,It DC1 [7:0] DC2 DCol Dato DC10 [7:0] M2,I t BUS DE DATOS Dir VCalc It DC1 0 BUS DE CONTROL CLK M1 0 ,It PE Datos Img BANCOS BANCO 0 DE Control de Generación de MEMORIA Datos direcciones Dir Mem UC Unidad de Control Fig. 2. Diagrama a bloques de los elementos funcionales de la arquitectura, con un arreglo de 3x3 elementos procesadores. 3.2 Acoplamiento de un nuevo operador en HALCON HALCON 6.1 es una herramienta de propósito general para aplicaciones de visión artificial. HALCON es un sistema sofisticado para el análisis de imágenes adecuado para el desarrollo, investigación y educación; cuenta con una librería de alrededor de 1000 operadores. HALCON contiene un ambiente de desarrollo llamado HDevelop, el cual es una herramienta interactiva para crear programas de análisis de imágenes; cuenta con un editor, interprete con funciones depurables y una unidad de administración de variables gráficas (imágenes). Para añadir un nuevo operador, es necesario seguir los pasos de los capítulos 4, 5 y 6 de [6]. En estos capítulos se detallan las funciones para obtener el contenido de los parámetros de entrada, cómo colocar datos en los parámetros de salida, la forma en que se accede a los píxeles, la definición de clases de los objetos definidos, etc.
4 Resultados A continuación se presenta un resumen de los resultados obtenidos después de la síntesis en Handel C: Number of Slices: 14,677 out of 19,200 76% Total Number 4 input LUTs: 25,278 out of 38,400 65% Number of bonded IOBs: 205 out of 404 50% The Average Connection Delay for this design is: 3.038 ns The Maximum Pin Delay is: 19.571 ns The Average Connection Delay on the 10 Worst Nets is: 17.194 ns Se calculó que la arquitectura emplea en promedio, para obtener el valor de un píxel 4 ciclos de reloj, por lo que si se tiene una frecuencia de operación de 20Mhz (aunque se probó con frecuencias más altas), el tiempo que emplearía la arquitectura para efectuar la convolución de una imagen de 640x480 píxeles, es de 53 imágenes por segundo. Para probar el operador, se utilizaron diversas secuencias, dos de ellas son: bvlab_hp, de 255 cuadros de 250 x 292 píxeles y autobahn, de 28 cuadros de 512 x 512 píxeles. En la figura 3a y 3b se muestra un cuadro de las secuencias de prueba anteriormente mencionadas. Fig. 3a. Cuadro de la secuencia bvlab_hp. Fig. 3b. Cuadro de la secuencia autobahn. Se hicieron pruebas con los filtros de sobel y promedio, obteniendo resultados satisfactorios, tal como se muestra en las figuras 4a y 4b, las cuales muestran los resultados obtenidos después de aplicar el filtro sobel a las secuencias anteriores. Fig. 4a. Resultado para filtro sobel en 3a. Fig. 4b. Resultado para filtro sobel en 3b.
5 Conclusiones y comentarios La arquitectura propuesta es muy flexible al incremento o disminución de elementos procesadores, ya que el elemento procesador está definido en Handel C como una matriz de funciones, y sólo basta efectuar más instancias de estas para tener una arquitectura más robusta. Por lo tanto, sólo bastó con tener bien validado el funcionamiento de un único elemento procesador, y el esfuerzo posterior se enfocó en la definición de la unidad de control. Cabe mencionar que cuando se ocupa gran cantidad de los recursos del FPGA, el tiempo de compilación en Handel C puede aumentar considerablemente, por lo que se recomienda tener este tiempo presente en la planificación de un proyecto. Antes de acoplar el operador a HALCON, se desarrollaron programas adicionales, para probar y validar el funcionamiento de la arquitectura, estos ayudaron de una manera significativa a observar el contenido de los bancos de memoria y corroborar que los resultados esperados eran correctos. Con respecto al operador acoplado a HALCON, se logró una comunicación exitosa con el FPGA, utilizando el bus PCI para la transferencia de la imagen origen y la convolucionada, con una arquitectura de 9 elementos procesadores. Aunque no se alcanzaron los resultados teóricos de procesamiento (53 imágenes x segundo de 640x480 píxeles), debido al modo en que HALCON administra la memoria y los procesos que controla el bus PCI en una computadora, el diseño de la arquitectura en hardware permite realizar operaciones de convolución sin necesidad de contar con un software especializado, ni verse afectado por los procesos ajenos que efectúa una computadora, de esta manera, la arquitectura proporcionará un buen desempeño para trabajar con imágenes en tiempo real. Como trabajo futuro, se tiene previsto reducir el número de multiplicadores que contiene cada elemento procesador, con lo que se reducirá significativamente el espacio utilizado en el FPGA y poder incrementar así el número de PE’s. Referencias [1] J.C. Tejeda Yépez. Arquitectura FPGA para filtrado de imágenes en tiempo real. Tesis de maestría, INAOE, 2001. [2] C. Torres-Huitzil, M. Arias-Estrada. Real-Time field programmable gate array architecture for computer vision. Journal of Electronic Imaging 10(1), 289-296 (January 2001). [3] J. Jájá. An Introduction to Parallel Algorithms. Addison Wesley, 1992. [4] R. Cypher. The SIMD model of parallel Computation. Springer Verlag, 1994. [5] R.C. González, R.E. Woods. Digital image processing. Prentice Hall, 2002. [6] HALCON Extension Package Interface. Programmer’s Manual. MVTec Software GmbH, 2002. [7] RC1000 Software Reference Manual. Version 1.3. Celoxica, 2001. [8] RC1000 Functional Reference Manual. Version 1.3. Celoxica, 2001.
También puede leer