def apply_offline_transformations(input_model: str, framework: str, transforms: list, compress_fp16=False): # This variable is only needed by GenerateMappingFile transformation # to produce correct mapping extract_names = framework in ['tf', 'mxnet', 'kaldi'] from openvino.offline_transformations_pybind import generate_mapping_file, serialize # pylint: disable=import-error,no-name-in-module from openvino.frontend import FrontEndManager, FrontEnd # pylint: disable=no-name-in-module,import-error fem = FrontEndManager() # We have to separate fe object lifetime from fem to # avoid segfault during object destruction. So fe must # be destructed before fem object explicitly. def read_model(path_to_xml): fe = fem.load_by_framework(framework="ir") function = fe.convert(fe.load(path_to_xml)) return function func = read_model(input_model + "_tmp.xml") apply_user_transformations(func, transforms) apply_moc_transformations(func) if compress_fp16: compress_model(func) serialize(func, str(input_model + ".xml").encode('utf-8'), (input_model + ".bin").encode('utf-8')) path_to_mapping = input_model + ".mapping" generate_mapping_file(func, path_to_mapping.encode('utf-8'), extract_names)
def base_args_config(use_legacy_fe: bool = None, use_new_fe: bool = None): args = argparse.Namespace() args.feManager = FrontEndManager() args.extensions = None args.use_legacy_frontend = use_legacy_fe args.use_new_frontend = use_new_fe args.framework = 'onnx' args.model_name = None args.input_model = None args.silent = True args.transform = [] args.legacy_ir_generation = False args.scale = None args.output = None args.input = None args.input_shape = None args.batch = None args.mean_values = None args.scale_values = None args.output_dir = os.getcwd() args.freeze_placeholder_with_value = None args.transformations_config = None args.disable_fusing = None args.finegrain_fusing = None args.disable_gfusing = None args.disable_resnet_optimization = None args.enable_concat_optimization = None args.static_shape = None args.disable_weights_compression = None args.reverse_input_channels = None args.data_type = None args.layout = None args.source_layout = None args.target_layout = None return args
def apply_offline_transformations(input_model: str, argv: argparse.Namespace): # This variable is only needed by GenerateMappingFile transformation # to produce correct mapping extract_names = argv.framework in ['tf', 'mxnet', 'kaldi'] from openvino.offline_transformations import generate_mapping_file, serialize # pylint: disable=import-error,no-name-in-module from openvino.frontend import FrontEndManager # pylint: disable=no-name-in-module,import-error from openvino.tools.mo.back.preprocessing import apply_preprocessing # pylint: disable=no-name-in-module,import-error fem = FrontEndManager() # We have to separate fe object lifetime from fem to # avoid segfault during object destruction. So fe must # be destructed before fem object explicitly. def read_model(path_to_xml): fe = fem.load_by_framework(framework="ir") function = fe.convert(fe.load(path_to_xml)) return function func = read_model(input_model + "_tmp.xml") # TODO: use ngraph preprocessing (Mean/Scale/ReverseInputChannels) for legacy frontends reverse_input_channels = False if 'reverse_input_channels' in argv: reverse_input_channels = argv.reverse_input_channels argv.reverse_input_channels = False mean_scale_values = {} if 'mean_scale_values' in argv: mean_scale_values = argv.mean_scale_values argv.mean_scale_values = {} scale = None if 'scale' in argv: scale = argv.scale argv.scale = None # Apply preprocessing for layouts only apply_preprocessing(ov_function=func, argv=argv) if 'reverse_input_channels' in argv: argv.reverse_input_channels = reverse_input_channels if 'mean_scale_values' in argv: argv.mean_scale_values = mean_scale_values if 'scale' in argv: argv.scale = scale apply_moc_transformations(func) params_with_custom_types = create_params_with_custom_types( argv.packed_user_shapes) apply_moc_legacy_transformations(func, params_with_custom_types) apply_user_transformations(func, parse_transform(argv.transform)) if "compress_fp16" in argv and argv.compress_fp16: compress_model(func) serialize(func, str(input_model + ".xml").encode('utf-8'), (input_model + ".bin").encode('utf-8')) path_to_mapping = input_model + ".mapping" generate_mapping_file(func, path_to_mapping.encode('utf-8'), extract_names)
if analysis_results.get_messages() is not None: for el in analysis_results.get_messages(): log.error(el, extra={'analysis_info': True}) log.error(err) log.debug(traceback.format_exc()) except FrameworkError as err: log.error(err, extra={'framework_error': True}) log.debug(traceback.format_exc()) except Exception as err: log.error("-------------------------------------------------") log.error("----------------- INTERNAL ERROR ----------------") log.error("Unexpected exception happened.") log.error( "Please contact Model Optimizer developers and forward the following information:" ) log.error(str(err)) log.error(traceback.format_exc()) log.error("---------------- END OF BUG REPORT --------------") log.error("-------------------------------------------------") telemetry.send_event('mo', 'conversion_result', 'fail') telemetry.end_session('mo') telemetry.force_shutdown(1.0) return 1 if __name__ == "__main__": from openvino.tools.mo.utils.cli_parser import get_all_cli_parser fe_manager = FrontEndManager() sys.exit(main(get_all_cli_parser(fe_manager), fe_manager, None))
# pylint: disable=no-name-in-module,import-error from openvino.runtime import PartialShape from openvino.frontend import FrontEndManager from openvino.runtime.utils.types import get_element_type except Exception: print("No mock frontend API available, " "ensure to use -DENABLE_TESTS=ON option when running these tests") mock_available = False # FrontEndManager shall be initialized and destroyed after all tests finished # This is because destroy of FrontEndManager will unload all plugins, # no objects shall exist after this if mock_available: fem = FrontEndManager() mock_needed = pytest.mark.skipif(not mock_available, reason="mock MO fe is not available") def replaceArgsHelper(log_level='DEBUG', silent=False, model_name='abc', input_model='abc.test_mo_mock_mdl', transform=[], legacy_ir_generation=False, scale=None, output=None, _input=None, input_shape=None,
# Copyright (C) 2021 Intel Corporation # SPDX-License-Identifier: Apache-2.0 import sys from openvino.tools.mo.utils.cli_parser import get_onnx_cli_parser if __name__ == "__main__": from openvino.tools.mo.main import main from openvino.frontend import FrontEndManager # pylint: disable=no-name-in-module,import-error sys.exit(main(get_onnx_cli_parser(), FrontEndManager(), 'onnx'))