搭建樹莓派 + movidius 神經元計算棒2代深度學習


 

摘要

本文從零開始搭建,從燒寫樹莓派的系統開始,到最后用計算棒跑人臉檢測。本教程適用二代的計算棒,不適合一代的計算棒。 
參考: https://software.intel.com/en-us/articles/OpenVINO-Install-RaspberryPI

材料硬件:

1、 樹莓派3B+ 
2、 intel movidius 神經元計算棒2代 
3、 顯示器、鼠標鍵盤、讀卡器、用於做樹莓派系統盤的16GTF卡 
4、 燒寫樹莓派系統用的PC(win10)

步驟:

1、 下載樹莓派鏡像並解壓

樹莓派系統鏡像使用Stretch版本——2018-11-13-raspbian-stretch,其他低於這個版本的沒有嘗試過可不可行 
下載鏈接: http://downloads.raspberrypi.org/raspbian_latest 
參考: http://shumeipai.nxez.com/download#os 
下載並解壓出img文件

2、 燒寫鏡像

插入16G TF卡,格式化,打開鏡像燒寫軟件Win32DiskImager.exe加載鏡像,進行下載: 
在這里插入圖片描述 
點write,再yes 
在這里插入圖片描述 
在這里插入圖片描述 
燒寫成功。不要管格式化警告,直接取消,拔出TF卡 
燒寫參考: http://bbs.eeworld.com.cn/thread-503614-1-1.html?_t=t

3、 啟動樹莓派

把TF卡插上樹莓派,其他的顯示器、鼠標鍵盤也插好,然后樹莓派上電 
在這里插入圖片描述 
紅綠指示燈都會閃就表示系統啟動成功,然后等待顯示器顯示桌面 
在這里插入圖片描述

4、 配置樹莓派

安裝界面的引導配置好樹莓派: 
在這里插入圖片描述 
在這里插入圖片描述 
在這里插入圖片描述 
接下來打開首選項配置硬件 
在這里插入圖片描述 
在這里插入圖片描述 
在這里插入圖片描述 
重啟,配置完成 
然后進行換源,這樣下載速度會快一點穩定一點: 
使用管理員權限,執行

      leafpad /etc/apt/sources.list

在打開的文件中,用#注釋掉原文件內容,用以下內容取代:

      deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi

保存,退出。 
使用管理員權限執行:

      leafpad /etc/apt/sources.list.d/raspi.list

用#注釋掉原文件內容,用以下內容取代:

      deb http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
deb-src http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui

保存,退出。 
使用sudo apt-get update命令,更新軟件源列表,同時檢查您的編輯是否正確。 
完成,換成了清華大學的軟件源。 
在這里插入圖片描述 
在這里插入圖片描述

5、 安裝cmake

再后面的安裝中需要cmake,要先安裝,執行:

      apt install cmake

到這里樹莓派的配置就完成了,接下來要開始計算棒toolkit的安裝了

6、 下載OpenVINO toolkit for Raspbian安裝包:

      https://download.01.org/openvinotoolkit/2018_R5/packages/l_openvino_toolkit_ie_p_2018.5.445.tgz

本次使用的版本是2018.5.445,安裝請在下面鏈接中查看最新的安裝包版本: 
https://software.intel.com/en-us/articles/OpenVINO-Install-RaspberryPI 
在這里插入圖片描述 
下載完后包位於Downloads/目錄下,打開命令行

      cd ~/Downloads/

解壓包:

      tar -xf l_openvino_toolkit_ie_p_2018.5.445.tgz

7、 配置路徑與環境

執行以下命令,會自動對setupvars.sh文件做修改

      sed -i "s|<INSTALLDIR>|$(pwd)/inference_engine_vpu_arm|" inference_engine_vpu_arm/bin/setupvars.sh

再配置環境,有兩種做法 
一種是臨時的,只對該次的窗口有效

      source inference_engine_vpu_arm/bin/setupvars.sh

還有永久性的,執行:

      leafpad /home/pi/.bashrc

打開.bashrc文件,再最后一行添加一句:

      source /home/pi/Downloads/inference_engine_vpu_arm/bin/setupvars.sh

