地平线机器人 · 2022年12月14日 · 江苏

X3派基于PaddlePaddle的推理模型部署

一、目标

本次工作的目标是在旭日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环境已经按照完成,直接使用即可。

1.png

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等,耐心等待即可,直到安装成功。

2.png

四、预测图像

直接在系统上运行的命令格式如下,记得使用python3.6:

python3.6 demo_x86_cpu.py {模型RES文件夹}{测试图片路径}

1、鸭子

3.jpg

结果如下:

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、蚂蚁

4.jpg

测试结果,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
原链接:(完整文档及参数说明点击此处一键直达)
推荐阅读
关注数
1246
内容数
65
我们的使命是 AI 赋能万物 共创智能未来。我们致力于打造最实用、最好用、最易用的边缘 AI 开发平台。通过地平线自研的高算力 AI 芯片,开发工具,让更多的 AI 开发者,中小企业,学习和加速 AI 产品开发和创新!
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息