Resumen:
|
[ES] Los avances en el diseño y desarrollo de redes neuronales convolucionales profundas, así como el incremento de la precisión de las mismas en el campo de la visión artificial, ha supuesto su amplia adopción en un gran ...[+]
[ES] Los avances en el diseño y desarrollo de redes neuronales convolucionales profundas, así como el incremento de la precisión de las mismas en el campo de la visión artificial, ha supuesto su amplia adopción en un gran abanico de aplicaciones inteligentes. La mayoría de dispositivos móviles y empotrados, ya sea en forma de teléfono móvil, tableta, sistema de navegación, sistemas empotrado o robot, incorporan procesadores ARM y requieren la ejecución eficiente y consciente del consumo este tipo de redes neuronales. Desde el punto de vista computacional, la fase de inferencia de las redes neuronales convolucionales se puede resumir mayormente en la realización de dos operaciones básicas: la multiplicación de matrices, para el procesamiento de capas completamente conectadas, y la convolución, para el procesamiento de capas convolucionales.
En este trabajo se aborda el desarrollo y la paralelización del algoritmo de convolución rápida de Winograd, una variante de esta operación basada en transformaciones y que tiene como objetivo de maximizar el rendimiento de la fase de inferencia a costa de reducir el número de operaciones realizadas. En concreto, el trabajo detalla las implementaciones y optimizaciones llevadas a cabo para aprovechar la naturaleza del algoritmo rápido de convolución sobre procesadores ARM y se compara con la convolución directa y en los basados en transformaciones im2col o im2row, seguidas de una multiplicación de matrices. La implementación desarrollada en este trabajo explora, además, distintas versiones vectorizadas y paralelas del algoritmo basadas en el uso de funciones intrínsecas de ARM-NEON y en el entorno de programación paralelo OpenMP.
[-]
[EN] The ongoing progress on deep convolutional neural networks and their important role in artificial vision has made their role relevant in a vast number of smart applications. A large portion of mobile and embedded ...[+]
[EN] The ongoing progress on deep convolutional neural networks and their important role in artificial vision has made their role relevant in a vast number of smart applications. A large portion of mobile and embedded systems, be it in the shape of mobile phones, tablets, navigation systems, embedded systems or robots, currently make use of ARM microprocessors and require constant and efficient use of the before mentioned neural networks. From a computational point of view, convolutional neural network make use of two main operations: matrix multiplication for fully connected layers and the convolution operation for convolutional layers.
This document will go over the development of a parallel convolution using Winograd's method for fast convolution. This method seeks to maximize performance, making use of various transformations that decrease the amount of calculations needed to perform a convolution. In more detail, this document will document various possible implementations and optimizations which will try and exploit the nature of this algorithm on ARM processors. These versions are later compared with other fast convolution techniques, as are im2row or im2col. The documented implementation will also go over a vectorized implementation based on ARM-NEON intrinsic functions and a thread based parallel implementation using Openmp.
[-]
|