All Projects → ZFTurbo → Verilog Generator Of Neural Net Digit Detector For Fpga

ZFTurbo / Verilog Generator Of Neural Net Digit Detector For Fpga

Licence: apache-2.0
Verilog Generator of Neural Net Digit Detector for FPGA

Projects that are alternatives of or similar to Verilog Generator Of Neural Net Digit Detector For Fpga

Fpga readings
Recipe for FPGA cooking
Stars: ✭ 164 (-12.3%)
Mutual labels:  verilog, fpga
Wb2axip
Bus bridges and other odds and ends
Stars: ✭ 177 (-5.35%)
Mutual labels:  verilog, fpga
Connectal
Connectal is a framework for software-driven hardware development.
Stars: ✭ 117 (-37.43%)
Mutual labels:  verilog, fpga
Livehd
Live Hardware Development (LiveHD), a productive infrastructure for Synthesis and Simulation
Stars: ✭ 110 (-41.18%)
Mutual labels:  verilog, fpga
Openfpgaduino
All open source file and project for OpenFPGAduino project
Stars: ✭ 137 (-26.74%)
Mutual labels:  verilog, fpga
Vm80a
i8080 precise replica in Verilog, based on reverse engineering of real die
Stars: ✭ 114 (-39.04%)
Mutual labels:  verilog, fpga
Aes
Verilog implementation of the symmetric block cipher AES (Advanced Encryption Standard) as specified in NIST FIPS 197. This implementation supports 128 and 256 bit keys.
Stars: ✭ 131 (-29.95%)
Mutual labels:  verilog, fpga
Vgasim
A Video display simulator
Stars: ✭ 94 (-49.73%)
Mutual labels:  verilog, fpga
Symbiflow Arch Defs
FOSS architecture definitions of FPGA hardware useful for doing PnR device generation.
Stars: ✭ 137 (-26.74%)
Mutual labels:  verilog, fpga
Tang e203 mini
LicheeTang 蜂鸟E203 Core
Stars: ✭ 135 (-27.81%)
Mutual labels:  verilog, fpga
Fpga Chip8
CHIP-8 console on FPGA
Stars: ✭ 169 (-9.63%)
Mutual labels:  verilog, fpga
Logic
CMake, SystemVerilog and SystemC utilities for creating, building and testing RTL projects for FPGAs and ASICs.
Stars: ✭ 149 (-20.32%)
Mutual labels:  verilog, fpga
Autofpga
A utility for Composing FPGA designs from Peripherals
Stars: ✭ 108 (-42.25%)
Mutual labels:  verilog, fpga
Openwifi Hw
FPGA/hardware design of openwifi
Stars: ✭ 181 (-3.21%)
Mutual labels:  verilog, fpga
Nyuziprocessor
GPGPU microprocessor architecture
Stars: ✭ 1,351 (+622.46%)
Mutual labels:  verilog, fpga
Open Register Design Tool
Tool to generate register RTL, models, and docs using SystemRDL or JSpec input
Stars: ✭ 126 (-32.62%)
Mutual labels:  verilog, fpga
Ustc Rvsoc
FPGA-based RISC-V CPU+SoC.
Stars: ✭ 77 (-58.82%)
Mutual labels:  verilog, fpga
Icestation 32
Compact FPGA game console
Stars: ✭ 93 (-50.27%)
Mutual labels:  verilog, fpga
Wbuart32
A simple, basic, formally verified UART controller
Stars: ✭ 133 (-28.88%)
Mutual labels:  verilog, fpga
Openwifi
open-source IEEE 802.11 WiFi baseband FPGA (chip) design
Stars: ✭ 2,257 (+1106.95%)
Mutual labels:  verilog, fpga

Verilog Generator of Neural Net Digit Detector for FPGA

It's the project which train neural net to detect dark digits on light background. Then neural net converted to verilog HDL representation using several techniques to reduce needed resources on FPGA and increase speed of processing. Code is production ready to use in real device. It can be easily extended to be used with detection of other objects with different neural net structure.

Requirements

Python 3.5, Tensorflow 1.4.0, Keras 2.1.3

How to run:

  • python r01_train_neural_net_and_prepare_initial_weights.py
  • python r02_rescale_weights_to_use_fixed_point_representation.py
  • python r03_find_optimal_bit_for_weights.py
  • python r04_verilog_generator_grayscale_file.py
  • python r05_verilog_generator_neural_net_structure.py

Verilog already added in repository in ''verilog'' folder. It has everything you need including all code to interact with camera or screen. Neural net verilog description is located in ''verliog/code/neuroset'' folder.

Neural net structure

Neural Net Structure

Device

To recreate the device you need 3 components:

Connection of components

Connection scheme

De0-Nano connection

Connection photo

Demo video with detection

Convolutional Neural Net implementation in FPGA (Demo)

Notes

  • You can change constant num_conv = 2 in r05_verilog_generator_neural_net_structure.py to 1, 2 or 4 convolutional blocks which will work in parallel. More blocks will require more LE in FPGA, but increase the overall speed.

  • Comparison table for different bit weights and number of convolution blocks below (red rows: unable to synthesize, due to Cyclone IV limitations).

Used FPGA resources

Related project

The similar project but with more complicated and widely used neural net: MobileNet (v1). It uses some other set of devices. It has similar code structure. It has fast speed (>40 FPS) and much better accuracy comparing to this project. It suitable for most image classification tasks in real time.

Citation

You can find detailed description of the method in our paper (or unpaywalled preprint). If you find this work useful, please consider citing:

  @inproceedings{solovyev2019fixed,
    title={Fixed-point convolutional neural network for real-time video processing in FPGA},
    author={Solovyev, Roman and Kustov, Alexander and Telpukhov, Dmitry and Rukhlov, Vladimir and Kalinin, Alexandr},
    booktitle={2019 IEEE Conference of Russian Young Researchers in Electrical and Electronic Engineering (EIConRus)},
    pages={1605--1611},
    year={2019},
    organization={IEEE}
  }
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].