|

有了OpenVINO 2022 PrePostProcessor APIs,影像推論就更有效率了!

   
作者:Jack Hsu

在上一篇「OpenVINO 2022大改版讓Edge AI玩出新花樣」中,在最後一小節「5. Preprocessing API」已幫大家簡單提到一些重點。本篇文章將更進一步介紹其應用程式介面(Application Programming Interface, API)基本原理和使用方式,並簡單比較和傳統使用OpenCV進行影像處理方式的差異及如何提升運作效率,讓大家後續使用OpenVINO運行影像類邊緣智能應用時能更有效率。

接下來分別從如何「安裝工作環境」、「影像前處理」、「推論後處理」及「新舊版本比較」等幾大面向為大家作更完整說明。

1.安裝工作環境

上一篇文章中主要是以C++作為主要程式範例說明,本文改採Python工作環境來說明,方便範例更容易轉移到更多以Python為主的開發平台(如Anaconda, Google Colab, JypterNotebook, Intel DevCloud等)進行測試。

目前OpenVINO支援很多方式安裝,其中以從PyPi安裝最為方便,不管是Windows、Linux (Ubuntu)還是macOS,只須在Python環境下執行「pip install openvino」就可完成安裝。不過這樣的方式只適合部署用(只有Runtime),不適合開發用,因為少了很多常用開者發工具程式,如下所示:

  • OpenCV (cv2)
  • Model Optimizer (mo)
  • Benchmark Tool (benchmark_app)
  • Accuracy Checker (accuracy_check)
  • Annotation Converter (convert_annotation)
  • Post-Training Optimization Tool (pot)
  • Model Downloader (omz_downloader, omz_converter)
  • other Open Model Zoo Tools (omz_quantizer, omz_info_dumper)

為了讓大家一次到位,建議先建立Python 3.7版虛擬環境,避免污染到自己電腦上原有Python開發環境,接著再安裝OpenVINO開發者版本。以下簡單以Windows 10環境下的Python和Anaconda兩種方式說明建立程序,大家可依自己的習慣擇一安裝即可。

以Python方式安裝步驟:

# 建立Python 3.7虛擬環境,名為openvino_env

python -m venv openvino_env --python=3.7

#啟動名為openvino_env的虛擬環境

openvino_env\Scripts\activate

# 將pip升級到最新版

python -m pip install --upgrade pip

# 安裝OpenVINO最新開發者版本,同時安裝OpenCV,

# TensorFlow 2.x, ONNX, PyTorch, Caffe等AI開發框架相關套件包

pip install openvino-dev

# 測試OpenVINO 2022.1 Runtime是否安裝完成

python -c "from openvino.runtime import Core"

# 測試模型優化器(Model Optimizer)是否安裝完成

mo -h

以Anaconda方式安裝步驟:

# 建立Python 3.7虛擬環境,名為openvino_env

conda create -n openvino_env python=3.7

# 啟動名為openvino_env的虛擬環境

activate openvino_env

# 將pip升級到最新版

python -m pip install --upgrade pip

# 安裝OpenVINO最新開發者版本,同時安裝OpenCV,

# TensorFlow 2.x, ONNX, PyTorch, Caffe等AI開發框架相關套件包

pip install openvino-dev

# 測試OpenVINO 2022.1 Runtime是否安裝完成

python -c "from openvino.runtime import Core"

# 測試模型優化器(Model Optimizer)是否安裝完成

mo -h

補充說明一下,雖然OpenVINO有特別為Anaconda提供一個專屬的開發套件包安裝,但因為同樣地僅為部署用,所以這裡就不特別介紹。

而至於為何使用Python 3.7不使用更新版本及更多安裝相關注意事項可參考另一篇文章「使用PyPi (pip install)安裝Intel OpenVINO 2022.1填坑心得」。尤其如果你想要使用Intel 神經運算棒(Neural Compute Stick 2, NCS2 又稱Intel Movidius Myriad X)則一定要仔細了解,不然將無法啟用NCS2。

2.影像前處理

在利用深度學習來完成的影像智能應用中,以影像分類(Classification)、物件偵測(Object Detection)、影像分割(Semantic Segmentation, Instance Segmentation)最為常見。為了方便模型進行訓練和推論,資料輸入時多半會先正規化到或,而訓練而得的網路權重則會採32位元浮點數(FP32),輸出則依不同類型可能為 FP32格式精確度、座標值或 INT8格式分類值。

一般當作輸入的原始影像格式(bmp, jpg, png …)、色彩數(1, 8, 24, 32 bit)、通道數(1, 3, 4)、尺寸(長、寬)可能都不一致,更不要說影響影像品質的模糊、亮度、對比、色彩偏移等問題,所以通常輸入模型前需要進行調整。傳統上我們可以使用像OpenCV或Python PIL, Numpy等工具協助,但這些工具多半還是使用CPU進行運算,只有少部份可以使用GPU加速處理。

所以OpenVINO 2022.1後開始改用PrePostProcessor APIs(以下簡稱PPP APIs)來改善,可將這部份工作轉到Intel GPU(如UHD630, Iris Xe等)上處理,分散CPU工作量,以增進處理效率。這部份的好處在處理大量影像或串流影像(影片)時就更能看出來。其架構概念如Fig. 1所示。

本文為會員限定文章

立即加入會員! 全站文章無限看~

                               

已經是會員? 按此登入

只需不到短短一分鐘...

輸入您的信箱與ID註冊即可享有一切福利!

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

許 哲豪

Author: 許 哲豪

工作經驗超過二十年,主要專長機電整合、電腦視覺、人機互動、人工智慧、專利分析及新創輔導。曾任機電整合工程師、機器視覺研發副理、技轉中心商業發展經理。目前擔任多家公司兼任技術顧問並積極推廣實境互動相關技術。 主持歐尼克斯實境互動工作室(OmniXRI):http://omnixri.blogspot.com Edge AI Taiwan邊緣智能交流區:https://www.facebook.com/groups/edgeaitw/

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *