本篇文章將透過OpenVINO,將TensorFlow訓練好的模型執行於Intel Movidius NCS2上,提高樹莓派車視覺辨識的推論速度。
本次範例使用的硬體裝有:
- RK-自走車套件
- Intel Movidius2
- RaspberryPi3 Plus
- 16G SD卡
- Logitech C170 Webcam
在樹莓派安裝OpenVINO
Step1、準備樹莓派,並灌好Raspbian作業系統。
您可以在去樹莓派的官網下載最新的映像檔(https://www.raspberrypi.org/downloads/raspbian/) ,也可以使用我們準備的映像檔(連結),燒錄到SD卡中來開機。如果您使用的是”RK-樹莓派神經網路自走車套件”,可以直接開啟終端機下載套件包。
Step2:樹莓派開機,接上網路,打開終端機(Terminal)
樹莓派可以接上螢幕、鍵盤、滑鼠,也可以使用遠端桌面連線開啟終端機
Step3、輸入以下指令下載OpenVINO套件包
請注意,隨著版本更新,套件包的版號也會改變,本範例所使用的版本為”2018.5.445″。
Step4:解壓縮套件包
解壓縮完成後,您將會看到有一個資料夾”inference_engine_vpu_arm”出現在加目錄當中
Step5:接下來執行以下的指令
修改setupvars.sh中的參數,待會設定環境參數實會用到。
Step6: 環境參數設定
輸入以下的指令來啟動自動設定OpenVINO的環境參數。
第一次設定完,請重新登入一次shell或者是重新打開終端機才會生效。
成功啟動環境的話,您將會看到”[setupvars.sh] OpenVINO environment initialized”的字樣。
Step7:設定USB Rules
為了使樹莓派能夠認得NCS,必須再額外設定USB Rules將現在的使用者加入users的群組
加入完成後,並須登出後再重新登入。
安裝udev rules
當終端機出現 “[setupvars.sh] OpenVINO environment initialized”時,表示您已經在樹莓派上成功安裝OpenVINO了,此版本的OpenVINO只有Inference Engine而已,只能做辨識。 為了要能夠將訓練完的模型編譯成NCS看得懂的格式,我們必須在電腦上安裝完整版的OpenVINO Toolkit,相關資料補充於本文章的附註中。
在樹莓派上執行OpenVINO-方向牌辨識
Step1:在樹莓派下載Movidius2執行程式
請到CAVEDU的Github上下載路牌分類的程式碼
https://github.com/cavedunissin/raspberrypi3_openvino
也可以在樹莓派上使用git指令下載
本範例使用 TensorFlow 訓練模型,下圖為dataset編排結構,如日後要使用同一個模型自行訓練資料,資料目錄請依照下面方式編排。訓練用圖片分類成 left、right、stop 目錄,非上述三類放置在 other目錄。測試資料置於 test 目錄
Step2:將樹莓派接上攝影機、Movidius2
下圖是RK -樹莓派神經網路自走車套件,大家也可以趁這個時候,為樹莓派接上馬達、馬達驅動板,並為馬達接上額外供電。
Step3:使用預錄好的影片來測試訓練過的模型。
在openvino_model\tensorflow_model目錄中有TensorFlow訓練過的結果,必須將該結果透過OpenVINO轉換為可支援Movidius2的檔案,可以先使用\openvino_model\movidius2_model目錄中轉換完成的檔案。
移到指定資料夾:
執行程式(無輸出影像畫面,執行速度較快):
以下是跑出來的測試結果,辨識一幀圖片大概需要花0.014秒左右
如果想要看到實際的畫面的話,可以在指令的尾端加上–gui。
執行程式(有輸出影像畫面,執行速度較慢):
FAQ:
Q1:可以用本範例來辨識攝影機的影像嗎?
A1:可以的,一樣使用上面的指令,但是就不指定為使用影片檔。
Q2: 那如果我有一台自走車,上面有馬達跟攝影機,該怎麼跑這個範例讓機器人動起來?
A2:以我們之前上課的機器人套件為例,可以執行以下的指令來讓機器人根據攝影機的影像來判斷交通號誌,並且控制馬達做出對應的動作,例如轉彎、前進、停止等。
Q3:那如果我有自己的資料然後想要自己訓練模型呢?
A3:這個問題比較複雜,首先樹莓派本身並沒有足夠的算力可以做深度學習的訓練, 所以我們會建議找一台電腦來做訓練這件事情。
關於訓練模型,首先我們必須在電腦上先安裝好python及tensorflow的環境, 然後執行以下的指令來做訓練。
其中,model-base-dir代表訓練完的模型要放在哪裡,data-dir則代表訓練用的資料集的位置。
因為我們在樹莓派上面安裝的OpenVINO只有Inference Engine而已,只能做辨識而已。 為了要能夠將訓練完的模型編譯成NCS看得懂的格式,我們必須在電腦上安裝完整版的OpenVINO Toolkit。
詳細的安裝說明,請參考Intel官方的安裝教學:
Windows(https://software.intel.com/en-us/articles/OpenVINO-Install-Windows)
Linux(https://software.intel.com/en-us/articles/OpenVINO-Install-Linux)
中文版安裝教學
Windows(https://blog.cavedu.com/?s=openvino)
路徑中的 XXXXXXXXXX 請依據實際路徑填寫全部都是數字。指令完成時會輸出 `movidius2_model` 目錄
Q4:請問第一代Movidius是否支援OpenVINO?
A4:OpenVINO目前不支援第一代Movidius,如果手上只有第一代的Movidiuss,可以參考書籍<實戰AI資料導向式學習|Raspberry Pi╳深度學習╳視覺辨識>
pi@raspberrypi:~/raspberrypi3_openvino/openvino_code $ python3 ./movidius_video.py –model-file ../openvino_model/movidius2_model/saved_model.xml –weights-file ../openvino_model/movidius2_model/saved_model.bin –gui
Traceback (most recent call last):
File “./movidius_video.py”, line 7, in
from openvino.inference_engine import IENetwork, IEPlugin
ModuleNotFoundError: No module named ‘openvino’
出現了問題,如何處理錯誤?
您好,根據最後一段訊息,代表 openvino 函式庫沒裝或沒裝好喔