OpenVINO雲端也能GO!四個步驟輕鬆在DevCloud實作AI推論

作者:Felix Lin

Intel DevCloud開發者工具是一個免費的雲端的開發平台,它已預裝了OpenVINO™ Toolkit (Open Visual Inference and Neural network Optimization)方便開發AI應用程式。它是一個雲端的JupyterLab服務,旗下三個產品DevCloud for the Edge、DevCloud for oneAPI、DevCloud for FPGA,分別著重讓開發者可以在雲端的虛擬機上評估模型推論、神經網路訓練研究以及客製化FPGA加速晶片應用。

特別值得一提的是,這些服務目前完全不需要花費任何一毛錢,即可盡情享用到高效能的運算能力。開發者們大可好好運用這些資源來學習並應用AI,本篇文章將使用DevCloud for the Edge,在簡單的四個步驟之中,完成一個Object Detection物件偵測的DEMO操作。

一、準備動作

Tutorials與Sample Applications非常推薦入門者學習(圖片來源:Intel)

在註冊完成登入DevCloud for the Edge之後,選擇Get Started進入,即可看到五個頁籤,分別為Home、Learn、Build、Optimize以及Launch,分別在AI應用的四個階段:學習、建立模型、最佳化模型以應用上,提供相當實用的文件與素材,入門者建議可以試著運行Learn頁籤裡面的Tutorials與Sample Applications,裡面有三十餘的非常豐富的教學內容。

我們這次的主要目的則是在DevCloud上運行open model zoo的範例,首先我們要點選build頁籤當中的Connect and Create來啟動伺服器,等待約三十秒的時間之後即會轉跳到DevCloud的後台介面。

DevCloud的後台介面,點選右上方New來新增檔案或開啟終端機(圖片來源:Intel DevCloud for the Edge平台)

進入到DevCloud後台介面可以看到目前顯示在files頁籤,是類似檔案管理員以階層的方式看到自己在伺服器上的所有檔案,預設伺服器在建立之後即會產生一個Reference-samples的資料夾,裡面存放許多上面所提到的Sample Applications等專案檔案。

DevCloud提供每個帳戶50GB的儲存空間,可以自由運用儲存程式與模型資料等。接著點選右上方New按鈕,並從下拉式選單中點選Terminal開啟終端機。在黑色的終端機背景中輸入以下指令來取得我們要使用的ipython notebooks檔案,同時這個檔案也存放在github上供有需要的開發者自行取用參考。

1
wget https://github.com/FelixLinSY/DevCloud_Hands_On/raw/main/DevCloud_HandsOn.ipynb

二、四步驟完成預訓練模型範例

執行完成回到檔案管理介面,就會看到多出一個剛下載的DevCloud_HandsOn.ipynb檔案,點選該檔案來啟動ipython notebook。

運行於DevCloud的教學指引:DevCloud_HandsOn.ipynb

開啟DevCloud_HandsOn.ipynb之後可以看到左側是目錄概要,可以看到列出了四個步驟即可完成open model zoo上的範例:

  •  STEP1: 下載open model zoo程式碼
  •  STEP2: 下載與轉換模型
  •  STEP3: 進行物件偵測推論
  •  STEP4: 在各種邊緣裝置進行推論

本教學文的目錄概要

右側比較大的欄位則是程式碼編輯區,這部分是由程式碼與註解文字兩種Cell組合而成的區域,能以Cell為單位自由編輯並且執行。筆者已經預先在這個ipython notebook中加入註解說明文字,希望能幫助到初學者理解各個步驟與指令的用意所在。

STEP 1: 下載open model zoo程式碼

STEP1僅有三行指令,依序執行即可建立工作目錄並且從github下載open model zoo的程式碼。

STEP 2: 下載與轉換模型

STEP2則接續要下載預訓練的物件偵測模型,這邊有兩個做法:2.1是一次下載所有支援的物件偵測模型;2.2則是僅下載指定模型。由於物件偵測支援的預訓練模型實在是非常多,一次下載將花費非常多的時間,強烈建議先跳過2.1執行2.2下載特定模型即可,待日後想要嘗試置換其他模型時,再下載全部模型較為妥適。

