All Projects → ZFTurbo → MobileNet-in-FPGA

ZFTurbo / MobileNet-in-FPGA

Licence: other
Generator of verilog description for FPGA MobileNet implementation

Programming Languages

Verilog
626 projects
python
139335 projects - #7 most used programming language
shell
77523 projects
tcl
693 projects

Projects that are alternatives of or similar to MobileNet-in-FPGA

LVDS-7-to-1-Serializer
An Verilog implementation of 7-to-1 LVDS Serializer. Which can be used for comunicating FPGAs with LVDS TFT Screens.
Stars: ✭ 33 (-69.16%)
Mutual labels:  fpga, verilog
async fifo
A dual clock asynchronous FIFO written in verilog, tested with Icarus Verilog
Stars: ✭ 117 (+9.35%)
Mutual labels:  fpga, verilog
yafpgatetris
Yet Another Tetris on FPGA Implementation
Stars: ✭ 29 (-72.9%)
Mutual labels:  fpga, verilog
spu32
Small Processing Unit 32: A compact RV32I CPU written in Verilog
Stars: ✭ 51 (-52.34%)
Mutual labels:  fpga, verilog
verilog-sid-mos6581
MOS6581 SID chip emulator in SystemVerilog
Stars: ✭ 22 (-79.44%)
Mutual labels:  fpga, verilog
FPGA ThreeLevelStorage
【原创,已被编入官方教材】Three-level storage subsystem(SD+DDR2 SDRAM+Cache), based on Nexys4 FPGA board. 同济大学计算机系统结构课程设计,FPGA三级存储子系统。
Stars: ✭ 86 (-19.63%)
Mutual labels:  fpga, verilog
yahdl
A programming language for FPGAs.
Stars: ✭ 20 (-81.31%)
Mutual labels:  fpga, verilog
SpinalDev
Docker Development Environment for SpinalHDL
Stars: ✭ 17 (-84.11%)
Mutual labels:  fpga, verilog
sphinxcontrib-hdl-diagrams
Sphinx Extension which generates various types of diagrams from Verilog code.
Stars: ✭ 37 (-65.42%)
Mutual labels:  fpga, verilog
drec-fpga-intro
Materials for "Introduction to FPGA and Verilog" at MIPT DREC
Stars: ✭ 66 (-38.32%)
Mutual labels:  fpga, verilog
vscode-terosHDL
VHDL and Verilog/SV IDE: state machine viewer, linter, documentation, snippets... and more!
Stars: ✭ 325 (+203.74%)
Mutual labels:  fpga, verilog
cnn open
A hardware implementation of CNN, written by Verilog and synthesized on FPGA
Stars: ✭ 157 (+46.73%)
Mutual labels:  fpga, verilog
vga-clock
Show the time on a VGA monitor. Submitted for the Google MPW1 ASIC shuttle.
Stars: ✭ 48 (-55.14%)
Mutual labels:  fpga, verilog
virtio
Virtio implementation in SystemVerilog
Stars: ✭ 38 (-64.49%)
Mutual labels:  fpga, verilog
kianRiscV
KianRISC-V! No RISC-V, no fun! RISC-V CPU with strong design rules and unittested! CPU you can trust! kianv rv32im risc-v a hdmi soc with harris computer architecture in verilog: multicycle, singlecycle and 5-stage pipelining Processor. Multicycle Soc with firmware that runs raytracer, mandelbrot, 3d hdmi gfx, dma controller, etc.....
Stars: ✭ 167 (+56.07%)
Mutual labels:  fpga, verilog
xeda
Cross EDA Abstraction and Automation
Stars: ✭ 25 (-76.64%)
Mutual labels:  fpga, verilog
Basic verilog
Must-have verilog systemverilog modules
Stars: ✭ 247 (+130.84%)
Mutual labels:  fpga, verilog
fpga-docker
Tools for running FPGA vendor toolchains with Docker
Stars: ✭ 54 (-49.53%)
Mutual labels:  fpga, verilog
ics-adpcm
Programmable multichannel ADPCM decoder for FPGA
Stars: ✭ 18 (-83.18%)
Mutual labels:  fpga, verilog
platform-lattice ice40
Lattice iCE40: development platform for PlatformIO
Stars: ✭ 34 (-68.22%)
Mutual labels:  fpga, verilog

MobileNet in FPGA

Generator of verilog description for FPGA MobileNet implementation. There are several pre-trained models available for frequent tasks like detection of people, cars and animals. You can train your own model easily on your dataset using code from this repository and have the same very fast detector on FPGA working in real time for your own task.

Software requirements

Python 3.*, keras 2.2.4, tensorflow, kito

Hardware requirements

  1. TFT-screen ILI9341 Size: 2.8", Resolution: 240x320, Interface: SPI
  2. Camera OV5640. Active array size: 2592 x 1944
  3. OpenVINO Starter Kit. Cyclone V (301K LE, 13,917 Kbits embedded memory)

Demo

Youtube demo

How to run

  1. python3 r01_prepare_open_images_dataset.py - it will create training files using Open Images Dataset (OID).
  2. python3 r02_train_mobilenet.py - run training process. Will create weights for model and output accuracy of model.
  3. python3 r03_mobilenet_v1_reduce_and_scale_model.py - batchnorm fusion and rescale model on range (0, 1) instead of (0, 6). Returns new rescaled model

Note: You can skip part 1, 2 and 3 if you use our pretrained weight files below

  1. python3 r04_find_optimal_bit_for_weights.py - code to find optimal bit for feature maps, weights and biases, also returns maximum overflow for weights and biases over 1.0 value.
  2. python3 r05_gen_weights_in_verilog_format.py - generate weights in verliog format using optimal bits from previous step
  3. python3 r06_generate_debug_data.py - generate intermediate feature maps for each layer and details about first pixel calculation (can be used for debug)
  4. python3 r07_generate_verilog_for_mobilenet.py - generate verilog based on given model and parameters like number of convolution blocks

Updates

  • 2019.10.04 We greatly improved speed of image reading and preprocessing. Now it takes only 5% of total time instead of 77% earlier. Speed for 8 convolution version of device increased from ~10 FPS up to ~ 40 FPS.

Pre-trained models

People detector (128px) Cars detector (128px) Animals detector (128px)
Accuracy (%) 84.42 96.31 89.67
Init model (can be used for training and fine-tuning) people.h5 cars.h5 animals.h5
Reduced and rescaled model people.h5 cars.h5 animals.h5
Optimal bits found 12, 11, 10, 7, 3 10, 9, 8, 7, 3 12, 11, 10, 7, 3
Quartus project (verilog) link link link

Connection of peripherals

Connection of peripherals

Writing weights in memory

See guide

Description of method

Innovate FPGA

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