ETC/Openvino Toolkit

02 Openvino Toolkit 2020ver. #3 모델에 사용하기 - How to use Model Optimizer?

heegu 2022. 9. 13. 09:40

  Openvino Toolkit 설치 관련된 지난 게시글에 이어 자신이 만든 모델에 직접 사용해볼 예정이다. 

 

  보통 OpenvinoToolkit을 사용하여 딥러닝 모델을 최적화 하는 것은 OpenvinoToolkit 에서 제공하는 Model Optimizer 를 통해 이루어진다. 본 내용은 Openvino Toolkit 2020ver. 을 기반으로 작성되었다.

 

Model Optimizer 란,

  Training 및 배포(deployment) 환경 간의 전환을 용이하게 하고 정적 모델 분석(static model analysis)을 수행하고 end-point target 장치에서 최적의 실행을 위해 딥 러닝 모델을 조정하는 cross-platform command-line tool이다.

 

  Model Optimizer 도구를 사용하면 지원되는 프레임워크 중 하나를 사용하여 이미 딥 러닝 모델을OpenVINO™ Runtime으로 inference할 수 있는 모델의 *IR(Intermediate Representation)을 생성한다.

지원 가능: TensorFlow, PyTorch, PaddlePaddle, MXNet, Caffe, Kaldi 또는 ONNX

 

직접 개발한 모델을 배포하는 전형적인 workflow

*여기서 IR 파일이란, Model optimizer의 결과로, 모델을 설명할수 있는 한 쌍의 파일이며 아래와 같이 구성된다.

  • .xml - Describes the network topology
  • .bin - Contains the weights and biases binary data.
  • 이후, Openvino의 Inference Engine을 통해 CPU, GPU, VPU등 하드웨어의 common API를 사용하여, 해당 IR 파일들을 reads, loads, and infer 한다.

 

Model Optimizer 사용법

step1 Freezing Models

  •   네트워크가 Python* 코드에 정의되어 있는 경우 추론 그래프(inference graph) 파일을 생성해야 하는데, 일반적으로 이 그래프 라는 놈은 trainable한 모델 형태로 구축된다.(모든 훈련 가능한 모수가 그래프에서 변수로 표현된다는 뜻) Model Optimizer에서 이러한 그래프를 사용할 수 있으려면 해당 그래프를 고정하는 과정이 필요하다.
  •   이때 고정하는 과정을 Model Freezing 이라고 하며 관련 내용 및 코드는 이전글을 참고하면 된다. (2022.08.18 - [ETC/Openvino Toolkit] - 01 Openvino Toolkit #2 모델에 사용하기 - Freezing Model)

 

step2 Install Pre-requisities

  • model freezing이 끝났다면, 그다음으로 해야할 것은 model optimizer 를 실행하기위한, 요구사항들을 설치해주어야한다. 요구사항들은 사용하고자하는 domain 에 따라 다르며, tensorflow 를 기준으로 작성하였다. (TensorFlow, PyTorch, PaddlePaddle, MXNet, Caffe, Kaldi 또는 ONNX)
# <INSTALL_DIR> == "C:\Program Files (x86)\IntelSWTools\openvino_2020.3.355\"
$ cd <INSTALL_DIR>\deployment_tools\model_optimizer\install_prerequisites\

# total pre-requisites 
$ install_prerequisites.bat 

# install_prerequisites_caffe.bat # caffe
# install_prerequisites_kaldi.bat # kaldi
# install_prerequisites_mxnet.bat # mxnet
# install_prerequisites_onnx.bat  # onnx
# install_prerequisites_tf.bat    # tensorflow

* 문제 발생시,  openvino toolkit setup 을 실행한 창에서 진행하고 있는지 확인 할 것. (OpenVINO environment initialized! 문구 확인)

# "<INSTALL_DIR>\setupvars.bat"
 $ cd <INSTALL_DIR>/bin/
 $ setupvars.bat
[setupvars.bat] OpenVINO environment initialized!

* 그래도 안된다면.. 재설치 해보자 (2022.08.12 - [ETC/Openvino Toolkit] - 00 Openvino Toolkit #1 설치 방법)

 

step3 Run Model Optimizer

사전 요구사항들을 문제없이 설치하였다면, 실질적으로 사용할 Model Optimizer의 경로를 찾아가 사용해보자.

Change Directory 

$ cd <INSTALL_DIR>/deployment_tools/model_optimizer/
  • 해당 경로의 파일들을 확인해보면, framework 별로 Model Optimizer 파일이 있다.
    • mo.py | mo_caffe.py | mo_kaldi.py | mo_mxnet.py | mo_onnx.py | mo_tf.py
    • Tensorflow 모델의 경우 mo.py or mo_tf.py 를 사용하면 된다. 
    • 대신 Step2 에서 설치했던 pre-requisities 파일에 맞는 model optimizer를 사용하면 된다.

 

Model Optimizer: options

  • Model Optimizer 의 명령어는 아래와 같다. 
python mo.py --input_model {model path} --output_dir {save directory} --data_type {I&O data type} --input_shape {shape of input image} --model_name {name of model} --framework {framework}
  • 그렇다면 option들에 대해 알아보자
Options  
--input_model Frozen model 의 경로 (.pb)
--output_dir Model Optimizer 의 결과 model을 저장할 폴더 경로
--data_type Tensor와 weight의 data type 지정 (FP16 or FP32)
e.g. --data_type FP32
--input_shape Model 에 입력할 data shape
e.g. --input_shape [n, 224, 224, 3]
* n = None 으로 지정할 경우 error 발생 (n > 0)
--model_name 저장할때의 model 파일명 지정
--framework model 의 framework (tf, caffe, mxnet, kaldi, onnx)
e.g. --framework tf

 

Model Optimizer: results

  • Model Optimizer 의 결과 IR 형식의 파일들을 생성한다. 그러므로 제대로 생성이 되었는지 꼭 확인하길 바란다.
    • 1. 생성된 모델 Openvino Toolkit 의 IR Engine 을 사용하여 제대로 inference 되는지 확인할 것.
      • Optimizing 이전의 모델의 결과와 변환 모델 inference하여 결과 확인해보고 두 값사이에 차이가 없어야함.
      • 아무리 달라도 경험상 AUC, 민감도, 특이도의 경우 소수점 4~5자리까지는 맞아야함.
    • 2. 생성된 .xml 파일 을 확인하여 layer들이 제대로 represent 되었는지 확인할 것.

 

 


 

 

다음시간에는 Openvino Toolkit을 통해 최적화된 모델을 inference 하는 방법에 대해 다뤄볼 것이다.