Plataforma para Procesamiento de Imágenes sobre
SoC
FPGA de Xilinx
Platform for the Development of Image Processing Applications on Xilinx SoC FPGAs
Tomás Medina
#1
, Lucas Leiva
#*2
, Martín Vázquez
#*3
#
LabSET - INTIA, Fac. Cs. Exactas, Universidad Nacional del Centro de la Prov. de Buenos Aires
Pinto 399, (7000) Tandil, Pcia. De Buenos Aires, Argentina
*
Universidad Nacional de Tres de Febrero,
Valentín mez 4828, (1678) Caseros, Pcia. De Buenos Aires, Argentina
medinatomasariel@gmail.com
lleiva@labset.exa.unicen.edu.ar
mvazquez@labset.exa.unicen.edu.ar
Re
sumen La aplicacn de sistemas de procesamiento de
imágenes en edge computing resulta cada vez más atractiva y
necesaria. Sin embargo, las exigencias en cuanto a consumo de
potencia y alto rendimiento impiden que puedan utilizarse
plataformas de procesamiento estándares. En este aspecto, los
FPGA son una buena opcn para el desarrollo de sistemas de
visión computacional a causa de su capacidad de explotacn
del paralelismo. Por otra parte, el flujo de diseño de las
herramientas de ntesis de FPGA actuales admiten lenguajes
de alta abstracción como descripciones de entrada, en
contraposicn a los lenguajes de descripción de hardware. La
síntesis de alto nivel (HLS) automatiza el proceso de diseño al
transformar la descripcn algorítmica en hardware digital
mientras se satisfacen las limitaciones del diseño. Sin embargo,
a los expertos en procesamiento de imágenes puede resultarles
compleja la integracn hardware obtenida con el resto de los
componentes del sistema, como por ejemplo interfaces de
captura y visualizacn. En este trabajo, se presenta un diseño
base para la construccn de aplicaciones de procesamiento de
imágenes basada en Zynq. Se proporciona además una
metodología que posibilita el desarrollo eficiente de soluciones
de procesamiento de imágenes embebidas de manera ágil.
Palabras clave: procesamiento de imágenes; HLS; Zynq.
Abstract The use of image processing systems is becoming
frequent and is appropriate in edge computing. However, the
demands on power consumption and high performance
prevent the use of standard processing platforms. Thus,
FPGAs are a good option for the development of computer
vision systems because they are capable of exploiting
parallelism. On the other hand, the design flow of current
FPGA synthesis tools supports high-level languages as input
descriptions, in contrast to hardware description languages.
High-level synthesis (HLS) automates the design process by
transforming an algorithmic description into digital hardware
meeting design limitations. However, image processing experts
may find challenging the hardware integration with the rest of
the system components, e.g. capture and display interfaces.
This work presents a basic design for the construction of image
processing applications based on Zynq and a guide for its use,
which solves this problem, allowing the agile generation of
embedded image processing solutions. Additionally, a
methodology is provided, which facilitates the efficient
development of image processing embedded solutions in an
agile way.
Keywords: image processing, HLS, Zynq.
I. INTRODUCCIÓN
El procesamiento de imágenes y videos digitales es un
área dinámica con aplicaciones críticas respecto al tiempo.
Las mismas se encuentran cotidianamente en casos como
drones militares y comerciales, sistemas de visn por
computadora, vigilancia de áreas sensibles, control de
acceso, inspección automatizada en industrias entre otras
[1]-[3]. Si bien en estas aplicaciones la tasa de
procesamiento es importante, existen otras restricciones
como la capacidad de operacn en tiempo real, el consumo
de potencia, o el nivel de integracn del sistema. La
complejidad de procesamiento de estos algoritmos
restrictivos hace que su implementación en procesadores de
propósito general convencionales no sea factible y se
adapten mejor a implementaciones en hardware específico
[4].
La tecnología FPGA ha evolucionado significativamente
en los últimos os, tanto en la escala de integracn como
en su extensn a SoC (System-on-a-Chip) FPGA, que
incorporan arquitecturas de procesadores multinúcleo
heterogéneas. Si bien el origen de la tecnología se enfo en
el uso exclusivo para aplicaciones electrónicas, actualmente
son utilizados para el co-diso hardware/software e
implementacn de sistemas complejos completos debido a
las capacidades que proveen. Dentro de estas capacidades se
destacan la disponibilidad para realizar miles de millones de
operaciones MAC (acumulacn de multiplicaciones) por
segundo utilizando los cores DSP incluidos y los bloques de
memoria BRAM, y las oportunidades para explotar los
diferentes niveles de paralelismo que la mayoría de las
aplicaciones de computación intensiva exigen [5].
Si bien el uso de esta tecnología de hardware resulta
adecuado en aplicaciones de procesamiento de imágenes y
video [6], cada vez es más complejo lograr un
aprovechamiento de los recursos a medida que la escala y la
Revista elektron, Vol. 4, No. 2, pp. 81-86 (2020)
ISSN 2525-0159
81
Recibido: 14/10/20; Aceptado: 27/11/20
Creative Commons License - Attribution-NonCommercial-
NoDerivatives 4.0 International (CC BY-NC-ND 4.0)
https://doi.org/10.37537/rev.elektron.4.2.109.2020
Original Article
sofisticacn de estos dispositivos aumenta, considerando el
in
cremento de requerimientos de usuario (conectividad,
precisn, resolución, interoperabilidad, entre otros).
Tradicionalmente, lograr el rendimiento necesario ha
requerido el diso manual de circuitos personalizados a
nivel de transferencia de registro (RTL) en un lenguaje de
descripción de hardware. Este es un enfoque muy eficaz,
pero impone una gran carga de desarrollo debido al bajo
nivel de abstracción del diso.
Con el fin de aumentar la productividad y promover las
FPGA a una comunidad de usuarios más amplia, en los
últimos años se han presentado nuevas metodologías de
diso con gran abstracción, incluida la síntesis de alto nivel
(High-Level Synthesis) [7]. Esta metodología acepta el
diso en varios lenguajes (por ejemplo C, C++ y SystemC)
y genera un nivel de transferencia de registro (RTL)
sintetizable con precisn de ciclo a través de
transformaciones de digo y optimizaciones de síntesis.
Dentro de las ventajas ofrecidas por esta tecnología de
síntesis se destaca su capacidad de lograr una
implementacn del diso a partir de una abstracción de
alto nivel sin requerir un conocimiento exhaustivo del
hardware, así como tambn la posibilidad de realizar una
exploracn del espacio de diso con pocas modificaciones
del algoritmo. Además las herramientas ofrecen métodos de
depuracn y verificacn convenientes que disminuyen el
tiempo de desarrollo. Estos métodos de entrada de diso
se han utilizado recientemente en una variedad de
aplicaciones (por ejemplo, imágenes médicas, redes
neuronales convolucionales y aprendizaje automático), con
beneficios significativos en términos de rendimiento y
consumo de energía [8][9]. En [10] se presenta un
relevamiento de experiencias de diso HLS vs. RTL
demostrando que esta nueva metodología permite obtener
más rendimiento y un uso de recursos FPGA ligeramente
menor, con un incremento considerable en la productividad,
a costa de la pérdida de calidad de resultados (QoR).
El enfoque convencional para desarrollar aplicaciones
de visn embebidas basadas en FPGA parte de la
implementacn y prueba de los algoritmos usando software
de propósito general. Esto se debe a que tanto esta primera
implementacn como su verificacn resultan más fáciles
de realizar en una plataforma de software que directamente
en hardware [11]. Cuando se alcanza la funcionalidad
deseada de un algoritmo se debe crear una descripción RTL
del mismo, pudiendo ser este paso automatizado a través de
herramientas de síntesis de alto nivel [12].. Existe una
amplia gama de herramientas para este tipo de síntesis
disponibles, que difieren significativamente tanto en su
facilidad de uso como en la calidad del hardware derivado
[13].
Si bien las metodologías de desarrollo utilizadas
usualmente permiten a usuarios sin experiencia en hardware
generar soluciones para sus algoritmos con un esfuerzo
mínimo, ahorrando tiempo de desarrollo y reduciendo el
riesgo de cometer errores [14], éstas no contemplan la
integracn de la implementacn de algoritmos con los
diferentes componentes hardware que integran el sistema.
En este sentido, resulta propicio considerar la disponibilidad
de una configuracn base que permita a los expertos en
aplicaciones de procesamiento de imágenes, integrar las
soluciones algorítmicas de forma sencilla.
Existen varios trabajos en la literatura que abordan la
construccn de plataformas de digo abierto para el
diso de soluciones de procesamiento de imágenes basadas
en FPGAs. Por ejemplo, en [15] se detalla una plataforma
reconfigurable en Virtex-4SX35 para la detección de bordes
a partir de los datos capturados de una mara OV7610. En
[16][17] se han propuesto otros proyectos de digo abierto
para el procesamiento de imágenes utilizando Altera DE2-
115. En [18] se presenta otra solución que añade un entorno
de diso y validacn, utilizando como entrada la
informacn de imágenes capturada por un dispositivo
OV7670, y presenta resultados utilizando una placa Nexys 4
FPGA.
Este trabajo propone una configuracn inicial destinada
a usuarios con poca experiencia en el diseño de sistemas en
hardware que requieran implementar sistemas de
procesamiento de imágenes sobre esta tecnología, y que
pueda tambn ser utilizada como soporte para el desarrollo
rápido de aplicaciones de procesamiento de imágenes.
Además, presenta una guía para su uso, disponible en [19].
La propuesta se basa en el uso de la placa de desarrollo
Zybo Z7-20 [20]. La plataforma admite la incorporacn de
algoritmos de procesamiento de imágenes desarrollados en
C++, y mediante la herramienta de síntesis Vivado HLS,
genera el bloque hardware correspondiente al algoritmo.
Luego posibilita la incorporación de este de manera sencilla,
en un diseño preestablecido que contiene la captura de
imágenes, la visualización a través de una interfaz HDMI, y
el soporte para el guardado de las imágenes de entrada en
una tarjeta de memoria microSD. E
l objetivo principal del
trabajo es brindar un entorno y una metodología que
permitan reducir los inconvenientes iniciales respecto al
tiempo de aprendizaje de la tecnología, y generar soluciones
rápidamente.
E
n la seccn II de este trabajo se presenta la descripción
de la plataforma, explicando los componentes hardware, el
diso de la configuracn y el soporte para el
almacenamiento de imágenes en la memoria. La sección III
describe la metodología para la implementación de
algoritmos de procesamiento de imágenes. En la sección IV
se presentan algunos de los resultados obtenidos, y
finalmente en la sección V se detallan las conclusiones y
trabajo futuro.
II. DISO DE LA PLATAFORMA
A. Componentes Electrónicos
La plataforma está basada en el uso de un sensor de
captura de imagen Pcam 5C de Digilent [21]. El periférico
cuenta con un sensor de imagen OV5640 con una montura
de lente M12 que permite acoplar una óptica de acuerdo a
las necesidades, e interfaz de conexn MIPI CSI-2 (Mobile
Industry Processor Interface Camera Serial Interface).
Se seleccionó como unidad principal de procesamiento el
kit de desarrollo Zybo Z7-20 que permite ser integrado con
el sensor Pcam 5C. El equipamiento posee un SoC FPGA de
Xilinx, Zynq XC7Z020-1CLG400C, interruptores de
control, interfaces HDMI y microSD, que se consideran
útiles para incluir funcionalidad en versiones futuras.
Revista elektron, Vol. 4, No. 2, pp. 81-86 (2020)
ISSN 2525-0159
82
http://elektron.fi.uba.ar
Revista elektron, Vol. 4, No. 2, pp. 81-86 (2020)
ISSN 2525-0159
83
http://elektron.fi.uba.ar
realizar las transferencias. La gica de la funcionalidad
p
ara el soporte de captura de imágenes fue desarrollada en
software ejecutado por el PS. El software almacena los
frames almacenados por el AXI VDMA en la memoria
principal utilizando las bibliotecas de Xilinx XilFFS (para
acceder al sistema archivos FAT de la tarjeta de memoria),
y Xil_io (para la lectura y escritura en memoria principal).
Por otro lado, se utilizaron los pulsadores presentes en la
placa para la toma controlada por el usuario. La
configuracn de esta funcionalidad utiliza el driver
XGPioPs, que habilita una capa de software para la
abstracción del manejo de GPIO conectados al PS.
El flujo de funcionamiento del programa consiste en la
lectura de la pulsacn del bon de la placa, que inicia la
copia del frame de video en la memoria. Esto último es
necesario ya que la velocidad de transferencia hacia la
tarjeta microSD es menor a la del VDMA, por lo que
interfiere con la transmisn por HDMI. Una vez duplicado
el frame, se transfiere a la tarjeta microSD. El flujo de
operacn se presenta en la Fig. 3.
III. METODOLOGÍA PARA DESARROLLO DE ALGORITMOS DE
PROCESAMIENTO DE IMÁGENES
El procedimiento para el diso de aplicaciones de
procesamiento embebidas se presenta en la Fig. 4, la cual
permite mediante los recursos provistos generar ágilmente
soluciones de acuerdo a las necesidades de la aplicacn.
El diso comienza a partir del uso de la biblioteca
OpenCV [32]. La misma ofrece un amplio catálogo de
funciones para sistemas de procesamiento de imágenes, y es
particularmente familiar a los desarrolladores de
aplicaciones de procesamiento de imágenes. De esta forma,
el desarrollador puede comenzar a implementar una versn
en alto nivel, y evaluar los resultados del algoritmo aplicado
sobre un conjunto de imágenes de testeo obtenido desde la
plataforma a través del uso del soporte para la captura de
imágenes provisto. En este aspecto, se puede verificar en
etapas tempranas la funcionalidad correcta del algoritmo en
las condiciones ambientales reales (resolución, iluminacn,
ruido, etc).
Una vez alcanzado el nivel de precisn requerido, el
algoritmo se migra a Vivado HLS, adaptando las funciones
de OpenCV utilizadas a las provistas en la biblioteca
xfOpenCV [33] de Xilinx. La misma incluye un conjunto de
más de 60 kernels, optimizado para FPGA y SoC FPGA de
Xilinx, basado en OpenCV. De esta forma, los algoritmos de
procesamiento de imágenes pueden mantenerse descritos en
un lenguaje como C o C++.
Figura 3. Proceso de almacenamiento del frame de video desde la
memoria principal hacia la tarjeta microSD
Para que el módulo IP generado pueda acoplarse en el
diso, es necesario definir las entradas y salidas como
AXI-Streams, y usar las funciones provistas por xfOpenCV
para procesar la imagen según se necesite. Además, se
pueden codificar funciones propias que trabajen sobre las
imágenes por el alto nivel de abstracción del lenguaje. A fin
de lograr una mayor eficiencia en términos temporales se
recomienda utilizar la directiva Dataflow, considerando sus
limitaciones descritas en [34]. Esta directiva es compatible
con las interfaces AXI-Stream y permite explotar la
concurrencia de ejecución de las funciones, que se
encuentran optimizadas dentro de la biblioteca. Se deben
tener en cuenta durante la etapa de optimizacn ciertas
características que inciden en el diso del algoritmo, tales
como la capacidad de operacn concurrente del hardware,
la longitud de los datos que puede ser variable y adaptadas a
las necesidades, y la existencia de memoria distribuida que
permite implementar un hardware apropiado, de acuerdo a
los requerimientos y la disponibilidades de recursos físicos
contenidos en el FPGA.
Una de las ventajas principales del entorno de desarrollo
es su capacidad de simulación de los resultados por
software. Luego de obtener los resultados deseados en C, se
pueden utilizar las directivas provistas por el entorno para
configurar la síntesis del módulo IP, realizando una
exploracn del diso rápida en cuanto a rendimiento y
consumo de recursos. Además, la herramienta permite la
cosimulación, que compara los resultados de la simulación
en software respecto a los del módulo IP sintetizado,
pudiendo utilizar como conjunto de testeo las imágenes
capturadas desde la plataforma.
Revista elektron, Vol. 4, No. 2, pp. 81-86 (2020)
ISSN 2525-0159
84
http://elektron.fi.uba.ar