深度学习各网络模型相互转换-MMdnn
Github
https://github.com/Microsoft/MMdnn
一个全面的,跨框架的解决方案转换,可视化和诊断深度神经网络模型。MMdnn中的“MM”代表模型管理,“dnn”是deep neural network的首字母缩写。
通常人们使用深层神经网络的步骤如下:
-------------- --------------
| Find model | --------------------------------------------> | Deployment |
-------------- | --------------
| ^ ^
| -------------- | |
-------> | Conversion | ---------------------- |
-------------- |
| |
| ----------- |
----------> | Retrain | ------------
-----------
在MMdnn中,我们致力于帮助用户更好地处理他们的工作。
- Find Model(找到模型)
- 我们提供一个模型集合来帮助您找到一些流行的模型。
- 我们提供了一个模型可视化器来更直观地显示网络架构。
- Conversion(转换)
- 我们实现了一个通用转换器来在框架之间转换DNN模型,这意味着您可以在一个框架上训练并在另一个框架上部署。
- Retrain(重新训练)
- 在转换器中,我们可以生成一些训练/推断代码片段来简化再训练/评估工作。
- Deployment(发布)
- 我们提供了一些方法来帮助您将模型部署到其他硬件平台。
- 安卓
- Serving
- 我们提供了一些方法来帮助您将模型部署到其他硬件平台。
该项目由微软研究院(MSR)设计开发。我们也鼓励研究人员和学生利用这个项目来分析DNN模型,我们欢迎任何新的想法来扩展这个项目。
安装方法:
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
特性
Model Conversion 模型转换
在整个行业和学术界,有许多现有框架可供开发人员和研究人员设计模型,其中每个框架都有自己的网络结构定义和保存模型格式。框架之间的差异阻碍了模型的互操作。
我们提供了一个模型转换器来帮助开发人员通过中间表示格式在框架之间转换模型。
支持的框架有:
- Caffe
- Microsoft Cognitive Toolkit (CNTK)
- CoreML
- Keras
- MXNet
- ONNX (Destination only)
- PyTorch
- Tensorflow (Experimental) (Highly recommend you read the README of tensorflow firstly)
- DarkNet (Source only, Experiment)
测试过的模型:
这个模型转换器在下面的框架上经过了转换测试,用的是ImageNet的模型进行相互转换的。
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 | √ | √ |
使用方法
一句命令即可实现转换。我们看个从TensorFlow ResNet V2 152到PyTorch转换的示例。
$ 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
正在开发支持的框架:
- Torch7 (help wants)
- Chainer (help wants)
正在开发支持的模型:
模型可视化
您可以使用MMdnn模型可视化器并提交IR json文件来可视化模型。为了运行下面的命令,您需要安装requests、keras和Tensorflow。
Use the Keras "inception_v3" model as an example again.
下载这个预训练好的模型
$ mmdownload -f keras -n inception_v3
将预先训练好的模型文件转换为中间表示
$ mmtoir -f keras -w imagenet_inception_v3.h5 -o keras_inception_v3
- 打开 MMdnn model visualizer ,然后选择文件 keras_inception_v3.json
一些例子
Official Tutorial
Users' Examples
更多推荐
所有评论(0)