目标任务:图像识别
图1:图像识别应用案例 [2]
飞桨轻量化推理引擎
Paddle Lite
Paddle Lite是百度飞桨推出的端侧和边缘侧轻量化推理引擎,可帮助开发者在移动设备、边缘设备和loT设备上运行模型,以便实现设备端机器学习。Paddle Lite支持多语言、多平台运行,并针对移动端和边缘侧设备的机器学习进行了优化,旨在为这些场景的AI应用提供更高效轻量的推理能力,有效解决端侧和边缘侧设备算力和内存限制等问题。开发者可以轻松的通过Paddle Lite opt[3]工具将飞桨模型转换为Paddle Lite模型,更多详细信息,可查看Paddle Lite完整文档[4]。
部署平台:Arm虚拟硬件
本次图像识别应用部署工程示例代码位于Paddle-Lite-Demo GitHub仓库[7]。
虚拟硬件创建与配置
a. 在设备选项页面,点击创建设备 (CREATE DEVICE) 。
d. 选择官方提供的Raspberry Pi OS Desktop (11.2.0) 作为操作系统,并点击选择 (SELECT) 进入配置确认页面。
e. 配置确认页面可以自定义设置设备名称以及选择是否需要设置高级启动选项(勾选该选项将进入高级启动项配置页面),本示例无需配置高级启动选项,因此直接点击创建设备 (CREATE DEVICE) 按键进行设备创建。
f-g. 设备创建过程可以实时查看设备创建进程。当提示Device is ready时,说明设备已经创建完成。
*友情提示:可以通过红色标记处的符号将显示区域放大便于后续观看和操作
运行环境准备
在创建好的虚拟树莓派控制台终端依次输入以下代码完成相应依赖项 (主要包括gcc、g++、OpenCV、cmake) 的安装与配置。
$ sudo apt-get update
$ sudo apt-get install gcc g++ make wget unzip libopencv-dev pkg-config
$ wget https://www.cmake.org/files/v3.10/cmake-3.10.3.tar.gz
$ tar -zxvf cmake-3.10.3.tar.gz
$ cd cmake-3.10.3
$ ./configure
$ make
$ sudo make install
部署图像分类应用
$ cd ~
$ git clone https://github.com/PaddlePaddle/Paddle-Lite-Demo
$ cd Paddle-Lite-Demo
$ git checkout master
下载模型和预测库,当提示Download successful!说明已经下载完成
$ cd PaddleLite-armlinux-demo
$ ./download_models_and_libs.sh
编译与运行
$ sh run.sh # build and run image classification application
Line 70: CV_BGRA2RGB 改为 cv::COLOR_ BGRA2RGB
Line 259&260: CV_CAP_PROP_FRAME_WIDTH 改为 cv::CAP_PROP_FRAME_WIDTH
查看运行结果
图3:虚拟树莓派上运行结果示意图
虚拟树莓派vs真实树莓派
各位开发者可以将2.3节中兼容性修改后的代码上传至GitHub等代码仓库并直接在真实树莓派4/400开发板上下载和使用该代码。按照2.1-2.3节中相同的命令操作完成真实树莓派开发板上环境的运行配置以及应用的部署,其结果与虚拟树莓派4上的运行结果一致,对比示意图 (图4) 所示。可见,在确保结果准确性的情况下,在虚拟树莓派上的处理时间更短,其获得推理测试结果的速度更快。
图4:运行对比结果示意图
拓展阅读
AVH 动手实践 (二) | 在 Arm 虚拟硬件上部署 PP-OCR 模型
AVH动手实践 (三) | 在Arm虚拟硬件上部署PP-PicoDet模型
参考文献
[1]图像分类任务介绍
https://github.com/PaddlePaddle/PaddleClas/blob/release/2.5/docs/zh_CN/algorithm_introduction/image_classification.md
[2] PP-ShiTuV2图像识别系统效果展示
https://github.com/PaddlePaddle/PaddleClas/blob/release/2.5/docs/images/shituv2.gif
[3] Paddle Lite opt工具
https://paddle-lite.readthedocs.io/zh/develop/user_guides/model_optimize_tool.html
[4]Paddle Lite完整文档
https://paddle-lite.readthedocs.io/zh/develop/guide/introduction.html#id1
[5]Arm物联网全面解决方案
https://www.arm.com/solutions/iot/total-solutions-iot
[6]Arm 虚拟硬件官网
https://avh.arm.com
[7]图像识别示例代码
https://github.com/PaddlePaddle/Paddle-Lite-Demo/tree/master/PaddleLite-armlinux-demo/image_classification_demo
[8]Raspberry Pi 400开发套件
https://www.raspberrypi.com/products/raspberry-pi-400/
[9]Raspberry Pi OS列表
https://www.raspberrypi.com/software/operating-systems/
关注【飞桨PaddlePaddle】公众号
获取更多技术内容~