原文:知乎
作者:圈圈虫
为准时参加 PaddlePaddle 5月举行的线下 “网友交流会”。
Tengine 组负责模型转换工具的小伙伴愉快的开始支持 PaddlePadde 2.0 的静态图模型。
任务目标
将 PaddleClas 项目中的 mobilenetv2 模型转换成 Tengine 的 tmfile,并顺利运行。
准备工作
将 PaddleClas 项目中的预训练好的动态图存储格式的分类模型 MobileNetv2 转换成 PaddlePaddle 2.0 的静态图模型存储格式。
下载 PaddleClas 项目
$ git clone https://github.com/PaddlePaddle/PaddleClas.git
认真阅读 Readme
https://github.com/PaddlePaddle/PaddleClas/blob/release/2.1/README_cn.md
安装 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
模型转换
下载转换工具源码
$ 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
--------------------------------------
后记
PaddlePaddle 作为国内最大的自研训练框架,其周边内容实在是太多,加上最近版本从 1.x 升级到 2.x,部分文档、链接存在错误指向的问题。同时静态图的模型文件,暂时没有详细的文档说明其存储结构,大多数情况下只能靠以往适配训练框架模型的专家经验和大胆猜想进行实验。
当然,负责本次技术支持的 PaddlePaddle 同学@Jason相当给力,每次都能及时将我们从庞大的 Readme 文档迷宫中救出,指引我们去该去的地方。
感谢 PaddlePaddle 的炼丹师开源了种类丰富的预训练模型,希望通过 Tengine 对 PaddlePaddle 2.0 Model Zoo 的逐步支持,让从事人工智能边缘计算的小伙伴发(bai)现(piao)更多宝藏。
传送门
Tengine-Convert-Toolsgithub.com
PaddlePaddle/PaddleClasgithub.com
相关文章
我是圈圈虫,一个热爱技术的中年大叔。快加入 OPEN AI LAB 开发者技术 QQ 群(829565581)来找我吧!溜了~~
入群秘令:CNN
更多Tengine相关内容请关注Tengine-边缘AI推理框架专栏。