/DCNN

A detailed low-level chip that applies a CNN classifier over a grayscaled image (MNIST handwritten digits dataset).

Primary LanguageVHDLMIT LicenseMIT

GitHub stars GitHub issues GitHub forks GitHub

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:

  1. 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.

  2. 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.

  3. 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