From 0c20e7a3cac77eff9471a90252b0cabd1a414d07 Mon Sep 17 00:00:00 2001 From: Roman Kazantsev Date: Fri, 4 Mar 2022 20:50:02 +0300 Subject: [PATCH] [MO] Remove IR frontend from available frontend list in MO (#10798) * [MO] Remove IR frontend from available frontend list in MO Signed-off-by: Roman Kazantsev * Fix issue - forget to pass FEM Signed-off-by: Roman Kazantsev * Fix issue for TF with new FE and default legacy Signed-off-by: Roman Kazantsev --- tools/mo/openvino/tools/mo/main.py | 10 +++++++--- tools/mo/openvino/tools/mo/utils/cli_parser.py | 13 ++++++++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/tools/mo/openvino/tools/mo/main.py b/tools/mo/openvino/tools/mo/main.py index 208877049cc..6f78d9bdfd1 100644 --- a/tools/mo/openvino/tools/mo/main.py +++ b/tools/mo/openvino/tools/mo/main.py @@ -29,7 +29,7 @@ from openvino.tools.mo.pipeline.common import prepare_emit_ir, get_ir_version from openvino.tools.mo.pipeline.unified import unified_pipeline from openvino.tools.mo.utils import import_extensions from openvino.tools.mo.utils.cli_parser import check_available_transforms, \ - get_advanced_cli_options, get_caffe_cli_options, \ + get_advanced_cli_options, get_available_front_ends, get_caffe_cli_options, \ get_common_cli_options, get_freeze_placeholder_values, get_kaldi_cli_options, get_layout_values, \ get_mean_scale_dictionary, get_meta_info, get_model_name, get_mxnet_cli_options, get_onnx_cli_options, \ get_placeholder_shapes, get_tf_cli_options, get_tuple_values, parse_transform, parse_tuple_pairs @@ -120,7 +120,7 @@ def get_moc_frontends(argv: argparse.Namespace): if not fem or use_legacy_frontend: return None, [] - available_moc_front_ends = fem.get_available_front_ends() + available_moc_front_ends = get_available_front_ends(fem) if not argv.framework and argv.input_model: moc_front_end = fem.load_by_model(argv.input_model) @@ -135,7 +135,11 @@ def get_moc_frontends(argv: argparse.Namespace): default_frontends = get_default_frontends() # Disable MOC frontend if default is set to legacy and no user override if default_frontends.get(moc_front_end.get_name()) == 'legacy' and not use_new_frontend: - moc_front_end = None + return None, available_moc_front_ends + + # This check as a workaround to skip IR frontend + if not moc_front_end.get_name() in available_moc_front_ends: + return None, available_moc_front_ends return moc_front_end, available_moc_front_ends diff --git a/tools/mo/openvino/tools/mo/utils/cli_parser.py b/tools/mo/openvino/tools/mo/utils/cli_parser.py index df41ef4f3a9..567b4619d42 100644 --- a/tools/mo/openvino/tools/mo/utils/cli_parser.py +++ b/tools/mo/openvino/tools/mo/utils/cli_parser.py @@ -775,7 +775,7 @@ def get_all_cli_parser(frontEndManager=None): parser = argparse.ArgumentParser(usage='%(prog)s [options]') frameworks = list(set(['tf', 'caffe', 'mxnet', 'kaldi', 'onnx'] + - (frontEndManager.get_available_front_ends() if frontEndManager else []))) + (get_available_front_ends(frontEndManager) if frontEndManager else []))) parser.add_argument('--framework', help='Name of the framework used to train the input model.', @@ -1620,3 +1620,14 @@ def get_meta_info(argv: argparse.Namespace): if key in meta_data: meta_data[key] = ','.join([os.path.join('DIR', os.path.split(i)[1]) for i in meta_data[key].split(',')]) return meta_data + + +def get_available_front_ends(fem=None): + # Use this function as workaround to avoid IR frontend usage by MO + if fem is None: + return [] + available_moc_front_ends = fem.get_available_front_ends() + if 'ir' in available_moc_front_ends: + available_moc_front_ends.remove('ir') + + return available_moc_front_ends