High Level Synthesis of a trained Convolutional Neural Network for handwritten digit recongnition.
This project uses many concepts coming from a previous work that can be found here. The main difference is that our implementation is written for Vitis HLS version 2020.2 instead of Vivado HLS version 2018.3.
Project presentations for the "Embedded Systems" Master course at University of Parma: FS presentation and GB presentation.
- Input images.
- model definition, training and evaluation;
- export of (trained) network weights and architecture through C header files.
- C header files containing network architecture and weights.
- replication of the trained network in C (using previously-generated headers).
- translation from C to C++ and code refactoring to take advantage of Vitis HLS pragma and directives.
C/C++ code of this project is designed to generate an RTL description that meets ambitious performance requirements through pipelining and parallelism; to achieve this, we wrote specific and non-parametric code, meaning that changes to the network architecture are not automatically propagated to the rest of the project.