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.
MMdnn 是一个全面且跨框架的工具,用于转换、可视化和诊断深度学习(DL)模型。"MM"代表模型管理,而"dnn"是深度神经网络的缩写。
主要特性包括:
-
- 我们实现了通用转换器,可以在不同框架之间转换DL模型,这意味着您可以在一个框架下训练模型,然后在另一个框架下部署它。
-
模型再训练
- 在模型转换过程中,我们会生成一些代码片段,以简化后续的重训或推断。
-
模型搜索与可视化
-
模型部署
相关项目
为了开放性并推动前沿技术,微软研究(MSR) 和 微软软件技术中心(STC) 还发布了几个开源项目:
- OpenPAI:提供完整AI模型训练和资源管理能力的开源平台,易于扩展,支持各种规模的本地、云端和混合环境。
- FrameworkController:一个开源的通用 Kubernetes Pod 控制器,通过单个控制器编排各种应用程序。
- NNI:轻量但功能强大的工具包,帮助用户自动完成特征工程、神经架构搜索、超参数调优和模型压缩。
- NeuronBlocks:一个NLP深度学习建模工具包,让工程师像玩乐高一样构建DNN模型,目标是降低NLP深度神经网络模型构建(包括训练和推断阶段)的成本。
- SPTAG:空间分割树图(Space Partition Tree And Graph)是一个开源库,用于大规模向量近邻搜索场景。
我们鼓励研究人员、开发者和学生利用这些项目来提升他们的AI/深度学习生产力。
安装
手动安装
您可以通过以下命令获取MMdnn的稳定版本:
pip install mmdnn
确保已经安装了Python,或者可以尝试最新版本:
pip install -U git+https://github.com/Microsoft/MMdnn.git@master
使用Docker镜像安装
MMdnn 提供了Docker镜像,该镜像包含MMdnn以及我们支持的深度学习框架和其他依赖项。
-
安装Docker社区版(CE)
-
拉取MMdnn Docker镜像
docker pull mmdnn/mmdnn:cpu.small -
以交互模式运行镜像
docker run -it mmdnn/mmdnn:cpu.small
功能
模型转换
行业中和学术界存在多种可供开发者和研究人员设计模型的框架,每种框架都有自己的网络结构定义和模型保存格式。这些框架之间的差异阻碍了模型之间的互操作性。

我们提供了一个模型转换器,帮助开发者通过中间表示格式在不同框架间转换模型。
支持的框架
[注] 点击各链接可查看每个框架的详细README。
- Caffe
- 微软认知工具包(CNTK)
- CoreML
- Keras
- MXNet
- ONNX(仅作为目标)
- PyTorch
- TensorFlow(实验性)(强烈建议先阅读TensorFlow的README)
- DarkNet(源码仅,实验)
测试模型
目前支持的框架之间对一些ImageNet模型进行了模型转换测试。
| 模型 | 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(需要帮助)
- Chainer(需要帮助)
进行中的模型
- 面部检测
- 语义分割
- 图像风格转换
- 对象检测
- RNN
模型可视化
我们提供了一个本地可视化器,用于展示深度学习模型的网络架构。请参考说明文档。
示例
官方教程
- 从 Keras 到 CNTK 的“inception V3”模型 和 相关问题
- 从 TensorFlow Slim 到 PyTorch 的 “ResNet V2 152”模型
- 从 Mxnet 到 TensorFlow 的 “LResNet50E-IR”模型 和 相关问题
用户示例
- 从 MXNet 到 PyTorch 的 “ResNet-152-11k”模型
- 另一个 MXNet 的 “ResNet-152-11k”到 PyTorch 的示例
- 从 MXNet 到 Keras 的 “ResNeXt”模型
- 从 TensorFlow 到 PyTorch 的 “ResNet-101”模型
- 从 TensorFlow 到 CNTK 的 “mnist mlp 模型”
- 从 TensorFlow 到 MXNet 的 “Inception_v3”模型
- 从 Caffe 到 TensorFlow 的 “voc-fcn”模型
- 从 Caffe 到 TensorFlow 的 “AlexNet”模型
- 从 Caffe 到 TensorFlow 的 “inception_v4”模型
- 从 Caffe 到 TensorFlow 的 “VGG16_SOD”模型
- 从 Caffe 到 CNTK 的 “SqueezeNet v1.1”模型
贡献
大多数贡献需要您签署一个贡献者许可协议(CLA),声明您有权并确实授予我们使用您的贡献的权利。详情访问 https://cla.microsoft.com/。
当你提交一个拉取请求时,CLA 机器人会自动确定是否需要提供 CLA,并相应地装饰 PR(例如,标签、评论)。只需按照机器人提供的指示操作即可。您只需在所有使用我们 CLA 的仓库中执行一次此操作。
该项目已采纳 微软开源行为准则。更多信息见 行为准则常见问答 或联系 opencode@microsoft.com 以提出其他问题或评论。
中间表示
中间表示以protobuf二进制格式存储网络架构,以NumPy本机格式存储预训练权重。
[注意!] 当前 IR 权重数据采用的是 NHWC(通道最后)格式。
详细信息可在 ops.txt 和 graph.proto 中查看。欢迎新操作符和任何建议。
框架
我们正在努力开发其他框架的转换和可视化功能,如 PyTorch、CoreML 等。我们也在调查更多与 RNN 相关的操作。欢迎任何贡献和建议!详情参阅 贡献指南。
作者
- 刘玉(北京大学):项目开发者及维护者
- 陈诚(微软亚洲研究院):Caffe、CNTK、CoreML 发射器、Keras、MXNet、TensorFlow
- 饶嘉豪(北京大学):CoreML、MXNet 发射器、PyTorch 解析器;主页
- 张如(中国科学院):CoreML 发射器、DarkNet 解析器、Keras、TensorFlow 冻结图解析器;Yolo 和 SSD 模型;测试
- 周渝皓(上海交通大学):MXNet
- 秦彤(微软):ONNX 发射器
- 王茜文(香港科技大学):可视化
致谢
感谢 Saumitro Dasgupta,初始的 caffe 到 IR 转换 代码参考了他的项目 caffe-tensorflow。
许可证
根据 MIT 许可证授权。
项目介绍
MMdnn 是一套工具,旨在协助用户在不同深度学习框架之间进行互操作,例如模型的转换与可视化。该工具能够实现 Caffe、Keras、MXNet、Tensorflow、CNTK、PyTorch、Onnx 以及 CoreML 之间模型的转换。【此简介由AI生成】
下载使用量
项目总下载次数(含Clone、Pull、 zip 包及 release 下载),每日凌晨更新