高通台灣AI黑客松|競賽說明會
|

【OpenVINO™教學】運用UP Squared嵌入式開發板實現街景辨識

   

作者:CAVEDU 教育團隊

本文將帶讀者在嵌入式控制板(UP Squared)上面操作 OpenVINO™,搭配 Movidius NCS2 使用 Tensorflow 物件辨識、圖片物件分類技術,並針對台灣路況即時影像(九份老街)進行街景識別。

本文章節

  • 安裝 OpenVINO™ 套件包
    1. 下載/安裝 OpenVINO™
    2. OpenVINO™ 環境設定
  • OpenVINO™ 範例測試
    1. 圖片物件分類
    2. 圖片物件識別
  • 結合 Movidius NCS2
    1. 設定 USB 介面
    2. 道路街景物件辨識

硬體與軟體準備 - UP Squared

本次使用的嵌入式開發版為 UP Squared,使用 Intel 的中央處理器,可支援 Windows/Linux/Android 的作業系統, 具有 USB3.0 跟 40 個 GPIO 可用來做外部的電控,可支援 OpenVINO™ 以及 PCIE 版本的 Intel Movidius VPU 做邊緣運算。

UP Squared圖解(圖片來源:CAVEDU提供)

作業系統

本篇中所用的系統版本為的 Ubuntu 18.04,可從官方的連結下載系統映像檔,系統安裝完畢後,請開機並接上乙太網路,接下來下載套件時會需要能連到外網。

安裝 OpenVINO™ 套件包

下載 OpenVINO™

請到 Intel 官方的網站點選 Register & Download,註冊並下載最新的 OpenVINO™ Toolkit for Linux。

下載完成後,請在 UP Sqaured 上打開終端機(Terminal),並找到下載的壓縮檔, 例如筆者是下載到家目錄下(~),在家目錄下輸入以下的指令的話就可以看到一個 tgz 的壓縮檔。

Ls

接下來我們需要將這個壓縮檔做解壓縮,以下的指令中跑得壓縮檔名稱會根據讀者下載下來的版本有所不同,以本文章為例其壓縮檔名稱為「l_openvino_toolkit_p_2019.1.144.tgz」。

tar xvf l_openvino_toolkit_p_2019.1.144.tgz l_openvino_toolkit_p_2019.1.144/

解壓縮完成後,我們切換工作目錄到解壓縮完成後的目錄,準備做下一步的安裝。

cd l_openvino_toolkit_p_2019.1.144

另外輸入ls的話可以查看一下待會用的一些安裝檔,如下圖。

ls

安裝 OpenVINO™

在執行安裝檔之前,我們必須先在系統上安裝必要的編譯套件,首先輸入以下指令來更新及升級系統套件。

sudo apt-get update

sudo apt-get upgrade

接下來安裝必要的編譯套件 CMake。

sudo apt-get install cmake

緊接著我們就可以來進行 OpenVINO™ 的安裝, 輸入以下的指令來執行安裝檔。

sudo ./install.sh

第一步,請先輸入「Enter」確認開始安裝。

第二步,接下來是一些使用條款,請按下空白鍵進行向下翻閱。

到了最後一段時請輸入「accept」表示已詳細閱讀,並進行後續的安裝。

第三步,問使用者是否同意收集使用過程的一些資用,輸入 1 表示同意, 輸入 2 表示不同意。

第四步,程式會檢查是否有缺必要的相依套件,因為之後的安裝會補足缺乏的套件,所以在這一步我們輸入 1 繼續進行下一步。

第五步,以下就是接下來會安裝的一些套件及所須佔用的容量大小, 可以看到有 Inference Engine、Model Optimizer、OpenCV 等這些下面應用時會用到的套件都在安裝的列表當中。按下 Enter 鍵就會開始安裝囉!

安裝過程會需要一點時間,還請讀者耐心等候。

安裝完成後就會看到以下的提示,按下 Enter 鍵就可以退出安裝程式了。

最後一步,除了安裝前面一些主要套件外,還必須安裝一些 OpenVINO™ 的相依套件。

OpenVINO™ 環境設定