取得要使用的模型檔之後就是要進行模型轉換(converter)來取得推論引擎(Inference Engine),載入時需要使用的IR(Intermediate Representation)檔,以利後續使用CPU、GPU、VPU等各種硬體進行推論。由於模型轉換需要花費一些時間,如果你是一次下載所有模型並且進行轉換的話(前述2.1的部分)這邊也會花上好一段時間。

使用ssd_mobilenet_v2_coco進行圖片推論的結果

STEP 3: 進行物件偵測推論

STEP3就是進行推論的重頭戲了,這邊會使用open model zoo中的object_detection_demo.py範例程式分別執行單張圖片的推論以及影片的推論兩種。為求方便起見圖片與影片筆者分別從pixabay與Pexels合法取得照片與影片來進行推論使用,各位也可以將自己的照片或影片手動上傳到DevCloud上作為推論資料使用。

在執行範例程式需要代入相應的參數包含IR檔路徑、輸入資料、輸出資料、模型架構與標籤檔等等,若參數錯誤可能會造成辨識不準確甚至會無法執行,請務必稍加留意。若需要更換模型檔除了IR路徑修改外,模型架構與標籤檔也可能需要更換,詳細請參考預訓練模型文件的說明。

此外在執行影片推論前,筆者有使用sed指令去修改範例程式中輸出影像的格式,為的是能夠輸出成正確的影像檔案並且在DevCloud上播放。其餘的部分則和圖片推論是大同小異。在推論結果的部分,不管是圖片或是影片的物件偵測,可以觀察到輸出結果相當不錯,即使是小物件偵測的正確率還不差。

在Intel DevCloud for the Edge執行的影片推論結果

STEP 4: 硬體測試模擬

最後的第四步驟,我們要使用DevCloud最為強大的功能之一,將這個AI模型放到不同的邊緣運算裝置進行推論。於此之前先建立工作腳本檔(4.1),基本上跟我們前面第三步驟的內容差不多,只不過把一些我們想要動態改變的參數改為從外部引入。

接著使用qsub指令派送工作到指定的邊緣裝置(4.2),所有支援的邊緣裝置可以參考Intel DevCloud for the Edge裝置列表。由於工作會以方同步的方式在不同裝置上運作,我們可以透過liveQstate()指令來檢視任務的執行狀態,這邊務必要留意一下如果任務尚未完成而直接執行後續的cell程式段,將可能會造成錯誤或是資料讀取不正確。

當所有任務都完成後,同樣地開啟輸出影片來觀察Intel Core Gen 11th使用CPU與GPU之間的推論差異。(讀者也可以參考Jack大的教學文)

你可在Intel DevCloud for the Edge裝置列表中進行選擇,模擬體驗一下所選模型在實際運作時的效益如何

三、快速延伸你的創意

本篇文章帶各位輕鬆快速得完成一個open model zoo上的AI推論範例,各位是否覺得意猶未盡呢?在open model zoo與DevCloud上還有許多寶庫值得去探究以及發掘,建議各位後續可以從 open model zoo 內各種有趣的範例和預訓練的模型當中做探索,或是執行 DevCloud 上不同應用展示,都是不錯的學習路徑喔!每個範例也可以彈性去套用不同的模型進行演算,對於AI模型能夠發展的應用,可以提供更多想像空間喔!

人工智慧的技術在未來幾年間將持續蓬勃發展,而配套的軟體工具也將會越來越廣泛且容易上手,有幸身處在這個AI應用即將爆發的時代,勢必也要跟風參與一下這波撼動世界的技術浪潮,各位說是吧!

(責任編輯:歐敏銓)

Lin Felix

Author: Lin Felix

長期出沒在南部地區的Maker社群,致力於推廣從實作中學習的精神。熱愛胡搞瞎搞,喜歡嘗試新事物。現職為亞堤教育團隊講師與創客閣樓召集人。

Share This Post On

發表

跳至工具列