* initial version of transformation workable for loop * moved transformation to back + minor changes in result names * fixed mistake: to concatenate results of all iterations Unsqueeze should be added * added shape inference for new nodes and extend test * added support of TensorIterator * If support + test; fix to save model with TI after transformation * fix code and tests according to run with ir_reader * added finding max internal_layer_id in sub-graph + added comments to code * turn off transformation because it should not be used in MO scenarios * refactor code to find out iterations count for TensorIterator * chenged name of final result to srtucture loop1.loop2.node for path [loop1, loop2, node] * change port number to index of added output * return list of new nodes * change naming of output to standard way; return result node as output of transformation * refactor transformation, add more comments; fine up tests * review fixes: add more comments, refactoring of infer function, fix in iterations count calculation * added processing of dynamic iterations count + tests * moved iterations count calculation to TI * fixed bug in iterations count calculation * fix bug with adding iterations count to wrong dimension + test * review fixes: minor renaming + fixed bug with unset stride for TI * move logic with output record outside function calculation iteration count; fix case with negative start/end; fix case when division result is not integer; added tests for such cases * review fixes: refactoring of toerations count calculation
Prerequisites
Model Optimizer requires:
-
Python 3 or newer
-
[Optional] Please read about use cases that require Caffe* to be available on the machine in the documentation.
Installation instructions
- Go to the Model Optimizer folder:
cd PATH_TO_INSTALL_DIR/tools/model_optimizer
-
Create virtual environment and activate it. This option is strongly recommended as it creates a Python sandbox and dependencies for the Model Optimizer do not influence global Python configuration, installed libraries etc. At the same time, special flag ensures that system-wide Python libraries are also available in this sandbox. Skip this step only if you do want to install all Model Optimizer dependencies globally:
- Create environment:
virtualenv -p /usr/bin/python3.6 .env3 --system-site-packages
- Activate it:
. .env3/bin/activate
- Create environment:
-
Install dependencies. If you want to convert models only from particular framework, you should use one of available
requirements_*.txtfiles corresponding to the framework of choice. For example, for Caffe userequirements_caffe.txtand so on. When you decide to switch later to other frameworks, please install dependencies for them using the same mechanism:pip3 install -r requirements.txt
Or you can use the installation scripts from the "install_prerequisites" directory.
-
[OPTIONAL] If you use Windows OS, most probably you get python version of
protobuflibrary. It is known to be rather slow, and you can use a boosted version of library by building the .egg file (Python package format) yourself, using instructions below (section 'How to boost Caffe model loading') for the target OS and Python, or install it with the pre-built .egg (it is built for Python 3.4, 3.5, 3.6, 3.7):python3 -m easy_install protobuf-3.6.1-py3.6-win-amd64.egg
It overrides the protobuf python package installed by the previous command.
Set environment variable to enable boost in protobuf performance:
set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=cpp
Setup development environment
How to run unit-tests
- Run tests with:
python -m unittest discover -p "*_test.py" [-s PATH_TO_DIR]
How to capture unit-tests coverage
- Run tests with:
coverage run -m unittest discover -p "*_test.py" [-s PATH_TO_DIR]
- Build html report:
coverage html
How to run code linting
- Run the following command:
pylint mo/ extensions/ mo.py