Description
A detailed low-level chip that applies a CNN classifier over a grayscaled image (MNIST handwritten digits dataset). The chip is a stand-alone chip that reads the image & CNN layers from user, applies the layers (convolution / pooling) consequently, and generates the output label (0 - 9).
Design
The process is divided into 3 modules:
-
IO Module
The image & CNN info will be compressed before sending them to the DCNN accelerator (this part is a software script that applies the compression algorithm - RLE - on the input). Then the compressed files are sent over a parallel port (16bit) to the DCNN accelerator. The received data will be decompressed by the hardware and saved on a local RAM.
-
CNN Module
The CNN layers are read and applied one by one in the CNN module. For each layer the module loops over the image using sliding 2D windows and computing the filter result for the middle pixels. The result of each layer is saved in the local RAM to be processed by the next layer.
-
FC Module
The last CNN layer result is passed to a fully connected neural network that generates the probability for each label. Finally a softmax layer is used to choose the classifier prediction.
TOOLS
- Vhdl
- Verilog
- Modelsim
- Python
Contributors
Thanks goes to these wonderful people ✨
Omar Mostafa |
Menna Mahmoud |
Nada Abdelmaboud |
Kareem Mohamed |
Ebrahim Gomaa |
Eman Othman |
Tarek Samy |
Abdullah Zaher |
Aya Samir |
Hager Ismael |
Nihal Mansour |
Asmaa Sayed |
License
This software is licensed under MIT License, See License