Hola, soy nuevo en el mundo de las redes neuronales convolucionales y me gustaría implementar una operación de convolución 2D utilizando el enfoque de ventana deslizante en un FPGA xilinx. La entrada a la imagen es una imagen de 32x32 con 2 canales en la que 6 núcleos de 5x5 se combinan para producir 6 mapas de características de salida. Ahora, asegurando que tengo suficientes DSP en el FPGA, ¿cómo paralelizaría el problema? Después de investigar un poco, comprendí que podemos paralelizar sobre los mapas de características de entrada o salida, el kernel o ambos. Para un kernel 5x5, necesitaría 25 multiplicaciones y 25 adiciones, incluido el sesgo. Si tengo 25 DSP operando en paralelo, puedo lograr esto en un ciclo de reloj. ¿Mi comprensión del problema de la paralelización es correcta hasta ahora?
Ahora, considerando que la entrada se almacena en buffers y se transmite a mi módulo de convolución y los pesos se cargan previamente en el módulo, ¿cómo se realiza el cálculo de la ventana deslizante? Me doy cuenta de que tendría que usar contadores para hacer un seguimiento de la posición de la entrada hasta el final de N_W y N_H respectivamente. Existe mucha literatura sobre la implementación de este uso de matrices de multiplicadores sistólicos, pero no estoy seguro de obtenerlos.
¿Podría alguien ayudarme a entender un flujo de datos para la operación de convolución?
Cualquier ayuda sería muy apreciada. Un estudiante ansioso.