Files
openvino/tools/mo
Pavel Esir 41d4fcdf25 [MO] Add reverse_infer (input rank deducing) for set of operations (#8928)
* grouped convolution resolver fix

* add reverse_infer for Transpose, Elementwise, Identity and some fixes to successfully OOB convert MXNet models

* add reverse_infer for BatchNorms, dynamic groups fix, multi_box_prior.py fix

* add reverse infer for trivial cases

* input rank setting for image detection ops

* reverse_infer for Gather, AttributedGather add todo comment for Parameter

* reverse infer for LSTM, swapaxis; fixes and unit-tests for Elementwise, Gather, Transpose; also generalized Parameter reverse_infer; fixed DetectionOutput and partial reverse_infer

* clarified comment for LSTM reverse_infer

* detalized Elementwise reverse_infer, added several more unit-tests, Split reverse_infer fix, IteratorGetNext_ext.py fix

* generalized group convolution resolver

* specified in_ports explicitly

* clarified Split, Concat, Parameter, other minor typos

* relaxed compatibility check for elementwise; simplified scalar extracting for convolution.py and gather.py, fixed replacer order for ConvolutionNormalizer.py

* added routine set_input_shapes for image detection ops

* fixed typos to pass locally E2E, slightly changed LSTM reverse_infer

* VariadicSplit reverse_infer bugfix

* IteratorGetNextCut.py added check if port is connected

* explicitly specified in_port, added asserts, improved Split reverse infer

* sorted imports

* reverse_infer for ONNX and MXNet LSTM, GRU, RNN operations

* replaced Error raising with red warning

* added missing return for defined input shapes, fixed getting num groups for tf conv

* added mandatory attributes; fixed failing unit-tests, fixed typo with scalar group in ConvolutionNormalizer

* removed priorbox reverse_infer; Parameter reverse_infer corrected to use the only one existing out_port

* fixed clarify_partial_shape_test
2022-01-25 10:14:41 +03:00
..
2021-12-08 08:53:53 +03:00
2021-12-08 08:53:53 +03:00
2021-12-08 08:53:53 +03:00
2021-12-08 08:53:53 +03:00

Installation

Installing from PyPi

  1. Create a virtual environment and activate it, e.g.:
virtualenv -p /usr/bin/python3.7 .env3
source .env3/bin/activate
  1. Install openvino-dev package, it contains Model Optimizer:
pip install openvino-dev

This will download all requirements and will install MO in your current virtual environment. If you need only particular frameworks you can specify them manually as optional dependencies in square brackets. E.g. the command below will install dependencies to support ONNX* and TensorFlow2* models:

pip install openvino-dev[onnx,tensorflow2]

To enable support of MxNet* models run:

pip install openvino-dev[mxnet]

To enable support of all frameworks:

pip install openvino-dev[all]

By default, if no frameworks are specified, dependencies to support ONNX* and TensorFlow2* are installed.

Converting models

Setup development environment

If you want to contribute to Model Optimizer you will need to deploy developer environment. You can do that by following the steps below:

  1. Create virtual environment and activate it, e.g.:
virtualenv -p /usr/bin/python3.7 .env3
source .env3/bin/activate
  1. Clone the OpenVINO™ repository and change dir to model-optimizer
git clone https://github.com/openvinotoolkit/openvino
cd openvino/tools/mo/
  1. Install openvino-mo package for development:
pip install -e .

or run setup.py develop, result will be the same:

python setup.py develop

This will download all requirements and deploy Model Optimizer for development in your virtual environment: specifically will create *.egg-link into the current directory in your site-packages. As previously noted, you can also manually specify to support only selected frameworks :

pip install -e ".[onnx,tensorflow2]"

How to run unit-tests

  1. Run tests with:
    python -m unittest discover -p "*_test.py" [-s PATH_TO_DIR]

How to capture unit-tests coverage

  1. Run tests with:
    coverage run -m unittest discover -p "*_test.py" [-s PATH_TO_DIR]
  1. Build html report:
    coverage html

How to run code linting

  1. Run the following command:
    pylint openvino/tools/mo/ mo.py