From f4805f1588ca615b777f2e4d4f1ef096481a0b22 Mon Sep 17 00:00:00 2001 From: Wei Chu Date: Thu, 29 Apr 2021 15:03:39 -0700 Subject: [PATCH 1/2] add model support matrix --- python/mxnet/onnx/README.md | 171 +++++++++++++++ tools/onnx/generate_model_support_matrix.py | 221 ++++++++++++++++++++ 2 files changed, 392 insertions(+) create mode 100644 tools/onnx/generate_model_support_matrix.py diff --git a/python/mxnet/onnx/README.md b/python/mxnet/onnx/README.md index 48da01f05547..16ff71d9dc6b 100644 --- a/python/mxnet/onnx/README.md +++ b/python/mxnet/onnx/README.md @@ -181,5 +181,176 @@ If you are a user of earlier MXNet versions and do not want to upgrade MXNet, yo |zeros_like|1.7 1.8 | ### GluonCV Pretrained Model Support Matrix +|Image Classification| +|:-| +|alexnet| +|cifar_resnet20_v1| +|cifar_resnet56_v1| +|cifar_resnet110_v1| +|cifar_resnet20_v2| +|cifar_resnet56_v2| +|cifar_resnet110_v2| +|cifar_wideresnet16_10| +|cifar_wideresnet28_10| +|cifar_wideresnet40_8| +|cifar_resnext29_16x64d| +|darknet53| +|densenet121| +|densenet161| +|densenet169| +|densenet201| +|googlenet| +|mobilenet1.0| +|mobilenet0.75| +|mobilenet0.5| +|mobilenet0.25| +|mobilenetv2_1.0| +|mobilenetv2_0.75| +|mobilenetv2_0.5| +|mobilenetv2_0.25| +|mobilenetv3_large| +|mobilenetv3_small| +|resnest14| +|resnest26| +|resnest50| +|resnest101| +|resnest200| +|resnest269| +|resnet18_v1| +|resnet18_v1b_0.89| +|resnet18_v2| +|resnet34_v1| +|resnet34_v2| +|resnet50_v1| +|resnet50_v1d_0.86| +|resnet50_v1d_0.48| +|resnet50_v1d_0.37| +|resnet50_v1d_0.11| +|resnet50_v2| +|resnet101_v1| +|resnet101_v1d_0.76| +|resnet101_v1d_0.73| +|resnet101_v2| +|resnet152_v1| +|resnet152_v2| +|resnext50_32x4d| +|resnext101_32x4d| +|resnext101_64x4d| +|senet_154| +|se_resnext101_32x4d| +|se_resnext101_64x4d| +|se_resnext50_32x4d| +|squeezenet1.0| +|squeezenet1.1| +|vgg11| +|vgg11_bn| +|vgg13| +|vgg13_bn| +|vgg16| +|vgg16_bn| +|vgg19| +|vgg19_bn| +|xception| +|inceptionv3| + +|Object Detection| +|:-| +|center_net_resnet18_v1b_voc| +|center_net_resnet50_v1b_voc| +|center_net_resnet101_v1b_voc| +|center_net_resnet18_v1b_coco| +|center_net_resnet50_v1b_coco| +|center_net_resnet101_v1b_coco| +|ssd_300_vgg16_atrous_voc| +|ssd_512_vgg16_atrous_voc| +|ssd_512_resnet50_v1_voc| +|ssd_512_mobilenet1.0_voc| +|faster_rcnn_resnet50_v1b_voc| +|yolo3_darknet53_voc| +|yolo3_mobilenet1.0_voc| +|ssd_300_vgg16_atrous_coco| +|ssd_512_vgg16_atrous_coco| +|ssd_300_resnet34_v1b_coco| +|ssd_512_resnet50_v1_coco| +|ssd_512_mobilenet1.0_coco| +|faster_rcnn_resnet50_v1b_coco| +|faster_rcnn_resnet101_v1d_coco| +|yolo3_darknet53_coco| +|yolo3_mobilenet1.0_coco| +|faster_rcnn_fpn_resnet50_v1b_coco| +|faster_rcnn_fpn_resnet101_v1d_coco| +|mask_rcnn_fpn_resnet18_v1b_coco| +|mask_rcnn_resnet18_v1b_coco| +|mask_rcnn_resnet50_v1b_coco| +|mask_rcnn_resnet101_v1d_coco| +|mask_rcnn_fpn_resnet50_v1b_coco| +|mask_rcnn_fpn_resnet101_v1d_coco| + +|Image Segmentation| +|:-| +|fcn_resnet50_ade| +|fcn_resnet101_ade| +|deeplab_resnet50_ade| +|deeplab_resnet101_ade| +|deeplab_resnest50_ade| +|deeplab_resnest101_ade| +|deeplab_resnest269_ade| +|fcn_resnet101_coco| +|deeplab_resnet101_coco| +|fcn_resnet101_voc| +|deeplab_resnet101_voc| +|deeplab_resnet152_voc| +|deeplab_resnet50_citys| +|deeplab_resnet101_citys| +|deeplab_v3b_plus_wideresnet_citys| +|danet_resnet50_citys| +|danet_resnet101_citys| + +|Pose Estimation| +|:-| +|simple_pose_resnet18_v1b| +|simple_pose_resnet50_v1b| +|simple_pose_resnet50_v1d| +|simple_pose_resnet101_v1b| +|simple_pose_resnet101_v1d| +|simple_pose_resnet152_v1b| +|simple_pose_resnet152_v1d| +|alpha_pose_resnet101_v1b_coco| +|mobile_pose_resnet18_v1b| +|mobile_pose_resnet50_v1b| +|mobile_pose_mobilenet1.0| +|mobile_pose_mobilenetv2_1.0| +|mobile_pose_mobilenetv3_large| +|mobile_pose_mobilenetv3_small| + +|Action Estimation| +|:-| +|inceptionv1_kinetics400| +|resnet18_v1b_kinetics400| +|resnet34_v1b_kinetics400| +|resnet50_v1b_kinetics400| +|resnet101_v1b_kinetics400| +|resnet152_v1b_kinetics400| +|resnet50_v1b_hmdb51| +|resnet50_v1b_sthsthv2| +|vgg16_ucf101| +|inceptionv3_kinetics400| +|inceptionv3_ucf101| ### GluonNLP Pretrained Model Support Matrix +|NLP Models| +|:-| +|awd_lstm_lm_600| +|awd_lstm_lm_1150| +|bert_12_768_12| +|bert_24_1024_16| +|distilbert_6_768_12| +|ernie_12_768_12| +|gpt2_117m| +|gpt2_345m| +|roberta_12_768_12| +|roberta_24_1024_16| +|standard_lstm_lm_200| +|standard_lstm_lm_650| +|standard_lstm_lm_1500| +|transformer_en_de_512| \ No newline at end of file diff --git a/tools/onnx/generate_model_support_matrix.py b/tools/onnx/generate_model_support_matrix.py new file mode 100644 index 000000000000..8d2d29ab8162 --- /dev/null +++ b/tools/onnx/generate_model_support_matrix.py @@ -0,0 +1,221 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + + +img_class_models = [ + 'alexnet', + 'cifar_resnet20_v1', + 'cifar_resnet56_v1', + 'cifar_resnet110_v1', + 'cifar_resnet20_v2', + 'cifar_resnet56_v2', + 'cifar_resnet110_v2', + 'cifar_wideresnet16_10', + 'cifar_wideresnet28_10', + 'cifar_wideresnet40_8', + 'cifar_resnext29_16x64d', + 'darknet53', + 'densenet121', + 'densenet161', + 'densenet169', + 'densenet201', + 'googlenet', + 'mobilenet1.0', + 'mobilenet0.75', + 'mobilenet0.5', + 'mobilenet0.25', + 'mobilenetv2_1.0', + 'mobilenetv2_0.75', + 'mobilenetv2_0.5', + 'mobilenetv2_0.25', + 'mobilenetv3_large', + 'mobilenetv3_small', + 'resnest14', + 'resnest26', + 'resnest50', + 'resnest101', + 'resnest200', + 'resnest269', + 'resnet18_v1', + 'resnet18_v1b_0.89', + 'resnet18_v2', + 'resnet34_v1', + 'resnet34_v2', + 'resnet50_v1', + 'resnet50_v1d_0.86', + 'resnet50_v1d_0.48', + 'resnet50_v1d_0.37', + 'resnet50_v1d_0.11', + 'resnet50_v2', + 'resnet101_v1', + 'resnet101_v1d_0.76', + 'resnet101_v1d_0.73', + 'resnet101_v2', + 'resnet152_v1', + 'resnet152_v2', + 'resnext50_32x4d', + 'resnext101_32x4d', + 'resnext101_64x4d', + 'senet_154', + 'se_resnext101_32x4d', + 'se_resnext101_64x4d', + 'se_resnext50_32x4d', + 'squeezenet1.0', + 'squeezenet1.1', + 'vgg11', + 'vgg11_bn', + 'vgg13', + 'vgg13_bn', + 'vgg16', + 'vgg16_bn', + 'vgg19', + 'vgg19_bn', + 'xception', + 'inceptionv3' + ] + +obj_detect_models = [ + 'center_net_resnet18_v1b_voc', + 'center_net_resnet50_v1b_voc', + 'center_net_resnet101_v1b_voc', + 'center_net_resnet18_v1b_coco', + 'center_net_resnet50_v1b_coco', + 'center_net_resnet101_v1b_coco', + 'ssd_300_vgg16_atrous_voc', + 'ssd_512_vgg16_atrous_voc', + 'ssd_512_resnet50_v1_voc', + 'ssd_512_mobilenet1.0_voc', + 'faster_rcnn_resnet50_v1b_voc', + 'yolo3_darknet53_voc', + 'yolo3_mobilenet1.0_voc', + 'ssd_300_vgg16_atrous_coco', + 'ssd_512_vgg16_atrous_coco', + 'ssd_300_resnet34_v1b_coco', + 'ssd_512_resnet50_v1_coco', + 'ssd_512_mobilenet1.0_coco', + 'faster_rcnn_resnet50_v1b_coco', + 'faster_rcnn_resnet101_v1d_coco', + 'yolo3_darknet53_coco', + 'yolo3_mobilenet1.0_coco', + 'faster_rcnn_fpn_resnet50_v1b_coco', + 'faster_rcnn_fpn_resnet101_v1d_coco', + 'mask_rcnn_fpn_resnet18_v1b_coco', + 'mask_rcnn_resnet18_v1b_coco', + 'mask_rcnn_resnet50_v1b_coco', + 'mask_rcnn_resnet101_v1d_coco', + 'mask_rcnn_fpn_resnet50_v1b_coco', + 'mask_rcnn_fpn_resnet101_v1d_coco', + ] + +img_seg_models = [ + 'fcn_resnet50_ade', + 'fcn_resnet101_ade', + 'deeplab_resnet50_ade', + 'deeplab_resnet101_ade', + 'deeplab_resnest50_ade', + 'deeplab_resnest101_ade', + 'deeplab_resnest269_ade', + 'fcn_resnet101_coco', + 'deeplab_resnet101_coco', + 'fcn_resnet101_voc', + 'deeplab_resnet101_voc', + 'deeplab_resnet152_voc', + 'deeplab_resnet50_citys', + 'deeplab_resnet101_citys', + 'deeplab_v3b_plus_wideresnet_citys', + 'danet_resnet50_citys', + 'danet_resnet101_citys', + ] + +pose_est_models = [ + 'simple_pose_resnet18_v1b', + 'simple_pose_resnet50_v1b', + 'simple_pose_resnet50_v1d', + 'simple_pose_resnet101_v1b', + 'simple_pose_resnet101_v1d', + 'simple_pose_resnet152_v1b', + 'simple_pose_resnet152_v1d', + 'alpha_pose_resnet101_v1b_coco', + 'mobile_pose_resnet18_v1b', + 'mobile_pose_resnet50_v1b', + 'mobile_pose_mobilenet1.0', + 'mobile_pose_mobilenetv2_1.0', + 'mobile_pose_mobilenetv3_large', + 'mobile_pose_mobilenetv3_small', + ] + +act_recg_models = [ + 'inceptionv1_kinetics400', + 'resnet18_v1b_kinetics400', + 'resnet34_v1b_kinetics400', + 'resnet50_v1b_kinetics400', + 'resnet101_v1b_kinetics400', + 'resnet152_v1b_kinetics400', + 'resnet50_v1b_hmdb51', + 'resnet50_v1b_sthsthv2', + 'vgg16_ucf101', + 'inceptionv3_kinetics400', + 'inceptionv3_ucf101', + ] + +nlp_models = [ + 'awd_lstm_lm_600', + 'awd_lstm_lm_1150', + 'bert_12_768_12', + 'bert_24_1024_16', + 'distilbert_6_768_12', + 'ernie_12_768_12', + 'gpt2_117m', + 'gpt2_345m', + 'roberta_12_768_12', + 'roberta_24_1024_16', + 'standard_lstm_lm_200', + 'standard_lstm_lm_650', + 'standard_lstm_lm_1500', + 'transformer_en_de_512', + ] + +type_to_list = { + 'Image Classification' : img_class_models, + 'Object Detection' : obj_detect_models, + 'Image Segmentation' : img_seg_models, + 'Pose Estimation' : pose_est_models, + 'Action Estimation' : act_recg_models, + 'Action Estimation' : act_recg_models, + 'NLP Models' : nlp_models, +} + +def generate_model_support_matrix(): + md_string = '### GluonCV Pretrained Model Support Matrix\n' + for modle_type in type_to_list: + if modle_type == 'NLP Models': + md_string += '### GluonNLP Pretrained Model Support Matrix\n' + model_list = type_to_list[modle_type] + md_string += '|%s|\n|:-|\n' % modle_type + for model in model_list: + md_string += '|%s|\n' % model + md_string += '\n' + try: + file_name = './model_support_matrix.md' + with open(file_name, 'w') as f: + f.write(md_string) + except Exception as e: + print('Error writing to file') + +generate_model_support_matrix() \ No newline at end of file From a7077e22354841ea626503769e40486ac5147855 Mon Sep 17 00:00:00 2001 From: Wei Chu Date: Fri, 30 Apr 2021 12:16:01 -0700 Subject: [PATCH 2/2] add gluon links --- python/mxnet/onnx/README.md | 4 ++-- tools/onnx/generate_model_support_matrix.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/python/mxnet/onnx/README.md b/python/mxnet/onnx/README.md index 16ff71d9dc6b..035c1ac4ee7b 100644 --- a/python/mxnet/onnx/README.md +++ b/python/mxnet/onnx/README.md @@ -180,7 +180,7 @@ If you are a user of earlier MXNet versions and do not want to upgrade MXNet, yo |where|1.7 1.8 | |zeros_like|1.7 1.8 | -### GluonCV Pretrained Model Support Matrix +### [GluonCV Pretrained Model Support Matrix](https://cv.gluon.ai/model_zoo/index.html) |Image Classification| |:-| |alexnet| @@ -337,7 +337,7 @@ If you are a user of earlier MXNet versions and do not want to upgrade MXNet, yo |inceptionv3_kinetics400| |inceptionv3_ucf101| -### GluonNLP Pretrained Model Support Matrix +### [GluonNLP Pretrained Model Support Matrix](https://nlp.gluon.ai/model_zoo/catalog.html) |NLP Models| |:-| |awd_lstm_lm_600| diff --git a/tools/onnx/generate_model_support_matrix.py b/tools/onnx/generate_model_support_matrix.py index 8d2d29ab8162..25b4d84da7cb 100644 --- a/tools/onnx/generate_model_support_matrix.py +++ b/tools/onnx/generate_model_support_matrix.py @@ -202,10 +202,10 @@ } def generate_model_support_matrix(): - md_string = '### GluonCV Pretrained Model Support Matrix\n' + md_string = '*** [GluonCV Pretrained Model Support Matrix](https://cv.gluon.ai/model_zoo/index.html)\n' for modle_type in type_to_list: if modle_type == 'NLP Models': - md_string += '### GluonNLP Pretrained Model Support Matrix\n' + md_string += '### [GluonNLP Pretrained Model Support Matrix](https://nlp.gluon.ai/model_zoo/catalog.html)\n' model_list = type_to_list[modle_type] md_string += '|%s|\n|:-|\n' % modle_type for model in model_list: