本文將帶讀者在嵌入式控制板上面操作OpenVINO,搭配Movidius NCS2使用Tensorflow物件辨識、圖片物件分類並使用台灣路況即時影像,對九份老街進行街景識別。
作者/攝影 | 袁佑緣 |
辨識結果請參考影片:
本篇文章分為以下幾個步驟分享內容:
- 安裝OpenVINO套件包
- 下載/安裝OpenVINO
- OpenVINO環境設定
- OpenVINO範例測試
- 圖片物件分類
- 圖片物件識別
- 結合Movidius NCS2
- 設定USB介面
- 道路街景物件辨識
硬體與軟體準備:
UP Squared
本次使用的嵌入式開發版為UP Squared,使用Intel的中央處理器,可支援Windows/Linux/Android的作業系統, 具有USB3.0跟40個GPIO可用來做外部的電控,可支援OpenVINO以及PCIE版本的Intel Movidius VPU做邊緣運算。
UP Squared | UP Squared + NCS2 | UP Squared 內部 |
作業系統
本篇中所用的系統版本為的Ubuntu 18.04,可從官方的連結下載系統映像檔(http://releases.ubuntu.com/18.04/ubuntu-18.04.2-desktop-amd64.iso)
。系統安裝完畢後,請開機並接上乙太網路,接下來下載套件時會需要能連到外網。
安裝OpenVINO套件包
下載Openvino
請到Intel官方的網站(https://software.intel.com/en-us/openvino-toolkit/choose-download/free-download-linux) 點選Register & Download,註冊並下載最新的Openvino Toolkit for Linux。
下載完成後,請在UP Sqaured上打開終端機(Terminal),並找到下載的壓縮檔, 例如筆者是下載到家目錄下(~),在家目錄下輸入以下的指令的話就可以看到一個tgz的壓縮檔。
接下來我們需要將這個壓縮檔做解壓縮,以下的指令中跑得壓縮檔名稱會根據 讀者下載下來的版本可能有所不同,以本文章為例其壓縮檔名稱為”l_openvino_toolkit_p_2019.1.144.tgz”。
解壓縮完成後,我們切換工作目錄到解壓縮完成後的目錄,準備做下一步的安裝。
另外輸入ls的話可以查看一下待會用的一些安裝檔,如下圖。
安裝OpenVINO
在執行安裝檔之前,我們必須先在系統上安裝必要的編譯套件, 首先輸入以下指令來更新及升級系統套件。
接下來安裝必要的編譯套件CMake。
緊接著我們就可以來進行OpenVINO的安裝, 輸入以下的指令來執行安裝檔。
第一步,請先輸入”Enter”確認開始安裝。
第二步,接下來是一些使用條款,請按下空白鍵進行向下翻閱
到了最後一段時請輸入”accept”表示已詳細閱讀,並進行後續的安裝。
第三步,問使用者是否同意收集使用過程的一些資用,輸入1表示同意, 輸入2表示不同意。
第四步,程式會檢查是否有缺必要的相依套件,因為之後的安裝會補足缺乏的套件 所以在這一步我們輸入1繼續進行下一步。
第五步,以下就是接下來會安裝的一些套件及所須佔用的容量大小, 可以看到有Inference Engine、Model Optimizer、OpenCV等這些下面應用時會用到的 套件都在安裝的列表當中。按下Enter鍵就會開始安裝囉!
安裝過程會需要一點時間,還請讀者耐心等候。
安裝完成後就會看到以下的提示,按下Enter鍵就可以退出安裝程式了。
最後一步,除了安裝前面一些主要套件外,還必須安裝一些OpenVINO的相依套件。
OpenVINO環境設定
為了使系統能夠使用OpenVINO的函式庫, 我們必須讓使用者操作時的Bash(系統終端機預設的Shell)可以讀到OpenVINO的路徑, 為了方便我們將環境設定的程式新增的Bash的的設定檔中, 這樣下次使用者打開Bash時就會看到OpenVINO的環境已經被設定了,如下圖。
接下來我們切換工作目錄到Model Optimizer的位置, 並安裝一些必要的相依套件。
OpenVINO範例測試
接下來我們來跑兩個OpenVINO內建的範例, 來測試看看我們安裝的OpenVINO是否能正常運作。
首先,請輸入以下的指令來切換工作目錄到demo這個資料夾。
範例一:圖片物件分類
假設我們現在有一張車子的圖片,我們現在想用深度學習的模型(本範例使用的是SqueezeNet)來 辨識圖片中的物件是一台車子。
輸入以下指令來下載模型並編譯模型。
編譯模型會需要幾分鐘的時間,請耐心等候。
最後,執行完的結果如下,可以看到它認為最有可能的是跑車(Sport Car), 其機率高達0.836。另一方面,在效能上本範例能作到的表現是將近50FPS, 可說是非常高呢!
範例二:圖片物件識別
第二個範例我們來看一個街景辨識,程式會框出圖片中多個可識別出的物件。 輸入以下的指令來執行範例程式。
結合 Intel Movidius NCS 2
前面的範例使用的計算裝置都是UP Squared內建的Intel CPU, 接下來我們將來探討如何使用Intel Movidius NCS2(神經運算棒二代), 來達到加速邊緣計算的效果。 對NCS2有興趣的朋友,筆者在這邊提供購買連結
設定Udev Rules
因為NCS2使用的USB的界面,為了讓Ubuntu系統能夠讀取到外接的NCS2, 需要設定一下系統中的udev rules。
首先,先將使用者加入一個叫做users的群組。
接下來複製Intel OpenVINO提供的udev rules到系統的預設路徑中。
設定完成後,可以手動重新登入bash、重設udev。
不過保險一點,筆者建議還是重開機會比較好。
道路街景物件辨識
安裝v4l2相關套件
為了讓使用者可以取用video loopback裝置,我們必須將目前的使用者加進video這個群組中。
加完之後再登出,可以輸入groups確認目前這個使用者是否在video這個群組中。
最後為了要拿到街景影像串流,我們還必須要安裝gstreamer的相關套件。
接下來下載openvino-object-detection這個專案,並進到openvino-object-detection這個資料夾中。
然後就可以輸入以下的指令來試跑台灣街頭的影像辨識,預設為九份老街的街景。
購買連結有誤
感謝指正,已修正~