OpenVINO- The Model Optimizer

Jessy Li 潔西李
5 min readFeb 23, 2020

--

The Model Optimizer 允許你使用非 OpenVINO Pre-Trained 好的model. 如下圖: 首先你先訓練一個模型(如 Tensorflow),然後 將模型丟在 "Model Optimizer" 裡面傳換成 OpenVINO 的格式,然後再將轉好的檔 (訓練好的模型) 丟到 Inference Engine後再跟 User Application 互通。

安裝其他framework的 Model Optimizer

以windows 為例,在 OpenVINO的資料夾底下(C:\Program Files (x86)\IntelSWTools\openvino_2019.3.379\deployment_tools\model_optimizer\install_prerequisites),可以看到 OpenVINO 支援 caffe, Kaldi, mxnet, onnx and tf(tensorflow)

OpenVINO 裡 Optimization 的技巧

  1. Quantization - Weights 和 Biase 的精準度設定,要經準備小數點第幾位。
  2. Freezing- (只適用在Tensorflow): Frezzing 在 TensorFlow裡面會移除某些會移除某些只用在訓練時候的operation。例如:BackPropagation。所以當 OpenVINO 在轉換 TensorFlow訓練出來的模型,使用 Freezing,然後進行 Inference 就是一個很好的應用。
  3. Fusion:將多重層次的operation變成單層次的operation. 這個方法容易使用在 GPU 做 Inference的模型。一般都會散布在多個GPU執行的模型,OpenVINO最佳化的方式就是將其轉換成單一層次的 operation.

IR (Intermediate Representations) 轉換

其他 Framework 訓練好的 Model, 在 Model Optimizer 丟入 IR 後,會產生兩個文件檔,一個是 .xml, 另一個是 .bin

.xml 定義了 model 的架構及其他的 metadata

.bin存放了 weights, biases

這兩個檔案被 IR 出來後,才能丟進去 inference engineer和 user application作互動。

範例:轉 Tensorflow訓練好的模型

參考文件

  1. 假設我們需使用 ssd_mobilenet_v2 這個 tensorflow 已經訓練好的模型。使用 wget 來下載:
wget http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v2_coco_2018_03_29.tar.gz

下載完,用 tar 解壓縮, 可以看到兩個重要檔案

pipeline.config : 包含模型的參數、訓練的參數及評估的參數等等。

fronzen_inference_graph.pb: 因為是 frozen, 所以是帶有權重的訓練好的網路模型。

接下來我們執行 mo.py 來轉換 Tensflow 所訓練好的模型,

python /opt/intel/openvino/deployment_tools/model_optimizer/mo.py --input_model frozen_inference_graph.pb --tensorflow_object_detection_api_pipeline_config pipeline.config --reverse_input_channels --tensorflow_use_custom_operations_config /opt/intel/openvino/deployment_tools/model_optimizer/extensions/front/tf/ssd_v2_support.json

參數說明
1) input_model : frozen 的 pb 檔
2)tensorflow_object_detection_api_pipeline_config : pipeline.config 檔
3) reverse_input_channels, 把 RGB 轉成 OpenVINO的 BRG
4)tensorflow_use_custom_operations_config: 這是輔助的設定檔,如你使用的是 TensorFlow* Object Detection API zoo 下載後的模型,你可以在 openVINO install path (/opt/intel/openvino/deployment_tools/model_optimizer/extensions/)找到輔助的使用檔。

執行上述指令後,產出 .xml 以及 .bin files ,完成!

總結來說 Model Optimizer 就是 將 其他訓練好的模型 (TF, Caffe, ONNX) 轉換成 OpenVINO 的 格式, 產生 bin及 xml檔。

--

--

Jessy Li 潔西李

was a web application developer / a tech project manager / VP of engineering and director of Engineering and Tech support dept.