雖然這一代的樹莓派增長了內存,但主頻的限制使得直接用純主板推理,速度仍是不夠實時,這一篇咱們介紹一下在樹莓派上部署 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
NCS2 支持樹莓派做爲其的一個特色,intel官方專門作了個主題文檔,那部署起來就至關友好了。網絡
https://docs.openvinotoolkit....app
我選擇的版本是 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
以前已經安裝過cmake,其實這步可跳過。ide
sudo apt install cmake
source /opt/intel/openvino/bin/setupvars.sh # 永久設置環境變量 echo "source /opt/intel/openvino/bin/setupvars.sh" >> ~/.bashrc
如今每打開一個新的命令行終端。將會出現下列信息:函數
[setupvars.sh] OpenVINO environment initialized工具
將當前的 Linux 用戶添加到users羣組:註銷並登陸,使設定生效。性能
sudo usermod -a -G users "$(whoami)"
安裝 USB 規則
sh /opt/intel/openvino/install_dependencies/install_NCS_udev_rules.sh
從新插入NCS2,準備運行程序。
mkdir openvino && cd openvino mkdir build && cd build
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
要下載.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 目錄下。
其中 -m 指定模型拓撲結構 .xml 文件,程序會自動尋找同名 .bin 權重文件;
-d MYRIAD 表明用神經棒做爲推理設備;
-i 指定了被測圖片的路徑。
./armv7l/Release/object_detection_sample_ssd -m face-detection-adas-0001.xml -d MYRIAD -i ~/Downloads/image
make -j2 benchmark_app
其中 -i 是輸入被檢測的圖片;
-m 是輸入的模型參數;
-niter 爲運行推理的迭代次數。
./armv7l/Release/benchmark_app -i car.png -m squeezenet1.1/FP16/squeezenet1.1.xml -pc -d MYRIAD -niter 1000
樹莓派+神經棒的推理速度可達 280 FPS,這速度足夠快了,再試試在電腦上插神經棒測試,與其對比一下。
仍是280幀左右,運行速度沒有區別,可見計算瓶頸都集中在NCS2上,主設備用電腦或是樹莓派差異不大。在插神經棒的場合,用PC就顯得有點浪費了。
再對比一個直接用筆記本電腦的 intel cpu 跑的openvino加速模型:
340 FPS,果真仍是電腦的CPU更強些。
常規的開發方式,須要在 open model zoo 中尋找適合的模型,對於大多數業務來講,都能知足基本須要。若須要跑一些比較前沿的模型或者是本身設計的神經網絡時,那各種模型轉換的方法則是必備技能,難度相應也會大一些。
本期相關文件資料,可在公衆號後臺回覆:「rpi08」,獲取下載連接。
咱們就將作一些模型轉換的工做,
讓yolov5在樹莓派上,
用Openvino來運行一下...
敬請期待...