blobconverter 1.4.3
The tool that allows you to convert neural networks to MyriadX blob
License: MIT
Keywords: blobconverter blob converter myriadx openvino tensorflow caffe ir

# BlobConverter CLI

This tool allows you to convert neural network files (from various sources, like Tensorflow, Caffe or OpenVINO) 
to MyriadX blob file

## Installation

```
python3 -m pip install blobconverter
```
## Usage

```
usage: blobconverter [-h] [-zn ZOO_NAME] [-zt ZOO_TYPE] [-onnx ONNX_MODEL]
                     [-cp CAFFE_PROTO] [-cm CAFFE_MODEL] [-tf TENSORFLOW_PB]
                     [-ox OPENVINO_XML] [-ob OPENVINO_BIN] [-rawn RAW_NAME]
                     [-rawc RAW_CONFIG]
                     [-sh {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}]
                     [-dt DATA_TYPE] [-o OUTPUT_DIR]
                     [-v {2021.2,2021.3,2021.4,2022.1,2022.3_RVC3}]
                     [--optimizer-params OPTIMIZER_PARAMS]
                     [--compile-params COMPILE_PARAMS] [--converter-url URL]
                     [--no-cache] [--dry] [--zoo-list] [--download-ir]

optional arguments:
  -h, --help            show this help message and exit
  -zn ZOO_NAME, --zoo-name ZOO_NAME
                        Name of a model to download from OpenVINO Model Zoo
  -zt ZOO_TYPE, --zoo-type ZOO_TYPE
                        Type of the model zoo to use, available: "intel", "depthai"
  -onnx ONNX_MODEL, --onnx-model ONNX_MODEL
                        Path to ONNX .onnx file
  -cp CAFFE_PROTO, --caffe-proto CAFFE_PROTO
                        Path to Caffe .prototxt file
  -cm CAFFE_MODEL, --caffe-model CAFFE_MODEL
                        Path to Caffe .caffemodel file
  -tf TENSORFLOW_PB, --tensorflow-pb TENSORFLOW_PB
                        Path to TensorFlow .pb file
  -ox OPENVINO_XML, --openvino-xml OPENVINO_XML
                        Path to OpenVINO .xml file
  -ob OPENVINO_BIN, --openvino-bin OPENVINO_BIN
                        Path to OpenVINO .bin file
  -rawn RAW_NAME, --raw-name RAW_NAME
                        Name of the converted model (advanced)
  -rawc RAW_CONFIG, --raw-config RAW_CONFIG
                        Path to raw .yml file with model config (advanced)
  -sh {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}, --shaves {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}
                        Specifies number of SHAVE cores that converted model will use
  -dt DATA_TYPE, --data-type DATA_TYPE
                        Specifies model data type
  -o OUTPUT_DIR, --output-dir OUTPUT_DIR
                        Directory where the output blob should be saved
  -v {2021.2,2021.3,2021.4,2022.1,2022.3_RVC3}, --version {2021.2,2021.3,2021.4,2022.1,2022.3_RVC3}
                        OpenVINO version to use for conversion. To export
                        model for RVC3, you must set OpenVINO version to
                        '2022.3_RVC3'.
  --optimizer-params OPTIMIZER_PARAMS
                        Additional params to use when converting a model to OpenVINO IR
  --compile-params COMPILE_PARAMS
                        Additional params to use when compiling a model to MyriadX blob
  --converter-url URL   URL to BlobConverter API endpoint used for conversion
  --no-cache            Omit .cache directory and force new compilation of the blob
  --dry                 Instead of compiling the blob, return compilation commands (for manual conversion)
  --zoo-list            List all models available in OpenVINO Model Zoo
  --download-ir         Downloads OpenVINO IR files used to compile the blob. Result path points to a result ZIP archive
```

## Conversion examples (cli)

### OpenVINO Model Zoo

```
python3 -m blobconverter --zoo-name face-detection-retail-0004 --shaves 6
```

To list all available models, run

```
python3 -m blobconverter --zoo-list
```

### Caffe

```
python3 -m blobconverter --caffe-proto /path/to/mobilenet-ssd.prototxt --caffe-model /path/to/mobilenet-ssd.caffemodel --shaves 6
```


### TensorFlow

```
python3 -m blobconverter --tensorflow-pb /path/to/deeplabv3_mnv2_pascal_train_aug.pb --optimizer-params --reverse_input_channels --input_shape=[1,513,513,3] --input=1:mul_1 --output=ArgMax --shaves 6
```


### ONNX

```
python3 -m blobconverter --onnx-model /path/to/model.onnx --shaves 6
```


### OpenVINO IR

```
python3 -m blobconverter --openvino-xml /path/to/face-detection-retail-0004.xml --openvino-bin /path/to/face-detection-retail-0004.bin --shaves 7
```


### Raw model config (advanced)

```
python3 -m blobconverter --raw-config /path/to/model.yml --raw-name license-plate-recognition-barrier-0007 --shaves 6
```

## Conversion examples (Python)

### OpenVINO Model Zoo

```python
import blobconverter

blob_path = blobconverter.from_zoo(
    name="face-detection-retail-0004", 
    shaves=6,
)
```

To get all available models, use

```python
import blobconverter

available_models = blobconverter.zoo_list()
```

### Caffe

```python
import blobconverter

blob_path = blobconverter.from_caffe(
    proto="/path/to/mobilenet-ssd.prototxt",
    model="/path/to/mobilenet-ssd.caffemodel",
    data_type="FP16",
    shaves=5,
)
```


### TensorFlow

```python
import blobconverter

blob_path = blobconverter.from_tf(
    frozen_pb="/path/to/deeplabv3_mnv2_pascal_train_aug.pb",
    data_type="FP16",
    shaves=5,
    optimizer_params=[
        "--reverse_input_channels",
        "--input_shape=[1,513,513,3]",
        "--input=1:mul_1",
        "--output=ArgMax",
    ],
)
```

### ONNX

```python
import blobconverter

blob_path = blobconverter.from_onnx(
    model="/path/to/model.onnx",
    data_type="FP16",
    shaves=5,
)
```


### OpenVINO IR

```python
import blobconverter

blob_path = blobconverter.from_openvino(
    xml="/path/to/face-detection-retail-0004.xml",
    bin="/path/to/face-detection-retail-0004.bin",
    data_type="FP16",
    shaves=5,
)
```


### Raw model config (advanced)

```python
import blobconverter

blob_path = blobconverter.from_config(
    name="license-plate-recognition-barrier-0007",
    path="/path/to/model.yml",
    data_type="FP16",
    shaves=5,
)
```

### Use [DepthAI Model Zoo](https://github.com/luxonis/depthai-model-zoo) to download files

```python
import blobconverter

blob_path = blobconverter.from_zoo(name="megadepth", zoo_type="depthai")
```

### Download using URLs instead of local files
```python
import blobconverter

blob_path = blobconverter.from_openvino(
    xml="https://storage.openvinotoolkit.org/repositories/open_model_zoo/2021.4/models_bin/3/age-gender-recognition-retail-0013/FP16/age-gender-recognition-retail-0013.xml",
    xml_size=31526,
    xml_sha256="54d62ce4a3c3d7f1559a22ee9524bac41101103a8dceaabec537181995eda655",
    bin="https://storage.openvinotoolkit.org/repositories/open_model_zoo/2021.4/models_bin/3/age-gender-recognition-retail-0013/FP16/age-gender-recognition-retail-0013.bin",
    bin_size=4276038,
    bin_sha256="3586df5340e9fcd73ba0e2d802631bd9e027179490635c03b273d33d582e2b58"
)
```