作者:CAVEDU 教育團隊
本篇文章將透過 OpenVINO™,將 TensorFlow 訓練好的模型執行於 Intel Movidius NCS 2 上,提高樹莓派車視覺辨識的推論速度;本次範例使用的硬體裝置有:
- Logitech C170 Webcam
- Intel Movidius 2
- RK—自走車套件
- RaspberryPi 3 Plus
- 16 G SD 卡
在樹莓派安裝 OpenVINO™
1. 準備樹莓派,並灌好 Raspbian 作業系統
您可以到樹莓派官網下載最新的映像檔,燒錄到 SD 卡中來開機;如果您使用的是「RK–樹莓派神經網路自走車套件」,那就可以直接開啟終端機下載套件包。
2. 樹莓派開機,接上網路,打開終端機(Terminal)
樹莓派可以接上螢幕、鍵盤、滑鼠,也可以使用遠端桌面連線開啟終端機。
3. 輸入以下指令下載 OpenVINO™ 套件包
隨著版本更新,套件包的版號也會改變,本範例所使用的版本為「2018.5.445」。
cd $HOME wget https://download.01.org/openvinotoolkit/2018_R5/packages/l_openvino_toolkit_ie_p_2018.5.445.tgz
4. 解壓縮套件包
tar -xvf l_openvino_toolkit_ie_p_2018.5.445.tgz

(圖片來源:CAVEDU 提供)
解壓縮完成後,您會看到有一個叫做「inference_engine_vpu_arm」的資料夾出現在加目錄當中。

(圖片來源:CAVEDU 提供)
5. 執行以下指令
修改 setupvars.sh 中的參數,待會設定環境參數時會用到。
sed -i "s|<INSTALLDIR>|$(pwd)/inference_engine_vpu_arm|" inference_engine_vpu_arm/bin/setupvars.sh
6. 設定環境參數
輸入以下的指令來啟動自動設定OpenVINO™的環境參數。
echo "source $HOME/inference_engine_vpu_arm/bin/setupvars.sh" >> $HOME/.bashrc
第一次設定完,請重新登入一次 shell 或是重新打開終端機才會生效。
bash
成功啟動環境的話,您將會看到「[setupvars.sh] OpenVINO environment initialized」的字樣。

(圖片來源:CAVEDU 提供)
7. 設定 USB Rules
為了使樹莓派能夠認得 NCS,必須再額外設定 USB Rules 將現在的使用者加入 users 的群組。
sudo usermod -a -G users "$(whoami)"
加入完成後,必須登出後再重新登入。
logout
安裝 udev rules。
./inference_engine_vpu_arm/install_dependencies/install_NCS_udev_rules.sh
當終端機出現「[setupvars.sh] OpenVINO environment initialized」時,表示您已經在樹莓派上成功安裝 OpenVINO™ 了,此版本的 OpenVINO™ 只有Inference Engine 而已,只能做辨識。
在樹莓派上執行OpenVINO™ — 方向牌辨識
1. 在樹莓派下載 Movidius 2 執行程式
請到 CAVEDU 的 Github 下載路牌分類的程式碼,或是在樹莓派上使用 git 指令下載。
git clone https://github.com/cavedunissin/raspberrypi3_openvino
本範例使用 TensorFlow 訓練模型,下圖為 dataset 的編排結構,如日後要使用同一個模型自行訓練資料,資料目錄請依照下面方式編排;訓練用的圖片分類為 left、right、stop 目錄,非上述三類則放置在 other 目錄,測試資料置於 test 目錄。

(圖片來源:CAVEDU 提供)
2. 將樹莓派接上攝影機、Movidius 2
下圖是 RK–樹莓派神經網路的自走車套件,大家可以趁這個時候,為樹莓派接上馬達、馬達驅動板,並為馬達接上額外供電。

(圖片來源:CAVEDU 提供)
3. 使用預錄好的影片來測試訓練過的模型
在 openvino_model\tensorflow_model 目錄中有 TensorFlow 訓練過的結果,必須將該結果透過 OpenVINO™ 轉換為可支援 Movidius 2 的檔案,可以先使用 \openvino_model\movidius2_model 目錄中轉換完成的檔案。
移到指定資料夾。
cd ~/ RaspberryPi3_Openvino/ openvino_code
執行程式(無輸出影像畫面,執行速度較快)。
python3 ./movidius_video.py --model-file ../openvino_model/mo2_model/saved_model.xml --weights-file ../openvino_model/mo2_model/saved_model.bin --video-type file --source ../sample_video/example_1.mp4
以下是跑出來的測試結果,辨識一幀圖片大概需要花 0.014 秒左右。

