02 Openvino Toolkit 2020ver. #3 모델에 사용하기 - How to use Model Optimizer?
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
*여기서 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 되었는지 확인할 것.
- 1. 생성된 모델 Openvino Toolkit 의 IR Engine 을 사용하여 제대로 inference 되는지 확인할 것.
다음시간에는 Openvino Toolkit을 통해 최적화된 모델을 inference 하는 방법에 대해 다뤄볼 것이다.