文章類型
開發平台
解決方案
關注主題
文章類型
開發平台
解決方案
關注主題

【AI_Column】移植Movidius神經計算棒到Pi Zero W

作者:許哲豪 Jack

最近人工智慧(AI)當道,對於想學習及實作的 Maker 來說,樹莓派加上 Intel Movidius 神經計算棒(Neural Compute Stick,以下簡稱 NCS)大概是最容易取得且最經濟的平台了。

目前除了可直接買到USB3.0 版的 NCS 外,另外 Google 有提供 AIY Vision Kit(Pi Zero W + Vision Bonnet),主要使用 Pi Zero W 及使用了和 NCS 相同計算晶片 Intel Movidius MA2450 的 Vision Bonnet 擴充板,舊的版本還得自己安裝一堆環境,新的 1.1 版買來組裝一下就可用了。

加上最近Intel最近大力推廣它的 OpenVINO,讓自家的CPU、GPU、FPGA、VPU(NCS主要晶片)能更容易跨平台,更適合開發AI終端(邊緣)應用裝置及程式。

Pi Zero W + Movidius Neural Compute Stick(圖片來源:Jack提供)

一般在官網上的安裝程序都是建議使用樹莓派 3B 或 3B+,其步驟很簡單:

1. 取得樹莓派板子及 16GB SD 卡(強烈建議大於8GB)並安裝好官方提供的作業系統 Raspbian。

2. 進入樹莓派命令列模式安裝 NCS 軟體開發工具(SDK)1.2 版,其步驟如下:

mkdir -p ~/workspace
cd ~/workspace
git clone https://github.com/movidius/ncsdk.git
cd ncsdk
make install

3. 編譯範例程式及測試,其指令如下:

cd ~/workspace/ncsdk
make examples

完成後即可執行相關範例程式。

本來想把NCS直接搬到 Pi Zero W 上用,就像 Google AIY Vision Kite 一樣,結果照著上面步驟作,竟然出現一大堆問題,為了避免大家也掉到這個大坑,所以把自己慘痛的經驗分享出來,省去大家撞牆的時間,接著就一步一步帶著大家走出地雷區。

走出地雷區

1. 安裝作業系統後,修改 GPU 共享記憶體,從 64MB 增加到 128MB。

Pi GPU共享記憶體修改方式(圖片來源:Jack提供)

2. 進入命令列執行下列動作,將記憶體 SWAP 容量從 100MB 擴大到 1024MB,以免後續編譯 OpenCV 及其它套件時記憶體不足造成系統當掉。

sudo nano /etc/dphys-swapfile

將 CONF_SWAPSIZE=100 改成 CONF_SWAPSIZE=1024

按[Ctrl + O]存檔後,再按[Ctrl + X]離開編輯模式。

3. 若要使用 Pi 專用相機,要修改開機啟動設定。(若不使用則可忽略此步驟)

sudo nano /etc/modules-load.d/modules.conf

移到檔案最下面,新增一行,加入 bcm2835-v4l2(注意是L不是數字1)

按 [Ctrl + O] 存檔後,再按 [Ctrl + X] 離開編輯模式。

4. 更新系統套件並重新開機

sudo apt-get update
sudo apt-get upgrade
sudo reboot

5. 進入樹莓派命令列模式安裝 NCS 軟體開發工具(SDK)1.2版,其步驟如下:

mkdir -p ~/workspace
cd ~/workspace
git clone https://github.com/movidius/ncsdk.git
cd ncsdk
make install

由於有很多套件包需要編譯,所以可能要四到五個小時。編譯到快結束時會出現下面錯誤:

“cp: cannot stat ‘/opt/movidius/NCSDK/ncsdk-armv6l/tk’: No such file or directory Installation failed. Error on line 554”

這是因為 NCS 安裝程式預設是給 Pi 3 Arm v7 系列用,而 Pi 0是Arm v6 系列,所以要另要產生一個對應的路徑才能繼續工作。另外還要把一些設定檔複製到該路徑下才能接著正確編譯其它程式。

cp -r /opt/movidius/NCSDK/ncsdk-armv7l /opt/movidius/NCSDK/ncsdk-armv6l
cp -r ~/workspace/ncsdk/api/src /opt/movidius/NCSDK/ncsdk-armv6l

接著要把剩下的安裝工作完成,此時不要再執行 make install,而直接把剩下動作執行完即可,如下指令所示:

./install-ncsdk.sh

6. 再來就可開始編譯範例程式,其指令如下:

cd ~/workspace/ncsdk
make examples

這個步驟中有包含重新編譯 OpenCV 3.3 版,所以要十幾個小時,建議準備一個小風扇幫忙散熱一下,以免做到一半熱當,前功盡棄。OpenCV 編譯完後會自動開始編譯範例程式,但執行沒多久就會發生以下錯誤:

RuntimeError: module compiled against API version 0xc but this version of numpy is 0xb
Makefile:80: recipe for target ‘compile’ failed make[4]: *** [compile] Error 1

在網上有些網友說是因為 $PYTHONPATH 沒有 exprot /opt/movidius/NCSDK/ncsdk-armv6l/api/src/mvnc 造成,但加入測試後仍沒有作用。費盡千辛萬苦後終於找到原因,是因為 Python numpy 版本不合造成,原先安裝的是1.13.1版,而 Movidius 的範例支援的是較新版本,所以只要將 numpy 缷載後再重裝(目前版本為v1.15.2)並重新開機後再重新編譯範例即可。

pip3 uninstall numpy
pip3 install numpy
sudo reboot

cd ~/workspace/ncsdk
make examples

7. 苦難還沒結束,編譯到 inception-v3 的時候會出現下列錯誤:

File “./inception-v3.py”, line 4, in <module> import tensorflow as tf Import
Error: No module named ‘tensorflow’
Makefile:41: recipe for target ‘weights’ failed

因為 TensorFlow 的套件包不合,所以要重新安裝,執行下面指令,再重新編譯範例即可。

pip3 install tensorflow==1.9.0
make examples

8. 經過幾小時的等待完成所有(apps、cafee、tensorflow)範例的編譯後,最後進到 /examples/ 下各個範例,執行 make run 就能開始享受人工智慧的學習旅程了。

(本文轉載自歐尼克斯實境互動工作室原文連結;責任編輯:葉于甄)

許 哲豪

許 哲豪

工作經驗超過二十年,主要專長機電整合、電腦視覺、人機互動、人工智慧、專利分析及新創輔導。曾任機電整合工程師、機器視覺研發副理、技轉中心商業發展經理。目前擔任多家公司兼任技術顧問並積極推廣實境互動相關技術。
許 哲豪

上一篇: | 下一篇:

468 ad

我想回應

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

成城共創股份有限公司版權所有、轉載必究.Copyright(c) 2017 MakerPRO