【邊緣AI系列】 OpenVINO 懶人包
介紹 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
Inference Engine
提供優化加速在不同硬體上的Plugin Libraries API
推論引擎說明文件
Inference Engine C++ API
Inference Engine Python API
深度學習工作站-DL Workbench
Web操作介面,可以選擇在不同架構配置CPU、GPU、VPU上驗證模型,可視化深度學習模型和資料集的性能模擬,量化模型的準確性控制調整(FP32->INT8),方便用來評估模型轉換後的準確率與管理
Docker Hub 安裝 DL Workbench
範例與模型
參考資料
Openvino Toolkit
Introduction to Intel® Deep Learning Deployment Toolkit
opencv open model zoo
Grady Huang