MMDNN est un outil complet et transframe pour convertir, visualiser et diagnostiquer les modèles d'apprentissage en profondeur (DL). Le "MM" signifie Model Management, et "DNN" est l'acronyme de Deep Neural Network.
Les principales caractéristiques comprennent:
Conversion de modèle
Recyclage du modèle
Recherche et visualisation du modèle
Déploiement de modèle
Nous fournissons quelques directives pour vous aider à déployer des modèles DL à une autre plate-forme matérielle.
Nous fournissons un guide pour vous aider à accélérer l'inférence avec Tensorrt.
Cibler sur l'ouverture et l'avancement de la technologie de pointe, Microsoft Research (MSR) et Microsoft Software Technology Center (STC) avaient également publié quelques autres projets open source:
Nous encourageons les chercheurs, les développeurs et les étudiants à tirer parti de ces projets pour augmenter leur productivité de l'IA / Deep Learning.
Vous pouvez obtenir une version stable de MMDNN par
pip install mmdnnEt assurez-vous d'installer Python ou vous pouvez essayer la dernière version par
pip install -U git+https://github.com/Microsoft/MMdnn.git@masterMMDNN fournit une image Docker, qui emballe les cadres MMDNN et Deep Learning que nous soutenons ainsi que d'autres dépendances. Vous pouvez facilement essayer l'image avec les étapes suivantes:
Installer Docker Community Edition (CE)
En savoir plus sur la façon d'installer Docker
Tirez l'image mmdnn docker
docker pull mmdnn/mmdnn:cpu.smallExécutez l'image dans un mode interactif
docker run -it mmdnn/mmdnn:cpu.smallDans l'ensemble de l'industrie et du monde universitaire, il existe un certain nombre de cadres existants disponibles pour les développeurs et les chercheurs pour concevoir un modèle, où chaque cadre a sa propre définition de structure de réseau et le format de modèle de sauvegarde. Les lacunes entre les cadres entravent l'interopération des modèles.
Nous fournissons un convertisseur de modèles pour aider les développeurs à convertir des modèles entre les cadres via un format de représentation intermédiaire.
[Remarque] Vous pouvez cliquer sur les liens pour obtenir une lecture détaillée de chaque cadre.
La conversion du modèle entre les cadres actuellement pris en charge est testée sur certains modèles ImageNet .
| Modèles | Caffe | Kéras | 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 | × | √ | √ | √ |
| Serrer | √ | √ | √ | √ | √ | √ | √ | √ |
| Denset | √ | √ | √ | √ | √ | √ | √ | √ |
| Nasnet | x | √ | √ | o | √ | √ | √ | x |
| Resnext | √ | √ | √ | √ | √ | √ | √ | √ |
| voc fcn | √ | √ | ||||||
| Yolo3 | √ | √ |
Une commande pour réaliser la conversion. Utilisation de TensorFlow Resnet V2 152 à Pytorch comme exemple.
$ 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.pthFait.
Nous fournissons un visualiseur local pour afficher l'architecture réseau d'un modèle d'apprentissage en profondeur. Veuillez vous référer à l'instruction.
Keras "Inception V3" à CNTK et problème connexe
TensorFlow Slim Modèle "Resnet V2 152" à Pytorch
Modèle MXNET "LRESNET50E-IR" à TensorFlow et à un problème connexe
MXNET "RESNET-152-11K" à Pytorch
Un autre exemple de MXNET "RESNET-152-11K" à Pytorch
MXNET "Resnext" à Keras
TensorFlow "Resnet-101" à Pytorch
TensorFlow "Mnist MLP Model" à CNTK
TensorFlow "INCEPTION_V3" à MXNET
Caffe "Voc-fcn" à Tensorflow
Caffe "Alexnet" à TensorFlow
Caffe "Inception_V4" à Tensorflow
Caffe "VGG16_SOD" à TensorFlow
Caffe "Squeezenet v1.1" à CNTK
La plupart des contributions vous obligent à accepter un contrat de licence de contributeur (CLA) déclarant que vous avez le droit de faire et en réellement, accordez-nous les droits d'utilisation de votre contribution. Pour plus de détails, visitez https://cla.microsoft.com.
Lorsque vous soumettez une demande de traction, un CLA-BOT déterminera automatiquement si vous devez fournir un CLA et décorer le PR de manière appropriée (par exemple, étiqueter, commentaire). Suivez simplement les instructions fournies par le bot. Vous n'aurez besoin de le faire qu'une seule fois sur tous les dépositions en utilisant notre CLA.
Ce projet a adopté le code de conduite open source Microsoft. Pour plus d'informations, consultez le code de conduite FAQ ou contactez [email protected] avec toute question ou commentaire supplémentaire.
La représentation intermédiaire stocke l' architecture du réseau dans les poids binaires et pré-formés Protobuf au format natif Numpy .
[Remarque!] Actuellement, les données de poids IR se trouvent au format NHWC (canal dernier).
Les détails sont dans Ops.txt et Graph.proto. Les nouveaux opérateurs et tous les commentaires sont les bienvenus.
Nous travaillons sur d'autres cadres de conversion et de visualisation, tels que Pytorch, Coreml, etc. Nous enquêtons sur plus d'opérateurs liés à RNN. Toutes les contributions et suggestions sont les bienvenues! Détails dans les directives de contribution.
Yu Liu (Université de Pékin): développeur de projet et mainteneur
Cheng Chen (Microsoft Research Asia): Caffe, CNTK, Coreml Emitte, Keras, Mxnet, Tensorflow
Jahahao Yao (Université de Pékin): Coreml, émetteur MXNET, analyseur Pytorch; Page d'accueil
Ru Zhang (Academy des sciences chinoises): Coreml Emitte, analyser Darknet, Keras, analyser graphique congelé Tensorflow; Modèles YOLO et SSD; Tests
Yuhao Zhou (Université Shanghai Jiao Tong): MXNET
Tingting Qin (Microsoft Research Asia): Caffe Emitte
Tong Zhan (Microsoft): émetteur Onnx
Qianwen Wang (Université des sciences et technologies de Hong Kong): Visualisation
Grâce à Saumitro Dasgupta, le code initial de Caffe -> IR Converting est des références à son projet Caffe-TensorFlow.
Licencié sous la licence du MIT.