各位有在玩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
沒有留言:
張貼留言