為了使系統能夠使用 OpenVINO™ 的函式庫, 我們必須讓使用者操作時的 Bash(系統終端機預設的 Shell)可以讀到 OpenVINO™ 的路徑,為了方便我們將環境設定的程式新增的 Bash 設定檔中, 這樣下次使用者打開 Bash 時就會看到 OpenVINO™ 的環境已經被設定了,如下圖。

echo "source /opt/intel/openvino/bin/setupvars.sh" >> ~/.bashrc

接下來我們切換工作目錄到 Model Optimizer 的位置, 並安裝一些必要的相依套件。

接下來我們來跑兩個 OpenVINO™ 內建的範例, 來測試看看我們安裝的 OpenVINO™ 是否能正常運作。

首先,請輸入以下的指令來切換工作目錄到demo這個資料夾。

範例一:圖片物件分類

假設我們現在有一張車子的圖片,我們現在想用深度學習的模型(本範例使用的是 SqueezeNet)來辨識圖片中的物件是一台車子。

(圖片來源:CAVEDU提供)

輸入以下指令來下載模型並編譯模型。

編譯模型會需要幾分鐘的時間,請耐心等候。

最後,執行完的結果如下,可以看到它認為最有可能的是跑車(Sport Car),其機率高達 0.836。另一方面,在效能上本範例能作到的表現是將近 50FPS,可說是非常高呢!

範例二:圖片物件識別

第二個範例我們來看一個街景辨識,程式會框出圖片中多個可識別出的物件。 輸入以下的指令來執行範例程式。

./demo_security_barrier_camera.sh

(圖片來源:CAVEDU提供)

結合 Intel Movidius NCS 2

前面的範例使用的計算裝置都是 UP Squared 內建的 Intel CPU, 接下來我們將來探討如何使用 Intel Movidius NCS2(神經運算棒二代), 來達到加速邊緣計算的效果。對 NCS2 有興趣的朋友,筆者在這邊提供購買連結

(NCS2神經運算棒2代,圖片來源:CAVEDU提供)

設定 Udev Rules

因為 NCS2 使用的 USB 的界面,為了讓 Ubuntu 系統能夠讀取到外接的 NCS2, 需要設定一下系統中的 udev rules。

首先,先將使用者加入一個叫做 users 的群組。

接下來複製 Intel OpenVINO™ 提供的 udev rules 到系統的預設路徑中。

設定完成後,可以手動重新登入 bash、重設 udev。

不過保險一點,筆者建議還是重開機會比較好。

reboot

道路街景物件辨識

安裝 v4l2 相關套件

sudo apt-get install v4l-utils

wget http://launchpadlibrarian.net/409574872/v4l2loopback-utils_0.12.1-1_all.deb \
http://launchpadlibrarian.net/409574871/v4l2loopback-source_0.12.1-1_all.deb \
http://launchpadlibrarian.net/409574869/v4l2loopback-dkms_0.12.1-1_all.deb

sudo dpkg -i v4l2loopback-*

為了讓使用者可以取用 video loopback 裝置,我們必須將目前的使用者加進 video 這個群組中。

sudo usermod -aG video $USER
logout
groups

加完之後再登出,可以輸入 groups 確認目前這個使用者是否在 video 這個群組中。

最後為了要拿到街景影像串流,我們還必須要安裝 gstreamer 的相關套件。

sudo apt-get install libgstreamer1.0-0 \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
gstreamer1.0-doc \
gstreamer1.0-tools

接下來下載 openvino-object-detection 這個專案,並進到 openvino-object-detection 這個資料夾中。

git clone https://github.com/YuanYuYuan/openvino-object-detection.git
cd openvino-object-detection

然後就可以輸入以下的指令來試跑台灣街頭的影像辨識,預設為九份老街的街景。

make stream_detect

九份老街的街景辨識完成,請參考實例影片:

(責任編輯:楊子嫻)

CAVEDU 教育團隊

訂閱MakerPRO知識充電報

與40000位開發者一同掌握科技創新的技術資訊!

Author: CAVEDU 教育團隊

CAVEDU 教育團隊是由一群對教育充滿熱情的大孩子所組成的機器人科學教育團隊。致力推動國內機器人教育。

Share This Post On
468 ad

Submit a Comment

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