在這里插入圖片描述 
保存,再打開一個新的終端,如果出現:

      [setupvars.sh] OpenVINO environment initialized

就表示成功了 
在這里插入圖片描述

8、 添加USB規則

將當前Linux用戶添加到users組:

      sudo usermod -a -G users "$(whoami)"

注:這里要說的是我們現在是root用戶,如果打開新窗口的話起始用戶是pi,所以出現[ setupvars.sh] OpenVINO environment initialized,是對於pi用戶來說的,如果在新窗口中用root執行程序,其實並沒有成功加載[ setupvars.sh] OpenVINO environment initialized,需要自己再執行一遍 
source /home/pi/Downloads/inference_engine_vpu_arm/bin/setupvars.sh,才能給root用戶配置好OpenVINO environment initialized。這一點要特別注意,很細節的東西,我在這里折騰了好久。 
接下來配置USB規則,執行:

      sh inference_engine_vpu_arm/install_dependencies/install_NCS_udev_rules.sh

在這里插入圖片描述 
到這里就成功安裝好計算棒所需的所有東西了

9、 demo測試驗證安裝是否成功

構建和運行對象檢測示例,這個例子是執行人臉檢測的。 
轉到包含示例源代碼的文件夾:

      cd inference_engine_vpu_arm/deployment_tools/inference_engine/samples
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-march=armv7-a"
make -j2 object_detection_sample_ssd

在這里插入圖片描述 
編譯完成后下載網絡和權重文件:

      wget --no-check-certificate https://download.01.org/openvinotoolkit/2018_R4/open_model_zoo/face-detection-adas-0001/FP16/face-detection-adas-0001.bin
      wget --no-check-certificate https://download.01.org/openvinotoolkit/2018_R4/open_model_zoo/face-detection-adas-0001/FP16/face-detection-adas-0001.xml

在這里插入圖片描述 
然后自己在網上找一張人臉的圖片,執行

      ./armv7l/Release/object_detection_sample_ssd -m face-detection-adas-0001.xml -d MYRIAD -i <path_to_image>
#<path_to_image>是人臉圖片的絕對路徑

如果運行成功,會在build文件夾下輸出一副out_0.bmp圖片: 
在這里插入圖片描述 
到這里表示計算棒運行成功!

10、 Opencv + python api調用方法:

有時候我們是在python下做開發,這里也有提供了Opencv + python的運行例子 
新建一個文件夾,先建立一個face_detection.py文件,寫入:

      import cv2 as cv
# Load the model 
net = cv.dnn.readNet('face-detection-adas-0001.xml', 'face-detection-adas-0001.bin') 
# Specify target device 
net.setPreferableTarget(cv.dnn.DNN_TARGET_MYRIAD)
# Read an image 
frame = cv.imread('/path/to/image')
# Prepare input blob and perform an inference 
blob = cv.dnn.blobFromImage(frame, size=(672, 384), ddepth=cv.CV_8U) net.setInput(blob) 
out = net.forward()
# Draw detected faces on the frame 
for detection in out.reshape(-1, 7): 
    confidence = float(detection[2]) 
    xmin = int(detection[3] * frame.shape[1]) 
    ymin = int(detection[4] * frame.shape[0]) 
    xmax = int(detection[5] * frame.shape[1]) 
    ymax = int(detection[6] * frame.shape[0])
    if confidence > 0.5:
        cv.rectangle(frame, (xmin, ymin), (xmax, ymax), color=(0, 255, 0))
# Save the frame to an image file 
cv.imwrite('out.png', frame)

在文件夾中放入剛剛我們下載的那兩個文件:face-detection-adas-0001.bin和face-detection-adas-0001.xml 
還有用於檢測用的臉的圖片face.jpeg 
此時是在root權限下,我們執行:

      source /home/pi/Downloads/inference_engine_vpu_arm/bin/setupvars.sh

然后執行:

      python3 face_detection.py

程序成功運行沒報錯,則表示運行成功,然后我們會在文件夾下看見輸出結果,檢測成功 
在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM