OpenVINO 뽀개기 (1) OpenVINO 이해 및 변환

2022. 8. 14. 20:50·AI Engineering/OpenVINO
목차
  1. 1. OpenVINO란?
  2. 2. OpenVINO 모델 변환
  3. 2.1 환경 설정 
  4. 2.2 OpenVINO Model Converting

1. OpenVINO란?

OpenVINO는 intel에서 주도적으로 진행 중인 프로젝트입니다. OpenVINO는 다양한 Deep Learning(DL) framework(e.g. PyTorch, TF)의 모델들을 OPenVINO 모델로 변환하여 intel device에 최적화된 inference를 할 수 있도록 해줍니다. 그래서 intel cpu나 gpu에서 DL 모델을 inference할 경우가 생기신다면 OpenVINO를 사용하셔야 latency성능이 좋아집니다!

OpenVINO 목표
OpenVINO 목표

 

추가적으로 OpenVINO는 다음과 같은 특성은 제공합니다. 

  • Pruning, Quantization을 통한 model size 및 inference 최적화 
  • Model의 preprocessing, postprocessing 기능 제공
  • intel cpu뿐만이 아닌 arm cpu, mac m1 chip에 대한 연산 지원

위의 특성에 대해서는 이후 글에서 차차 알아보고 오늘은 (1) OpenVINO변환을 어떻게 하는 지  (2) 변환된 OpenVINO 모델이 어떤 특성을 갖는지 설명드리겠습니다. 

 

2. OpenVINO 모델 변환

2.1 환경 설정 

저는 ONNX모델을 input 모델로 사용하여 OpenVINO형태의 모델로 변환할 것이고 제가 사용한 intel cpu정보와 OpenVINO toolkit의 버전은 아래와 같습니다.

  • openvino-dev: 2022.1.0 (from PypI)
  • CPU: Intel(R) Xeon(R) Gold 5120 CPU @ 2.20GHz (가상 core수: 56)
  • Model: yolov7 ONNX model (for detection task)
    • ONNX 정보: 1.9.0 version, 12 opset

2.2 OpenVINO Model Converting

ONNX모델을 OpenVINo로 변경하는 방법은 엄청 간단합니다. CLI하나면 끝납니다.

mo --input_model ${onnx_path} --output_dir ${output_dir} 
# Ex) mo --input_model yolov7.onxx --output_dir yolov7_openvino

openvino-dev PyPI를 설치하셨다면 mo 명령어를 사용 가능합니다. 그래서 --input_model에는 onnx model의 path를 --output_dir에는 OpenVINO 모델이 저장될 directory를 의미합니다. 

 

명령어가 정상적으로 실행되었다면 아래와 같은 결과를 볼 수 있습니다.

OpenVINO model converting
OpenVINO model converting

위의 출력을 통해 다양한 정보를 알 수 있습니다.

  • OpenVINO모델 변환 시 weight type은 따로 지정하지 않았으므로 default인 FP32로 변환됨
  • OpenVINO모델은 Intermediate Representation(IR)이므로 여러 DL framework들을 하나의 OpenVINO모델로 변환 가능하게 하는 이유기도 함
    • version은 11
  • OpenVINO의 IR은 yolov7_openvino 폴더에 yolov7.xml, yolov7.bin파일로 생성
    • yolov7.xml: model의 topology를 표현
      • Topology란 model내의 layer 순서, layer의 특성 등을 포함함
    • yolov7.bin: model의 weight와 bias값을 binary형태로 가짐

아래는 yolov7.xml의 내용을 부분적으로 보여드립니다.

OpenVINO xml file
OpenVINO xml file

 

마지막으로 ONNX모델과 OpenVINO model size차이를 비교해봅니다. 모델은 여기서 다운 가능하십니다.

Model Type Model size (MB)
ONNX 147.7
OpenVINO bin:147.6
xml:0.4

 

다음 글에서는 OpenVINO모델을 inference 하는 글을 작성하겠습니다. 수고하셨습니다~

반응형
저작자표시 (새창열림)

'AI Engineering > OpenVINO' 카테고리의 다른 글

OpenVINO 뽀개기 (3) OpenVINO Quantization  (0) 2022.08.22
OpenVINO 뽀개기 (2) OpenVINO Inference  (0) 2022.08.16
  1. 1. OpenVINO란?
  2. 2. OpenVINO 모델 변환
  3. 2.1 환경 설정 
  4. 2.2 OpenVINO Model Converting
'AI Engineering/OpenVINO' 카테고리의 다른 글
  • OpenVINO 뽀개기 (3) OpenVINO Quantization
  • OpenVINO 뽀개기 (2) OpenVINO Inference
Sin-Han Kang
Sin-Han Kang
Explainable AI (XAI), Model Compression, Image and Video Encoding and NAS
    250x250
  • Sin-Han Kang
    da2so
    Sin-Han Kang
  • 전체
    오늘
    어제
    • 분류 전체보기 (78)
      • AI Engineering (40)
        • TensorFlow (10)
        • PyTorch (6)
        • MLOps (15)
        • NVIDIA (5)
        • OpenVINO (3)
      • AI paper review (6)
        • Explainable AI (5)
        • Model Compression (10)
        • Mobile-friendly (7)
      • Computer Science (6)
      • 일상 (4)
  • 블로그 메뉴

    • Home
    • About me
    • Guest book
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Python
    TensorFlow.js
    kubernetes
    Model Compression
    Mediapipe
    Explainable AI
    object detection
    Airflow
    style transfer
    docker
    TFLite
    OpenVINO
    pytorch
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Sin-Han Kang
OpenVINO 뽀개기 (1) OpenVINO 이해 및 변환

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.