(圖片來源:CAVEDU 提供)
如果想要看到實際畫面,可以在指令的尾端加上–gui;執行程式如下(有輸出影像畫面,執行速度較慢)。
python3 ./movidius_video.py --model-file ../openvino_model/mo2_model/saved_model.xml --weights-file ../openvino_model/mo2_model/saved_model.bin --video-type file --source ../sample_video/example_1.mp4 --gui

(圖片來源:CAVEDU 提供)
相關常見問題
- 可以用本範例來辨識攝影機的影像嗎?
可以,一樣使用上面的指令,但是就不指定為使用影片檔。
python3 ./movidius_video.py --model-file ../openvino_model/mo2_model/saved_model.xml --weights-file ../openvino_model/mo2_model/saved_model.bin --gui
- 如果我有一台自走車,上面有馬達跟攝影機,該怎麼跑這個範例讓機器人動起來?
以我們之前上課的機器人套件為例,可以執行以下的指令來讓機器人根據攝影機的影像來判斷交通號誌,並且控制馬達做出對應的動作,例如轉彎、前進、停止等。
python3 ./movidius_car.py --model-file ../ openvino_model/mo2_model/saved_model.xml --weights-file ../ openvino_model/mo2_model/saved_model.bin
- 如果我有自己的資料然後想要自己訓練模型呢?
這個問題比較複雜,首先樹莓派本身並沒有足夠的算力可以做深度學習的訓練, 所以我們會建議找一台電腦來做訓練這件事; 關於訓練模型,首先我們必須在電腦上安裝好 python 及 tensorflow 的環境, 才能執行以下的指令來做訓練。
python3 ./train_tensorflow_model.py --model-base-dir tf_model --data-dir $HOME/dataset
其中,model-base-dir 代表訓練完的模型要放在哪裡;data-dir 則代表訓練用資料集的位置。
因為我們在樹莓派上安裝的 OpenVINO™ 只有 Inference Engine,只能做辨識,因此為了能夠將訓練完的模型編譯成 NCS 看得懂的格式,我們必須在電腦上安裝完整版的 OpenVINO™ Toolkit;詳細的安裝說明,請參考 Intel 官方的安裝教學:Windows、Linux;中文版安裝教學:Windows。
路徑中的 XXXXXXXXXX 請依據實際路徑填寫(全部都是數字)。指令完成會輸出「mo2_model」目錄
mo_tf.py --saved_model_dir tf_model/XXXXXXXXXX \ --output_dir mo2_model \ --input_shape "[1,48,48,3]" \ --input input_image \ --output probabilities \ --data_type FP16
- 請問第一代 Movidius 是否支援 OpenVINO™?
OpenVINO™ 目前不支援第一代 Movidius,如果手上只有第一代的 Movidius,可以參考書籍《實戰 AI 資料導向式學習|Raspberry Pi╳深度學習╳視覺辨識》。
(本文同步發表於 CAVEDU 教育團隊、原文連結;責任編輯:賴佩萱)
- 【CAVEDU講堂】NVIDIA Jetson AI Lab 大解密!範例與系統需求介紹 - 2024/10/08
- 【CAVEDU講堂】Google DeepMind使用大語言模型LLM提示詞來產生你的機器人操作程式碼 - 2024/07/30
- 【CAVEDU講堂】《Arduino首次接觸就上手》新手村教學:LED燈閃爍 - 2024/04/18
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!
2020/03/05
請問照著以上步驟以及對應檔案,結果卻出現No module named ‘cv2’,請問是還缺甚麼步驟? 謝謝
2020/03/07
已抓出問題了,樹莓派3上需要系統必須為舊版Raspbian(stretch,2019-04-08之前),最新版(buster)會有各式各樣的問題發生,謝謝
2020/03/09
原來如此,謝謝提供Debug資訊~
2020/02/01
請問OpenVINO™可以在樹梅派搭配google神經運算棒跑嗎