Coder Social home page Coder Social logo

abonas / mmdnn Goto Github PK

View Code? Open in Web Editor NEW

This project forked from microsoft/mmdnn

0.0 3.0 0.0 35.91 MB

MMdnn is a set of tools to help users inter-operate among different deep learning frameworks. E.g. model conversion and visualization. Convert models between Caffe, Keras, MXNet, Tensorflow, CNTK, PyTorch Onnx and CoreML.

License: MIT License

Python 93.92% HTML 0.31% TypeScript 2.14% CSS 0.89% JavaScript 2.65% Shell 0.08%

mmdnn's Introduction

MMdnn MMdnn

License Linux

A comprehensive, cross-framework solution to convert, visualize and diagnosis deep neural network models. The "MM" in MMdnn stands for model management and "dnn" is an acronym for deep neural network.

Typically people use deep neural network with following steps:

--------------                                               --------------
| Find model | --------------------------------------------> | Deployment |
--------------      |                                        --------------
                    |                                            ^    ^
                    |        --------------                      |    |
                    -------> | Conversion | ----------------------    |
                             --------------                           |
                                   |                                  |
                                   |           -----------            |
                                   ----------> | Retrain | ------------
                                               -----------

In MMdnn, we focus on helping user handle their work better.

  • Find model

  • Conversion

    • We implement an universal convertor to convert DNN models between frameworks, which means you can train on one framework and deploy on another.
  • Retrain

    • In convertor, we can generate some training/inference code snippet to simplify the retrain/evaluate work.
  • Deployment

    • We provide some guidelines to help you deploy your models to other hardware platform.
    • We provide a guide to help you accelerate inference with TensorRT.

This project is designed and developed by Microsoft Research (MSR). We also encourage researchers and students leverage this project to analysis DNN models and we welcome any new ideas to extend this project.

Installation

Install manually

You can get stable version of MMdnn by

pip install mmdnn

or you can try the newest version by

pip install -U git+https://github.com/Microsoft/MMdnn.git@master

Install with docker image

MMdnn provides a docker image, which packaged mmdnn, deep learning frameworks we supported and other dependencies in one image. You can easily get the image in several steps:

  1. Install Docker Community Edition(CE)

    Learn more about how to install docker

  2. Pull MMdnn docker image

    docker pull mmdnn/mmdnn:cpu.small
  3. Run image in interactive mode

    docker run -it mmdnn/mmdnn:cpu.small

Features

Across the industry and academia, there are a number of existing frameworks available for developers and researchers to design a model, where each framework has its own network structure definition and saving model format. The gaps between frameworks impede the inter-operation of the models.

We provide a model converter to help developers convert models between frameworks, through an intermediate representation format.

Support frameworks

[Note] You can click the links to get detail README of each framework

Tested models

The model conversion between currently supported frameworks is tested on some ImageNet models.

Models Caffe Keras Tensorflow CNTK MXNet PyTorch CoreML ONNX
VGG 19
Inception V1
Inception V3
Inception V4 o
ResNet V1 × o
ResNet V2
MobileNet V1 × o
MobileNet V2 × o
Xception o ×
SqueezeNet
DenseNet
NASNet x o x
ResNext
voc FCN
Yolo3

Usage

One command to achieve the conversion. Use a TensorFlow ResNet V2 152 to PyTorch as our example.

$ mmdownload -f tensorflow -n resnet_v2_152 -o ./
$ mmconvert -sf tensorflow -in imagenet_resnet_v2_152.ckpt.meta -iw imagenet_resnet_v2_152.ckpt --dstNodeName MMdnn_Output -df pytorch -om tf_resnet_to_pth.pth

Done.

On-going frameworks

  • Torch7 (help wants)
  • Chainer (help wants)

On-going Models

  • Face Detection
  • Semantic Segmentation
  • Image Style Transfer
  • Object Detection
  • RNN

You can use the MMdnn model visualizer and submit your IR json file to visualize your model. In order to run the commands below, you will need to install requests, keras, and Tensorflow using your favorite package manager.

Use the Keras "inception_v3" model as an example again.

  1. Download the pre-trained models
$ mmdownload -f keras -n inception_v3
  1. Convert the pre-trained model files into intermediate representation
$ mmtoir -f keras -w imagenet_inception_v3.h5 -o keras_inception_v3
  1. Open the MMdnn model visualizer and choose file keras_inception_v3.json

vismmdnn


Examples

Official Tutorial

Users' Examples


Contributing

Intermediate Representation

The intermediate representation stores the network architecture in protobuf binary and pre-trained weights in NumPy native format.

[Note!] Currently the IR weights data is in NHWC (channel last) format.

Details are in ops.txt and graph.proto. New operators and any comments are welcome.

Frameworks

We are working on other frameworks conversion and visualization, such as PyTorch, CoreML and so on. And more RNN related operators are investigating. Any contributions and suggestions are welcome! Details in Contribution Guideline

License

Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Authors

Cheng CHEN (Microsoft Research Asia): Project Manager; Caffe, CNTK, CoreML Emitter, Keras, MXNet, TensorFlow

Jiahao YAO (Peking University): CoreML, MXNet Emitter, PyTorch Parser; HomePage

Ru ZHANG (Chinese Academy of Sciences): CoreML Emitter, DarkNet Parser, Keras, TensorFlow frozen graph Parser; Yolo and SSD models; Tests

Yuhao ZHOU (Shanghai Jiao Tong University): MXNet

Tingting QIN (Microsoft Research Asia): Caffe Emitter

Tong ZHAN (Microsoft): ONNX Emitter

Qianwen WANG (Hong Kong University of Science and Technology): Visualization

Acknowledgements

Thanks to Saumitro Dasgupta, the initial code of caffe -> IR converting is references to his project caffe-tensorflow.

mmdnn's People

Contributors

kitstar avatar namizzz avatar jiahaoyao avatar zhantong avatar tobeyqin avatar gzuidhof avatar chenghaz avatar liangfu avatar galli-leo avatar kingofthebongo2008 avatar bharathgs avatar rainliuplus avatar wangqianwen0418 avatar wagamama avatar zhangsodagreen avatar luuil avatar 2yz avatar microsoftopensource avatar dhaase-de avatar kant avatar fran6co avatar gwinhen avatar isikdogan avatar msftgits avatar skybigzhou avatar erfan-matroid avatar gongwuji avatar mwinkle avatar zhongchengyong avatar wfus avatar

Watchers

James Cloos avatar  avatar  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.