使用Intel® Movidius™神經運算棒 2 & OpenVINO-在樹莓派上跑自駕車
在本篇文章中,我們將使用第二代的NCS, 並搭配全新的函式庫OpenVINO來實做。
CAVEDU團隊之前曾經使用樹莓派結合NCS來實作自駕車,課程推出後受到大家的熱烈迴響,感謝大家的熱情參與, 我們之前上課所使用的NCS為一代的版本。
| 作者 | 袁佑緣、林祥瑞 |
| 時間 | 二十分鐘 |
| 難度 |
★★★☆☆ |
| 材料表 |
下圖是本團隊於微軟合作課程中的實紀:

機器人第一視角影片:
https://www.youtube.com/watch?v=-VaDUODWxHA
關於NCS2的相關介紹,可以參考CAVEDU技術部落格

安裝 OpenVINO
Step1:準備樹莓派,並灌好Raspbian作業系統。
您可以在去樹莓派的官網下載最新的映像檔(https://www.raspberrypi.org/downloads/raspbian/) 下載完的映像檔,可以用Etcher(https://www.balena.io/etcher/) 來燒錄到SD卡中來開機。如果您使用的是"RK-樹莓派神經網路自走車套件",可以直接開啟終端機下載套件包。
Step2:樹莓派開機,接上網路,打開終端機
Step3:數入以下指令下載OpenVINO套件包
*請注意,隨著版本更新,套件包的版號也會變,本範例所使用的版本為"2018.5.445"。
[pastacode lang="python" manual="cd%20%24HOME%20wget%E3%80%80https%3A%2F%2Fdownload.01.org%2Fopenvinotoolkit%2F2018_R5%2Fpackages%2Fl_openvino_toolkit_ie_p_2018.5.445.tgz" message="" highlight="" provider="manual"/]
Step4:解壓縮套件包
[pastacode lang="python" manual="tar%20-xvf%20l_openvino_toolkit_ie_p_2018.5.445.tgz" message="" highlight="" provider="manual"/]
解壓縮完成後,您將會看到有一個資料夾"inference_engine_vpu_arm"出現在加目錄當中
[pastacode lang="python" manual="ls%20-l" message="" highlight="" provider="manual"/]

Step5:接下來請執行以下的指令來修改setupvars.sh中的參數,待會設定環境參數實會用到。
[pastacode lang="python" manual="sed%20-i%20%22s%7C%3CINSTALLDIR%3E%7C%24(pwd)%2Finference_engine_vpu_arm%7C%22%20inference_engine_vpu_arm%2Fbin%2Fsetupvars.sh" message="" highlight="" provider="manual"/]
Step6: 環境參數設定
輸入以下的指令來啟動自動設定OpenVINO的環境參數。
[pastacode lang="python" manual="echo%20%22source%20%24HOME%2Finference_engine_vpu_arm%2Fbin%2Fsetupvars.sh%22%20%3E%3E%20%24HOME%2F.bashrc" message="" highlight="" provider="manual"/]
第一次設定完,請重新登入一次shell或者是重新打開終端機才會生效。
[pastacode lang="python" manual="bash" message="" highlight="" provider="manual"/]
成功啟動環境的話,您將會看到"[setupvars.sh] OpenVINO environment initialized"的字樣。
Step7:為了使樹莓派能夠認得NCS,必須再額外設定USB Rules
將現在的使用者加入users的群組
[pastacode lang="python" manual="sudo%20usermod%20-a%20-G%20users%20%22%24(whoami)%22" message="" highlight="" provider="manual"/]
加入完成後,並須登出後再重新登入。
[pastacode lang="python" manual="logout" message="" highlight="" provider="manual"/]
安裝udev rules
[pastacode lang="python" manual=".%2Finference_engine_vpu_arm%2Finstall_dependencies%2Finstall_NCS_udev_rules.sh" message="" highlight="" provider="manual"/]

當終端機出現 "[setupvars.sh] OpenVINO environment initialized"時,表示您已經在樹莓派上成功安裝OpenVINO了,此版本的OpenVINO只有Inference Engine而已,只能做辨識。 為了要能夠將訓練完的模型編譯成NCS看得懂的格式,我們必須在電腦上安裝完整版的OpenVINO Toolkit,相關資料補充於本文章的附註中。
搭配RK -樹莓派神經網路自走車套件
如果您有"RK-樹莓派神經網路自走車套件 (機器人王國-聯絡我們)"可以搭配範例(ai-car-openvino.zip)使用以下指令啟動。
請先將 RK-樹莓派神經網路自走車套件 提供的檔案下載至樹莓派,並解壓縮檔案
[pastacode lang="python" manual="unzip%20ai-car-openvino.zip" message="" highlight="" provider="manual"/]
將樹莓派接上Movidius2(產品連結),接下來我們將使用預錄好的影片來測試訓練過的模型。
[pastacode lang="python" manual="cd%20~%2Fai-car-openvino%2Ftf_openvino_source%0Apython3%20.%2Fmovidius_video.py%20--model-file%20..%2Ftf_openvino_model%2Fmo2_model%2Fsaved_model.xml%20--weights-file%20..%2Ftf_openvino_model%2Fmo2_model%2Fsaved_model.bin%20--video-type%20file%20--source%20..%2Fsample_video%2Fexample_1.mp4" message="" highlight="" provider="manual"/]
*小提醒:按下ctrl+c可以停掉程式。
以下是跑出來的測試結果,辨識一幀圖片大概需要花0.014秒左右

如果讀者想要看到實際的畫面的話,可以在指令的尾端加上--gui。
[pastacode lang="python" manual="python3%20.%2Fmovidius_video.py%20--model-file%20..%2Ftf_openvino_model%2Fmo2_model%2Fsaved_model.xml%20--weights-file%20..%2Ftf_openvino_model%2Fmo2_model%2Fsaved_model.bin%20--video-type%20file%20--source%20..%2Fsample_video%2Fexample_1.mp4%20--gui" message="" highlight="" provider="manual"/]
同樣的範例,我們也可以用來跑在NCS一代上面,跑出來的結果如下:

可以看到在表現上輸了NCS二代一些,處理單張影像的時間來到了0.026秒左右,差不多是快兩倍的時間呢!
附註:
Q1:可以用本範例來辨識攝影機的影像嗎?
A1:可以的,一樣使用上面的指令,但是就不指定為使用影片檔。
[pastacode lang="python" manual="python3%20.%2Fmovidius_video.py%20--model-file%20..%2Ftf_openvino_model%2Fmo2_model%2Fsaved_model.xml%20--weights-file%20..%2Ftf_openvino_model%2Fmo2_model%2Fsaved_model.bin%20--gui" message="" highlight="" provider="manual"/]
Q2: 那如果我有一台自走車,上面有馬達跟攝影機,該怎麼跑這個範例讓機器人動起來?
A2:以我們之前上課的機器人套件為例:

可以執行以下的指令來讓機器人根據攝影機的影像來判斷交通號誌,並且控制馬達做出對應的動作,例如轉彎、前進、停止等。
[pastacode lang="python" manual="python3%20.%2Fmovidius_car.py%20--model-file%20..%2Ftf_openvino_model%2Fmo2_model%2Fsaved_model.xml%20--weights-file%20..%2Ftf_openvino_model%2Fmo2_model%2Fsaved_model.bin" message="" highlight="" provider="manual"/]
Q3:那如果我有自己的資料然後想要自己訓練模型呢?
A3:這個問題比較複雜,首先樹莓派本身並沒有足夠的算力可以做深度學習的訓練, 所以我們會建議找一台電腦來做訓練這件事情。
關於訓練模型,首先我們必須在電腦上先安裝好python及tensorflow的環境, 然後執行以下的指令來做訓練。
其中,model-base-dir代表訓練完的模型要放在哪裡,data-dir則代表訓練用的資料集的位置。
[pastacode lang="python" manual="python3%20.%2Ftrain_tensorflow_model.py%20--model-base-dir%20tf_model%20--data-dir%20%24HOME%2Fdataset" message="" highlight="" provider="manual"/]
因為我們在樹莓派上面安裝的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)
[pastacode lang="python" manual="%E5%AE%89%E8%A3%9D%E5%AE%8C%E5%BE%8C%EF%BC%8C%E8%AB%8B%E8%BC%B8%E5%85%A5%E4%BB%A5%E4%B8%8B%E7%9A%84%E6%8C%87%E4%BB%A4%E4%BE%86%E7%B7%A8%E8%AD%AF%E6%A8%A1%E5%9E%8B%20source%20%2Fopt%2Fintel%2Fcomputer_vision_sdk%2Fbin%2Fsetupvars.sh%20mo_tf.py%20--saved_model_dir%20tf_model%2FXXXXXXXXXX%20--output_dir%20mo2_model%20--input_shape%20%22%5B1%2C48%2C48%2C3%5D%22%20--input%20input_image%20--output%20probabilities%20--data_type%20FP16%20%E5%85%B6%E4%B8%AD%E7%9A%84XXXXXXXXXX%20%E8%AB%8B%E4%BE%9D%E6%93%9A%E5%AF%A6%E9%9A%9B%E8%B7%AF%E5%BE%91%E5%A1%AB%E5%AF%AB(%E5%85%A8%E9%83%A8%E9%83%BD%E6%98%AF%E6%95%B8%E5%AD%97)%EF%BC%8C%E7%B7%A8%E8%AD%AF%E5%AE%8C%E7%9A%84%E6%A8%A1%E5%9E%8B%E6%99%82%E6%9C%83%E8%BC%B8%E5%87%BA%E5%88%B0mo2_model%E8%B3%87%E6%96%99%E5%A4%BE%E4%B8%AD%E3%80%82" message="" highlight="" provider="manual"/]
相關文章
- [Movidius神經運算棒]在Intel® Movidius™ NCS上部署客製化Caffe模型來進行影像分類
- [Movidius神經運算棒] 認識與操作Neural Compute SDK:mvNCCheck
- [AI 人工智慧應用] MovidiusNCS在PC中設定Ubuntu虛擬機並執行NCSDK(上)
- [AI 人工智慧應用] MovidiusNCS在PC中設定Ubuntu虛擬機並執行NCSDK(下)
- [Movidius神經運算棒]五步驟打造Intel Movidius NCS影像分類器
- [Movidius神經運算棒]在Raspberry Pi 上執行 Intel® Movidius™ NCS應用程式
- 使用 Intel® Movidius™ Neural Compute Stick搭配Raspberry Pi 3執行MobileNets

留言 💬 (0)
還沒有留言,來當第一個。