点击左上方蓝字关注我们
几年来Tengine在开源社区深度耕耘,吸引了很多不同背景的开发者群体,其中有一大部分就是PaddlePaddle深度学习平台的死忠用户。一直以来都有用户期待能够打通两者的联动,让Paddle上游的各类优质应用算法模型可以透过Tengine 框架部署到更多的AIoT硬件平台上,这样的强强联合既方便了PaddlePaddle的开发者扩大模型落地的硬件选择,也丰富了Tengine对训练框架的支持。
飞桨(PaddlePaddle)今年初正式发布了全新训练框架2.0版本升级,提供了更易用的高层API、全新动静混合编程范式及大规模参数服务器训练等功能,经过多月的迭代和发展,也即将在近期发布2.1版本更新,其中包含自动混合精度大幅优化等众多功能皆会在5月20的Wave Summit 2021上分享, 请大家敬请期待。而在这样的基础上, 开放的边缘AI计算框架Tengine与PaddlePaddle这次的合作就是基于全新的Paddle 2.0架构,完成了Tengine对Paddle 2.0模型格式的原生转换,后透过端侧AI加速器模型部署。这样的整合能发挥两家的长处,降低嵌入式等环境的部署难度,让用户可以直接加载百度model zoo里面的模型,更简单的开发算法和应用,从而达到实际落地的需求。
任务目标
将 PaddleClas 项目(给小伙伴科普一下,PaddleClas是飞桨平台中专门给图像分类应用开发者提供的端到端开发套件: https://github.com/PaddlePaddle/PaddleClas)中的 MobileNetV2 模型转换成 Tengine 的 tmfile,并顺利运行。
图一:Conversion Pipeline
准备工作
将 PaddleClas 项目中的预训练好的动态图分类模型 MobileNetv2 转换成 PaddlePaddle 2.0 的静态图模型。
下载 PaddleClas 项目
git clone https://github.com/PaddlePaddle/PaddleClas.git
认真阅读PaddleClas Readme
https://github.com/PaddlePaddle/PaddleClas
安装PaddlePaddle
pip3 install paddlepaddle --upgrade -i https://mirror.baidu.com/pypi/simple
安装 PaddleClas 依赖库
pip3 install --upgrade -r requirements.txt -i https://mirror.baidu.com/pypi/simple
预训练模型下载
https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/MobileNetV2_pretrained.pdparams
下载完成后复制到 PaddleClas 根目录下的 output 文件夹中。
静态图模型
PaddleClas 的 Model Zoo 提供的预训练模型是动态图格式,需要通过工具脚本转换成静态图才能更方便后续的工作。
python3 tools/export_model.py --model MobileNetV2 --pretrained_model ./output/MobileNetV2_pretrained --output_path ./inference --class_dim 1000
如果执行过程中碰见报错,请安装指定版本的 gast,这里我已经提交 pull request 不知道什么时候能被合并进入主线代码。
pip3 install gast==0.3.3
静态图的模型文件存放在 inference 目录下,包含以下三个文件:
模型转换
下载转换工具源码
git clone https://github.com/OAID/Tengine-Convert-Tools.git
编译
mkdir build && cd build
cmake .. && make
执行
./convert_tool -f paddle -p inference.pdmodel -m inference.pdiparams -o mobilenetv2_paddle.tmfile
---- Tengine Convert Tool ----
Version : v1.0, 10:10:30 Apr 26 2021
Status : float32
Create tengine model file done: mobilenetv2_paddle.tmfile
运行
下载 Tengine:
git clone https://github.com/OAID/Tengine.git
编译
mkdir build && cd build
cmake .. && make
执行
bug1989@DESKTOP-SGN0H2A:/mnt/d/ubuntu/github/tengine-lite/build$ ./examples/tm_classification -m mobilenetv2_paddle.tmfile -i cat.jpg -g 224,224 -s 0.017,0.017,0.017 -r 10
Mean value not specified, use default 104.0, 116.7, 122.7
tengine-lite library version: 1.2-dev
model file : /mnt/d/ubuntu/github/PaddleClas/inference/mobilenetv2_paddle.tmfile
image file : examples/cat.jpg
img_h, img_w, scale[3], mean[3] : 224 224 , 0.017 0.017 0.017, 104.0 116.7 122.7
Repeat 10 times, thread 1, avg time 40.32 ms, max_time 56.47 ms, min_time 35.80 ms
--------------------------------------
0.317292, 281
0.176262, 285
0.154328, 282
0.039242, 287
0.029589, 278
--------------------------------------
传送门
https://github.com/PaddlePaddle/Paddle
https://github.com/OAID/Tengine
https://github.com/OAID/Tengine-Convert-Tools
最后,欢迎小伙伴关注我們在5月20北京线下举行的Wave Summit 2021 活動(https://www.wavesummit.com.cn),Tengine技術大佬圈圈虫将在圓桌上带你探讨如何走顺深度学习最后一公里!
或者加入OPEN AI LAB开发者技术QQ群(829565581)来找圈圈虫吧!(入群秘令:CNN)
扫码添加OPEN AI LAB小O妹
咨询产品/技术问题&加入技术交流QQ群(829565581)
TengineGitHub开源链接
https://github.com/OAID/Tengine
欢迎大家Star、Watch、Fork三部曲
飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,是中国首个开源开放、技术领先、功能完备的产业级深度学习平台,包括飞桨开源平台和飞桨企业版。飞桨开源平台包含核心框架、基础模型库、端到端开发套件与工具组件,持续开源核心能力,为产业、学术、科研创新提供基础底座。飞桨企业版基于飞桨开源平台,针对企业级需求增强了相应特性,包含零门槛AI开发平台EasyDL和全功能AI开发平台BML。EasyDL主要面向中小企业,提供零门槛、预置丰富网络和模型、便捷高效的开发平台;BML是为大型企业提供的功能全面、可灵活定制和被深度集成的开发平台。
END