# See the License for the specific language governing permissions and
# limitations under the License.
# ******************************************************************************
-# ## Prepare a list of models from the ONNX Model Zoo
-#
-# from pathlib import Path
-# from operator import itemgetter
-# import re
-#
-# MODELS_ROOT_DIR = '/path/to/onnx/models'
-# zoo_models = []
-# for path in Path(MODELS_ROOT_DIR).rglob('*.tar.gz'):
-# match = re.search('.*onnx\/models\/(.*\/model\/(.+)-(\d+)\.tar\.gz)', str(path))
-# url = match.group(1)
-# model_name = match.group(2)
-# opset = match.group(3)
-# zoo_models.append({'model_name': '{}_opset{}'.format(model_name.replace('-', '_'), opset), 'url': url})
-#
-# sorted(zoo_models, key=itemgetter('model_name'))
-from tests.test_onnx.utils import OpenVinoOnnxBackend
-from tests.test_onnx.utils.model_zoo_tester import ModelZooTestRunner
-from tests import (BACKEND_NAME,
- xfail_issue_36533,
- xfail_issue_36534,
- xfail_issue_35926,
- xfail_issue_36535,
- xfail_issue_36537,
- xfail_issue_36538)
-
-_GITHUB_MODELS_LTS = "https://media.githubusercontent.com/media/onnx/models/master/"
-zoo_models = [
- {
- "model_name": "FasterRCNN_opset10",
- "url": _GITHUB_MODELS_LTS
- + "vision/object_detection_segmentation/faster-rcnn/model/FasterRCNN-10.tar.gz",
- },
- {
- "model_name": "MaskRCNN_opset10",
- "url": _GITHUB_MODELS_LTS + "vision/object_detection_segmentation/mask-rcnn/model/MaskRCNN-10.tar.gz",
- },
- {
- "model_name": "ResNet101_DUC_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/object_detection_segmentation/duc/model/ResNet101-DUC-7.tar.gz",
- },
- {
- "model_name": "arcfaceresnet100_opset8",
- "url": _GITHUB_MODELS_LTS + "vision/body_analysis/arcface/model/arcfaceresnet100-8.tar.gz",
- },
- {
- "model_name": "bertsquad_opset10",
- "url": _GITHUB_MODELS_LTS + "text/machine_comprehension/bert-squad/model/bertsquad-10.tar.gz",
- },
- {
- "model_name": "bertsquad_opset8",
- "url": _GITHUB_MODELS_LTS + "text/machine_comprehension/bert-squad/model/bertsquad-8.tar.gz",
- },
- {
- "model_name": "bidaf_opset9",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS
- + "text/machine_comprehension/bidirectional_attention_flow/model/bidaf-9.tar.gz",
- },
- {
- "model_name": "bvlcalexnet_opset3",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS + "vision/classification/alexnet/model/bvlcalexnet-3.tar.gz",
- },
- {
- "model_name": "bvlcalexnet_opset6",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS + "vision/classification/alexnet/model/bvlcalexnet-6.tar.gz",
- },
- {
- "model_name": "bvlcalexnet_opset7",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS + "vision/classification/alexnet/model/bvlcalexnet-7.tar.gz",
- },
- {
- "model_name": "bvlcalexnet_opset8",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS + "vision/classification/alexnet/model/bvlcalexnet-8.tar.gz",
- },
- {
- "model_name": "bvlcalexnet_opset9",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS + "vision/classification/alexnet/model/bvlcalexnet-9.tar.gz",
- },
- {
- "model_name": "caffenet_opset3",
- "url": _GITHUB_MODELS_LTS + "vision/classification/caffenet/model/caffenet-3.tar.gz",
- },
- {
- "model_name": "caffenet_opset6",
- "url": _GITHUB_MODELS_LTS + "vision/classification/caffenet/model/caffenet-6.tar.gz",
- },
- {
- "model_name": "caffenet_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/classification/caffenet/model/caffenet-7.tar.gz",
- },
- {
- "model_name": "caffenet_opset8",
- "url": _GITHUB_MODELS_LTS + "vision/classification/caffenet/model/caffenet-8.tar.gz",
- },
- {
- "model_name": "caffenet_opset9",
- "url": _GITHUB_MODELS_LTS + "vision/classification/caffenet/model/caffenet-9.tar.gz",
- },
- {
- "model_name": "candy_opset8",
- "url": _GITHUB_MODELS_LTS + "vision/style_transfer/fast_neural_style/model/candy-8.tar.gz",
- },
- {
- "model_name": "candy_opset9",
- "url": _GITHUB_MODELS_LTS + "vision/style_transfer/fast_neural_style/model/candy-9.tar.gz",
- },
- {
- "model_name": "densenet_opset3",
- "atol": 1e-07,
- "rtol": 0.002,
- "url": _GITHUB_MODELS_LTS + "vision/classification/densenet-121/model/densenet-3.tar.gz",
- },
- {
- "model_name": "densenet_opset6",
- "atol": 1e-07,
- "rtol": 0.002,
- "url": _GITHUB_MODELS_LTS + "vision/classification/densenet-121/model/densenet-6.tar.gz",
- },
- {
- "model_name": "densenet_opset7",
- "atol": 1e-07,
- "rtol": 0.002,
- "url": _GITHUB_MODELS_LTS + "vision/classification/densenet-121/model/densenet-7.tar.gz",
- },
- {
- "model_name": "densenet_opset8",
- "atol": 1e-07,
- "rtol": 0.002,
- "url": _GITHUB_MODELS_LTS + "vision/classification/densenet-121/model/densenet-8.tar.gz",
- },
- {
- "model_name": "densenet_opset9",
- "atol": 1e-07,
- "rtol": 0.002,
- "url": _GITHUB_MODELS_LTS + "vision/classification/densenet-121/model/densenet-9.tar.gz",
- },
- {
- "model_name": "emotion_ferplus_opset2",
- "url": _GITHUB_MODELS_LTS + "vision/body_analysis/emotion_ferplus/model/emotion-ferplus-2.tar.gz",
- },
- {
- "model_name": "emotion_ferplus_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/body_analysis/emotion_ferplus/model/emotion-ferplus-7.tar.gz",
- },
- {
- "model_name": "emotion_ferplus_opset8",
- "url": _GITHUB_MODELS_LTS + "vision/body_analysis/emotion_ferplus/model/emotion-ferplus-8.tar.gz",
- },
- {
- "model_name": "googlenet_opset3",
- "url": _GITHUB_MODELS_LTS
- + "vision/classification/inception_and_googlenet/googlenet/model/googlenet-3.tar.gz",
- },
- {
- "model_name": "googlenet_opset6",
- "url": _GITHUB_MODELS_LTS
- + "vision/classification/inception_and_googlenet/googlenet/model/googlenet-6.tar.gz",
- },
- {
- "model_name": "googlenet_opset7",
- "url": _GITHUB_MODELS_LTS
- + "vision/classification/inception_and_googlenet/googlenet/model/googlenet-7.tar.gz",
- },
- {
- "model_name": "googlenet_opset8",
- "url": _GITHUB_MODELS_LTS
- + "vision/classification/inception_and_googlenet/googlenet/model/googlenet-8.tar.gz",
- },
- {
- "model_name": "googlenet_opset9",
- "url": _GITHUB_MODELS_LTS
- + "vision/classification/inception_and_googlenet/googlenet/model/googlenet-9.tar.gz",
- },
- {
- "model_name": "gpt2_opset10",
- "url": _GITHUB_MODELS_LTS + "text/machine_comprehension/gpt-2/model/gpt2-10.tar.gz",
- },
- {
- "model_name": "inception_v1_opset3",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS
- + "vision/classification/inception_and_googlenet/inception_v1/model/inception-v1-3.tar.gz",
- },
- {
- "model_name": "inception_v1_opset6",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS
- + "vision/classification/inception_and_googlenet/inception_v1/model/inception-v1-6.tar.gz",
- },
- {
- "model_name": "inception_v1_opset7",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS
- + "vision/classification/inception_and_googlenet/inception_v1/model/inception-v1-7.tar.gz",
- },
- {
- "model_name": "inception_v1_opset8",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS
- + "vision/classification/inception_and_googlenet/inception_v1/model/inception-v1-8.tar.gz",
- },
- {
- "model_name": "inception_v1_opset9",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS
- + "vision/classification/inception_and_googlenet/inception_v1/model/inception-v1-9.tar.gz",
- },
- {
- "model_name": "inception_v2_opset3",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS
- + "vision/classification/inception_and_googlenet/inception_v2/model/inception-v2-3.tar.gz",
- },
- {
- "model_name": "inception_v2_opset6",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS
- + "vision/classification/inception_and_googlenet/inception_v2/model/inception-v2-6.tar.gz",
- },
- {
- "model_name": "inception_v2_opset7",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS
- + "vision/classification/inception_and_googlenet/inception_v2/model/inception-v2-7.tar.gz",
- },
- {
- "model_name": "inception_v2_opset8",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS
- + "vision/classification/inception_and_googlenet/inception_v2/model/inception-v2-8.tar.gz",
- },
- {
- "model_name": "inception_v2_opset9",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS
- + "vision/classification/inception_and_googlenet/inception_v2/model/inception-v2-9.tar.gz",
- },
- {
- "model_name": "mnist_opset1",
- "url": _GITHUB_MODELS_LTS + "vision/classification/mnist/model/mnist-1.tar.gz",
- },
- {
- "model_name": "mnist_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/classification/mnist/model/mnist-7.tar.gz",
- },
- {
- "model_name": "mnist_opset8",
- "url": _GITHUB_MODELS_LTS + "vision/classification/mnist/model/mnist-8.tar.gz",
- },
- {
- "model_name": "mobilenetv2_opset7",
- "atol": 1e-07,
- "rtol": 0.002,
- "url": _GITHUB_MODELS_LTS + "vision/classification/mobilenet/model/mobilenetv2-7.tar.gz",
- },
- {
- "model_name": "mosaic_opset8",
- "url": _GITHUB_MODELS_LTS + "vision/style_transfer/fast_neural_style/model/mosaic-8.tar.gz",
- },
- {
- "model_name": "mosaic_opset9",
- "url": _GITHUB_MODELS_LTS + "vision/style_transfer/fast_neural_style/model/mosaic-9.tar.gz",
- },
- {
- "model_name": "pointilism_opset8",
- "url": _GITHUB_MODELS_LTS + "vision/style_transfer/fast_neural_style/model/pointilism-8.tar.gz",
- },
- {
- "model_name": "pointilism_opset9",
- "url": _GITHUB_MODELS_LTS + "vision/style_transfer/fast_neural_style/model/pointilism-9.tar.gz",
- },
- {
- "model_name": "rain_princess_opset8",
- "url": _GITHUB_MODELS_LTS + "vision/style_transfer/fast_neural_style/model/rain-princess-8.tar.gz",
- },
- {
- "model_name": "rain_princess_opset9",
- "url": _GITHUB_MODELS_LTS + "vision/style_transfer/fast_neural_style/model/rain-princess-9.tar.gz",
- },
- {
- "model_name": "rcnn_ilsvrc13_opset3",
- "url": _GITHUB_MODELS_LTS + "vision/classification/rcnn_ilsvrc13/model/rcnn-ilsvrc13-3.tar.gz",
- },
- {
- "model_name": "rcnn_ilsvrc13_opset6",
- "url": _GITHUB_MODELS_LTS + "vision/classification/rcnn_ilsvrc13/model/rcnn-ilsvrc13-6.tar.gz",
- },
- {
- "model_name": "rcnn_ilsvrc13_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/classification/rcnn_ilsvrc13/model/rcnn-ilsvrc13-7.tar.gz",
- },
- {
- "model_name": "rcnn_ilsvrc13_opset8",
- "url": _GITHUB_MODELS_LTS + "vision/classification/rcnn_ilsvrc13/model/rcnn-ilsvrc13-8.tar.gz",
- },
- {
- "model_name": "rcnn_ilsvrc13_opset9",
- "url": _GITHUB_MODELS_LTS + "vision/classification/rcnn_ilsvrc13/model/rcnn-ilsvrc13-9.tar.gz",
- },
- {
- "model_name": "resnet101_v1_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/classification/resnet/model/resnet101-v1-7.tar.gz",
- },
- {
- "model_name": "resnet101_v2_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/classification/resnet/model/resnet101-v2-7.tar.gz",
- },
- {
- "model_name": "resnet152_v1_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/classification/resnet/model/resnet152-v1-7.tar.gz",
- },
- {
- "model_name": "resnet152_v2_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/classification/resnet/model/resnet152-v2-7.tar.gz",
- },
- {
- "model_name": "resnet18_v1_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/classification/resnet/model/resnet18-v1-7.tar.gz",
- },
- {
- "model_name": "resnet18_v2_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/classification/resnet/model/resnet18-v2-7.tar.gz",
- },
- {
- "model_name": "resnet34_v1_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/classification/resnet/model/resnet34-v1-7.tar.gz",
- },
- {
- "model_name": "resnet34_v2_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/classification/resnet/model/resnet34-v2-7.tar.gz",
- },
- {
- "model_name": "resnet50_caffe2_v1_opset3",
- "url": _GITHUB_MODELS_LTS + "vision/classification/resnet/model/resnet50-caffe2-v1-3.tar.gz",
- },
- {
- "model_name": "resnet50_caffe2_v1_opset6",
- "url": _GITHUB_MODELS_LTS + "vision/classification/resnet/model/resnet50-caffe2-v1-6.tar.gz",
- },
- {
- "model_name": "resnet50_caffe2_v1_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/classification/resnet/model/resnet50-caffe2-v1-7.tar.gz",
- },
- {
- "model_name": "resnet50_caffe2_v1_opset8",
- "url": _GITHUB_MODELS_LTS + "vision/classification/resnet/model/resnet50-caffe2-v1-8.tar.gz",
- },
- {
- "model_name": "resnet50_caffe2_v1_opset9",
- "url": _GITHUB_MODELS_LTS + "vision/classification/resnet/model/resnet50-caffe2-v1-9.tar.gz",
- },
- {
- "model_name": "resnet50_v1_opset7",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS + "vision/classification/resnet/model/resnet50-v1-7.tar.gz",
- },
- {
- "model_name": "resnet50_v2_opset7",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS + "vision/classification/resnet/model/resnet50-v2-7.tar.gz",
- },
- {
- "model_name": "shufflenet_opset3",
- "url": _GITHUB_MODELS_LTS + "vision/classification/shufflenet/model/shufflenet-3.tar.gz",
- },
- {
- "model_name": "shufflenet_opset6",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS + "vision/classification/shufflenet/model/shufflenet-6.tar.gz",
- },
- {
- "model_name": "shufflenet_opset7",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS + "vision/classification/shufflenet/model/shufflenet-7.tar.gz",
- },
- {
- "model_name": "shufflenet_opset8",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS + "vision/classification/shufflenet/model/shufflenet-8.tar.gz",
- },
- {
- "model_name": "shufflenet_opset9",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS + "vision/classification/shufflenet/model/shufflenet-9.tar.gz",
- },
- {
- "model_name": "shufflenet_v2_opset10",
- "url": _GITHUB_MODELS_LTS + "vision/classification/shufflenet/model/shufflenet-v2-10.tar.gz",
- },
- {
- "model_name": "squeezenet1.0_opset3",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS + "vision/classification/squeezenet/model/squeezenet1.0-3.tar.gz",
- },
- {
- "model_name": "squeezenet1.0_opset6",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS + "vision/classification/squeezenet/model/squeezenet1.0-6.tar.gz",
- },
- {
- "model_name": "squeezenet1.0_opset7",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS + "vision/classification/squeezenet/model/squeezenet1.0-7.tar.gz",
- },
- {
- "model_name": "squeezenet1.0_opset8",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS + "vision/classification/squeezenet/model/squeezenet1.0-8.tar.gz",
- },
- {
- "model_name": "squeezenet1.0_opset9",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS + "vision/classification/squeezenet/model/squeezenet1.0-9.tar.gz",
- },
- {
- "model_name": "squeezenet1.1_opset7",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS + "vision/classification/squeezenet/model/squeezenet1.1-7.tar.gz",
- },
- {
- "model_name": "ssd_opset10",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS + "vision/object_detection_segmentation/ssd/model/ssd-10.tar.gz",
- },
- {
- "model_name": "super_resolution_opset10",
- "url": _GITHUB_MODELS_LTS
- + "vision/super_resolution/sub_pixel_cnn_2016/model/super-resolution-10.tar.gz",
- },
- {
- "model_name": "tiny_yolov3_opset11",
- "url": _GITHUB_MODELS_LTS
- + "vision/object_detection_segmentation/tiny-yolov3/model/tiny-yolov3-11.tar.gz",
- },
- {
- "model_name": "tinyyolov2_opset1",
- "url": _GITHUB_MODELS_LTS
- + "vision/object_detection_segmentation/tiny-yolov2/model/tinyyolov2-1.tar.gz",
- },
- {
- "model_name": "tinyyolov2_opset7",
- "url": _GITHUB_MODELS_LTS
- + "vision/object_detection_segmentation/tiny-yolov2/model/tinyyolov2-7.tar.gz",
- },
- {
- "model_name": "tinyyolov2_opset8",
- "url": _GITHUB_MODELS_LTS
- + "vision/object_detection_segmentation/tiny-yolov2/model/tinyyolov2-8.tar.gz",
- },
- {
- "model_name": "udnie_opset8",
- "url": _GITHUB_MODELS_LTS + "vision/style_transfer/fast_neural_style/model/udnie-8.tar.gz",
- },
- {
- "model_name": "udnie_opset9",
- "url": _GITHUB_MODELS_LTS + "vision/style_transfer/fast_neural_style/model/udnie-9.tar.gz",
- },
- {
- "model_name": "vgg16_bn_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/classification/vgg/model/vgg16-bn-7.tar.gz",
- },
- {
- "model_name": "vgg16_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/classification/vgg/model/vgg16-7.tar.gz",
- },
- {
- "model_name": "vgg19_bn_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/classification/vgg/model/vgg19-bn-7.tar.gz",
- },
- {
- "model_name": "vgg19_caffe2_opset3",
- "url": _GITHUB_MODELS_LTS + "vision/classification/vgg/model/vgg19-caffe2-3.tar.gz",
- },
- {
- "model_name": "vgg19_caffe2_opset6",
- "url": _GITHUB_MODELS_LTS + "vision/classification/vgg/model/vgg19-caffe2-6.tar.gz",
- },
- {
- "model_name": "vgg19_caffe2_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/classification/vgg/model/vgg19-caffe2-7.tar.gz",
- },
- {
- "model_name": "vgg19_caffe2_opset8",
- "url": _GITHUB_MODELS_LTS + "vision/classification/vgg/model/vgg19-caffe2-8.tar.gz",
- },
- {
- "model_name": "vgg19_caffe2_opset9",
- "url": _GITHUB_MODELS_LTS + "vision/classification/vgg/model/vgg19-caffe2-9.tar.gz",
- },
- {
- "model_name": "vgg19_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/classification/vgg/model/vgg19-7.tar.gz",
- },
- {
- "model_name": "yolov3_opset10",
- "atol": 1e-07,
- "rtol": 0.001,
- "url": _GITHUB_MODELS_LTS + "vision/object_detection_segmentation/yolov3/model/yolov3-10.tar.gz",
- },
- {
- "model_name": "zfnet512_opset3",
- "url": _GITHUB_MODELS_LTS + "vision/classification/zfnet-512/model/zfnet512-3.tar.gz",
- },
- {
- "model_name": "zfnet512_opset6",
- "url": _GITHUB_MODELS_LTS + "vision/classification/zfnet-512/model/zfnet512-6.tar.gz",
- },
- {
- "model_name": "zfnet512_opset7",
- "url": _GITHUB_MODELS_LTS + "vision/classification/zfnet-512/model/zfnet512-7.tar.gz",
- },
- {
- "model_name": "zfnet512_opset8",
- "url": _GITHUB_MODELS_LTS + "vision/classification/zfnet-512/model/zfnet512-8.tar.gz",
- },
- {
- "model_name": "zfnet512_opset9",
- "url": _GITHUB_MODELS_LTS + "vision/classification/zfnet-512/model/zfnet512-9.tar.gz",
- },
-]
+import pytest
+import tests
+from operator import itemgetter
+from pathlib import Path
+import os
-# Set backend device name to be used instead of hardcoded by ONNX BackendTest class ones.
-OpenVinoOnnxBackend.backend_name = BACKEND_NAME
+from tests.test_onnx.utils import OpenVinoOnnxBackend
+from tests.test_onnx.utils.model_importer import ModelImportRunner
-# import all test cases at global scope to make them visible to pytest
-backend_test = ModelZooTestRunner(OpenVinoOnnxBackend, zoo_models, __name__)
-test_cases = backend_test.test_cases["OnnxBackendZooModelTest"]
-test_cases_list = [
- test_cases.test_udnie_opset8_cpu,
- test_cases.test_udnie_opset8_cpu,
- test_cases.test_udnie_opset9_cpu,
- test_cases.test_mosaic_opset8_cpu,
- test_cases.test_vgg16_opset7_cpu,
- test_cases.test_pointilism_opset9_cpu,
- test_cases.test_vgg19_bn_opset7_cpu,
- test_cases.test_candy_opset9_cpu,
- test_cases.test_rain_princess_opset8_cpu,
- test_cases.test_mosaic_opset9_cpu,
- test_cases.test_pointilism_opset8_cpu,
- test_cases.test_rain_princess_opset9_cpu,
- test_cases.test_ssd_opset10_cpu,
- test_cases.test_resnet152_v2_opset7_cpu,
- test_cases.test_resnet18_v1_opset7_cpu,
- test_cases.test_resnet18_v2_opset7_cpu,
- test_cases.test_resnet34_v2_opset7_cpu,
- test_cases.test_resnet101_v2_opset7_cpu,
- test_cases.test_resnet101_v1_opset7_cpu,
- test_cases.test_ResNet101_DUC_opset7_cpu,
- test_cases.test_candy_opset8_cpu,
- test_cases.test_resnet152_v1_opset7_cpu
-]
+MODELS_ROOT_DIR = tests.MODEL_ZOO_DIR
-xfail_issue_36534(test_cases.test_FasterRCNN_opset10_cpu)
-xfail_issue_36534(test_cases.test_MaskRCNN_opset10_cpu)
+tolerance_map = {
+ "arcface_lresnet100e_opset8": {"atol": 0.001, "rtol": 0.001},
+ "fp16_inception_v1": {"atol": 0.001, "rtol": 0.001},
+ "mobilenet_opset7": {"atol": 0.001, "rtol": 0.001},
+ "resnet50_v2_opset7": {"atol": 0.001, "rtol": 0.001},
+ "test_mobilenetv2-1.0": {"atol": 0.001, "rtol": 0.001},
+ "test_resnet101v2": {"atol": 0.001, "rtol": 0.001},
+ "test_resnet18v2": {"atol": 0.001, "rtol": 0.001},
+ "test_resnet34v2": {"atol": 0.001, "rtol": 0.001},
+ "test_resnet50v2": {"atol": 0.001, "rtol": 0.001},
+ "mosaic": {"atol": 0.001, "rtol": 0.001},
+ "pointilism": {"atol": 0.001, "rtol": 0.001},
+ "rain_princess": {"atol": 0.001, "rtol": 0.001},
+ "udnie": {"atol": 0.001, "rtol": 0.001},
+ "candy": {"atol": 0.003, "rtol": 0.003},
+ "densenet-3": {"atol": 1e-7, "rtol": 0.0011},
+ "arcfaceresnet100-8": {"atol": 0.001, "rtol": 0.001},
+ "mobilenetv2-7": {"atol": 0.001, "rtol": 0.001},
+ "resnet101-v1-7": {"atol": 0.001, "rtol": 0.001},
+ "resnet101-v2-7": {"atol": 0.001, "rtol": 0.001},
+ "resnet152-v1-7": {"atol": 1e-7, "rtol": 0.003},
+ "resnet152-v2-7": {"atol": 0.001, "rtol": 0.001},
+ "resnet18-v1-7": {"atol": 0.001, "rtol": 0.001},
+ "resnet18-v2-7": {"atol": 0.001, "rtol": 0.001},
+ "resnet34-v2-7": {"atol": 0.001, "rtol": 0.001},
+ "vgg16-7": {"atol": 0.001, "rtol": 0.001},
+ "vgg19-bn-7": {"atol": 0.001, "rtol": 0.001},
+ "tinyyolov2-7": {"atol": 0.001, "rtol": 0.001},
+ "tinyyolov2-8": {"atol": 0.001, "rtol": 0.001},
+ "candy-8": {"atol": 0.001, "rtol": 0.001},
+ "candy-9": {"atol": 0.007, "rtol": 0.001},
+ "mosaic-8": {"atol": 0.003, "rtol": 0.001},
+ "mosaic-9": {"atol": 0.001, "rtol": 0.001},
+ "pointilism-8": {"atol": 0.001, "rtol": 0.001},
+ "pointilism-9": {"atol": 0.001, "rtol": 0.001},
+ "rain-princess-8": {"atol": 0.001, "rtol": 0.001},
+ "rain-princess-9": {"atol": 0.001, "rtol": 0.001},
+ "udnie-8": {"atol": 0.001, "rtol": 0.001},
+ "udnie-9": {"atol": 0.001, "rtol": 0.001},
+}
-xfail_issue_35926(test_cases.test_bertsquad_opset8_cpu)
-xfail_issue_35926(test_cases.test_bertsquad_opset10_cpu)
+zoo_models = []
+# rglob doesn't work for symlinks, so models have to be physically somwhere inside "MODELS_ROOT_DIR"
+for path in Path(MODELS_ROOT_DIR).rglob("*.onnx"):
+ mdir = path.parent
+ file_name = path.name
+ if path.is_file() and not file_name.startswith("."):
+ model = {"model_name": path, "model_file": file_name, "dir": mdir}
+ basedir = mdir.stem
+ if basedir in tolerance_map:
+ # updated model looks now:
+ # {"model_name": path, "model_file": file, "dir": mdir, "atol": ..., "rtol": ...}
+ model.update(tolerance_map[basedir])
+ zoo_models.append(model)
-xfail_issue_35926(test_cases.test_gpt2_opset10_cpu)
+if len(zoo_models) > 0:
+ sorted(zoo_models, key=itemgetter("model_name"))
-xfail_issue_36535(test_cases.test_super_resolution_opset10_cpu)
-xfail_issue_36535(test_cases.test_tinyyolov2_opset7_cpu)
-xfail_issue_36535(test_cases.test_tinyyolov2_opset8_cpu)
+ # Set backend device name to be used instead of hardcoded by ONNX BackendTest class ones.
+ OpenVinoOnnxBackend.backend_name = tests.BACKEND_NAME
-xfail_issue_36537(test_cases.test_shufflenet_v2_opset10_cpu)
-xfail_issue_36538(test_cases.test_yolov3_opset10_cpu)
-xfail_issue_36538(test_cases.test_tiny_yolov3_opset11_cpu)
+ # import all test cases at global scope to make them visible to pytest
+ backend_test = ModelImportRunner(OpenVinoOnnxBackend, zoo_models, __name__, MODELS_ROOT_DIR)
+ test_cases = backend_test.test_cases["OnnxBackendModelImportTest"]
+ # flake8: noqa: E501
+ if tests.MODEL_ZOO_XFAIL:
+ import_xfail_list = [
+ "test_onnx_model_zoo_vision_classification_mnist_model_mnist_1_model_cpu",
+ "test_onnx_model_zoo_vision_object_detection_segmentation_tiny_yolov2_model_tinyyolov2_1_model_cpu",
+ "test_onnx_model_zoo_vision_object_detection_segmentation_yolov3_model_yolov3_10_yolov3_cpu",
+ "test_onnx_model_zoo_vision_object_detection_segmentation_ssd_mobilenetv1_model_ssd_mobilenet_v1_10_ssd_mobilenet_v1_cpu",
+ "test_onnx_model_zoo_text_machine_comprehension_bidirectional_attention_flow_model_bidaf_9_bidaf_cpu",
+ ]
+ for test_case in import_xfail_list:
+ pytest.mark.xfail(getattr(test_cases, test_case))
+ del test_cases
-for test_case in test_cases_list:
- xfail_issue_36533(test_case)
+ test_cases = backend_test.test_cases["OnnxBackendModelExecutionTest"]
+ if tests.MODEL_ZOO_XFAIL:
+ execution_xfail_list = [
+ "test_onnx_model_zoo_text_machine_comprehension_gpt_2_model_gpt2_10_GPT2_model_cpu",
+ "test_onnx_model_zoo_text_machine_comprehension_bert_squad_model_bertsquad_10_bertsquad10_cpu",
+ "test_onnx_model_zoo_text_machine_comprehension_roberta_model_roberta_sequence_classification_9_roberta_sequence_classification_9_cpu",
+ "test_onnx_model_zoo_text_machine_comprehension_gpt_2_model_gpt2_lm_head_10_model_cpu",
+ "test_onnx_model_zoo_vision_classification_efficientnet_lite4_model_efficientnet_lite4_11_efficientnet_lite4_cpu",
+ "test_onnx_model_zoo_text_machine_comprehension_bert_squad_model_bertsquad_8_bertsquad8_cpu",
+ "test_onnx_model_zoo_vision_object_detection_segmentation_duc_model_ResNet101_DUC_7_ResNet101_DUC_HDC_cpu",
+ "test_onnx_model_zoo_vision_object_detection_segmentation_retinanet_model_retinanet_9_retinanet_9_cpu",
+ "test_onnx_model_zoo_vision_classification_shufflenet_model_shufflenet_v2_10_test_shufflenetv2_model_cpu",
+ "test_onnx_model_zoo_vision_object_detection_segmentation_yolov4_model_yolov4_yolov4_yolov4_cpu",
+ "test_onnx_model_zoo_text_machine_comprehension_roberta_model_roberta_base_11_roberta_base_11_cpu",
+ ]
+ for test_case in import_xfail_list + execution_xfail_list:
+ pytest.mark.xfail(getattr(test_cases, test_case))
+ del test_cases
-del test_cases
-globals().update(backend_test.enable_report().test_cases)
+ globals().update(backend_test.enable_report().test_cases)
# limitations under the License.
# ******************************************************************************
-import glob
import numpy as np
import onnx
import onnx.backend.test
-import os
import unittest
from collections import defaultdict
from onnx.backend.base import Backend, BackendRep
from onnx.backend.test.case.test_case import TestCase as OnnxTestCase
from onnx.backend.test.runner import TestItem
+from pathlib import Path
from tests.test_onnx.utils.onnx_helpers import import_onnx_model
from typing import Any, Dict, List, Optional, Pattern, Set, Text, Type, Union
def __init__(
self,
backend: Type[Backend],
- models: List[Dict[str, str]],
+ models: List[Dict[str, Path]],
parent_module: Optional[str] = None,
+ data_root: Optional[Path] = "",
) -> None:
self.backend = backend
self._parent_module = parent_module
self._test_items = defaultdict(dict) # type: Dict[Text, Dict[Text, TestItem]]
for model in models:
- test_name = "test_{}".format(model["model_name"])
+ test_name = "test{}".format(model["model_name"]) \
+ .replace(str(data_root), "") \
+ .replace(".onnx", "") \
+ .replace("/", "_") \
+ .replace("\\", "_") \
+ .replace("-", "_")
test_case = OnnxTestCase(
name=test_name,
rtol=model.get("rtol", 0.001),
atol=model.get("atol", 1e-07),
)
- self._add_model_import_test(test_case, "Validation")
- self._add_model_execution_test(test_case, "Validation")
+ self._add_model_import_test(test_case)
+ self._add_model_execution_test(test_case)
@staticmethod
- def _load_onnx_model(model_dir: str, filename: str) -> ModelProto:
+ def _load_onnx_model(model_dir: Path, filename: Path) -> ModelProto:
if model_dir is None:
raise unittest.SkipTest("Model directory not provided")
- model_pb_path = os.path.join(model_dir, filename)
- return onnx.load(model_pb_path)
+ return onnx.load(model_dir / filename)
- def _add_model_import_test(self, model_test: OnnxTestCase, kind: Text) -> None:
+ def _add_model_import_test(self, model_test: OnnxTestCase) -> None:
# model is loaded at runtime, note sometimes it could even
# never loaded if the test skipped
model_marker = [None] # type: List[Optional[Union[ModelProto, NodeProto]]]
model_marker[0] = model
assert import_onnx_model(model)
- self._add_test(kind + "ModelImport", model_test.name, run_import, model_marker)
+ self._add_test("ModelImport", model_test.name, run_import, model_marker)
@classmethod
def _execute_npz_data(
cls, model_dir: str, prepared_model: BackendRep, result_rtol: float, result_atol: float,
- ) -> None:
- for test_data_npz in glob.glob(os.path.join(model_dir, "test_data_*.npz")):
+ ) -> int:
+ executed_tests = 0
+ for test_data_npz in model_dir.glob("test_data_*.npz"):
test_data = np.load(test_data_npz, encoding="bytes")
inputs = list(test_data["inputs"])
outputs = list(prepared_model.run(inputs))
ref_outputs = test_data["outputs"]
cls.assert_similar_outputs(ref_outputs, outputs, result_rtol, result_atol)
+ executed_tests = executed_tests + 1
+ return executed_tests
@classmethod
def _execute_pb_data(
cls, model_dir: str, prepared_model: BackendRep, result_rtol: float, result_atol: float,
- ) -> None:
- for test_data_dir in glob.glob(os.path.join(model_dir, "test_data_set*")):
+ ) -> int:
+ executed_tests = 0
+ for test_data_dir in model_dir.glob("test_data_set*"):
inputs = []
- inputs_num = len(glob.glob(os.path.join(test_data_dir, "input_*.pb")))
+ inputs_num = len(list(test_data_dir.glob("input_*.pb")))
for i in range(inputs_num):
- input_file = os.path.join(test_data_dir, "input_{}.pb".format(i))
+ input_file = Path(test_data_dir) / "input_{}.pb".format(i)
tensor = onnx.TensorProto()
with open(input_file, "rb") as f:
tensor.ParseFromString(f.read())
inputs.append(numpy_helper.to_array(tensor))
ref_outputs = []
- ref_outputs_num = len(glob.glob(os.path.join(test_data_dir, "output_*.pb")))
+ ref_outputs_num = len(list(test_data_dir.glob("output_*.pb")))
for i in range(ref_outputs_num):
- output_file = os.path.join(test_data_dir, "output_{}.pb".format(i))
+ output_file = Path(test_data_dir) / "output_{}.pb".format(i)
tensor = onnx.TensorProto()
with open(output_file, "rb") as f:
tensor.ParseFromString(f.read())
ref_outputs.append(numpy_helper.to_array(tensor))
+ if(len(inputs) == 0):
+ continue
outputs = list(prepared_model.run(inputs))
cls.assert_similar_outputs(ref_outputs, outputs, result_rtol, result_atol)
+ executed_tests = executed_tests + 1
+ return executed_tests
- def _add_model_execution_test(self, model_test: OnnxTestCase, kind: Text) -> None:
+ def _add_model_execution_test(self, model_test: OnnxTestCase) -> None:
# model is loaded at runtime, note sometimes it could even
# never loaded if the test skipped
model_marker = [None] # type: List[Optional[Union[ModelProto, NodeProto]]]
model_marker[0] = model
prepared_model = self.backend.prepare(model, device)
assert prepared_model is not None
-
- ModelImportRunner._execute_npz_data(
+ executed_tests = ModelImportRunner._execute_npz_data(
model_test.model_dir, prepared_model, model_test.rtol, model_test.atol
)
- ModelImportRunner._execute_pb_data(
+ executed_tests = executed_tests + ModelImportRunner._execute_pb_data(
model_test.model_dir, prepared_model, model_test.rtol, model_test.atol
)
- self._add_test(kind + "ModelExecution", model_test.name, run_execution, model_marker)
+ assert executed_tests > 0, "This model have no test data"
+ self._add_test("ModelExecution", model_test.name, run_execution, model_marker)