MMDNN es una herramienta integral y de trabajo cruzado para convertir, visualizar y diagnosticar modelos de aprendizaje profundo (DL). El "MM" significa Gestión del Modelo, y "DNN" es el acrónimo de la red neuronal profunda.
Las características principales incluyen:
Conversión de modelo
Reentrenamiento modelo
Búsqueda de modelos y visualización
Despliegue de modelo
Brindamos algunas pautas para ayudarlo a implementar modelos DL en otra plataforma de hardware.
Proporcionamos una guía para ayudarlo a acelerar la inferencia con Tensorrt.
Dirigirse a la apertura y avanzar en la tecnología de última generación, Microsoft Research (MSR) y Microsoft Software Technology Center (STC) también habían publicado algunos otros proyectos de código abierto:
Alentamos a los investigadores, desarrolladores y estudiantes a aprovechar estos proyectos para impulsar su productividad de IA / aprendizaje profundo.
Puede obtener una versión estable de mmdnn por
pip install mmdnnY asegúrese de tener instalado Python o puede probar la versión más reciente por
pip install -U git+https://github.com/Microsoft/MMdnn.git@masterMMDNN proporciona una imagen Docker, que empaqueta los marcos de aprendizaje MMDNN y Deep Learning que apoyamos, así como otras dependencias. Puede probar fácilmente la imagen con los siguientes pasos:
Instalar Docker Community Edition (CE)
Obtenga más información sobre cómo instalar Docker
Pull Mmdnn Docker Imagen
docker pull mmdnn/mmdnn:cpu.smallEjecutar la imagen en modo interactivo
docker run -it mmdnn/mmdnn:cpu.smallEn toda la industria y la academia, hay una serie de marcos existentes disponibles para que los desarrolladores e investigadores diseñen un modelo, donde cada marco tiene su propia definición de estructura de red y formato de modelos de ahorro. Las brechas entre los marcos impiden la interoperación de los modelos.
Proporcionamos un convertidor de modelo para ayudar a los desarrolladores a convertir modelos entre marcos a través de un formato de representación intermedio.
[Nota] Puede hacer clic en los enlaces para obtener un readme detallado de cada marco.
La conversión del modelo entre los marcos compatibles actualmente se prueba en algunos modelos ImageNet .
| Modelos | Cafetería | Keras | Flujo tensor | Cittk | Mxnet | Pytorch | Core | ONNX |
|---|---|---|---|---|---|---|---|---|
| VGG 19 | √ | √ | √ | √ | √ | √ | √ | √ |
| Inception V1 | √ | √ | √ | √ | √ | √ | √ | √ |
| Inception V3 | √ | √ | √ | √ | √ | √ | √ | √ |
| Inception v4 | √ | √ | √ | O | √ | √ | √ | √ |
| Resnet v1 | × | √ | √ | O | √ | √ | √ | √ |
| Resnet v2 | √ | √ | √ | √ | √ | √ | √ | √ |
| Mobilenet V1 | × | √ | √ | O | √ | √ | √ | √ |
| Mobilenet V2 | × | √ | √ | O | √ | √ | √ | √ |
| Xcepción | √ | √ | √ | O | × | √ | √ | √ |
| Squeezenet | √ | √ | √ | √ | √ | √ | √ | √ |
| Densenet | √ | √ | √ | √ | √ | √ | √ | √ |
| Nasnet | incógnita | √ | √ | O | √ | √ | √ | incógnita |
| Resnext | √ | √ | √ | √ | √ | √ | √ | √ |
| VOC FCN | √ | √ | ||||||
| Yolo3 | √ | √ |
Un comando para lograr la conversión. Uso de TensorFlow ResNet V2 152 a Pytorch como nuestro ejemplo.
$ 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.pthHecho.
Proporcionamos un visualizador local para mostrar la arquitectura de red de un modelo de aprendizaje profundo. Consulte la instrucción.
Keras "Inception V3" a CNTK y un problema relacionado
TensorFlow Slim Model "Resnet V2 152" a Pytorch
Modelo MXNET "LRESNET50E-IR" a TensorFlow y un problema relacionado
MXNET "RESNET-152-11K" para pytorch
Otro ejemplo de mxnet "resnet-152-11k" a Pytorch
Mxnet "resnext" a keras
Tensorflow "resnet-101" a Pytorch
Tensorflow "Modelo MLP MNIST" para cntk
TensorFlow "Inception_V3" a MXNET
Caffe "VOC-FCN" a TensorFlow
Caffe "Alexnet" a TensorFlow
Caffe "Inception_V4" a TensorFlow
Caffe "VGG16_SOD" a TensorFlow
Caffe "Squeezenet V1.1" para cntk
La mayoría de las contribuciones requieren que acepte un Acuerdo de Licencia de Contributor (CLA) que declare que tiene derecho y realmente hacer, otorgándonos los derechos para usar su contribución. Para más detalles, visite https://cla.microsoft.com.
Cuando envíe una solicitud de extracción, un bote CLA determinará automáticamente si necesita proporcionar un CLA y decorar el PR de manera apropiada (por ejemplo, etiqueta, comentario). Simplemente siga las instrucciones proporcionadas por el bot. Solo necesitará hacer esto una vez en todos los reposos usando nuestro CLA.
Este proyecto ha adoptado el Código de Conducta Open Open Microsoft. Para obtener más información, consulte el Código de Conducta Preguntas frecuentes o comuníquese con [email protected] con cualquier pregunta o comentario adicional.
La representación intermedia almacena la arquitectura de red en pesos binarios de ProtoBuf y pretrontrados en formato nativo numpy .
[¡NOTA!] Actualmente, los datos de pesas IR están en formato NHWC (Channel Last).
Los detalles están en OPS.txt y Graph.proto. Los nuevos operadores y cualquier comentario son bienvenidos.
Estamos trabajando en otros marcos de conversión y visualización, como Pytorch, Coreml, etc. Estamos investigando más operadores relacionados con RNN. ¡Cualquier contribución y sugerencia es bienvenida! Detalles en la guía de contribución.
Yu Liu (Universidad de Pekín): Desarrollador y mantenedor de proyectos
Cheng Chen (Microsoft Research Asia): Caffe, CNTK, Coreml Emister, Keras, MXNet, TensorFlow
Jiahao Yao (Universidad de Pekín): Coreml, MXNET EMITTER, Pytorch Parser; Página principal
Ru Zhang (Academia de Ciencias de China): Emisor de Coreml, analizador Darknet, Keras, TensorFlow Frozen Graph Parser; Modelos de Yolo y SSD; Pruebas
Yuhao Zhou (Universidad de Shanghai Jiao Tong): mxnet
Tingting Qin (Microsoft Research Asia): Caffe Emister
Tong Zhan (Microsoft): emisor ONNX
Qianwen Wang (Universidad de Ciencia y Tecnología de Hong Kong): Visualización
Gracias a Saumitro Dasgupta, el código inicial de Caffe -> IR Converting es referencias a su proyecto Caffe -TensorFlow.
Licenciado bajo la licencia del MIT.