Resumen:
|
[ES] La red neuronal convolucional (CNN), es un algoritmo de aprendizaje automático que ha sido
probado como un algoritmo altamente preciso y eficaz, que se ha utilizado en una gran variedad
de aplicaciones tales como ...[+]
[ES] La red neuronal convolucional (CNN), es un algoritmo de aprendizaje automático que ha sido
probado como un algoritmo altamente preciso y eficaz, que se ha utilizado en una gran variedad
de aplicaciones tales como reconocimiento visual y clasificación de imágenes, entre otros.
Las CNN de última generación tienen un elevado coste computacional, pero su naturaleza
modular y su paralelismo hace que sean adecuadas para poder ser aceleradas en plataformas como
las matrices de puerta programable de campo (FPGA). Por lo general, las redes neuronales
convolucionales, requieren un desarrollo muy largo y complejo para poder ser implementadas o
aceleradas usando FPGA, por lo tanto, en este trabajo se va a plantear usa solución para hacer
esto de una forma sencilla y sin necesidad de que se tenga un conocimiento previo, ni experiencia
en lenguajes de descripción de hardware (HDL). Para conseguirlo, este trabajo propone el uso de
una herramienta de generación automática de VHDL; pues este tipo de herramientas, a través de
código en C / C++, puede traducir automáticamente cualquier algoritmo descrito con una serie de
restricciones a VHDL, inclusive la arquitectura de una red convolucional. Además, también se
verán técnicas para mejorar su implementación como optimizadores y cuantificadores. Y para
conseguir un mejor desarrollo, se generará un código que sea altamente optimizado, paralelo,
reconfigurable, escalable y adaptable a diferentes modelos de una CNN, aunque el trabajo se
centrará únicamente en un modelo.
Aparte de la generación automática de código en VHDL, el trabajo también ofrecerá una pequeña
introducción a las redes convolucionales, exponiendo cómo se diseñan, cómo están compuestas
y cómo funcionan. Además, que mostrarán otras alternativas a las herramientas de generación
automática de lenguajes de descripción de hardware, para poder acelerar una red convolucional
en un acelerador hardware.
[-]
[EN] The convolutional neural network (CNN) is a machine learning algorithm that has been proven
to be a highly accurate and efficient algorithm that has been used in a wide variety of applications
like visual recognition ...[+]
[EN] The convolutional neural network (CNN) is a machine learning algorithm that has been proven
to be a highly accurate and efficient algorithm that has been used in a wide variety of applications
like visual recognition or image classification, among others. State-of-the-art CNNs are highly
computational, but their modular nature and parallelism make them suitable for acceleration on
platforms like field programmable gate arrays (FPGAs). In general, convolutional neural
networks require a very long and complex development to be implemented or accelerated using
FPGA, therefore, in this project we will propose a solution to do this in a simple way and without
the need for prior knowledge or experience in hardware description languages (HDL) in order to
accelerate the algorithm in the FPGA. To achieve this, this project proposes the use of an
automatic VHDL generation tool. This type of tool, through C / C++ code, can automatically
translate any described algorithm into VHDL, including the architecture of a convolutional
network. In addition, techniques to improve implementation such as optimisers and quantifiers
will also be discussed. To achieve better development we will generate code that is highly
optimised, parallel, reconfigurable, scalable and adaptable to different models of a CNN, although
the work will focus only on one model.
Apart from automatic code generation in VHDL, the paper will also give a short introduction to
convolutional networks, showing how they are designed and implemented. It will also show how
they are composed and how they work. In addition, it will show other alternatives to automatic
hardware description language generation tools, in order to accelerate a convolutional network in
a hardware accelerator.
[-]
|