diff --git a/src/bindings/python/tests/__init__.py b/src/bindings/python/tests/__init__.py index 96f987eefbb..01128a5b3fe 100644 --- a/src/bindings/python/tests/__init__.py +++ b/src/bindings/python/tests/__init__.py @@ -127,5 +127,4 @@ xfail_issue_63137 = xfail_test(reason="Unsupported operations: OptionalHasElemen xfail_issue_63138 = xfail_test(reason="Missing ONNX Shape-15 support") xfail_issue_68212 = xfail_test(reason="Unsupported reading model with bytes streams") -xfail_issue_77668 = xfail_test(reason="Accuracy issue related to Gather-8.") xfail_issue_78843 = xfail_test(reason="Missing reference output files for ssd mobilenet models") diff --git a/src/bindings/python/tests/test_onnx/test_zoo_models.py b/src/bindings/python/tests/test_onnx/test_zoo_models.py index 3d3a96f8dbb..9ca9f5621bf 100644 --- a/src/bindings/python/tests/test_onnx/test_zoo_models.py +++ b/src/bindings/python/tests/test_onnx/test_zoo_models.py @@ -22,8 +22,7 @@ from tests import ( xfail_issue_48190, xfail_issue_58676, xfail_issue_78843, - xfail_issue_onnx_models_140, - xfail_issue_77668) + xfail_issue_onnx_models_140) MODELS_ROOT_DIR = tests.MODEL_ZOO_DIR @@ -180,8 +179,6 @@ if len(zoo_models) > 0: (xfail_issue_48190, "test_onnx_model_zoo_text_machine_comprehension_roberta_model_roberta_base_11_roberta_base_11_roberta_base_11_cpu"), (xfail_issue_onnx_models_140, "test_onnx_model_zoo_vision_object_detection_segmentation_duc_model_ResNet101_DUC_7_ResNet101_DUC_HDC_ResNet101_DUC_HDC_cpu"), (xfail_issue_78843, "test_onnx_model_zoo_vision_object_detection_segmentation_ssd_mobilenetv1_model_ssd_mobilenet_v1_10_ssd_mobilenet_v1_ssd_mobilenet_v1_cpu"), - (xfail_issue_77668, "test_onnx_model_zoo_vision_object_detection_segmentation_faster_rcnn_model_FasterRCNN_10_faster_rcnn_R_50_FPN_1x_cpu"), - (xfail_issue_77668, "test_onnx_model_zoo_vision_object_detection_segmentation_mask_rcnn_model_MaskRCNN_10_mask_rcnn_R_50_FPN_1x_cpu"), # Model MSFT (xfail_issue_37973, "test_MSFT_opset7_tf_inception_v2_model_cpu"), @@ -197,8 +194,6 @@ if len(zoo_models) > 0: (xfail_issue_47495, "test_MSFT_opset10_BERT_Squad_bertsquad10_cpu"), (xfail_issue_78843, "test_MSFT_opset10_mlperf_ssd_mobilenet_300_ssd_mobilenet_v1_coco_2018_01_28_cpu"), - (xfail_issue_77668, "test_MSFT_opset10_faster_rcnn_faster_rcnn_R_50_FPN_1x_cpu"), - (xfail_issue_77668, "test_MSFT_opset10_mask_rcnn_mask_rcnn_R_50_FPN_1x_cpu"), ] for test_case in import_xfail_list + execution_xfail_list: xfail, test_name = test_case diff --git a/src/bindings/python/tests_compatibility/__init__.py b/src/bindings/python/tests_compatibility/__init__.py index f53c4cdfbf2..b023ba74828 100644 --- a/src/bindings/python/tests_compatibility/__init__.py +++ b/src/bindings/python/tests_compatibility/__init__.py @@ -136,6 +136,5 @@ xfail_issue_63136 = xfail_test(reason="Unsupported operation: CastLike") xfail_issue_63137 = xfail_test(reason="Unsupported operations: OptionalHasElement, OptionalGetElement") xfail_issue_63138 = xfail_test(reason="Missing ONNX Shape-15 support") -xfail_issue_77668 = xfail_test(reason="Accuracy issue related to Gather-8.") xfail_issue_78843 = xfail_test(reason="Missing reference output files for ssd mobilenet models") xfail_issue_78741 = xfail_test(reason="Cannot get dims for non static shape") diff --git a/src/bindings/python/tests_compatibility/test_onnx/test_zoo_models.py b/src/bindings/python/tests_compatibility/test_onnx/test_zoo_models.py index be1d5a6c42d..20aebca9dec 100644 --- a/src/bindings/python/tests_compatibility/test_onnx/test_zoo_models.py +++ b/src/bindings/python/tests_compatibility/test_onnx/test_zoo_models.py @@ -23,8 +23,7 @@ from tests_compatibility import ( xfail_issue_48190, xfail_issue_58676, xfail_issue_78843, - xfail_issue_onnx_models_140, - xfail_issue_77668) + xfail_issue_onnx_models_140) MODELS_ROOT_DIR = tests_compatibility.MODEL_ZOO_DIR @@ -168,7 +167,6 @@ if len(zoo_models) > 0: (xfail_issue_48190, "test_onnx_model_zoo_text_machine_comprehension_roberta_model_roberta_base_11_roberta_base_11_roberta_base_11_cpu"), (xfail_issue_onnx_models_140, "test_onnx_model_zoo_vision_object_detection_segmentation_duc_model_ResNet101_DUC_7_ResNet101_DUC_HDC_ResNet101_DUC_HDC_cpu"), (xfail_issue_78843, "test_onnx_model_zoo_vision_object_detection_segmentation_ssd_mobilenetv1_model_ssd_mobilenet_v1_10_ssd_mobilenet_v1_ssd_mobilenet_v1_cpu"), - (xfail_issue_77668, "test_onnx_model_zoo_vision_object_detection_segmentation_faster_rcnn_model_FasterRCNN_10_faster_rcnn_R_50_FPN_1x_cpu"), # Model MSFT (xfail_issue_37973, "test_MSFT_opset7_tf_inception_v2_model_cpu"), @@ -185,8 +183,6 @@ if len(zoo_models) > 0: (xfail_issue_39669, "test_MSFT_opset9_cgan_cgan_cpu"), (xfail_issue_47495, "test_MSFT_opset10_BERT_Squad_bertsquad10_cpu"), (xfail_issue_78843, "test_MSFT_opset10_mlperf_ssd_mobilenet_300_ssd_mobilenet_v1_coco_2018_01_28_cpu"), - - (xfail_issue_77668, "test_MSFT_opset10_faster_rcnn_faster_rcnn_R_50_FPN_1x_cpu"), ] for test_case in import_xfail_list + execution_xfail_list: xfail, test_name = test_case diff --git a/src/common/transformations/src/transformations/common_optimizations/convert_nms_gather_path_to_unsigned.cpp b/src/common/transformations/src/transformations/common_optimizations/convert_nms_gather_path_to_unsigned.cpp index 687765cf6c1..33809fe27c0 100644 --- a/src/common/transformations/src/transformations/common_optimizations/convert_nms_gather_path_to_unsigned.cpp +++ b/src/common/transformations/src/transformations/common_optimizations/convert_nms_gather_path_to_unsigned.cpp @@ -49,6 +49,7 @@ class PropagateNMSPath: public pass::MatcherPass { opset8::Reshape, op::util::BroadcastBase, opset8::StridedSlice, + opset8::Slice, opset8::VariadicSplit, op::util::GatherBase, opset8::Concat, diff --git a/src/tests/functional/inference_engine/transformations/common_optimizations/convert_nms_gather_path_to_unsigned_test.cpp b/src/tests/functional/inference_engine/transformations/common_optimizations/convert_nms_gather_path_to_unsigned_test.cpp index d85f9296384..851b7defb3a 100644 --- a/src/tests/functional/inference_engine/transformations/common_optimizations/convert_nms_gather_path_to_unsigned_test.cpp +++ b/src/tests/functional/inference_engine/transformations/common_optimizations/convert_nms_gather_path_to_unsigned_test.cpp @@ -102,6 +102,50 @@ TEST_F(TransformationTestsF, test_convert_to_unsigned_nms_gather_2) { } } +TEST_F(TransformationTestsF, test_convert_to_unsigned_nms_gather_with_onnx_slice) { + // if Convert already exists and Slice is present instead of StridedSlice + { + auto boxes = make_shared(element::f32, Shape{1, 1000, 4}); + auto scores = make_shared(element::f32, Shape{1, 1, 1000}); + auto nms = make_shared(boxes, scores); + + auto start = opset8::Constant::create(element::i32, Shape{1}, {3}); + auto stop = opset8::Constant::create(element::i32, Shape{1}, {4}); + auto step = opset8::Constant::create(element::i32, Shape{1}, {1}); + auto slice_node = make_shared(nms->output(0), start, stop, step); + + // squeeze can be represented as reshape + auto squeeze_node = make_shared(slice_node, opset8::Constant::create(element::i32, Shape{1}, {-1}), true); + auto convert = make_shared(squeeze_node, element::Type_t::i32); + // usually input to gather data goes after reshape NMS scores + auto reshape_node = make_shared(scores, opset8::Constant::create(element::i32, Shape{1}, {-1}), true); + auto gather = make_shared(reshape_node, convert, opset8::Constant::create(element::i32, Shape{1}, {0})); + + function = make_shared(NodeVector{gather}, ParameterVector{boxes, scores}); + + manager.register_pass(); + } + + { + auto boxes = make_shared(element::f32, Shape{1, 1000, 4}); + auto scores = make_shared(element::f32, Shape{1, 1, 1000}); + auto nms = make_shared(boxes, scores); + + auto start = opset8::Constant::create(element::i32, Shape{1}, {3}); + auto stop = opset8::Constant::create(element::i32, Shape{1}, {4}); + auto step = opset8::Constant::create(element::i32, Shape{1}, {1}); + auto slice_node = make_shared(nms->output(0), start, stop, step); + + // squeeze can be represented as reshape + auto squeeze_node = make_shared(slice_node, opset8::Constant::create(element::i32, Shape{1}, {-1}), true); + auto convert = make_shared(squeeze_node, element::Type_t::u32); + auto reshape_node = make_shared(scores, opset8::Constant::create(element::i32, Shape{1}, {-1}), true); + auto gather = make_shared(reshape_node, convert, opset8::Constant::create(element::i32, Shape{1}, {0})); + + function_ref = make_shared(NodeVector{gather}, ParameterVector{boxes, scores}); + } +} + TEST(TransformationTests, test_convert_to_unsigned_nms_gather_3) { // if NMS output goes not into Gather indices no converts should be inserted auto boxes = make_shared(element::f32, Shape{1, 1000, 4});