用樹莓派4b構建深度學習應用(八)Openvino篇

前言

雖然這一代的樹莓派增長了內存,但主頻的限制使得直接用純主板推理,速度仍是不夠實時,這一篇咱們介紹一下在樹莓派上部署 OpenVINO 神經棒,進一步提高AI的推理速度。

Intel的了第二代神經計算棒(Neural Compute Stick 2/NCS 2),身材依然只有U盤大小,尺寸只有72.5×27×14毫米,內置了最新的Intel Movidius Myriad X VPU視覺處理器,集成16個SHAVE計算核心、專用深度神經網絡硬件加速器,能夠極低的功耗執行高性能視覺和AI推理運算,支持TensorFlow、Caffe開發框架。html

按照Intel給出的數據,NCS 2的性能比以前的Movidius計算棒有了極大的提高,其中圖像分類性能高出約5倍,物體檢測性能則高出約4倍。shell

NCS2 的主要特色:bash

  • 邊緣處的深度學習推理
  • Open Model Zoo 上預先訓練的模型
  • 一個函數庫和預先優化的內核,用於更快地投放到市場
  • 支持使用一個公共 API 的跨各類計算機視覺加速器(CPU、GPU、VPU 和 FPGA)的異質性執行
  • Raspberry Pi 硬件支持

安裝OpenVINO 工具套件

NCS2 支持樹莓派做爲其的一個特色,intel官方專門作了個主題文檔,那部署起來就至關友好了。網絡

https://docs.openvinotoolkit....app

1. 下載安裝包

我選擇的版本是 2020年4月的版本:框架

cd ~/Downloads/
sudo wget https://download.01.org/opencv/2020/openvinotoolkit/2020.4/l_openvino_toolkit_runtime_raspbian_p_2020.4.287.tgz
# 建立安裝文件夾
sudo mkdir -p /opt/intel/openvino
# 解壓縮文件
sudo tar -xf l_openvino_toolkit_runtime_raspbian_p_2020.4.287.tgz --strip 1 -C /opt/intel/openvino

2. 安裝外部軟件依賴

以前已經安裝過cmake,其實這步可跳過。ide

sudo apt install cmake

3. 設定環境變量

source /opt/intel/openvino/bin/setupvars.sh
# 永久設置環境變量
echo "source /opt/intel/openvino/bin/setupvars.sh" >> ~/.bashrc

如今每打開一個新的命令行終端。將會出現下列信息:函數

[setupvars.sh] OpenVINO environment initialized工具

openvino02

4. 添加 USB 規則

將當前的 Linux 用戶添加到users羣組:註銷並登陸,使設定生效。性能

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

安裝 USB 規則

sh /opt/intel/openvino/install_dependencies/install_NCS_udev_rules.sh

5. USB 插入intel 神經棒 NCS2

從新插入NCS2,準備運行程序。

構建對象檢測樣本

1. 新建編譯目錄

mkdir openvino && cd openvino
mkdir build && cd build

2. 構建對象檢測樣本

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-march=armv7-a" /opt/intel/openvino/deployment_tools/inference_engine/samples/cpp
make -j2 object_detection_sample_ssd

3. 下載權重文件,網絡拓撲文件和被測試圖片

要下載.bin帶權重的文件:

wget --no-check-certificate https://download.01.org/opencv/2020/openvinotoolkit/2020.1/open_model_zoo/models_bin/1/face-detection-adas-0001/FP16/face-detection-adas-0001.bin

要下載帶網絡拓撲.xml的文件:

wget --no-check-certificate https://download.01.org/opencv/2020/openvinotoolkit/2020.1/open_model_zoo/models_bin/1/face-detection-adas-0001/FP16/face-detection-adas-0001.xml

搜索一些包含人臉的圖片做爲被檢測樣本,保存到 ~/Downloads/image 目錄下。

4. 運行程序

其中 -m 指定模型拓撲結構 .xml 文件,程序會自動尋找同名 .bin 權重文件;

-d MYRIAD 表明用神經棒做爲推理設備;

-i 指定了被測圖片的路徑。

./armv7l/Release/object_detection_sample_ssd -m face-detection-adas-0001.xml -d MYRIAD -i ~/Downloads/image

構建性能測試程序

1. 構建測試程序

make -j2 benchmark_app

2. 構建對象檢測樣本

其中 -i 是輸入被檢測的圖片;

-m 是輸入的模型參數;

-niter 爲運行推理的迭代次數。

./armv7l/Release/benchmark_app -i car.png -m squeezenet1.1/FP16/squeezenet1.1.xml -pc -d MYRIAD -niter 1000

樹莓派+神經棒的推理速度可達 280 FPS,這速度足夠快了,再試試在電腦上插神經棒測試,與其對比一下。

3. 對比性能

仍是280幀左右,運行速度沒有區別,可見計算瓶頸都集中在NCS2上,主設備用電腦或是樹莓派差異不大。在插神經棒的場合,用PC就顯得有點浪費了。

再對比一個直接用筆記本電腦的 intel cpu 跑的openvino加速模型:

340 FPS,果真仍是電腦的CPU更強些。

樹莓派的開發流程

  • 選擇預訓練模型;
  • 使用模型優化器,來轉換模型;
  • 最後在樹莓派上推理模型。

常規的開發方式,須要在 open model zoo 中尋找適合的模型,對於大多數業務來講,都能知足基本須要。若須要跑一些比較前沿的模型或者是本身設計的神經網絡時,那各種模型轉換的方法則是必備技能,難度相應也會大一些。

資料下載

本期相關文件資料,可在公衆號後臺回覆:「rpi08」,獲取下載連接。


下一篇預告

咱們就將作一些模型轉換的工做,
讓yolov5在樹莓派上,
用Openvino來運行一下...
敬請期待...

歡迎掃碼關注,更多分享

相關文章
相關標籤/搜索