一、目标
本次工作的目标是在旭日X3派上部署PaddlePaddle的开源模型,至于PaddlePaddle模型转换,已有大佬写过很赞的教程,自我感觉不能超越,于是本文不再提及。
飞桨(PaddlePaddle)是集深度学习核心框架、工具组件和服务平台为一体的技术先进、功能完备的开源深度学习平台,已被中国企业广泛使用,深度契合企业应用需求,拥有活跃的开发者社区生态。提供丰富的官方支持模型集合,并推出全类型的高性能部署和集成方案供开发者使用。
二、环境准备
1、python环境
旭日X3派的官方img支持的是python3.8,这个跟PaddlePaddle要求的3.6版本不同,因为PaddlePaddle SDK使用的tensor模块等依赖python3.6,所以要在X3派系统中使用python3.6。网上很多种方法,譬如通过pyenv、anaconda等python版本管理工具进行python版本切换,因为在实际使用中可以指定使用的python版本,为什么不能再装个python3.6呢?需要python3.8的时候敲python3,需要python3.6的时候敲python3.6,感觉不错。
sudo apt-get install software-properties-common -y
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.6 -y
sudo apt-get install libpython3.6 -y
sudo apt-get install python3.6-dev -y
sudo apt-get install python3.6-distutils -y
一系列命令敲下来,python3.6环境已经按照完成,直接使用即可。
2、SDK下载
直接在官网(EasyEdge端计算模型生成平台)下载PaddlePaddle SDK,选择需要的SDK即可,因为是要部署在X3派上,所以选择了 操作系统为Linux,且部署芯片为通用ARM芯片的模型,这次我选择的是PPLCNetV2。
PPLCNet是百度团队设计的轻量高性能网络PP-LCNet,所提方案在图像分类任务上取得了比ShuffleNetV2、MobileNetV2、MobileNetV3以及GhostNet更优的延迟-精度均衡。
PPLCNetV2当然比PPLCNetV1牛逼了,一会试试图像分类功能。
三、模型部署
1、PaddlePaddle安装
直接使用如下命令安装PaddlePaddle:
python3.6 -m pip install http://aipe-easyedge-public.bj.bcebos.com/easydeploy/paddlelite-2.11-cp36-cp36m-linux_aarch64.whl
记得一定要用python3.6…
2、安装WHL包
将2.2节下载的SDK包解压缩,传输至X3派,首先安装python目录下(当然也可以选择C++,python直接运行了,方便)的BaiduAI_EasyEdge_SDK-1.3.1-cp36-cp36m-linux_aarch64.whl包,记得用python3.6,中间可能会根据系统的情况,下载安装numpy,opencv-python等,耐心等待即可,直到安装成功。
四、预测图像
直接在系统上运行的命令格式如下,记得使用python3.6:
python3.6 demo_x86_cpu.py {模型RES文件夹}{测试图片路径}
1、鸭子
结果如下:
root@ubuntu:~/EasyEdge-Linux-arm/python/infer_demo# python3.6 demo_armv8_cpu.py ../../RES /root/ducks.jpg
2022-09-17 00:36:30 INFO [EasyEdge] [demo_armv8_cpu.py:38] 548210040848: Init paddlelite engine...
Loading topology data from ../../RES/model
Loading params data from ../../RES/params
1. Model is successfully loaded!
2022-09-17 00:36:31 INFO [EasyEdge] [demo_armv8_cpu.py:38] 548210040848: Paddlelite engine version: v2.11
infer done!
{'confidence': 0.36856314539909363, 'index': 97, 'label': 'n01847000 drake'}
2、蚂蚁
测试结果,ant, emmet, pismire都是蚂蚁:
root@ubuntu:~/EasyEdge-Linux-arm/python/infer_demo# python3.6 demo_armv8_cpu.py ../../RES /root/ants.jpg
2022-09-17 00:37:40 INFO [EasyEdge] [demo_armv8_cpu.py:38] 548581892112: Init paddlelite engine...
Loading topology data from ../../RES/model
Loading params data from ../../RES/params
1. Model is successfully loaded!
2022-09-17 00:37:41 INFO [EasyEdge] [demo_armv8_cpu.py:38] 548581892112: Paddlelite engine version: v2.11
infer done!
{'confidence': 0.9655985832214355, 'index': 310, 'label': 'n02219486 ant, emmet, pismire'}
本文转自地平线开发者社区
原作者:大菠萝Alpha
原链接:(完整文档及参数说明点击此处一键直达)