O MMDNN é uma ferramenta abrangente e cruzada para converter, visualizar e diagnosticar modelos de aprendizado profundo (DL). O "MM" significa gerenciamento de modelos e "DNN" é o acrônimo da rede neural profunda.
Os principais recursos incluem:
Conversão de modelos
Reciclagem de modelo
Pesquisa e visualização de modelos
Modelo de implantação
Fornecemos algumas diretrizes para ajudá -lo a implantar modelos DL em outra plataforma de hardware.
Fornecemos um guia para ajudá -lo a acelerar a inferência com o Tensorrt.
Direcionar a abertura e avançar a tecnologia de ponta, a Microsoft Research (MSR) e o Microsoft Software Technology Center (STC) também lançaram alguns outros projetos de código aberto:
Incentivamos pesquisadores, desenvolvedores e estudantes a alavancar esses projetos para aumentar sua produtividade de IA / aprendizado profundo.
Você pode obter uma versão estável do mmdnn por
pip install mmdnnE certifique -se de instalar o Python ou você pode experimentar a versão mais recente por
pip install -U git+https://github.com/Microsoft/MMdnn.git@masterO MMDNN fornece uma imagem do Docker, que empacota MMDNN e estruturas de aprendizado profundo que apoiamos, bem como outras dependências. Você pode experimentar facilmente a imagem com as seguintes etapas:
Instale o Docker Community Edition (CE)
Saiba mais sobre como instalar o Docker
Puxe a imagem do docker mmdnn
docker pull mmdnn/mmdnn:cpu.smallExecute a imagem em um modo interativo
docker run -it mmdnn/mmdnn:cpu.smallEm toda a indústria e academia, existem várias estruturas existentes disponíveis para desenvolvedores e pesquisadores projetar um modelo, onde cada estrutura tem sua própria definição de estrutura de rede e formato de modelo de salvamento. As lacunas entre as estruturas impedem a inter-operação dos modelos.
Fornecemos um conversor de modelo para ajudar os desenvolvedores a converter modelos entre estruturas por meio de um formato de representação intermediária.
[Nota] Você pode clicar nos links para obter leitura detalhada de cada estrutura.
A conversão do modelo entre estruturas suportadas atualmente é testada em alguns modelos ImageNet .
| Modelos | Caffe | Keras | Tensorflow | Cntk | Mxnet | Pytorch | Coreml | ONNX |
|---|---|---|---|---|---|---|---|---|
| VGG 19 | √ | √ | √ | √ | √ | √ | √ | √ |
| Início v1 | √ | √ | √ | √ | √ | √ | √ | √ |
| Início v3 | √ | √ | √ | √ | √ | √ | √ | √ |
| Início 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 | √ | √ |
Um comando para alcançar a conversão. Usando o tensorflow resnet v2 152 para pytorch como nosso exemplo.
$ 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.pthFeito.
Fornecemos um visualizador local para exibir a arquitetura de rede de um modelo de aprendizado profundo. Por favor, consulte a instrução.
Keras "Inception v3" para CNTK e questão relacionada
Modelo Tensorflow Slim "Resnet V2 152" para Pytorch
Modelo MXNET "LRESNET50E-IR" para Tensorflow e problema relacionado
Mxnet "resnet-152-11k" para pytorch
Outro exemplo de mxnet "resnet-152-11k" para pytorch
MXNET "Resnext" para Keras
Tensorflow "Resnet-101" para Pytorch
Tensorflow "MOMEL MNIST MLP" para CNTK
Tensorflow "insception_v3" para mxnet
Caffe "voc-fcn" para Tensorflow
Caffe "Alexnet" para Tensorflow
Caffe "Incception_v4" para Tensorflow
Caffe "vgg16_sod" para tensorflow
Caffe "SqueeZenet v1.1" para CNTK
A maioria das contribuições exige que você concorde com um Contrato de Licença de Colaborador (CLA) declarando que você tem o direito e realmente faz, conceda os direitos de usar sua contribuição. Para detalhes, visite https://cla.microsoft.com.
Quando você envia uma solicitação de tração, um CLA-bot determina automaticamente se você precisa fornecer um CLA e decorar o PR adequadamente (por exemplo, etiqueta, comentário). Simplesmente siga as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios usando nosso CLA.
Este projeto adotou o Código de Conduta Open Microsoft. Para obter mais informações, consulte o Código de Conduta Perguntas frequentes ou entre em contato com [email protected] com quaisquer perguntas ou comentários adicionais.
A representação intermediária armazena a arquitetura de rede em pesos binários e pré-treinados do Protobuf em formato nativo Numpy .
[Nota!] Atualmente, os dados de pesos de IR estão no formato NHWC (último canal).
Os detalhes estão em ops.txt e gráfico.proto. Novos operadores e quaisquer comentários são bem -vindos.
Estamos trabalhando em outras estruturas de conversão e visualização, como Pytorch, Coreml e assim por diante. Estamos investigando mais operadores relacionados à RNN. Quaisquer contribuições e sugestões são bem -vindas! Detalhes na diretriz de contribuição.
Yu Liu (Universidade de Pequim): Desenvolvedor e Mantenhador de Projetos
Cheng Chen (Microsoft Research Asia): Caffe, CNTK, Emissor Coreml, Keras, MxNet, Tensorflow
Jiahao Yao (Universidade de Pequim): Coreml, MXNET Emissor, Pytorch Parser; Página inicial
Ru Zhang (Academia Chinesa de Ciências): Emissor Coreml, Analisador Darknet, Keras, Analisador de gráficos congelados de tensorflow; Modelos YOLO e SSD; Testes
Yuhao Zhou (Xangai Jiao Tong University): MXNET
Tingting Qin (Microsoft Research Asia): Caffe Emissor
Tong Zhan (Microsoft): Onnx Emissor
Qianwen Wang (Universidade de Ciência e Tecnologia de Hong Kong): Visualização
Graças a Saumitro Dasgupta, o código inicial de Caffe -> Ir Converting é referências ao seu projeto Caffe -TensorFlow.
Licenciado sob a licença do MIT.