Files

67 lines
3.2 KiB
Python

# type: ignore
from __future__ import annotations
from openvino._ov_api import Model
from openvino._pyopenvino import Layout
from openvino._pyopenvino import PartialShape
from openvino._pyopenvino.preprocess import PrePostProcessor
from openvino.tools.ovc.error import Error
from openvino.tools.ovc.moc_frontend.layout_utils import update_layout_to_dict
from openvino.tools.ovc.utils import refer_to_faq_msg
import argparse as argparse
import logging as log
import openvino._ov_api
import openvino._pyopenvino
__all__ = ['Error', 'Layout', 'Model', 'PartialShape', 'PrePostProcessor', 'apply_preprocessing', 'argparse', 'check_keys_valid', 'find_channels_dimension', 'log', 'refer_to_faq_msg', 'update_layout_is_input_flag', 'update_layout_to_dict', 'update_tensor_names_to_first_in_sorted_list']
def apply_preprocessing(ov_function: openvino._ov_api.Model, argv: argparse.Namespace):
"""
Applies pre-processing of model inputs by adding appropriate operations
On return, 'ov_function' object will be updated
Expected 'argv.mean_scale_values' formats examples:
a) Dict: {'inputName': {'mean': [1., 2., 3.], 'scale': [2., 4., 8.]}}
b) List: list(np.array([(np.array([1., 2., 3.]), np.array([2., 4., 6.])),
(np.array([7., 8., 9.]), np.array([5., 6., 7.])))
Expected 'argv.layout_values' format examples:
a) Specific layouts for inputs and outputs
{ 'input1': {
'source_layout': 'nchw',
'target_layout': 'nhwc'
},
'output2': {
'source_layout': 'nhwc'
}
}
b) Layout for single input: {'': {'source_layout': 'nchw'}}
:param: ov_function OV function for applying mean/scale pre-processing
:param: argv Parsed command line arguments
"""
def check_keys_valid(ov_function: openvino._ov_api.Model, dict_to_validate: dict, search_outputs: bool):
"""
Internal function: checks if keys from cmd line arguments correspond to ov_function's inputs/outputs
Throws if some key is not found
Throws if some different keys point to the same actual input/output
"""
def find_channels_dimension(shape: openvino._pyopenvino.PartialShape, num_channels: int, name: str, layout_values):
"""
Internal function. Finds dimension index matching with expected channels number
Raises error if there is no candidates or number of candidates is > 1
:param: shape Parameter's partial shape
:param: num_channels Number of channels to find in shape
:param: name Parameter's name, used for Error-handling purposes
:param: layout_values Existing source/target layout items specified by user
:return: updated layout items with guessed layouts
"""
def update_layout_is_input_flag(ov_function: openvino._ov_api.Model, layout_values: dict):
"""
Internal function: updates layout_values with flag whether each layout belongs to input or to output
"""
def update_tensor_names_to_first_in_sorted_list(values_dict: dict, ov_function: openvino._ov_api.Model):
...