2020年9月10日 星期四

如何在Google Colab上安裝執行Intel OpenVINO的範例


 

各位有在玩Intel OpenVINO的人都知道,這項開源推論工具可支援多種作業系統(Windows, Linux, Raspbian, Docker...)、程式語言(C++, Python...)及不同硬體(Intel's CPU, GPU, VPU, FPGA...),加上很多預訓練好的模型,可以很方便測試人工智慧經常遇到的應用情境。

最常見的用法就是直接在電腦或樹莓派USB埠插上一組Intel神經運算棒(NCS2, VPU)來練習。但如果遇到要教學或臨時要測試時,不容易找到多台裝好OpenVINO的主機或是沒有足夠數量的神經運算棒時,就會變得很不方便。

玩AI的人都知道,Google有佛心的提供免費虛擬主機加上GPU及TPU運算資源給大家,稱為Colab。這個工具不僅幫我們把Jupyter Notebook環境架好,連基本的TensorFlow, OpenCV等常用的工具包都已建置完成,很方便直接進行深度學習的模型開發、測試、訓練及推論。

之前Colab這項免費資源並沒有和Intel OpenVINO有太多連結。最近剛好看到INTEL釋出的一個範例,馬上吸引到我的目光,因為它完美解決了這個問題,直接用Colab虛擬機上的Intel CPU (二顆Xeon)來執行OpenVINO。於是馬上動手測試一下並整理出三個基本範例給大家參考。



通常安裝及執行步驟大同小異,主要是先安裝OpenVINO,再下載模型,進行優化產生中介表示IR(xml & bin)檔案,最後再執行推論工作即可。以下就以mobilenet-V1進行影像分類的範例進行說明。


# Colab安裝OpenVINO並下載執行mobilenet-v1影像分類範例

# 0. 檢查系統

!lscpu # 檢查CPU狀態
!cat /etc/os-release # 檢查作業系統狀態

# 1. 安裝Intel OpenVINO工具包

# 取得OpenVINO2020公開金錀
!wget https://apt.repos.intel.com/openvino/2020/GPG-PUB-KEY-INTEL-OPENVINO-2020 
# 加入OpenVINO公開金錀到系統金錀群中
!apt-key add GPG-PUB-KEY-INTEL-OPENVINO-2020 
# 建立更新安裝清單檔案
!touch /etc/apt/sources.list.d/intel-openvino-2020.list
# 將下載指令加入安裝清單中
!echo "deb https://apt.repos.intel.com/openvino/2020 all main" >> /etc/apt/sources.list.d/intel-openvino-2020.list
# 更新系統
!apt update
# 安裝OpenVINO到虛擬機系統中
!apt install intel-openvino-dev-ubuntu18-2020.4.287
# 列出安裝路徑下內容進行確認
!ls /opt/intel

# 2. 模型下載

# 執行環境設定批次檔並以模型下載器取得mobilenet-v1-1.0-224
!source /opt/intel/openvino/bin/setupvars.sh && \
python /opt/intel/openvino/deployment_tools/tools/model_downloader/downloader.py \
--name mobilenet-v1-1.0-224

# 3. 模型優化

# 下載及安裝test-generator 方便檢查程式運行錯誤
!pip install test-generator==0.1.1

# 執行環境設定批次檔並將下載到的mobilenet-v1-1.0-224模型檔進行優化轉換產生IR(xml & bin)檔
!source /opt/intel/openvino/bin/setupvars.sh && \
python /opt/intel/openvino/deployment_tools/tools/model_downloader/converter.py \
--name mobilenet-v1-1.0-224

# 4. 執行推論

# 以OpenCV檢視輸入影像
import cv2
import matplotlib.pyplot as plt

img = cv2.imread('/opt/intel/openvino/deployment_tools/demo/car.png') # 讀入指定彩色影像
rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 將影像從BGR格式轉到RGB格式,才能讓plt.imshow()正確顯示
plt.figure() # 準備一顯示影像空間
plt.imshow(rgb) # 顯示影像

# 執行環境設定批次檔並執行mobilenet-V1影像分類
# 輸入參數:
# -m 模型名稱 (*.xml)
# -i 輸入影像名稱 (*.png, *.jpg ...)
# --labels ImageNet 1000分類名稱標籤檔
# 輸出結果 car, sport car 置信度(機率) 0.4242041
!source /opt/intel/openvino/bin/setupvars.sh && \
python \
/opt/intel/openvino/inference_engine/samples/python/classification_sample/classification_sample.py \
-m /content/public/mobilenet-v1-1.0-224/FP16/mobilenet-v1-1.0-224.xml \
-i /opt/intel/openvino/deployment_tools/demo/car.png \
--labels /opt/intel/openvino/deployment_tools/demo/squeezenet1.1.labels

 


輸出結果:

classid probability
------- -----------
car, sport car0.4242041
convertible0.2728059
 wheel   0.1330034
wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon 0.0699498
race car, racing car0.0339604
radiator grille0.0263465
pickup truck0.0155464
hack, taxi, taxicab0.0127090
minivan  0.0051457
   T     0.0018786


經測試安裝上及執行上都非常順暢,這樣以後就可以更方便使用OpenVINO這項免費推論工具,快速驗證AI應用場景的想法了。完整三個範例及說明,可自行到下列網址下載
https://github.com/OmniXRI/colab_openvino

參考資料來源:

https://colab.research.google.com/drive/1-ETOSlDftRCkAW4FoBHGLgslfaRMRqBU

延伸閱讀:

OpenVINO系列發文
https://omnixri.blogspot.com/p/blog-page_19.html#OpenVINO

沒有留言:

張貼留言

【頂置】簡報、源碼、系列文快速連結區

常有人反應用手機瀏覽本部落格時常要捲很多頁才能找到系列發文、開源專案、課程及活動簡報,為了方便大家快速查詢,特整理連結如下,敬請參考! Edge AI Taiwan 邊緣智能交流區 全像顯示與互動交流區 台科大(NTUST) 人工智慧與邊緣運算實務 開南大學...