debughacker / GUINNESS

GUINNESS: A GUI-based binarized deep Neural NEtwork SyntheSizer toward an FPGA

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GUINNESS: A GUI based binarized Neural NEtwork SyntheSizer toward an FPGA (Trial version)

This GUI based framework includes both a training on a GPU, and a bitstream generation for an FPGA using the Xilinx Inc. SDSoC. This tool uses the Chainer deep learning framework to train a binarized CNN. Also, it uses optimization techniques for an FPGA implementation. Details are shown in following papers:

[Nakahara IPDPSW2017] H. Yonekawa and H. Nakahara, "On-Chip Memory Based Binarized Convolutional Deep Neural Network Applying Batch Normalization Free Technique on an FPGA," IPDPS Workshops, 2017, pp. 98-105.

[Nakahara FPL2017] H. Nakahara et al., "A Fully Connected Layer Elimination for a Binarized Convolutional Neural Network on an FPGA", FPL, 2017, pp. 1-4.

[Nakahara FPL2017 Demo] H. Nakahara et al., "A demonstration of the GUINNESS: A GUI based neural NEtwork SyntheSizer for an FPGA", FPL, 2017, page 1.

1. Requirements:

Ubuntu 16.04 LTS (14.04 LTS is also supported)

Python 3.5.1 (Note that, my recommendation is to install by Anaconda 4.1.0 (64bit)+Pyenv, for Japanese Only, I prepared the Python 3.5 by following http://blog.algolab.jp/post/2016/08/21/pyenv-anaconda-ubuntu/)

CUDA 8.0 (+GPU), CuDNN 6.0 (Also, you must sign up the NVidia developer account)

Chainer 1.24.0 + CuPy 2.0

Xilinx Inc. SDSoC 2017.2 (2016.4 is also supported for the low-end FPGAs only)

FPGA board: Xilinx ZC702, ZC706, ZCU102, Digilent Zedboard, Zybo
(Soon, I will support Intel's FPGAs!, and the PYNQ board)

PyQt4, matplotlib, OpenCV3, numpy, scipy, (Above libraries are installed by the Anaconda, however, you must individually install the OpenCV by "conda install -y -c menpo opencv3")

2. Setup Libraries

Install the following python libraries:

Chainer

sudo pip install chainer==1.24.0

PyQt4 (not PyQt5!), it is already installed by the Anaconda

sudo apt-get install python-qt4 pyqt4-dev-tools

OpenCV3

conda install -y -c menpo opencv3

3. Run GUINNESS

$ python guinness.py

4. Tutorial

Read a following document (25/Oct./2017 Updated!!)

1 The GUINNESS introduction and BCNN implementation on an FPGA
guinness_tutorial1_v2.pdf https://www.dropbox.com/s/oe6gptgyi4y92el/guinness_tutorial1_v2.pdf?dl=0

2 The GUINNESS for the Intel FPGAs (Soon, will be uploaded)

3 Pedestrian detection (Under preparing)

4 Make a custom IP core for your own FPGA board (Under preparing)

5. On-going works

This is a just trial version. I have already developed the extend version including following ones.

Supporing the Intel's FPGA (DE5-net, DE10-nano, and DE5a-net boards with the Intel SDK for OpenCL)

High performance image recognition (fully pipelined and SIMD CNNs)

Object detector on a low-cost FPGA (e.g., pedestrian detection)

If you are interesting the extended one, please, contact me.

6. Acknowledgements

This work is based on following projects:

Chainer binarized neural network by Daisuke Okanohara
https://github.com/hillbig/binary_net

Various CNN models including Deep Residual Networks (ResNet)
for CIFAR10 with Chainer by mitmul
https://github.com/mitmul/chainer-cifar10

This research is supported in part by the Grants in Aid for Scientistic Research of JSPS,
and an Accelerated Innovation Research Initiative Turning Top Science and Ideas into High-Impact
Values program(ACCEL) of JST. Also, thanks to the Xilinx University Program (XUP), Intel University Program, and the NVidia Corp.'s support.

About

GUINNESS: A GUI-based binarized deep Neural NEtwork SyntheSizer toward an FPGA

License:GNU General Public License v2.0


Languages

Language:Python 88.4%Language:C++ 11.6%