Giter VIP home page Giter VIP logo

menoh's Introduction

Menoh

travis Build status Coverity Scan Build Status

Menoh is DNN inference library with C API.

Menoh is released under MIT License.

DISCLAIMER: Menoh is still experimental. Use it at your own risk. In particular not all operators in ONNX are supported, so please check whether the operators used in your model are supported. We have checked that VGG16 and ResNet50 models converted by onnx-chainer work fine.

Document

This codebase contains C API and C++ API.

Goal

  • DNN Inference with CPU
  • ONNX support
  • Easy to use.

Related Projects

Installation using package manager or binary packages

  • For Windows users, prebuild libraries are available (see release) and Nuget package is available.
  • For macOS user, Homebrew tap repository is available.
  • For Ubuntu user, binary packages are available.
    $ curl -LO https://github.com/pfnet-research/menoh/releases/download/v1.1.1/ubuntu1604_mkl-dnn_0.16-1_amd64.deb
    $ curl -LO https://github.com/pfnet-research/menoh/releases/download/v1.1.1/ubuntu1604_menoh_1.1.1-1_amd64.deb
    $ curl -LO https://github.com/pfnet-research/menoh/releases/download/v1.1.1/ubuntu1604_menoh-dev_1.1.1-1_amd64.deb
    $ sudo apt install ./ubuntu1604_*_amd64.deb
    
    If you are using Ubuntu 18.04, please replace 1604 with 1804.

Installation from source

Requirements

  • MKL-DNN Library (0.14 or later)
  • Protocol Buffers (2.6.1 or later)

Build

Execute following commands in root directory.

python scripts/retrieve_data.py
mkdir build && cd build
cmake ..
make

See BUILDING.md for details.

Installation

Execute following command in build directory created at Build section.

make install

Run VGG16 example (it can run ResNet-50 as well)

Execute following command in root directory.

./example/vgg16_example_in_cpp

Result is here

vgg16 example
-18.1883 -26.5022 -20.0474 13.5325 -0.107129 0.76102 -23.9688 -24.218 -21.6314 14.2164 
top 5 categories are
8 0.885836 n01514859 hen
7 0.104591 n01514668 cock
86 0.00313584 n01807496 partridge
82 0.000934658 n01797886 ruffed grouse, partridge, Bonasa umbellus
97 0.000839487 n01847000 drake

You can also run ResNet-50

./example/vgg16_example_in_cpp -m ../data/resnet50.onnx

Please give --help option for details

./example/vgg16_example_in_cpp --help

Run test

Setup chainer

Then, execute following commands in root directory.

python scripts/gen_test_data.py
cd build
cmake -DENABLE_TEST=ON ..
make
./test/menoh_test.out

Current supported operators

Activation functions

  • Elu
  • LeakyRelu
  • Relu
  • Softmax
  • Tanh

Array manipulations

  • Concat

Neural network connections

  • Conv
  • ConvTranspose
  • FC

Mathematical functions

  • Abs
  • Add
  • Sqrt
  • Sum

Normalization functions

  • BatchNormalization
  • LRN

Spatial pooling

  • AveragePool
  • GlobalAveragePool
  • GlobalMaxPool
  • MaxPool

License

Menoh is released under MIT License. Please see the LICENSE file for details.

Pre-trained models downloaded via retrieve_data.py were converted by onnx-chainer. The original models were downloaded via ChainerCV. Check scripts/generate_vgg16_onnx.py and scripts/generate_resnet50_onnx.py and see the LICENSE of ChainerCV about each terms of use of the pre-trained models.

menoh's People

Contributors

awkrail avatar colspan avatar durswd avatar faithandbrave avatar gwtnb avatar hakuyume avatar hido avatar msakai avatar okapies avatar okdshin avatar playertwo avatar shinh avatar

Watchers

 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.