【邊緣AI系列】 OpenVINO 懶人包

Original article can be found here (source): Deep Learning on Medium

介紹 Intel OpenVINO-toolkit 開發工具

這工具包主要是協助快速開發電腦視覺應用的解決方案,包含整合優化Intel MKL-DNN、OpenCV、OpenCL、OpenVX,以及在硬體上的加速優化,提供在邊緣運算上較低算力的硬體做CNN推論應用開發,包含支持在CPU、GPU(內顯)、NCS、Movidius VPU、FPGA上運行,但不支援Nvidia GPU顯卡和AMD CPU(死對頭),提供多個已訓練好的視覺分類、偵測、分割模型。支持主流的深度學習框架如Caffe, TensorFlow, MXNet, Kaldi pytorch(ONNX)

深度學習模型

Intel驗證轉換後提供的模型類別:

  • 人臉模型:臉部偵測、頭部姿態、表情、特徵點、性別年齡辨識
  • 人體模型: 人員偵測、高角度人體偵測、行人屬性、跨影片追蹤、動作姿態辨識、骨架偵測
  • 車輛模型:車輛偵測、車牌辨識、車道線偵測、路面區域分割、車種辨識、路標號誌
  • 其他模型:文字標籤偵測、高解析度

OpenVINO 整體包含

  • Deep Learning Deployment Toolkit (DLDT)
  • Deep Learning Model Optimizer — 將不同框架訓練出來的模型做格式轉換和優化模型參數
  • Deep Learning Inference Engine — 模型推論的API接口,針對不同硬體類別做模型掛載
  • Samples — 參考範例
  • Tools — 模型準確率驗證、模型校正、模型量化等工具
  • Open Model Zoo
  • OpenCV
  • OpenCL™ version 2.1
  • Intel® Media SDK
  • OpenVX*

開發環境

  • 系統環境: Linux, Windows ,FPGA ,macOS
  • 開發語言:C++ 和 python
  • 可使用Doceker環境

運作流程

Model Optimizer

跨深度學習框架模型優化轉換流程

可以深度學習框架訓練的網絡模型:Caffe ,TensorFlow ,Kaldi ,MXNet 或轉換為ONNX格式。
在推論時不會使用原始模型,而是使用其中間表示(IR)進行推論運算,模型會針對目標移植的終端硬體上的進行優化。
使用MO優化轉檔xml+bin檔,xml保存的是network和parameter,bin保存的是weight和bias

模型類別

  • caffemodel -Caffe 模型
  • pb -TensorFlow 模型
  • params -MXNet 模型
  • onnx -ONNX 模型
  • nnet -Kaldi 模型

轉換操作範例

python3 mo.py --input_model /user/models/model.pb
python3 mo.py --framework tf --input_model /user/models/model.pb
python3 mo.py --input_model <輸入模型> .onnx
->輸出轉換後模型 model.bin and model.xml

Model Optimizer 文件說明
轉換模型說明

Inference Engine

提供優化加速在不同硬體上的Plugin Libraries API
推論引擎說明文件

Inference Engine C++ API
Inference Engine Python API

深度學習工作站-DL Workbench

DL Workbench

Web操作介面,可以選擇在不同架構配置CPU、GPU、VPU上驗證模型,可視化深度學習模型和資料集的性能模擬,量化模型的準確性控制調整(FP32->INT8),方便用來評估模型轉換後的準確率與管理
Docker Hub 安裝 DL Workbench

範例與模型

Sample Code
Pertrained Model

參考資料

Openvino Toolkit
Introduction to Intel® Deep Learning Deployment Toolkit
opencv open model zoo

Grady Huang