用树莓派4b构建深度学习应用(八)Openvino篇
2020/10/12 16:03:53
本文主要是介绍用树莓派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开发框架。
按照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来运行一下...
敬请期待...
这篇关于用树莓派4b构建深度学习应用(八)Openvino篇的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-30tensorflow是什么-icode9专业技术文章分享
- 2024-10-15成功地使用本地的 NVIDIA GPU 运行 PyTorch 或 TensorFlow
- 2024-01-23供应链投毒预警 | 恶意Py包仿冒tensorflow AI框架实施后门投毒攻击
- 2024-01-19attributeerror: module 'tensorflow' has no attribute 'placeholder'
- 2024-01-19module 'tensorflow.compat.v2' has no attribute 'internal'
- 2023-07-17【2023年】第33天 Neural Networks and Deep Learning with TensorFlow
- 2023-07-10【2023年】第32天 Boosted Trees with TensorFlow 2.0(随机森林)
- 2023-07-09【2023年】第31天 Logistic Regression with TensorFlow 2.0(用TensorFlow进行逻辑回归)
- 2023-07-01【2023年】第30天 Supervised Learning with TensorFlow 2(用TensorFlow进行监督学习 2)
- 2023-06-18【2023年】第29天 Supervised Learning with TensorFlow 1(用TensorFlow进行监督学习 1)