Code Monkey home page Code Monkey logo

modular_cnn's Introduction

Modular CNN

This work presents a C++-basedsoftware library of reusable modules to build arbitrary CNNs that sup-port High-Level-Synthesis to be implemented as FPGA hardware acceler-ators for the inference process. Our work demonstrates how parametriza-tion and modularization of basic building blocks of a CNN enable aneasier customization of the hardware to match the software model. Thisproject also works with low-precision parameters throughout the CNN,in order to provide a more resource-efficient implementation

Instructions

As of now, there are only the HLS soruces for each layer

  1. Create a Viviado HLS project, add core.cpp and core.h as sources. (check the main function name of core.cpp in each layer to know which name to put in as 'top layer')
  2. add test_core.cpp, testUtils.cpp, and testUtils.h as testbench.
  3. Modify the parameters in core.h according to each layer needs (i.e. number of kernels, size of kernels, etc.)
  4. Compile it, test it if needed with a testbench.
  5. Sintetize it and export it as IP
  6. Add in Vivado as IP block.
  7. The python script in the data_proc folder can be used to convert a hdf5 file (a save file from tensorflow for example) into c header files to use directly with the IP blocks.

Published paper

16th Arc 2020, link coming soon

modular_cnn's People

Contributors

munozher avatar

Stargazers

Jason  avatar

Watchers

James Cloos avatar Marcelo Brandalero avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.