共计 2726 个字符,预计需要花费 7 分钟才能阅读完成。
前言
尽管这一代的树莓派减少了内存,但主频的限度使得间接用纯主板推理,速度还是不够实时,这一篇咱们介绍一下在树莓派上部署 OpenVINO 神经棒,进一步晋升 AI 的推理速度。
Intel 的了第二代神经计算棒 (Neural Compute Stick 2/NCS 2),身材仍然只有 U 盘大小,尺寸只有 72.5×27×14 毫米,内置了最新的 Intel Movidius Myriad X VPU 视觉处理器,集成 16 个 SHAVE 计算外围、专用深度神经网络硬件加速器,能够极低的功耗执行高性能视觉和 AI 推理运算,反对 TensorFlow、Caffe 开发框架。
依照 Intel 给出的数据,NCS 2 的性能比之前的 Movidius 计算棒有了极大的晋升,其中图像分类性能高出约 5 倍,物体检测性能则高出约 4 倍。
NCS2 的次要特点:
- 边缘处的深度学习推理
- Open Model Zoo 上事后训练的模型
- 一个函数库和事后优化的内核,用于更快地投放到市场
- 反对应用一个公共 API 的跨各种计算机视觉加速器(CPU、GPU、VPU 和 FPGA)的异质性执行
- Raspberry Pi 硬件反对
装置 OpenVINO 工具套件
NCS2 反对树莓派作为其的一个特点,intel 官网专门做了个主题文档,那部署起来就相当敌对了。
https://docs.openvinotoolkit….
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,其实这步可跳过。
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
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 来运行一下 …
敬请期待 …